39 terms

Informatik 04 - Kontrollstrukturen

Informatik - 04 Kontrollstrukturen
STUDY
PLAY
Ziele
• Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen.

• Realisierung der Kontrollstrukturen in Java
Anweisungen
Anweisungen (Statements) sind die Grundelemente imperativer Programmiersprachen zur Festlegung (Kontrolle) des Ablaufs eines Programms.
Anweisungen

→ grundlegende Arten
Deklarationsanweisungen

→ Syntax
• auch lokale Variablendeklaration
Deklarationsanweisungen

→ Beispiel und Wirkung
Beispiel:
int x = 5, y = 7;

Wirkung:
Es wird ein Speicherplatz angelegt, auf den mit dem symbolischen Namen der deklarierten Variablen zugegriffen werden kann. Dort wird ein „Default"-Wert oder der durch Expression bestimmte Initialwert gespeichert. Z.B. [(x,5),(y,7)]
Zuweisungen

→ Syntax
Zuweisungen

→ Wirkung
1. Bei der Zuweisung wird der Wert von Expression im „alten" Zustand berechnet.

2. Dieser Wert wird im Nachfolgezustand der Variablen Variable als neuer Wert zugewiesen.
Zuweisungen

→ Beispiel
• [(x,5),(y,7)]
• x = 2*x + y
• [(x,17),(y,7)]

Beachte den Unterschied zwischen „=" (Zuweisung) und „==" (Vergleich)!

Nebenbedingung:
Der Typ der Variablen muss mit dem Typ des Ausdrucks verträglich sein.
Zuweisung: Abkürzende Schreibweisen

→ Abkürzungen
Zuweisung: Abkürzende Schreibweisen

→ Beispiele
Block
Ein Block fügt mehrere Anweisungen durch geschweifte Klammern zu einer einzigen Anweisung zusammen
Block

→ Syntax
Block

→ Wirkung
Die Anweisungen werden in der Reihenfolge der Aufschreibung ausgeführt. Der durch einen Block bewirkte Zustandsübergang erfolgt also durch Hintereinanderausführung der Zustandsübergänge der einzelnen Anweisungen.
Block

→ Beispiel
Gültigkeitsbereich
• der Gültigkeitsbereich einer lokalen Variablen ist der Block, in dem die Variable deklariert wurde. Außerhalb dieses Blocks existiert die Variable nicht.

• Blöcke können geschachtelt werden

• In einem untergeordneten Block sind Variable eines übergeordneten Blocks gültig und dürfen dort nicht noch einmal deklariert werden
Gültigkeitsbereich

→ Beispiel
Veränderung des Speichers
Lokale Variablen im Speicher
• lokale Variablen werden stapelartig im Speicher abgelegt.

• Wird eine Variablendeklaration abgearbeitet, so wird ein neuer Speicherplatz für diese Variable oben auf den Stapel gelegt (allokiert).

• am Ende eines Blocks werden alle Variablen (von oben) vom Stapel genommen, die in diesem Block deklariert wurden.
Lokale Variablen im Speicher

→ bildlich
Exkurs: Stack (auch Keller, Stapelspeicher)
Ein Stack ist eine Datenstruktur, in die Elemente eingefügt und in entgegen gesetzter Reihenfolge wieder herausgenommen werden können. (LIFO — Last In, First Out)
Exkurs: Stack (auch Keller, Stapelspeicher)

→ Grundoperationen
• push(e) — legt das Element e oben auf den Stapel

• pop() — entfernt das oberste Element vom Stapel (und liefert es als Ergebnis)

• top() — liefert das oberste Element als Ergebnis, ohne den Stapel zu verändern
Exkurs: Stack (auch Keller, Stapelspeicher)

→ Beispiel
Fallunterscheidungen (Bedingte Anweisungen)

→ Syntax
Fallunterscheidungen (Bedingte Anweisungen)

→ Beispiel
Fallunterscheidungen (Bedingte Anweisungen)

→ Nebenbedingung
Der Typ des Ausdrucks Expression muss boolean sein.
Fallunterscheidungen (Bedingte Anweisungen)

→ Wirkung
Wenn die Auswertung von Expression im aktuellen Zustand den Wert true ergibt, wird das erste Statement ausgeführt.

Wenn die Auswertung von Expression im aktuellen Zustand den Wert false ergibt und ein else-Zweig vorhanden ist, wird das zweite Statement ausgeführt.
Fallunterscheidungen (Bedingte Anweisungen)

→ Beispiel 1
Fallunterscheidungen (Bedingte Anweisungen)

→ Beispiel 2
Dangling else (1)
Das else bezieht sich auf das zweite if und wird nicht ausgeführt, wenn das Konto gesperrt ist.
Um dies deutlich zu machen, hätte man das else in der Formatierung einrücken sollen.
Dangling else (2)
Wiederholungsanweisungen (Iterationen)

→ Syntax
Wiederholungsanweisungen (Iterationen)

→ Beispiel
Wiederholungsanweisungen (Iterationen)

→ Nebenbedingung
Der Typ des Ausdrucks Expression muss boolean sein.
Wiederholungsanweisungen (Iterationen)

→ Wirkung
Solange die Auswertung von Expression den Wert true ergibt, wird die Anweisung Statement ausgeführt.
While-Anweisungen: Beispiele
Methodische Richtlinien
1. Bestimmung der Anfangswerte der Variablen vor Eintritt in die While-Anweisung.

2. Bestimmung der Schleifenbedingung.

3. Formulierung des Schleifenrumpfes.

4. Vergewissern, dass die Schleifenbedingung nach endlich vielen Ausführungen des Rumpfes nicht mehr erfüllt ist. Sonst terminiert die While-Anweisung nicht!
For-Anweisungen

→ (vereinfachte) Syntax
For-Anweisungen

→ Erklärung
• Erst wird die Deklaration und Initialisierung der Zählvariablen ausgeführt.

• Solange der Zähler den Endwert nicht erreicht hat, wird der Schleifenrumpf gefolgt von der Zähleränderung ausgeführt.

• Die in der Initialisierung deklarierte Zählvariable ist nur im Rumpf gültig.

• Der Schleifenrumpf ist eine Anweisung, die selbst wieder eine For-Anweisung sein kann (geschachteltes „for").

• Im Schleifenrumpf soll die Zählvariable, der Startwert und der Endwert nicht verändert werden.
For-Anweisungen

→ Beispiel