Fachkonzept: Variable

Ihr kennt ja bestimmt noch die Funktion linksFrei() aus dem Kapitel zu boolschen Funktionen:

boolean linksFrei() {
  linksUm();
 
  if (vornFrei()) {
    rechtsUm();
    return true;
  } else {
    rechtsUm();
    return false;
  }
}

Dieser widerspricht unserem Grundsatz, Code so kurz wie möglich zu halten, denn man muss sich in beiden Fällen am Ende rechtsUm() drehen. Hier wäre es doch schön, wenn man zuerst feststellen könnte, ob vornFrei() ist, sich dieses Ergebnis irgendwie merken könnte (eine Art Notizzettel, auf der "Ja" oder "Nein" steht). Danach dreht man sich wieder zurück und schaut auf dem Notizzettel nach, ob vorn Frei war und gibt dann dieses Ergebnis zurück.

Also irgendwie so wie unten. Hier wiederholt man sich nicht mehr, es wird sich linksUm() gedreht, geguckt, ob vornFrei() ist, sich wieder rechtsUm() gedreht und das Ergebnis zurückgegeben. Man spart sich nicht nur die Verzweigung, sondern auch das doppelte rechtsUm().

boolean linksFrei() {
  linksUm();
 
  <berechne den Ausdruck "vornFrei()" und speichere das Ergebnis in Behälter x>;
 
  rechtsUm();
 
  return <den in Behälter x gespeicherten Wert>;
}

Ein solches Verhalten lässt sich über so genannte Variablen erreichen. Variablen haben einen bestimmten Datentypen, einen Namen und einen Wert. Ihr könnt euch das wie eine Tabelle vorstellen. Angenommen, ihr wollt euch merken, wer wie viel Geld für die Grillfeier ausgegeben hat:

NameWert
Bob20€
Alice15€

Hier gibt es also zwei Variablen. Beide haben den Datentyp "Geldbetrag". Die Variable mit dem Namen "Bob" hat den Wert "20€", die mit dem Namen "Alice" den Wert "15€".

So ähnlich funktioniert auch der Hamster. Der Speicher des Hamsters kann ähnlich wie die Tabelle oben angesehen werden, nur dass der Hamster sich auch den Datentypen merkt.

NameDatentypWert
istFreiBooleanJa
habIchNochKörnerBooleanNein
anzahlSchritteBisZurWandZahl12

Die Variable "istFrei" hat den Datentyp "Boolean" (also ein Ja/Nein-Wert) und den Wert "Ja", etc. Um Variablen in Java verwenden zu können, muss man zuerst einen neuen Eintrag in der Tabelle erstellen. Dazu muss man dem Hamster den Namen und den Datentypen der Variablen mitteilen.

// Erstelle einen neuen Eintrag mit dem Namen "test",
// dem Datentyp "boolean" und speichere darin den Wert "false".
boolean test = false;
 
// Erstelle einen neuen Eintrag mit dem Namen "test2",
// dem Datentyp "boolean" und speichere darin den Wert "true".
boolean test2 = true;
 
// Erstelle einen neuen Eintrag mit dem Namen "test3",
// dem Datentyp "boolean" und speichere darin das Ergebnis
// des Testbefehls "maulLeer()".
boolean test3 = maulLeer();
 
// Erstelle einen neuen Eintrag mit dem Namen "test4",
// dem Datentyp "boolean" und speichere darin das Ergebnis
// des Ausdrucks "maulLeer() || !kornDa()".
boolean test4 = maulLeer() || !kornDa ();

Dieser Code könnte zur folgenden Tabelle führen:

NameDatentypWert
testBooleanfalse
test2Booleantrue
test3Booleantrue
test4Booleanfalse

In unserem Beispiel mit linksFrei() würde das in etwa so aussehen:

boolean linksFrei() {
  linksUm();
 
  // Speichere das Ergebnis von "vornFrei()" in der
  // Tabelle als Boolean unter dem Namen "istFrei" ab.
  boolean istFrei = vornFrei();
 
  rechtsUm();
 
  // Schau in der Tabelle nach, welcher Wert unter
  // "istFrei" gespeichert ist und gib ihn als Ergebnis zurück.
  return istFrei;
}