Verzweigungen

Oft soll etwas nur unter bestimmten Voraussetzungen ausgeführt werden, oder je nachdem etwas oder etwas anderes. Dafür kennen Programmiersprachen die If- und If-Else-Struktur – in Scratch durch eine einfache, resp. doppelte Klammer dargestellt. Stimmt die angegebene Bedingung, dann wird der If-Block ausgeführt. Sonst wird nichts resp. der Else-Block ausgeführt.

if <> then
...
end
If-Block
if <> then
...
else
...
end
If-Else-Block

Wahrheitswerte

Um bei einer Verzweigung entscheiden zu können, welcher Teil ausgeführt werden soll, braucht man ein «ja» oder ein «nein». Scratch-Blöcke, welche ein Ergebnis der Art «wahr» oder «falsch» resp. «ja» oder «nein» liefern, haben das folgende Aussehen:

        :: sensing boolean
Wahrheits-Block

Beispiele:

  • Wird der Bildrand berührt?
  • Wird die Farbe «grün» berührt?
  • Wurde die Taste «q» gedrückt?
  • Wurde die Maustaste geklickt?

Verwenden von Wahrheitswerten mit einer Verzweigung:

Bestehender Block von Scratch: Wenn das Objekt auf den Rand trifft, dreht es

if on edge, bounce
bestehender Block

Selbst nachgebauter Programm-Block, der das selbe mit einer Verzweigung, einem Wahrheitsblock und einem Dreh-Befehl löst

if <touching [edge v]?> then
turn ccw (180) degrees
end
nachgebauter Block

Vergleichsoperatoren

Wahrheitswerte können auch durch Vergleich von Zahlen oder anderen Variablen entstehen. Als Vergleichsoperatoren können «kleiner», «gleich» und «grösser» eingesetzt werden. In die eckigen Kästchen der Vergleichsoperatoren kommen Zahlen oder Variablen.

<[] < []>
<[] = []>
<[] > []>
Vergleichs-Blöcke

Beispiele:

  • 4 < 5 liefert wahr
  • 4 > 5 liefert falsch
  • 4 = 5 liefert falsch
  • a > 12 (je nachdem welcher Wert in a gespeichert ist)

Operatoren ändern Werte. Wir kennen vor allem die Mathematischen Operatoren, also z.B. +, -, * und /. Diese berechnen aus zwei Zahlen eine neue Zahl. Daneben gibt es aber auch die soeben kennengelernten Vergleichsoperatoren, welche einen Wahrheitswert berechnen – und die im nächsten Abschnitt besprochenen logische Operatoren, welche aus Wahrheitswerten neue Wahrheitswerte berechnen.

Operatoren auf Wahrheitswerten

Mehrere Wahrheitswerte können mit sogenannten logischen Operatoren verknüpft werden. Zur Verfügung stehen das logische «Und» (and), das logische «Oder» (or) und das logische «Nicht» (not).

<<> and <>>
<<> or <>>
<not <>>
Boolsche-Blöcke

Die Werte «wahr» oder «falsch» (true resp. false) sind sogenannte boolsche Werte (boolean). Die meisten Programmiersprachen kennen Variablen vom Typ «Boolean» (neben Zahlen und Text).

Die logischen Operatoren lassen sich in sogenannten Wahrheitswertetabellen darstellen, wobei 0 für «falsch» und 1 für «wahr» steht:

a b a and b
0 0 0
0 1 0
1 0 0
1 1 1
Alle möglichen AND-Verknüpfungen zweier Wahrheitswerte
a b a or b
0 0 0
0 1 1
1 0 1
1 1 1
Alle möglichen OR-Verknüpfungen zweier Wahrheitswerte
a not a
0 1
1 0
Alle möglichen NOR-Operationen eines Wahrheitswertes

Es lassen sich jetzt beliebig komplexe Bedingung erstellen, welche dann in einer Verzweigung eingesetzt werden können. Das folgende Bespiel führt den If-Block nur dann aus, wenn der Wert der Variablen x grösser als 10 ist und das zum Skript gehörende Objekt nicht die Farbe Schwarz berührt. Sonst wird der Else-Block ausgeführt.

if <<(x) < [10]> and <not <touching color [#000000]?>>> then
...
else
...
end
Boolsche-Blöcke