40
Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität Oldenburg Vorlesung 2 Dietrich Boles

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Embed Size (px)

Citation preview

Page 1: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 1

Programmierkurs Java

Vorlesung

im WS 1998/1999

am FB Informatik

der Universität Oldenburg

Vorlesung 2

Dietrich Boles

Page 2: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 2

Gliederung von Vorlesung 2

• Programmierung– Terminologie

– Algorithmen

– Programme

• Programmiersprachen– Klassifikation

– Abstraktionsebenen

– Syntaxdiagramme

– Backus-Naur-Form

• Programmentwicklung– Entwicklungsphasen

– Entwicklungswerkzeuge

– Compilation

• Computer– Arbeitsweise

– Hardware

– Software

– Speicher

• Aussagenlogik– Aussagen

– Eigenschaften von Aussagen

Page 3: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 3

Programmierung / Terminologie

Programmierung: Erstellung von Computerprogrammen

Softwareentwicklung: Methoden zum Lösen von Problemen mit dem Computer

Algorithmus: Arbeitsanleitung für einen Computer

Programmiersprache: computerverständliche Notation zur Formulierung von Algorithmen

Programm: in einer Programmiersprache formulierter Algorithmus

„Programmieren im Kleinen“: Lösen kleiner Probleme

„Programmieren im Großen“: Lösen komplexer Probleme

Softwareengineering: Vorgehensmodelle, Entwicklungsmethoden, Entwicklungsumgebungen,

Projekt-, Qualitäts- und Konfigurationsmanagement

Page 4: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 4

Programmierung / Algorithmus / Motivation

Arbeitsanleitungen: – Kochrezepte

– Bastelanleitungen

– Partituren

– Spielregeln

Aufbau:– Menge von Anweisungen

Charakteristika:– Anweisungssequenzen

– bedingte Anweisungen

– Anweisungsschleifen

– Zutaten / Voraussetzungen

– „schwammige“ Formulierungen

Page 5: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 5

Programmierung / Algorithmus / Definition

Definition: – Arbeitsanleitung zum Lösen eines Problems bzw. einer Aufgabe, die so

präzise formuliert ist, daß sie von einem Computer ausgeführt werden kann

Formulierung von Algorithmen:– Umgangssprachlich

– Programmiersprache

– Programmablaufpläne

– Struktogramme

Ausführung von Algorithmen:– durch einen Prozessor (Mensch / Computer) Prozeß

– Computer:• schnell

• zuverlässig

• hohe Speicherfähigkeit

Page 6: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 6

Programmierung / Algorithmus / Formulierung

Beispiel: Berechnung der Summe aller Zahlen von 1 bis n

Umgangssprachliche Formulierung:

Addiere für eine vorgegebene natürliche Zahl ndie Zahlen von 1 bis n. Dies ist das Resultat.

Programmiersprache:

int n = readInt();int erg = 0;int i = 0;while (i <= n) { erg = erg + i; i = i + 1;}printInt(erg);

Page 7: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 7

Programmierung / Algorithmus / Formulierung

Programmablaufpläne / Flußdiagramme:

erg = 0

Anfang

i = 0

Eingabe n

i <= nja nein

erg = erg + i

i = i + 1

Ausgabe erg

Ende

Anfang

Ende

Bedingungja nein

Aktion

Eingabe Ausgabe

Page 8: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 8

Programmierung / Algorithmus / Formulierung

Struktogramme / Nassi-Shneiderman-Diagramme:

erg = erg + i

i = i + 1

while i <= n

print (erg)

read (n)

erg = 0

i = 0

Aktion

Aktion 1

Aktion 2

...

Aktion n

Bedingung

ja nein

Aktion 1 Aktion 2

while Bedingung

Aktion

Anweisung

Anweisungs-sequenz

bedingteAnweisung

Schleife

Page 9: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 9

Programmierung / Algorithmus / Eigenschaften

theoretisch:

– Eindeutigkeit

– Parametrisierbarkeit

– Finitheit

– Ausführbarkeit

– Terminierung

– Determiniertheit

– Determinismus

praxisrelevant:

– korrekt

– vollständig

– effizient (Zeit)

– sparsam (Speicher)

– erweiterbar

– wiederverwendbar

– portabel

– verständlich

Page 10: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 10

Programmierung / Programme

Programm: ein in einer Programmiersprache formulierter Algorithmus

Programmieren: Erstellen von Programmen

Programmierer: Entwickler von Programmen

Programmcode, Quellcode, Sourcecode: Programmbeschreibung

ausführbares Programm: Programm in maschinenverständlicher Form

Programmaufruf: Ausführung eines ausführbaren Programms

Page 11: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 11

Programmiersprachen / Klassifikation

Anwender:

– Anfänger

– ExpertenParadigmen:

– imperativ

– funktional

– prädikativ

– regelbasiert

– objektorientiert

Abstrahierungsgrad:

– maschinennah

– problemorientiert

Komplexität:

– problemspezifisch

– „general-purpose“

Page 12: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 12

Programmiersprachen / Abstraktionsebenen

Lexikalik: gültige Zeichen und Wörter der Sprache

Syntax: korrekter Aufbau von Sätzen der Sprache

Semantik: Bedeutung von Sätzen der Sprachen

Pragmatik: Einsatzbereich einer Sprache

Quell-programm

Token-folge

Ableitungs-baum

Ziel-programm

LexikalischeAnalyse

(Scanner)

SyntaktischeAnalyse(Parser)

SemantischeAnalyse/

Codegenerierung

Page 13: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 13

Programmiersprachen / Lexikalische Analyse

• Entfernung von Trennzeichen und Kommentaren• Erkennung von Token (Zeichen, die bedeutungsmäßig zusammengehören):

– Schlüsselwörter– Konstanten– Bezeichner– Symbole– Zeichenketten– ...

• Grundbaustein: endlicher Automat• Beschreibung: reguläre Ausdrücke

while n > 0 do n := n-1;

whilen>0don

:=n-1;

PASCAL

Page 14: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 14

Programmiersprachen / Syntaktische Analyse

• Überführung einer Tokenfolge in Ableitungsbaum

• Untersuchung auf syntaktische Korrektheit

• Beschreibung: kontextfreie Grammatiken

• Darstellung: Syntaxdiagramme, BNF

n:=3+i

Zuweisung

Variable := Ausdruck

Term Term

Konstante Variable

3

+

i

n

Page 15: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 15

Programmiersprachen / Semantische Analyse

• Überprüfung des Ableitungsbaums auf Fehler

(kontextsensitive Zusatzbedingungen)

• Vorbereitung der Codeerzeugung

• Nutzung einer Symboltabelle

• attributierte Syntaxbäume

Page 16: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 16

Programmiersprachen / Syntaxdiagramme

• Technik zur graphischen Darstellung kontextfreier Grammatiken• Elemente:

– Knoten• Ellipsen (Token, Terminale)

• Rechtecke (Nichtterminale)

– Kanten• knotenverbindende Pfeile

• eintretender Pfeil (Eingangskante)

• austretender Pfeil (Ausgangskante)

• Interpretation: Durchläuft man ein Syntaxdiagramm von der Eingangs- zur Ausgangskante entlang den Pfeilen, dann ist die Folge der Knoteninhalte, die dabei „aufgesammelt“ werden, aus dem Syntaxdiagramm ableitbar.

Page 17: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 17

Programmiersprachen / Syntaxdiagramme

Syntaktisch korrekt:Schlangen Delphine

Schlangen Elephanten Pinguine Delphine

Schlangen Elephanten Pinguine Affen Delphine

Schlangen Elephanten Pinguine Elephanten Pinguine Delphine

Syntaktisch nicht korrekt:Elephanten Delphine

Schlangen Pinguine

Schlangen Elephanten Affen Delphine

Schlangen Pinguine Schlangen Delphine

ZooSäugetiere„Schlangen“ „Delphine“

„Pinguine“

„Elephanten“

„Affen“

Säugetiere

Page 18: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 18

Programmiersprachen / Syntaxdiagramme

Definition:

– Jedes Syntaxdiagramm (SD) besitzt eine Bezeichnung

– Elemente eines Syntaxdiagramms sind Knoten (Ellipsen, Rechtecke) und

Kanten (Pfeile)

– Rechtecke enthalten die Bezeichnung eines (anderen) Syntaxdiagramms

– Ellipsen enthalten Token

– in jeden Knoten führt genau ein Pfeil hinein

– aus jedem Knoten führt genau ein Pfeil hinaus

– Pfeile dürfen sich aufspalten bzw. zusammengezogen werden

– jedes SD besitzt genau eine eintretende Kante (kein Ausgangsknoten)

– jedes SD besitzt genau eine austretende Kante (kein Eingangsknoten)

Page 19: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 19

Programmiersprachen / Syntaxdiagramme

a b DS

cD

Syntaktisch korrekt oder nicht ?

• abababccc• ababcccabab• aba• ccccccc

• abDc• bababac• ababcdcd• ABABABc

Page 20: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 20

Programmiersprachen / Syntaxdiagramme

a bS

S

Syntaktisch korrekt oder nicht ?

• aSb• aab• aaabbb• abbbbbbb• aaabbbaaa

L (S) = ?

Page 21: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 21

Programmiersprachen / Syntaxdiagramme

L = {a (b c) d } | n ist natürliche Zahl oder Null; i ist natürliche Zahl}

2 n i

Page 22: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 22

Programmiersprachen / BNF

Backus-Naur-Form:– Technik zur textuellen Darstellung kontextfreier Grammatiken

– Verwendung von Ersetzungsregeln (Produktionen)

– besitzen linke und rechte Seite

– linke Seite: Nichtterminalsymbol

– Nichtterminalsymbol: durch < > gekennzeichnet

– Alternativen: durch | gekennzeichnet

– e (Epsilon): leere Alternative

EBNF:– Erweiterung der BNF (Abkürzungsmöglichkeiten)

– [...] bedeutet: Symbole in Klammern können auch wegfallen

– {...} bedeutet: Symbole in Klammern können beliebig oft wiederholt werden

Page 23: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 23

Programmiersprachen / BNF

BNF:

<Zoo> ::= „Schlangen“ <Säugetiere-und-mehr>

<Säugetiere-und-mehr> ::= <Säugetiere> „Pinguine“ <Säugetiere-und-mehr> | <Säugetiere> „Delphine“

<Säugetiere> ::= „Elephanten“ | „Affen“ | e

Page 24: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 24

Programmiersprachen / BNF

EBNF:

<Zoo> ::= „Schlangen“ <Säugetiere> {„Pinguine“ <Säugetiere>} „Delphine“

<Säugetiere> ::= „Elephanten“ | „Affen“ | e

Page 25: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 25

Programmentwicklung / Entwicklungsphasen

Dokumentation

Problem

Programm

Implementierung

Analyse

Entwurf

Test

Page 26: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 26

Programmentwicklung / Entwicklungsphasen

Analyse:– Untersuchung des Problems und des Problemumfelds

– Diskussion mit anderen Personen

– Fragestellungen / Tätigkeiten:• Problemstellung exakt und vollständig

• gegebene Initialzustände und Eingabeparameter

• gewünschte Endzustände und Ausgabewerte

• Randbedingungen, Constraints

Entwurf:– Entwicklung des Algorithmus

– kreativer Prozeß (Auffassungsgabe, Intelligenz, Erfahrung)

– Fragestellungen / Tätigkeiten:• existierende Lösungen für vergleichbare Probleme

• allgemeinere Probleme

• rekursive Aufteilung des Problems in Teilprobleme

• Durchführung des Entwurfsprozeß für Teilprobleme

• Zusammensetzen der Lösungen der Teilprobleme zur Lösung des Gesamtproblems

Page 27: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 27

Programmentwicklung / Entwicklungsphasen

Implementierung:– Übertragung des Entwurfs in eine Programmiersprache

– Fragestellungen / Tätigkeiten:• Editieren

• Compilieren

Test:– Überprüfung des Programms auf logische und technische Fehler

– man kann nur die Existenz von Fehlern nachweisen, nicht die Abwesenheit!

– Fragestellungen / Tätigkeiten:• Korrektheit

• Vollständigkeit

• Debugging

– Teststrategien:• andere Personen testen lassen

• Testmengen konstruieren (Randfälle/Grenzwerte finden)

• nach Fehlerbeseitigung erneut testen

Page 28: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 28

Programmentwicklung / Entwicklungsphasen

Dokumentation:– Exakte Problemstellung

– Beschreibung der generellen Lösungsidee

– Beschreibung des Algorithmus

– Programmcode

– Beschreibung der Testmengen

– Protokolle der Testläufe

– aufgetretene Probleme

– alternative Lösungsansätze

Weitere Tätigkeiten:– Effizienzverbesserung

– Wartung

– Portierung

Page 29: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 29

Programmentwicklung / Entwicklungswerkzeuge

Editore: Manipulation des Programmcodes

Compiler: Transformation eines Quellprogramms in ein Zielprogramm

Interpreter: inkrementelle Abarbeitung des Quellcodes

Debugger: Erkennung von Laufzeitfehlern

Dokumentationshilfen: Erstellung von Teilen der Dokumentation

Laufzeitsystem: Hilfsprogramme bei der Programmausführung

Programmbibliotheken: Sammlungen fertiggestellter Programme

Page 30: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 30

Programmentwicklung / Compilation

lexikalischeAnalyse

syntaktischeAnalyse

semantischeAnalyse

Zwischen-code-

Erzeugung

Code-Optimierung

Code-Generierung

Folgevon

Token

Syntaxbaum

attributierterSyntaxbaum

Drei-Adreß-Code

optimierterDrei-Adreß-

Code

Assembler-Code

reguläreAusdrücke

BNFGrammatik

Übersetzungs-schemata /attributierteGrammatik

Optimierungs-regeln

Code-Generierungs-anweisungen

Code-Generierungsanweisungen

a := b + 10 * c

(ID,s[1])...(NUM,10)...

s[1]

:=+

*s[2]s[3]10

temp1 := inttoreal(10)temp2 := temp1 * s[3]temp3 := s[2] + temp2s[1] := temp3

temp1 := 10.0 * s[3]s[1] := s[2] + temp1

MOVF s[3],R2MULF #10.0,R2MOVF s[2],R1ADDF R2,R1MOVF R1,s[1]

Quellcode Symboltabelle s

1 a real2 b real3 c real4

s[1]

:=+

*

inttoreals[2]

s[3]

10

Page 31: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 31

Computer

• Gerät zur automatischen Verarbeitung von Daten

• Computer setzen sich zusammen aus– Hardware (physikalische Geräte; Zentraleinheit plus periphere Geräte)

– Software (Programme)

• Arbeitsweise:

Eingabe AusgabeComputer

Programm

Lies eine Zahl ein.

Addiere alle natürlichen Zahlenvon 1 bis zur eingegebenen Zahl.

Gib dieses Ergebnis auf den Bildschirm aus.

5 15Computer

Page 32: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 32

Computer / Hardware

Von-Neumann-Rechnerarchitektur:

Eingabewerk Speicher Ausgabewerk

Rechenwerk

Steuerwerk

Steuersignale Daten

Page 33: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 33

Computer / Hardware

Von-Neumann-Prinzipien:– Computer besteht aus fünf Funktionseinheiten

– Unabhängigkeit von zu bearbeitenden Problemen

– Steuerung mit Hilfe von Programmen

– Programme und Daten werden im Speicher abgelegt

– Binäre Codierung aller Daten

– Unterteilung des Speichers in gleichgroße Zellen

– aufeinanderfolgende Befehle in aufeinanderfolgenden Zellen

– (sequentieller) Zugriff durch Steuerwerk (via Befehlsadresse)

– Sprungbefehle

– arithmetische Befehle (Addition, Multiplikation, ...)

– logische Befehle (Negation, Konjunktion, Vergleiche, ...)

– Transportbefehle

– Schiebeoperationen

– Ein-/Ausgabebefehle

Page 34: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 34

Computer / Software

Spiele

Compiler Editoren Interpreter

Betriebssystem

Prozeß-verwaltung

Speicher-verwaltung

Datei-verwaltung

Geräte-verwaltung

Maschinensprache

Mikroprogrammierung

Physikalische Geräte

Lernsoftware Adreßverwaltung

...

...

...

Anwendungssoftware

Systemsoftware

Hardware

Page 35: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 35

Computer / Software

• Betriebssystem: Menge aller Programme, die den Betrieb eines Computer bewältigt:– Prozeßverwaltung

– Speicherverwaltung

– Dateiverwaltung

– Geräteverwaltung

– ...

• Festplatte: billiger Hintergrundspeicher

• Dateien: logische Behälter zum Speichern von Daten

• Verzeichnisse: Hilfsmittel für eine übersichtliche Strukturierung von Dateien

• Window-System: Aufteilung des Bildschirm in unabhängige „Windows“

• Window-Manager: Verwalter von „Windows“– Anlegen

– Verschieben

– Vergrößern

– ...

Page 36: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 36

Computer / Speicher

• Speicher: Aufbewahrung von Programmen und Daten

• 1 Bit: kleinstes Speicherelement (2 Zustände: 0 und 1)

• 1 Byte:8 Bit (2 Zustände) Speicherzelle

• 1 Wort: 4 oder 8 Speicherzellen

• mathematische Grundlage: Dualsystem

• 2 anstelle von 10 Ziffern (Dezimalsystem)

• Operationen (Addition, Multiplikation, ...) wie gewohnt

• Umrechung:

8

18 : 2 = 9 R 0 9 : 2 = 4 R 1 4 : 2 = 2 R 0 2 : 2 = 1 R 0 1 : 2 = 0 R 1

1101= 1*2 + 0*2 * 1*2 + 1*2 =13

30 1 2

2

10

Page 37: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 37

Aussagenlogik / Aussagen

• Aussage (boolescher Ausdruck): – Satz, dem eindeutig ein Wahrheitswert wahr (true, T) oder falsch (false, F)

zugeordnet werden kann• „Ein Tisch ist ein Möbelstück“• „Geh nach Hause“ (keine Aussage)

• Verknüpfung von Aussagen durch Operatoren: – Negation („!“)

– Konjunktion („&&“)

– Disjunktion („||“)

• Wahrheitstafeln:

P Q P && Q

TF

TFTF

TFFF

P Q P || Q

TTFF

TFTF

TTTF

!P

FT

P

TTFF

Page 38: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 38

Aussagenlogik / Aussagen

Syntax von Aussagen:

boolscherAusdruck

boolscherAusdruck

boolscherAusdruck

&&

boolscherAusdruck

boolscherAusdruck

||

boolscherAusdruck

!

boolscherAusdruck

( )

„einfache Aussage“

• !P

• P && Q

• P || Q

• P || (!Q)

• (P || (!Q && P)

• P || !Q && R

• P || !(Q && R)

• (P || Q) && R

Page 39: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 39

Aussagenlogik / Eigenschaften von Aussagen

• Kommutativgesetz• Assoziativgesetz• Distributivgesetz

• Priorität: ( ! > && > || )• Assoziativität: (!: rechts; &&, ||: links)• Tautologie: P || !P (immer true)• Widerspruch: P && !P (immer false)

Q

TFTF

P

TTFF

P&&Q Q&&P P||Q

TFFF

TFFF

TTTF

TTTF

Q||P

Q

TTFFTTFF

P

TTTTFFFF

Q&&R

TTTTTFFF

R

TFTFTFTF

P||(Q&&R) P||Q P||R (P||Q)&&(P||R)

TFFFTFFF

TTTTTTFF

TTTTTFTF

TTTTTFFF

Page 40: Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98 Seite 40

Aussagenlogik / Eigenschaften von Aussagen

zu zeigen: !P && !Q <=> !(P || Q)