Variablen
Wir erweitern nun den Hamster um ein „Gedächtnis“: Der Hamster soll sich nun Zahlen und andere Informationen in sogenannten Variablen merken.
1. Der Energie-Hamster
Folgendes Problem soll gelöst werden. Der Hamster hat auf seiner Kachel eine ihm unbekannte Anzahl an Körnern liegen (im Bsp. rechts sind es sechs Körner). Er nimmt alle Körner auf und zählt sie dabei. Diese Anzahl merkt er sich in einer Variablen. Anschließend geht er so viele Schritte nach vorne, wie er Körner gezählt hatte.
„Für jeden Schritt verbraucht er die Energie eines Korns.“
void main()
{
// Definition einer Variablen
int zaehler = 0;
// Erst zaehlen...
while (kornDa())
{
nimm();
// Variable um 1 erhoehen
zaehler = zaehler + 1;
}
// An dieser Stelle hat die Variable
// einen bestimmten Wert, z.B. 6.
// Nun wird wieder runtergezaehlt:
while (zaehler > 0)
{
vor();
// Variable um 1 verringern
zaehler = zaehler - 1;
}
}
2. Variablen definieren
Für die oben beschriebene Aufgabe muss sich der Hamster eine Zahl merken: Die folgende Code-Zeile definiert eine Variable namens zaehler vom Datentyp int mit dem Startwert 0. Es gibt auch noch andere Datentypen, z.B. boolean (Wahrheitswerte) und float (Dezimalzahlen).
int zaehler = 0;
3. Variablen auslesen und Vergleichsoperatoren
| Vgl.operation | Bedeutung |
|---|---|
x == y |
gleich? |
x > y |
größer? |
x >= y |
größer oder gleich? |
x < y |
kleiner? |
x <= y |
kleiner oder gleich? |
Um den aktuellen Wert einer Variablen auszulesen, genügt es, den Variablennamen zu schreiben. Da es sich bei zaehler um eine Variable vom Typ int handelt, kann dieser Wert z.B. mit einem Vergleichsoperator (z.B. > oder >=) für eine Fallunterscheidung (if/else) oder eine while-Schleife verwendet werden.
while (zaehler > 0)
{
// Hier folgt weiterer Code
}
In rechtsstehender Tabelle sind die möglichen Vergleichsoperatoren aufgelistet. Beachte, dass x und y sowohl Variablennamen sein können, als auch durch eine konkrete Zahl ersetzt werden dürfen. Beachte ebenfalls den Unterschied in Java zwischen = (Variablendefinition/-zuweisung) und == (Vergleichsoperator).
4. Variablen zuweisen
zaehler = 5;
Um einer Variablen einen neuen Wert zuzuweisen, verwendet man den sogenannten Zuweisungsoperator. Im Folgenden darf das = nicht mit dem $=$ im mathematischen Sinne verwechselt werden. Vielmehr sagt die folgende Zeile: „Schreibe den Wert 5 in die Variable zaehler.“
zaehler = zaehler + 1;
Manchmal wird eine Variable in einem einzigen Befehl sowohl ausgelesen, als auch beschrieben. Wichtig ist zu verstehen, dass erst gelesen wird, und anschließend geschrieben. Die Code-Zeile rechts hat also zur Folge, dass der Wert in der Variablen zaehler um 1 erhöht wird. An dieser Stelle wird noch einmal besonders klar, dass es sich bei = nicht um das mathematische $=$ handeln kann.
Es können die üblichen Rechenoperatoren + und - und * und / verwendet werden, sowie Klammern ( und ) zur Festlegung der Reihenfolge.
zaehler++;
zaehler--;
Da es häufig vorkommt, dass eine Variable um 1 erhöht oder verringert werden soll, gibt es die rechtsstehenden Kurzschreibweisen. Die Fachbegriffe sind inkrementieren (um eins erhöhen) und dekrementieren (um eins verringern). Von nun an verwenden wir immer die Kurzschreibweise.
5. Schleife zum Zählen verwenden
Betrachte nun noch einmal den Energie-Hamster aus Abschnitt 1. Im Wesentlichen werden zwei Zählvorgänge ausgeführt.
int i = 42;
while (i > 0)
{
vor();
i--;
}
- Zunächst wird die Variable
zaehlerso lange hochgezählt (Z. 11), wie Körner vorhanden sind (Schleifenbed. in Z. 7). - Dann wird die Variable
zaehlerso lange runtergezählt (Z. 21), wie ihr Wert noch größer als 0 ist (Schleifenbed. in Z. 17).
Diesen Mechanismus kann man auch verwenden, um einen Programmblock eine vorgegebene Anzahl an Durchläufen ausführen zu lassen. Z.B. lässt das rechtsstehende Programm den Hamster 42 Schritte tun.
6. Gültigkeitsbereich einer Variablen
Wann darf eine definierte Variable ausgelesen und zugewiesen werden? Jede Variable hat einen Gültigkeitsbereich, in welcher sie verwendet werden darf.
Eine Variable ist gültig in den Programmzeilen
- ab ihrer Definition und ...
- bis zum Ende des sie umgebenden Blocks.
Mit Block ist hiermit eine Befehlssequenz gemeint, die von { und } eingerahmt wird. Im Bsp. aus Abschnitt 1 ist die Variable zaehler gültig ab Zeile 4 bis Zeile 22, da nach dieser Zeile der umgebende Block (welcher von Z. 3 bis Z. 22 reicht) endet.
7. Ein- und Ausgabe
Zur Benutzer-Interaktion sind in den Hamster-Simulator zwei nützliche Befehle eingebaut.
- Eingabe: Zahl einlesen (Zeile 3)
- Ausgabe: Nachricht ausgeben (Zeile 5)
void main()
{
int zahl = liesZahl("Bitte Zahl waehlen!");
int quadrat = zahl * zahl;
schreib("Die Quadratzahl von " + zahl + " lautet " + quadrat);
}