Programmierkurs fr absolute Anfnger weitere Kontrollstrukturen Caren Brinckmann
Programmierkurs für absolute Anfänger weitere Kontrollstrukturen Caren Brinckmann Sommersemester 2005 http: //www. coli. uni-saarland. de/~cabr/teaching. php Sprachsynthese - Ein Überblick
unless-Verzweigung l l Bei einer if-Verzweigung wird der Anweisungsblock ausgeführt, wenn die Bedingung wahr ist. Bei einer unless-Verzweigung ist es genau umgekehrt: Der Anweisungsblock wird ausgeführt, wenn die Bedingung falsch ist. if ($zahl == 10) { print "10n"; } l unless ($zahl != 10) { print "10n"; } Fazit: Don't use unless it doesn't confuse you! Programmierkurs für absolute Anfänger – Sitzung 7 1
until-Schleife l Beispiel: Alle Zahlen von 1 bis 1000 aufzählen. $zahl = 1; until ($zahl>1000) { print "$zahln"; $zahl++; } l Syntax: l Anweisungsblock wird ausgeführt, bis Bedingung wahr wird (d. h. solange Bedingung falsch ist). until (Bedingung) { Anweisungsblock } Programmierkurs für absolute Anfänger – Sitzung 7 2
do-while und do-until-Schleife (1) l l Die while-Schleife und die until-Schleife testen erst die Bedingung, bevor der Anweisungsblock ausgeführt wird (oder nicht). Manchmal möchte man den Anweisungsblock auf jeden Fall einmal ausführen, bevor die Bedingung überprüft wird, z. B. : $zahl = int(rand(100)); print "Rate mal: "; $input = <STDIN>; chomp $input; while ($input != $zahl) { print "Rate mal: "; $input = <STDIN>; chomp $input; } print "Richtig!n"; Programmierkurs für absolute Anfänger – Sitzung 7 3
do-while und do-until-Schleife (2) $zahl = int(rand(100)); do { print "Rate mal: "; $input = <STDIN>; chomp $input; } while ($input != $zahl); print "Richtig!n"; $zahl = int(rand(100)); do { print "Rate mal: "; $input = <STDIN>; chomp $input; } until ($input == $zahl); print "Richtig!n"; Programmierkurs für absolute Anfänger – Sitzung 7 4
for-Schleife (1) l l l Die for-Schleife ist eine Zählschleife, in der mit einer Zählvariablen von einem Anfangswert bis zu einem Endwert (aufwärts oder abwärts) gezählt wird. Für jeden Wert der Zählvariablen werden bestimmte Anweisungen ausgeführt. Beispiel: Alle Zahlen von 1 bis 1000 aufzählen. for ($zahl=1; $zahl<=1000; $zahl++) { print "$zahln"; } Programmierkurs für absolute Anfänger – Sitzung 7 5
for-Schleife (2) l Syntax: l l l for (Init; Bedingung; Aktualisierung) { Anweisungsblock } Initialisierung: Zu Anfang wird die Zählvariable auf einen bestimmten Wert gesetzt. Bedingung: Wenn die Bedingung wahr ist, wird der Anweisungsblock ausgeführt. Aktualisierung: Nach jeder Ausführung des Anweisungsblocks wird der Aktualisierungsausdruck ausgewertet (meistens wird die Zählvariable verändert). Anweisungsblock wird ausgeführt, solange Bedingung wahr ist. Übung: Alle geraden Zahlen zwischen 2 und 1000 aufsummieren. Programmierkurs für absolute Anfänger – Sitzung 7 6
Schachtelung von Schleifen und bedingten Anweisungen l l Schleifen und bedingte Anweisungen können ineinander geschachtelt werden. Beispiel: Aufsummierung aller geraden Zahlen zwischen 2 und 1000, die durch 7, aber nicht durch 3 teilbar sind. $summe = 0; for ($zahl=2; $zahl<=1000; $zahl+=2) { if (($zahl%7 == 0) && ($zahl%3 != 0)) { $summe += $zahl; } } print "Summe: $summen"; Programmierkurs für absolute Anfänger – Sitzung 7 7
Endlosschleifen (1) l l Ein beliebter Programmierfehler ist, unbeabsichtigt eine Endlosschleife einzubauen, d. h. eine Schleife, die nie verlassen wird. Warum enthält folgendes Programm eine Endlosschleife? $passwort = ""; while ($passwort ne "coli") { print "Passwort: "; $passwort = <STDIN>; } print "Das Passwort ist richtig!n"; Programmierkurs für absolute Anfänger – Sitzung 7 8
Endlosschleifen (2) l l Manchmal ist es jedoch gerade erwünscht, dass eine Schleife nie verlassen wird, z. B. wenn ein Programm ständig laufen und auf Benutzereingaben reagieren soll. Wie schreibt man eine n n n while-Schleife until-Schleife for-Schleife die nie verlassen wird? while (1) { #. . . } until (0) { #. . . } for (; ; ) { #. . . } Programmierkurs für absolute Anfänger – Sitzung 7 9
Schachtelung von for-Schleifen l l gewünschte Ausgabe: 1 1 2 3 4 5 Lösung: Schachtelung zweier for-Schleifen $maximum = 5; for ($zeile=1; $zeile<=$maximum; $zeile++) { $ende = $zeile; for ($spalte=1; $spalte<=$ende; $spalte++) { print "$spalte "; } print "n"; } Programmierkurs für absolute Anfänger – Sitzung 7 10
- Slides: 11