Bedingungen
Fährt eine Person mit dem Auto auf eine Ampel zu, so passt sie ihr Fahrverhalten an den momentanen Zustand der Ampel an. Ist die Ampel rot, so ruft sie jenen Handlungsablauf ab, welcher dazu führt, das Auto zum Stehen zu bringen. Ist die Ampel grün, so ruft sie ein anderes Verhaltensmuster ab. Dies ist ein Algorithmus mit einer eingebauten Bedingung.
In den meisten Algorithmen ist die vorzunehmende Handlung von den zu bearbeiteten Daten abhängig. Beim Lösen einer quadratischen Gleichung z.B. hängt der zu durchlaufende Teil des Algorithmus davon ab, ob die Diskriminante positiv, negativ oder gleich Null ist. Jede Programmiersprache benötigt daher Sprachkonstrukte, mit welchen sich solche Fallunterscheidungen realisieren lassen.
In den meisten Fällen sind Bedingungen folgendermaßen gegliedert:
if Bedingung
| Anweisung a
| Anweisung b
| Anweisung c
else
| Anweisung x
| Anweisung y
| Anweisung z
Oft ist es nicht nötig, Anweisungen auszuführen, wenn die Bedingung nicht erfüllt ist. Hierfür kann in den meisten Programmiersprachen der else
-Teil weggelassen werden. Beim Thema Pseudocode kam bereits das Beispiel der Nullstellenberechnung einer quadratischen Funktion $x\mapsto ax^2 + bx + c$ auf. Geht es nur darum, herauszufinden, ob diese Parabel die $x$-Achse schneidet, kann das durch die Befehle
if b^2 - 4*a*c > 0
| Gib aus "Ja"
erreicht werden. Ist hingegen die genaue Anzahl der Nullstellen gefragt, kann das wie folgt aussehen:
if b^2 - 4*a*c < 0
| Ausgabe der Antwort "Es gibt keine Nullstellen."
else
| if b^2 - 4*a*c == 0
| | Ausgabe der Antwort "Es gibt genau eine Nullstelle bei -b/(2*a)."
| else
| | Ausgabe der Antwort "Es gibt zwei Nullstellen.
| | Eine bei (-b + sqrt(d))/(2*a) und
| | eine bei (-b - sqrt(d))/(2*a)."
Insbesondere ist hier auch eine der wichtigsten Funktionsweisen bei der Verwendung von Bedingungen zu sehen: Sie werden oft geschachtelt und somit kombiniert. Die erste if
-Anweisung überprüft, ob die Diskriminante negativ ist. Im zugehörigen else
-Teil wird nun zusätzlich danach unterschieden, ob sie gleich Null. Im letzten else
-Teil bleibt dann nur die Möglichkeit übrig, dass sie positiv ist und die entsprechende Antwort wird ausgegeben.
Darüber hinaus sind Bedingungen auch Kernelement von Schleifen anhand derer entschieden wird, ob die Schleife fortgesetzt werden soll oder nicht.
Im Unterricht können Bedingungen genauso wie Schleifen durch eine Vielzahl von Beispielen – etwa aus dem Alltag – eingeführt werden. Die nachfolgende Szene 4 - Teil 1: Einführung von Bedingungen zeigt dies erneut am Schulalltag einerseits und an der verwendeten Schildkrötenprogrammierung andererseits.
In diesem Szenario befindet sich die Schildkröte in einem geschlossenen Raum. Und der neue Befehl while...do
erlaubt es nun, der Schildkröte auf die Wand des Raums zu reagieren, indem die entsprechende Bedingung abgefragt wird. Ist die Bedingung innerhalb der while
-Schleife wahr, so werden alle Anweisungen im Bedingungsblock durchlaufen und ausgeführt. Ist sie falsch, wird der gesamte Block übersprungen.
Anleitung: In der linken Leiste finden Sie die Befehle, welche sich in die mittlere Leiste schieben lassen. Unterhalb der Befehle ist ein Geschwindigkeitsregler und die Tasten play und stop zu finden. Mit play werden die Befehle der mittleren Leiste von der Schildkröte ausgeführt. Die Geschwindigkeit kann durch den Schieberegler über den Knöpfen variiert werden.
Aufgaben für den Unterricht:
- Die Schildkröte an der Wand entlang im Quadrat laufen lassen.
- Eine Treppe malen, die an der Wand endet.
Mehr Informationen zu Algorithmen finden Sie unter (Dieker & Güting, 2018).