Kapitel-Fortschritt: 0/2 Aufgaben gelöst

Kapitel 5

Kapitel 5: For-Schleifen

Computer sind besonders gut darin, Dinge zuverlässig zu wiederholen. Wenn Karel denselben Codeblock mehrere Male ausführen soll, brauchst du nicht jede Zeile immer wieder neu zu schreiben.

Für eine feste Anzahl von Wiederholungen verwenden wir eine for-Schleife. Sie sagt: Führe den eingerückten Block genau so oft aus, wie in range(...) angegeben ist.

Die Grundform

Die Karel-Variante einer for-Schleife sieht so aus:

for i in range(anzahl):
    befehl()
    noch_ein_befehl()

Für den Anfang kannst du die Zeile als „wiederhole diesen Codeblock anzahl Mal“ lesen. Die Variable i ist hier nur Teil der Python-Schreibweise; Karel benutzt sie in unseren ersten Aufgaben noch nicht.

Viele Beeper ablegen

Wenn Karel zum Beispiel 15 Beeper auf demselben Feld ablegen soll, wäre es mühsam, fünfzehnmal put_beeper() zu schreiben. Mit einer Schleife bleibt die Absicht sichtbar:

def main():
    for i in range(15):
        put_beeper()

Wichtig ist die Einrückung: Nur die Zeilen unter der for-Zeile gehören zum Schleifenkörper und werden wiederholt.

Mehrere Zeilen im Schleifenkörper

Ein Schleifenkörper kann aus mehreren Befehlen bestehen. In der Übung unten legt Karel einen Beeper ab, geht zum nächsten Feld und dreht sich nach links. Diese drei Befehle werden viermal ausgeführt:

def main():
    for i in range(4):
        put_beeper()
        move()
        turn_left()

Vorbedingung und Nachbedingung

Der schwierigste Teil an Schleifen ist oft nicht die Schreibweise, sondern der Zustand zwischen den Wiederholungen. Am Anfang jeder Runde muss Karel so stehen, dass der Schleifenkörper wieder sinnvoll ausgeführt werden kann.

In der 2x2-Welt unten klappt das, weil Karel nach jeder Runde auf das nächste leere Feld schaut. Würdest du turn_left() aus dem Schleifenkörper entfernen, wäre diese Annahme nach der ersten Runde nicht mehr wahr.

Verschachtelte Schleifen

Später können Schleifen auch andere Schleifen enthalten. Das nennt man verschachtelte Schleifen. Unser Runner unterstützt diese einfache Form bereits, aber für den Anfang reicht es, eine einzelne Schleife sicher zu lesen und zu schreiben.

def main():
    for row in range(2):
        for col in range(2):
            put_beeper()

Ausprobieren

Aufgabe

Vier Felder markieren

easy

Karel soll in einer 2x2-Welt auf jedes Feld einen Beeper legen und am Ende wieder am Start stehen. Verwende dafür eine for-Schleife.

Ziel

  • Karel soll am Ende in Spalte 1, Zeile 1 stehen.
  • Karel soll nach Osten schauen.
  • In der Welt sollen 4 Beeper liegen.
  • Karel soll keine Beeper in der Tasche haben.

Karel-Welt

Aktuelle Welt

2 x 2
Blick nach Osten

1,2
2,2
1,1
2,1

Karel-Welt

Zielwelt

2 x 2
Blick nach Osten

1,2
2,2
1,1
2,1

Aktuell unterstützt der Runner Karel-Befehle, eigene Funktionen und einfache for- und while-Schleifen.

Feedback

Schritte: 0

Status: Noch nicht gelöst

Aufgabe

Vier Schlaglöcher reparieren

medium

Karel läuft eine Straße entlang, in der vier Schlaglöcher offen sind. Fülle jedes Schlagloch mit einem Beeper und nutze dafür eine for-Schleife.

Ziel

  • Karel soll am Ende in Spalte 9, Zeile 2 stehen.
  • Karel soll nach Osten schauen.
  • In der Welt sollen 4 Beeper liegen.
  • Karel soll keine Beeper in der Tasche haben.

Karel-Welt

Aktuelle Welt

10 x 3
Blick nach Osten

1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
9,3
10,3
1,2
2,2
3,2
4,2
5,2
6,2
7,2
8,2
9,2
10,2
1,1
2,1
3,1
4,1
5,1
6,1
7,1
8,1
9,1
10,1

Karel-Welt

Zielwelt

10 x 3
Blick nach Osten

1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
9,3
10,3
1,2
2,2
3,2
4,2
5,2
6,2
7,2
8,2
9,2
10,2
1,1
2,1
3,1
4,1
5,1
6,1
7,1
8,1
9,1
10,1

Aktuell unterstützt der Runner Karel-Befehle, eigene Funktionen und einfache for- und while-Schleifen.

Feedback

Schritte: 0

Status: Noch nicht gelöst