Mehr erfahren

Kapitel 5: Für Schleifen


Eines der Dinge, in denen Computer besonders gut sind, ist die Wiederholung. Wie können wir Karel überzeugen, einen Codeblock mehrmals auszuführen? Um zu sehen, wie Wiederholungen verwendet werden können, betrachten Sie die Aufgabe, 42 beeper s zu platzieren:

Vor:
Nach dem:

Basic For-Schleife

Da Sie wissen, dass genau 42 beeper s zu platzieren sind, ist die Steueranweisung, die Sie benötigen, a for-Schleife , das angibt, dass Sie einen Vorgang eine feste Anzahl von Malen wiederholen möchten. Die Struktur der for-Anweisung erscheint in erster Linie deshalb kompliziert, weil sie viel leistungsfähiger ist als alles, was Karel benötigt. Die einzige Version der for-Syntax, die Karel verwendet, ist:

for(int i = 0; i < Anzahl ; i++){
zu wiederholende Aussagen
}

Wir werden später in der Klasse alle Details der for-Schleife durchgehen. Vorerst sollten Sie diese Zeile lesen, um auszudrücken: "Wiederholen Sie die Anweisungen in den geschweiften KlammernAnzahlMal. "Wir können diese neue verwenden for-Schleife 42 beeper s durch Ersetzen platzierenAnzahlmit 42 und den Befehl setzen putBeeper() innerhalb des for-Schleifen-Codeblocks. Wir rufen im Codeblock die Befehle auf Karosserie :

Der obige Code kann bearbeitet werden. Versuchen Sie, es so zu ändern, dass es nur 15 beeper s platziert.

Übereinstimmende Nachbedingungen mit Vorbedingungen

Das vorherige Beispiel vermittelt den Eindruck, dass eine for-Schleife eine einzelne Codezeile wiederholt. Der Rumpf der for-Schleife (die Anweisungen, die wiederholt werden) kann jedoch mehrere Zeilen umfassen. Hier ist ein Beispiel eines Programms, das beeper in jede Ecke einer Welt bringt:

Achten Sie genau darauf, wie das Programm diese Steueranweisungen durchläuft. Das Programm run durchläuft run den run in der for-Schleife. Es wiederholt den Körper viermal.

Der vielleicht komplizierteste Teil beim Schreiben einer Schleife ist, dass Sie den Zustand der Welt am Ende der Schleife benötigen (die Nachbedingung ein gültiger Zustand der Welt für den Beginn der Schleife sein Voraussetzung ). Im obigen Beispiel stimmen die Annahmen überein. Gute Zeiten. Zu Beginn der beeper befindet sich Karel immer auf einem Feld ohne beeper , das der nächsten leeren Ecke zugewandt ist. Was ist, wenn Sie die biegenSieLinksAb am Ende der Schleife gelöscht haben? Die Nachbedingung am Ende der ersten Iteration würde die Annahmen über Karel vor der nächsten leeren Ecke nicht mehr erfüllen. Der Code kann bearbeitet werden. Versuchen Sie das zu löschen turnLeft(); Kommando um zu sehen was passiert!

Verschachtelte Schleifen

Technisch gesehen kann der Körper einer for-Schleife jeden Kontrollflusscode enthalten, auch andere Schleifen. Hier ist ein Beispiel für eine for-Schleife, die einen Aufruf einer Methode mit einer for-Schleife wiederholt. Wir nennen dies eine "verschachtelte" Schleife. Versuchen Sie, das Programm run und zu verstehen, was es tut, bevor run es run ning:


Nächstes Kapitel