Agenda für heute, 5. April, 2007 • Wiederholte Programmausführung • Algorithmische Grundlagen • Bedingungen zum Abbruch von Programmschleifen • Geschachtelte Programmschleifen • Syntaxdiagramme Steuerung des Programmablaufs: Wiederholung • Gründe für die Wiederholungen von Anweisungsfolgen: - Operationen werden solange ausgeführt, bis alle Daten verarbeitet sind - eine Berechnung wird mit veränderten Eingabewerten solange wiederholt, bis das Resultat eine gewünschte Genauigkeit erreicht - ein Programm soll solange wie gewünscht wiederholt werden • Ein Programm muss also a) wissen was wiederholt ausgeführt werden muss und b) entscheiden können wann die Wiederholung anzuhalten ist Programmieren und Problemlösen 2/14 © Institut für Computational Science, ETH Zürich • Wiederholte Programmausführung • Algorithmische Grundlagen • Bedingungen zum Abbruch von Programmschleifen • Geschachtelte Programmschleifen • Syntaxdiagramme Algorithmische Grundlagen: Zwei Arten der Wiederholung Anweisungsfolge wahr Abbruch? falsch Anweisungsfolge wird mindestens 1 mal ausgeführt Programmieren und Problemlösen wahr Abbruch? falsch Anweisungsfolge Anweisungsfolge wird nicht, 1 mal oder mehrmals ausgeführt 3/14 © Institut für Computational Science, ETH Zürich • Wiederholte Programmausführung • Algorithmische Grundlagen • Bedingungen zum Abbruch von Programmschleifen • Geschachtelte Programmschleifen • Syntaxdiagramme Wie oft wird eine Schleife ausgeführt? In Pascal gibt es die folgenden Schleifen-Anweisungen: for Anfangswert to Endwert do Anweisungsfolge for Anfangswert downto Endwert do Anweisungsfolge while Bedingung do Anweisungsfolge repeat Anweisungsfolge until Bedingung Die for-Schleife führt eine vorgegebene Anzahl Wiederholungen aus. Die Anzahl Wiederholungen der while- und repeat-Schleife wird durch Aktionen innerhalb der Schleife gesteuert. Programmieren und Problemlösen 4/14 © Institut für Computational Science, ETH Zürich Struktur der for-Anweisung Kontrollvariable (muss deklariert sein) for Variable:= Ausdruck1 to Ausdruck2 do Anweisung Beispiel: for i:= 0 to 9 do write(i) Output: 0 1 2 3 4 5 6 7 8 9 for Variable:= Ausdruck1 downto Ausdruck2 do Anweisung Beispiel: for i:= 9 downto 0 do write(i) Output: 9 8 7 6 5 4 3 2 1 0 Programmieren und Problemlösen 5/14 © Institut für Computational Science, ETH Zürich Struktur der while-Anweisung while boolescher Ausdruck do Anweisung Die Anweisung wird wiederholt solange ausgeführt wie eine Auswertung des booleschen Ausdrucks den Wahrheitswert "true" ergibt. Beispiel: i:= 0; while i < 10 do begin write(i); i:= i + 1 end; Output: 0 1 2 3 4 5 6 7 8 9 Programmieren und Problemlösen 6/14 © Institut für Computational Science, ETH Zürich Struktur der repeat-Anweisung repeat Anweisung until boolescher Ausdruck Führe Anweisung einmal aus und wiederhole solange bis eine Auswertung des booleschen Ausdrucks den Wahrheitswert "true" ergibt. Beispiel: i:= 0; repeat write(i); i:= i + 1 until i = 10 Output: 0 1 2 3 4 5 6 7 8 9 Programmieren und Problemlösen 7/14 © Institut für Computational Science, ETH Zürich • Wiederholte Programmausführung • Algorithmische Grundlagen • Bedingungen zum Abbruch von Programmschleifen • Geschachtelte Programmschleifen • Syntaxdiagramme Algorithmische Grundlagen: Mehrere Abbruchbedingungen Anweisungsfolge wahr Abbruch? Programmieren und Problemlösen falsch 8/14 © Institut für Computational Science, ETH Zürich Schachtelung am Beispiel der for-Anweisung for Variable1:= Ausdruck1 to Ausdruck2 do for Variable2:= Ausdruck3 downto Ausdruck4 do Anweisung Beispiele: for i:= 1 to 3 do for j:= 1 to 10 do write(i*j) for i:= 1 to 3 do begin for j:= 1 to 10 do write(i*j); writeln; end; Programmieren und Problemlösen 9/14 © Institut für Computational Science, ETH Zürich Schachtelung am Beispiel der while-Anweisung while boolescher Ausdruck1 do while boolescher Ausdruck2 do Anweisung Beispiel: i:= 1; j:= 1; while i < 3 do begin while j < 10 do begin write(i*j); j:= j + 1; writeln end end Programmieren und Problemlösen 10/14 © Institut für Computational Science, ETH Zürich • Wiederholte Programmausführung • Algorithmische Grundlagen • Bedingungen zum Abbruch von Programmschleifen • Geschachtelte Programmschleifen • Syntaxdiagramme Grundlagen der Syntaxdiagramme Elemente der Syntaxdiagramme Nicht-Terminalsymbole: Bezeichner Terminalsymbole: ; Nicht-Terminalsymbole können durch andere Nicht-Terminalsymbole oder durch Terminalsymbole nach vorgegebenen Syntaxregeln ersetzt werden. Programmieren und Problemlösen 11/14 © Institut für Computational Science, ETH Zürich Grundlagen der Syntaxdiagramme Produktionsregeln (gelten für beide Arten von Symbolen) Auswahl: Folge: Wiederholung: a b ... Buchstabe Y Z Buchstabe Bezeichner , Option: Bezeichner Programmieren und Problemlösen 12/14 © Institut für Computational Science, ETH Zürich Syntaxregeln am Beispiel "Programm" Programmieren und Problemlösen 13/14 © Institut für Computational Science, ETH Zürich Syntaxregeln am Beispiel "Bezeichner" Programmieren und Problemlösen 14/14 © Institut für Computational Science, ETH Zürich