Fallunterscheidungen

Oft gibt es Situationen, in denen der Ablauf davon abhängt, ob eine bestimmte Bedingung erfüllt ist oder nicht. Man benötigt dann Anweisungen zur Fallunterscheidung, um die unterschiedlichen Abläufe festzulegen. Ein einfaches Beispiel soll als Einführung dienen. Die Scratch-Katze soll durch Drücken der Pfeiltasten über die Bühne bewegt werden. Umgangssprachlich formuliert man das Problem wie folgt:

Eine einfache Lösung wäre das folgende Beispiel:

ds

  fds

Die Katze läuft auf der Bühne wie geplant. Nähert sie sich jedoch dem Rand, bleibt sie stehen. Das Programm soll jetzt so abgeändert werden, dass die Katzer beim Berühren des Randes die Bühne verlässt und an der anderen Seite wieder erscheint. Umgangssprachlich formuliert man diesen Sachverhalt so:

 

Falls die Bedingung wahr ist, dann führe Anweisung durch bezeichnet man als einseitige Fallunterscheidung. Die Anweisung wird nur dann durchgeführt, wenn die Bedingung wahr ist. Diese Bedingungen werden durch Vergleichsbefehle aus der Palette der Operatoren formuliert:

f

Der zu überprüfende Wert kann größer, kleiner oder gleich als ein vorgegebener Wert sein. In der Mathematik gibt es aber auch den Vergleich <= (kleiner gleich) oder >= (größer gleich) oder <> (ungleich). Wie kann man dies in Scratch formulieren? In der Palette der Operatoren gibt es noch die folgenden Befehle:

sd

Durch Kombination der Operatoren erreicht man die gewünschten Vergleiche:

Wann ist nun aber eine Aussage wahr und wann ist sie falsch? Dafür braucht man etwas Logik.

Die ersten drei Blöcke sind eindeutig: A > B,  A < B und A = B. A muss größer B sein (5>3), A muss kleiner B sein (3<5) oder  A muss gleich B sein (5=5). Treffen diese Aussagen zu, ist die Bedingung wahr. Komplizierter sind die drei folgenden Blöcke. Wann ist hier eine Bedingung wahr und wann ist sie falsch? Zwei Aussagen werden hier miteinander verbunden bzw. eine Aussage wird durch nicht im Wahrheitsgehalt verändert. nicht (A = B) bedeutet, die Bedingung ist wahr, wenn A und B unterschiedliche Wahrheitswerte haben. nicht (A=50) bedeutet, dass die Aussage wahr ist, solange A nicht den Wert von 50 hat.

Die folgenden Wahrheitstafeln zeigen an, unter welchen Bedingungen Aussagen wahr oder falsch sind:

A B A UND B  A ODER B  B ODER C  A UND B UND C  A ODER B ODER C  (A UND B) ODER C  A UND (B ODER C) 
      er  zt  ghj  c d hj  jgh 

Sollen mehrere UND und ODER Bedingungen verschachtelt werden, ist wie in der Tabelle ersichtlich, die Reihenfolge der Verknüpfung  wichtig (Bausteine wirken wie Klammern in der Mathematik). Benutzt man nur UND oder ODER-Bausteine ist die Reihenfolge egal.

Wer sich die Palette der Steuerung genau angesehen hat, wird festgestellt haben, dass es noch eine Fallunterscheidung gibt: Falls die Bedingung wahr ist, dann führe Anweisung A durch, falls die Bedingung falsch ist, führe Anweisung B durch. Etwas anders formuliert: Wenn die Bedingung wahr ist, dann führe Anweisung A durch ansonsten Anweisung B. Dies bezeichnet man als zweiseitige Fallunterscheidung. Beispiele werden später genug auftreten.