Schleifen: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen
Maria.grandl (Diskussion | Beiträge)
Maria.grandl (Diskussion | Beiträge)
 
(80 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
==[[Datei:icon_play.png|20px|Icon]] Video==
'''Schleifen'''
[[Datei:icon_you_tube.png|20px|Icon]] https://youtu.be/9hvM5ip19Mg
==Was ist das?==
==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.
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.
 
==Befehle==
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).
<pre id="schl01">
basic.forever(function () {
})
</pre>
 
 
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 grüne Befehl verwendet werden:
 
<pre id="schl02">
for (let index = 0; index < 4; index++) {
}
</pre>
 
 
* Wenn '''nicht klar''' ist, '''wie oft''' bestimmte Befehle wiederholt werden müssen, kann der folgende grüne Befehl verwendet werden:
 
<pre id="schl03">
while (false) {
 
}
</pre>
 
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:
<pre id="schl04">
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)
</pre>
 
'''mit''' Schleifen:
<pre id="schl05">
for (let index = 0; index < 3; index++) {
    basic.showIcon(IconNames.Heart)
    basic.pause(500)
    basic.clearScreen()
    basic.pause(500)
}
</pre>
 
 
zum Programm: https://makecode.microbit.org/_MYPiLRiL6FbH
 
 
Um das Herz '''dauerhaft''' blinken zu lassen, muss eine Endlosschleife erzeugt werden:
 
<pre id="schl06">
basic.forever(function () {
    basic.showIcon(IconNames.Heart)
    basic.pause(500)
    basic.clearScreen()
    basic.pause(500)
})
</pre>
 
=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.
 
<pre id=schl07">
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)
})
</pre>
 
Zum Programm: https://makecode.microbit.org/_0Vq0RgL2FTf2
 
=Beispielprogramm - Komponieren=
 
Der im vorherigen Beispiel verwendete Schleifen-Befehl kann auch für das Komponieren von Melodien sehr hilfreich sein, wie das folgende Beispiel zeigt:
 
 
<pre id=schl09">
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)
}
</pre>
 
Zum Programm: https://makecode.microbit.org/_EVsK9DEAkgTi
 
=Beispielprogramm - Drück mich!=
 
Hier werden 2 Schleifen 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.
 
<pre id="schl09">
basic.forever(function () {
    while (input.buttonIsPressed(Button.A)) {
        basic.showIcon(IconNames.Heart)
    }
    basic.clearScreen()
})
</pre>
 
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.
 
<htmlet>makecode_embed</htmlet>

Aktuelle Version vom 28. April 2022, 16:13 Uhr

Icon Video

Schleifen

Icon https://youtu.be/9hvM5ip19Mg

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.

Befehle

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 grüne Befehl verwendet werden:
for (let index = 0; index < 4; index++) {
	
}


  • Wenn nicht klar ist, wie oft bestimmte Befehle wiederholt werden müssen, kann der folgende grüne Befehl 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, muss eine Endlosschleife erzeugt 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 Schleifen-Befehl 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 Schleifen 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.