Schleifen 14.02.2017 1 Rosette Ziel Strategie gehe zur Mitte bewege den Stift um 100 zeichne Kreis mit Radius 100 drehe die Blickrichtung um 60 gehe zur Mitte bewege den Stift um 100 zeichne Kreis mit Radius 100 … 14.02.2017 2 Programmieren durch Kopieren 14.02.2017 3 Analyse mit dem Debugger Haltepunkt setzen Attributwerte des Stifts ausgeben schrittweise abarbeiten 14.02.2017 4 Wiederholung steuern pen.bewegeBis(300, 300); pen.bewegeUm(100); pen.zeichneKreis(100); pen.dreheUm(60); Die Befehle müssen wiederholt werden, Bis die Blickrichtung des Stiftes 360 ist. 14.02.2017 5 do-while-Schleife 14.02.2017 6 Variationen Wie muss der Quelltext verändert werden, damit die nebenstehende Figur entsteht? 14.02.2017 7 while-Schleife 14.02.2017 8 Schleifen Um einen bestimmten Teil des Programms mehrfach auszuführen, werden Schleifen verwendet: •Sie können variabel festlegen, wie oft oder bis zum Eintreffen welcher Bedingung die Schleife durchlaufen werden soll. •Durch Verwendung von Schleifen wird Programmcode gespart. 14.02.2017 9 Aufbau einer Schleife Eine Schleife besteht aus einer Schleifensteuerung und dem Schleifenrumpf. Schleifensteuerung Entscheidet, ob oder wie oft die Anweisungen im Schleifenrumpf wiederholt werden sollen. Schleifenrumpf: Er umfasst die Anweisungen, die wiederholt werden sollen. 14.02.2017 10 Steuerungsarten Schleifensteuerung Schleifenrumpf Schleifenrumpf Schleifensteuerung kopfgesteuerte Schleife u. fußgesteuerte Schleife 14.02.2017 11 Kopfgesteuerte Schleife Schleifensteuerung Schleifenrumpf • Die Prüfung, ob die Anweisungen im Schleifenrumpf ausgeführt werden, erfolgt gleich zu Beginn. • Ist das Kriterium erfüllt, wird der Schleifenrumpf durchlaufen und anschließend erfolgt erneut eine Prüfung. • Falls das Kriterium bereits zu Beginn nicht erfüllt ist, wird der Schleifenrumpf gar nicht ausgeführt. 14.02.2017 12 Fußgesteuerte Schleife Schleifenrumpf • Zuerst werden die Anweisungen des Schleifenrumpfs ausgeführt. • Dann erfolgt die Prüfung, ob ein weiterer Durchlauf erfolgen soll. • Der Schleifenrumpf wird also immer mindestens einmal ausgeführt. Schleifensteuerung 14.02.2017 13 while-Schleife while (Bedingung) { // Anweisungen } In den runden Klammern steht eine Bedingung, die den Wert true (wahr) oder false (falsch) liefern muss. Der Schleifenrumpf wird durch geschweifte Klammern festgelegt. Ist die Bedingung erfüllt (true), werden die Anweisungen im Schleifenblock ausgeführt und anschließend wird erneut die Bedingung geprüft. Ist die Bedingung nicht erfüllt (false), wird der Schleifenkörper übersprungen und das Programm nach der while-Anweisung fortgesetzt. Die Schleife ist kopfgesteuert. 14.02.2017 14 Vergleichsoperatoren == überprüft zwei Ausdrücke auf Gleichheit != überprüft zwei Ausdrücke auf Ungleichheit > liefert true, wenn der erste Ausdruck größer als der zweite ist < liefert true, wenn der erste Ausdruck kleiner als der zweite ist >= liefert true, wenn de erste Ausdruck größer als der zweite ist oder gleich dem zweiten ist <= liefert true, wenn der erste Ausdruck kleiner als der zweite ist oder gleich dem zweiten ist 14.02.2017 15 do-while-Schleife do { // Anweisungen } while (Bedingung) Hinter dem Schlüsselwort do steht der Schleifenrumpf in geschweiften Klammern. Hinter dem Schleifenrumpf steht das Schlüsselwort while und in runden Klammern, die Bedingung, die die Schleife steuert. Der Schleifenrumpf wird mindestens einmal ausgeführt. Ist die Bedingung true, wird der Schleifenkörper erneut ausgeführt. Ist die Bedingung nicht erfüllt (false), wird die do-while-Anweisung beendet und das Programm fortgesetzt. 14.02.2017 16 Polygon Bei der nebenstehenden Figur sind folgende Werte gewählt worden: 1. int maximalLaenge = 400; 2. int ablenkWinkel = 90; 3. int zuwachs = 9; Testen Sie auch folgende Werte: 400 400 200 400 90 154 60 165 9 2 1 1 14.02.2017 17 Stern 14.02.2017 18 Analyse Durch die Befehle in den Zeilen 23 bis 29 wird eine Raute gezeichnet. Der Befehl in Zeile sorgt für die passende Startposition für die nächste Raute. Die Schleife wird durch die Zählung der Rauten gesteuert. i gibt die Nummer der Raute an, die gerade gezeichnet wird. 14.02.2017 19 for-Schleife 14.02.2017 20 for-Anweisung Die for-Anweisung zeichnet sich durch eine kompakte Schreibweise aus und wird häufig verwendet, wenn die Anzahl der Schleifendurchläufe zuvor bereits bekannt ist. Die for-Schleife ist eine kopfgesteuerte Schleife. Jede for-Schleife lässt sich auch durch eine while-Schleife formulieren. 14.02.2017 21 Aufbau einer for-Anweisung for (Initialisierungsteil; Bedingungsteil; Aktualisierungsteil) { // Anweisungen } Initialisierungsteil Eine Variable, die als Zähler dienen soll, wird definiert und initialisiert. Bedingungsteil Es wird eine Bedingung wie bei einer while-Anweisung formuliert. Aktualisierungsteil Hier kann angegeben werden, wie sich der Wert der Zählvariablen nach jedem Schleifendurchlauf verändert. 14.02.2017 22 Deckchen 14.02.2017 23 Teilfiguren Bei jeder Teilfigur werden sieben Kreise gezeichnet. Der Radius wird von innen nach außen größer. Zwei benachbarte Kreise durchdringen sich. Implementieren Sie den Zeichner mit Hilfe zweier ineinander geschachtelter Schleifen. Untersuchen Sie mit Hilfe des Debuggers den Gültigkeitsbereich der lokalen Variablen. 14.02.2017 24 Debugger Ein Debugger ist ein Softwarewerkzeug , mit dem man eine kontrollierte Ausführung eines Quelltextes durchführen kann. Haltepunkt setzen Werte kontrollieren schrittweise durchlaufen 14.02.2017 25 Schachbrett Jede Zeile besteht aus acht Quadraten. Insgesamt gibt es acht Zeilen. Es werden abwechselnd schwarze und weiße Quadrate gezeichnet. 14.02.2017 26 Kontrollstrukturen 14.02.2017 27 if-Anweisungen Bei vielen Problemstellungen ist die Verarbeitung von Anweisungen von Bedingungen abhängig. Nur wenn die Bedingung erfüllt ist, wird die betreffende Anweisung (oder der Anweisungsblock) ausgeführt. Andernfalls wird die Anweisung übersprungen. Für die Steuerung eines solchen Programmablaufs stellt Java die einseitige if-Anweisung zur Verfügung. if (Bedingung) { // Anweisungen } 14.02.2017 28 if-else-Anweisungen Bei if-else-Anweisung werden bestimmte Anweisungen durchgeführt, falls die Bedingung erfüllt ist. Falls die Bedingung nicht erfüllt ist, werden andere Bedingungen durchgeführt. Da hier bei beiden Fällen alternative Anwendungen ausgeführt werden, wird die if-else-Anweisung auch als zweiseitige if-Anweisung bezeichnet. if (Bedingung) { // Anweisungen } else { // Anweisungen } 14.02.2017 29 if-Anweisung Die Bedingung steht in runden Klammern hinter dem Schlüsselwort if. Falls die Bedingung erfüllt ist, wird der erste Anweisungsblock abgearbeitet, andernfalls wird der zweite Anweisungsblock abgearbeitet. 14.02.2017 30 Kontrollstrukturen Der Oberbegriff für Schleifen und Verzweigungen ist Kontrollstruktur. 14.02.2017 31