10.3.4 Verzweigung


Manche Anweisungen sollen nur ausgeführt werden, wenn eine bestimmte Bedingung erfüllt ist, sonst nicht.

Beispiel: Wenn die Backofenuhr piepst, dann nimm die Pizza aus dem Ofen.

Beachtet man nicht die Bedingung "die Backofenuhr piepst" und führt die Anweisung "nimm die Pizza aus dem Ofen" zu früh oder zu spät aus, dann ist die Pizza vielleicht noch halb gefroren oder bereits halb verbrannt.

In manchen Situationen ist es notwendig, dass eine Entscheidung getroffen wird, welche Anweisungen ausgeführt werden sollen.


Verzweigungen im Algorithmus

Eine Verzweigung ist ein Block, in welchem sich der Algorithmus in zwei mögliche Pfade verzweigt. Mit Hilfe einer Bedingung wird festgelegt, welcher der beiden Pfade vom Algorithmus ausgeführt wird.

Eine Verzweigung besteht aus:

  • einer Bedingung (falls) in welcher eine Aussage steht, die wahr (true) oder falsch (false) sein kann.

  • dem Pfad 1 (mache), dessen Anweisungen ausgeführt werden, wenn die Bedingung wahr ist.

  • dem Pfad 2 (sonst), dessen Anweisungen ausgeführt werden, wenn die Bedingung falsch ist

Wenn die Bedingung den Wert wahr hat, dann wird die Anweisung im Block 'mache' ausgeführt.

Wenn die Bedingung den Wert falsch hat, dann wird die Anweisung im Block 'sonst' ausgeführt.

Löse die Level 6-10.

In einem neuen Fenster starten: Labyrinth


Bedingung für eine Verzweigung bauen

Die Bedingung hinter 'falls' kann alles sein, was den Wert wahr oder falsch liefern kann:

  • Die Variable 'zahl1' soll den Wert 3 haben:
    • Die Gleichung 'zahl1' = 3 hat dann den Wert wahr, denn x hat ja den Wert 3.
    • Die Gleichung 'zahl1' = 7 hat dann den Wert falsch, denn x hat ja den Wert 3 und nicht den Wert 7.

Mit der Bedingung 'zahl1' = 3 wird vom Algorithmus der Pfad 1 hinter 'mache' ausgeführt:

Mit der Bedingung 'zahl1' = 7 wird vom Algorithmus der Pfad 2 hinter 'sonst' ausgeführt:


Verzweigung und Wiederholungsschleife kombinieren

Hinweis: Wenn du den Ablauf des Programms verstanden hast, kannst du die Trace-Tabelle auch mit einem Klick auf 'Füllen' automatisch ausfüllen lassen.

Mit einer Verzweigung und einer Zufallszahl kann man einen Münzwurf simulieren.

  • Öffne folgenden Link: Blockly-Trace-Editor

  • Stelle ein Programm zusammen, mit welchem zehn Münzwurfe simuliert werden und das Ergebnis eines Wurfs jeweils in der Trace-Tabelle ausgegeben wird.


Projekt: Vogelflug

Im folgenden Projekt soll ein Vogel bei der Nahrungssuche unterstützt werden.

Anweisungen können Zahlen enthalten, die man verändern kann, um den Programmablauf genauer zu steuern. Solche veränderlichen Zahlen nennt man Parameter.

Im folgenden Beispiel soll die Richtung eines Vogels mit Hilfe eines Winkel-Parameters gesteuert werden. Dabei wird festgelegt, dass ein Winkel in x-Richtung den Wert 0° hat. Die x-Richtung ist die Richtung, die Sie aus dem Koordinatensystem im Mathematikunterricht kennen. Andere Winkel werden relativ zur x-Richtung gegen den Uhrzeigersinn angegeben.

Manchmal ist es sinnvoll, dass ein Parameter je nach Situation unterschiedliche Werte bekommt. Dazu geht man wie folgt vor:

  • Man legt eine Bedingung fest.
  • Ist die Bedingung erfüllt, dann bekommt der Parameter einen bestimmten Wert.
  • Ist die Bedingung nicht erfüllt, dann bekommt der Parameter einen anderen Wert.

In der Blockprogrammierung sieht ein bedingter Parameter wie folgt aus:

Erklärung:

  • In der ersten Zeile wird geprüft, ob der Vogel keinen Wurm im Schnabel hat.
  • Wenn er keinen Wurm im Schnabel hat, dann fliegt er in die Richtung mit 165°,
  • wenn er einen Wurm im Schnabel hat, dann fliegt er in die Richtung mit 315°.

Eine Variable hat einen Namen und kann einen Wert speichern. Im folgenden Beispiel wird eine Variable verwendet, die den Namen "x" hat und den Wert der x-Koordinate speichert, an dem sich der Vogel gerade befindet.

Beispiel: Wenn der Vogel sich an der x-Koordinate 20 befindet, dann hat die Variable mit dem Namen "x" den Wert "x = 20".

Mit Hilfe der Variablen "x" kann eine Bedingung festgelegt werden, so dass der Steuerkurs des Vogels geändert wird, wenn die Bedingung erfüllt ist:

Erklärung:

  • In der ersten Zeile wird geprüft, ob der Wert der Variablen "x", in welcher die aktuelle x-Koordinate des Vogels gespeichert ist, kleiner als 50 ist.
  • Wenn der Vogel noch an einer x-Koordinate ist, die kleiner als 50 ist, dann fliegt er in die Richtung mit 45°,
  • wenn der Vogel an einer x-Koordinate ist, die größer als 50 ist, dann fliegt er in die Richtung mit 225°.

In bedingten Verzweigungen können vielfältige Bedingungen eingebaut werden, um auch komplizierte Situationen zu lösen. Dazu verwendet man in der Blockprogrammierung einen Block, den man verändern kann. Oben links im folgenden Block gibt es ein Zahnradsymbol:

Wenn man auf das Zahnradsymbol klickt, kann man den Aufbau des Blocks verändern. Klicken Sie erst auf das Zahnradsymbol und schieben Sie dann den Block "sonst" unter den Block "falls", so dass der Block um die Zeile "sonst" erweitert wird:

Mit Hilfe des Blocks "sonst falls" kann die bedingte Verzweigung beliebig erweitert werden:

Damit können komplizierte Abfragen erstellt werden, mit deren Hilfe der Vogel sehr genau gesteuert werden kann.

Zwei Bedingungen können logisch kombiniert werden. Die logische Kombination "UND" ist dann wahr, wenn beide Bedingungen erfüllt sind, sonst ist die logische Kombination "und" falsch.

Beispiel 1:

Diese kombinierte Bedingung ist dann wahr, wenn die x-Koordinate größer als 50 ist und gleichzeitig die y-Koordinate kleiner als 50 ist.

Beispiel 2:

Diese kombinierte Bedingung ist dann wahr, wenn die x-Koordinate kleiner als 100 ist und gleichzeitig der Vogel noch keinen Wurm aufgenommen hat.

Löse die Level 1-10.

In einem neuen Fenster starten: Vogel