Schleifen: Unterschied zwischen den Versionen
Zeile 27: | Zeile 27: | ||
* Ist die '''Anzahl der Wiederholungen bekannt''', so kann der folgende Schleifenblock verwendet werden: | * Ist die '''Anzahl der Wiederholungen bekannt''', so kann der folgende Schleifenblock verwendet werden: | ||
<pre id="schl02"> | <pre id="schl02"> | ||
Zeile 34: | Zeile 33: | ||
} | } | ||
</pre> | </pre> | ||
* Wenn '''nicht klar''' ist, '''wie oft''' bestimmte Befehle wiederholt werden müssen, kann der folgende Schleifenblock verwendet werden: | * Wenn '''nicht klar''' ist, '''wie oft''' bestimmte Befehle wiederholt werden müssen, kann der folgende Schleifenblock verwendet werden: | ||
<pre id="schl03"> | <pre id="schl03"> |
Version vom 28. April 2022, 15:58 Uhr
Video
Schleifen
Was ist das?
Schleifen werden beim Programmieren immer dann eingesetzt, wenn bestimmte Befehle mehrmals oder unendlich oft wiederholt werden sollen.
Man nennt sie daher auch Wiederholungsanweisungen. Je nach Programmiersprache gibt für die Erzeugung einer Schleife bestimmte Befehle.
Befehlsblöcke
Für die Programmierung des BBC micro:bit stehen die folgenden 3 Befehle zur Verfügung:
- Manchmal ist es erwünscht, dass bestimmte Befehle (theoretisch) unendlich oft ausgeführt werden. Man spricht dann von einer Endlosschleife (engl. infinite loop).
basic.forever(function () { })
Bei den folgenden beiden Schleifenblöcken muss eine Abbruchbedingung angegeben werden. Dabei ist zu überlegen, wie oft die Befehle in der Schleife ausgeführt werden sollen.
- Ist die Anzahl der Wiederholungen bekannt, so kann der folgende Schleifenblock verwendet werden:
for (let index = 0; index < 4; index++) { }
- Wenn nicht klar ist, wie oft bestimmte Befehle wiederholt werden müssen, kann der folgende Schleifenblock verwendet werden:
while (false) { }
Dabei werden die Befehle in der Schleife solange wiederholt, bis eine bestimmte Bedingung erfüllt oder nicht mehr erfüllt ist.
Beispielprogramm - blinkendes Herz
Die folgenden beiden Programme erzeugen dasselbe Ergebnis: ein blinkendes Herz am LED-Display des BBC micro:bit.
Im zweiten (unteren) Programm wird eine Schleife verwendet. Das bringt einige Vorteile mit sich:
- Die Anzahl der Wiederholungen kann schnell geändert werden, z.B. 20-mal anstatt 3-mal.
- Der Programmcode wird übersichtlicher.
ohne Schleife:
basic.showIcon(IconNames.Heart) basic.pause(500) basic.clearScreen() basic.pause(500) basic.showIcon(IconNames.Heart) basic.pause(500) basic.clearScreen() basic.pause(500) basic.showIcon(IconNames.Heart) basic.pause(500) basic.clearScreen() basic.pause(500)
mit Schleifen:
for (let index = 0; index < 3; index++) { basic.showIcon(IconNames.Heart) basic.pause(500) basic.clearScreen() basic.pause(500) }
zum Programm: https://makecode.microbit.org/_MYPiLRiL6FbH
Um das Herz dauerhaft blinken zu lassen, kann der folgende Schleifenblock verwendet werden:
basic.forever(function () { basic.showIcon(IconNames.Heart) basic.pause(500) basic.clearScreen() basic.pause(500) })
Beispielprogramm - Countdown
In diesem Beispiel wird ein Countdown programmiert:
- Gestartet wird bei 10.
- Dann wird schrittweise bis 0 hinuntergezählt.
Dazu müssen die Befehle innerhalb der Schleife insgesamt 11-mal ausgeführt werden.
Nach der 11. Wiederholung bricht die Schleife ab und ein Symbol erscheint am LED-Display des BBC micro:bit.
let Counter = 0 Counter = 10 input.onButtonPressed(Button.A, function () { for (let index = 0; index < 11; index++) { basic.showNumber(Counter) basic.pause(500) Counter += -1 } basic.showIcon(IconNames.No) })
Zum Programm: https://makecode.microbit.org/_0Vq0RgL2FTf2
Beispielprogramm - Komponieren
Der im vorherigen Beispiel verwendete Schleifenblock kann auch für das Komponieren von Melodien sehr hilfreich sein, wie das folgende Beispiel zeigt:
for (let index = 0; index < 3; index++) { music.playTone(262, music.beat(BeatFraction.Half)) music.playTone(294, music.beat(BeatFraction.Half)) music.playTone(330, music.beat(BeatFraction.Half)) basic.pause(500) music.playTone(330, music.beat(BeatFraction.Half)) music.playTone(294, music.beat(BeatFraction.Half)) music.playTone(262, music.beat(BeatFraction.Half)) basic.pause(500) }
Zum Programm: https://makecode.microbit.org/_EVsK9DEAkgTi
Beispielprogramm - Drück mich!
Hier werden 2 Schleifenblöcke ineinander verschachtelt.
Betrachten wir zuerst die innere Schleife:
Die Befehle in der Schleife werden solange wiederholt, bis eine bestimmte Bedingung nicht mehr erfüllt ist. Im folgenden Beispiel wird solange das Herz-Symbol auf der LED-Matrix des BBC micro:bit angezeigt bis der Knopf A losgelassen wird.
Die äußere Endlosschleife wird benötigt, um dauerhaft zu überprüfen, ob der Knopf A gedrückt wird oder nicht.
basic.forever(function () { while (input.buttonIsPressed(Button.A)) { basic.showIcon(IconNames.Heart) } basic.clearScreen() })
Zum Programm: https://makecode.microbit.org/_UwUTgsahfcb5
Übung
Versuche die Biber-der-Informatik-Aufgabe Cassy, die Schildkröte zu lösen.
- Klicke dazu auf den folgenden Link:
http://www.ocg.at/sites/ocg.at/files/Biberheft_2016_ohne_neu.pdf
- Du findest die Aufgabe auf Seite 16.