Bedingte Anweisungen: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Maria.grandl (Diskussion | Beiträge)
 
(84 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
==[[Datei:icon_play.png|20px|Icon]] Video==
'''Bedingte Anweisungen'''
[[Datei:icon_you_tube.png|20px|Icon]] https://youtu.be/tra4BQuYIns
==Was ist das?==
==Was ist das?==


Wenn du Programme erstellst, weißt du nicht immer von vorneherein, wie das Programm ablaufen wird. Du wirst ziemlich oft auf Situationen stoßen, in denen der BBC micro:bit Entscheidungen treffen muss, während das Programm schon läuft. In diesen Situationen muss der micro:bit dann wissen, welche Entscheidung er treffen soll. Dies machst du mit bedingten Anweisungen, die du vorher einprogrammiert hast. Solche Anweisungen sind nach dem Wenn-Dann-Schema aufgebaut (z.B. '''Wenn''' ''es hell ist'', '''dann''' ''zeige einen lachenden Smiley auf dem micro:bit an'').
'''WENN''' der Apfel reif ist,  
'''DANN''' pflücke ich den Apfel,  
'''ANSONSTEN''' esse ich ein anderes Obst.
 
Nicht nur im täglichen Leben sondern auch beim Programmieren gibt es Situationen, in denen bestimmte Entscheidungen getroffen werden müssen.
 
Diese Entscheidungen sind davon abhängig, ob bestimmte Ereignisse (Der Apfel ist reif.) eintreten oder eben nicht eintreten (Der Apfel ist nicht reif).  
 
 
Du kannst dem BBC micro:bit sagen, wie er sich verhalten soll, wenn bestimmte [[Ereignis|Ereignisse]] eintreten. Dies machst du mit '''bedingten Anweisungen'''.
 
Verzweigung, WENN-Bedingung, IF-Anweisung
 
Solche Anweisungen sind nach dem WENN-DANN-(SONST)-Schema aufgebaut:
 
 
'''WENN''' Knopf A gedrückt wird,
'''DANN''' zeige einen lachenden Smiley
 
oder
 
'''WENN''' Knopf A gedrückt wird,  
'''DANN''' zeige einen lachenden Smiley,
'''ANSONSTEN''' zeige einen traurigen Smiley
 
 
Im Microsoft MakeCode-Editor kannst du das auf die folgenden 2 Arten umsetzen.
Programm 1 und Programm 2 liefern dasselbe Ergebnis.
 
 
'''Programm 1:'''
<pre id="if01">
basic.forever(function () {
    if (input.buttonIsPressed(Button.A)) {
        basic.showIcon(IconNames.Happy)
        basic.pause(1000)
    } else {
        basic.showIcon(IconNames.Sad)
    }
})
</pre>
 
 
'''Programm 2:'''
<pre id="if02">
input.onButtonPressed(Button.A, function () {
    basic.showIcon(IconNames.Happy)
    basic.pause(1000)
})
basic.forever(function () {
    basic.showIcon(IconNames.Sad)
})
</pre>
 
==Befehle==
 
Im Editor https://makecode.microbit.org/ finden sich die entsprechenden Befehle in den Kategorien '''Eingabe''' und '''Logik'''
 
 
[[Datei:Befehle_bedingte_anweisungen_neu1.png|400px|Kategorie Eingabe]]
[[Datei:Befehle_bedingte_anweisungen_neu2.png|350px|Kategorie Logik]]
 
<!--
==Wenn-Dann==
 
[[Datei:beim_start_erklaerung.png|70px|Beim-Start-Block]]
 
[[Datei:wenn_dann.png|120px|Wenn-Dann-Block]]
 
[[Datei:Bedingte anweisung buttonA.png|150px|Wenn-Dann-Block]]


==Befehlsblöcke==
[[Datei:Bedingte anweisung geschuettelt.png|140px|Wenn-Dann-Block]]
-->


Im Großen und Ganzen sind für dich bei den bedingten Anweisungen zwei Blöcke besonders wichtig:
<!--
==Wenn-Dann-Ansonsten==


===Wenn-Dann===
[[Datei:wenn_dann_sonst.png|140px|Wenn-Dann-Ansonsten-Block]]
-->


[[Datei:wenn_dann.png|border|200px|Wenn-Dann-Block]]
==Beispielprogramm - Schütteln==


Den oben abgebildeten Block findest du unter dem Register "Logik" in der Programmierumgebung des BBC micro:bit. Mit diesem Block kannst du dem micro:bit einfache Anweisungen erteilen (z.B. '''Wenn''' ''eine [[Variablen|Variable]] den Wert 0 hat'', '''dann''' ''setze sie auf 1'').  
Das Häkchen-Symbol wird nur dann angezeigt, wenn der BBC micro:bit geschüttelt wird.
<!--[[Datei:beispielprogramm_schuetteln.png|150px|Schütteln]]-->
<pre id="if08">
input.onGesture(Gesture.Shake, function () {
    basic.showIcon(IconNames.Yes)
})
basic.forever(function () {
    basic.showIcon(IconNames.No)
})
</pre>


===Wenn-Dann-Ansonsten===


[[Datei:wenn_dann_sonst.png|border|250px|Wenn-Dann-Ansonsten-Block]]
Ein sehr ähnliches Ergebnis liefert auch der folgende Code. Dabei wird der Wert der '''Beschleunigung in x-Richtnung''' abgefragt. <br />
Wird der BBC micro:bit geschüttelt oder von links nach rechts bewegt, so erhöht sich dieser Wert.


Wie den einfachen Wenn-Dann-Block findest du auch diesen erweiterten Block unter dem Register "Logik". Mit diesem Block kannst du deine Anweisungen erweitern (z.B. '''Wenn''' ''es hell ist'', '''dann''' ''zeige einen lachenden Smiley auf dem micro:bit an'', '''ansonsten''' ''zeige einen traurigen Smiley auf dem micro:bit an.'')
<!--[[Datei:bedingte_anweisung_beispielprogramm1_v2.png|300px|Schütteln]]-->
<pre id="if9">
basic.forever(function () {
    if (input.acceleration(Dimension.X) > 500) {
        basic.showIcon(IconNames.Yes)
        basic.pause(1000)
    } else {
        basic.showIcon(IconNames.No)
    }
})
</pre>


Du kannst den Wenn-Dann-Ansonsten-Block noch beliebig oft erweitern und verschiedene Dinge abfragen. (z.B. '''Wenn''' ''eine Variable den Wert 0 hat'', '''dann''' ''mache ...'', '''ansonsten wenn''' ''eine Variable den Wert 1 hat'', '''dann''' ''mache ...'', '''ansonsten''' ''mache ...'')
Zum Programm: https://makecode.microbit.org/_3rE9HaLxJCpk


==Beispielprogramme==
== Beispielprogramm - Helligkeitsmessung==


Hier findest du nun Beispiele für Programme, bei denen bedingte Anweisungen benötigt werden:
'''Wenn''' es hell ist, also der Wert der '''Lichtstärke größer als 150''' ist, wird ein '''lachender Smiley''' angezeigt. <br />
'''Ansonsten''' (wenn der Wert der Lichtstärke kleiner oder gleich 150) ist) erscheint ein '''trauriger Smiley'''.<br />


===Schütteln===
Du findest den Befehlsblock, mit dem du die Lichtstärke messen kannst, in der Kategorie '''Eingabe'''.<br />
Um immer den '''aktuellen Wert der Lichtstärke''' zu erhalten, muss der gesamte Code in einer '''Endlosschleife''' ausgeführt werden.


Mit dem folgenden Programm kannst du das Symbol, welches am micro:bit angezeigt wird, ändern, indem du das Gerät schüttelst! Dazu wird eine Wenn-Dann-Anweisung benötigt.
<pre id="if10">
basic.forever(function () {
    if (input.lightLevel() > 150) {
        basic.showIcon(IconNames.Happy)
        basic.pause(1000)
    } else {
        basic.showIcon(IconNames.Sad)
    }
})
</pre>


[[Datei:beispielprogramm_schuetteln.png|border|250px|Schütteln]]
<!--[[Datei:beispielprogramm_lichtstaerke.png|border|250px|Helligkeitsmessung]]-->
Zum Programm: https://makecode.microbit.org/_TWJadPi6L1LH


===Helligkeitsmessung===
==Übung==


Mit dem folgenden Programm kannst du die Helligkeit mit dem BBC micro:bit messen! Wenn es hell ist (Lichtstärke über 150), dann soll ein lachender Smiley angezeigt werden, ansonsten ein trauriger Smiley.
Versuche die Biber-der-Informatik-Aufgabe '''Alea iacta''' zu lösen.<br \>
Du findest die Aufgabe unter folgendem Link auf '''Seite 7''':  


[[Datei:beispielprogramm_lichtstaerke.png|border|350px|Helligkeitsmessung]]
https://www.ocg.at/sites/ocg.at/files/medien/pdfs/BiberAufgaben2015.pdf


==Unplugged Übung==
<htmlet>makecode_embed</htmlet>

Aktuelle Version vom 10. Mai 2022, 14:23 Uhr

Icon Video

Bedingte Anweisungen

Icon https://youtu.be/tra4BQuYIns

Was ist das?

WENN der Apfel reif ist, DANN pflücke ich den Apfel, ANSONSTEN esse ich ein anderes Obst.

Nicht nur im täglichen Leben sondern auch beim Programmieren gibt es Situationen, in denen bestimmte Entscheidungen getroffen werden müssen.

Diese Entscheidungen sind davon abhängig, ob bestimmte Ereignisse (Der Apfel ist reif.) eintreten oder eben nicht eintreten (Der Apfel ist nicht reif).


Du kannst dem BBC micro:bit sagen, wie er sich verhalten soll, wenn bestimmte Ereignisse eintreten. Dies machst du mit bedingten Anweisungen.

Verzweigung, WENN-Bedingung, IF-Anweisung

Solche Anweisungen sind nach dem WENN-DANN-(SONST)-Schema aufgebaut:


WENN Knopf A gedrückt wird, DANN zeige einen lachenden Smiley

oder

WENN Knopf A gedrückt wird, DANN zeige einen lachenden Smiley, ANSONSTEN zeige einen traurigen Smiley


Im Microsoft MakeCode-Editor kannst du das auf die folgenden 2 Arten umsetzen. Programm 1 und Programm 2 liefern dasselbe Ergebnis.


Programm 1:

basic.forever(function () {
    if (input.buttonIsPressed(Button.A)) {
        basic.showIcon(IconNames.Happy)
        basic.pause(1000)
    } else {
        basic.showIcon(IconNames.Sad)
    }
})


Programm 2:

input.onButtonPressed(Button.A, function () {
    basic.showIcon(IconNames.Happy)
    basic.pause(1000)
})
basic.forever(function () {
    basic.showIcon(IconNames.Sad)
})

Befehle

Im Editor https://makecode.microbit.org/ finden sich die entsprechenden Befehle in den Kategorien Eingabe und Logik


Kategorie Eingabe Kategorie Logik


Beispielprogramm - Schütteln

Das Häkchen-Symbol wird nur dann angezeigt, wenn der BBC micro:bit geschüttelt wird.

input.onGesture(Gesture.Shake, function () {
    basic.showIcon(IconNames.Yes)
})
basic.forever(function () {
    basic.showIcon(IconNames.No)
})


Ein sehr ähnliches Ergebnis liefert auch der folgende Code. Dabei wird der Wert der Beschleunigung in x-Richtnung abgefragt.
Wird der BBC micro:bit geschüttelt oder von links nach rechts bewegt, so erhöht sich dieser Wert.

basic.forever(function () {
    if (input.acceleration(Dimension.X) > 500) {
        basic.showIcon(IconNames.Yes)
        basic.pause(1000)
    } else {
        basic.showIcon(IconNames.No)
    }
})

Zum Programm: https://makecode.microbit.org/_3rE9HaLxJCpk

Beispielprogramm - Helligkeitsmessung

Wenn es hell ist, also der Wert der Lichtstärke größer als 150 ist, wird ein lachender Smiley angezeigt.
Ansonsten (wenn der Wert der Lichtstärke kleiner oder gleich 150) ist) erscheint ein trauriger Smiley.

Du findest den Befehlsblock, mit dem du die Lichtstärke messen kannst, in der Kategorie Eingabe.
Um immer den aktuellen Wert der Lichtstärke zu erhalten, muss der gesamte Code in einer Endlosschleife ausgeführt werden.

basic.forever(function () {
    if (input.lightLevel() > 150) {
        basic.showIcon(IconNames.Happy)
        basic.pause(1000)
    } else {
        basic.showIcon(IconNames.Sad)
    }
})

Zum Programm: https://makecode.microbit.org/_TWJadPi6L1LH

Übung

Versuche die Biber-der-Informatik-Aufgabe Alea iacta zu lösen.
Du findest die Aufgabe unter folgendem Link auf Seite 7:

https://www.ocg.at/sites/ocg.at/files/medien/pdfs/BiberAufgaben2015.pdf