next up previous contents index
Next: 2.8 int-Funktionen Up: 2. Das imperative Hamster-Modell Previous: 2.6 Boolesche Funktionen

Unterabschnitte

  
2.7 Variablen und Ausdrücke

Durch die Einführung von Variablen und Ausdrücken bekommt der Hamster ein ,,Gedächtnis`` und lernt rechnen.

2.7.1 Datentypen

Ein Datentyp  repräsentiert Werte eines bestimmten Typs. Im imperativen Hamster-Modell existieren die Datentypen boolean  und int . Der Datentyp boolean repräsentiert boolesche Werte, also true und false. Der Datentyp int repräsentiert ganze Zahlen zwischen -231 und 231-1.

2.7.2 Variablen

Variablen  sind Speicherbereiche (,,Behälter``), in denen Werte abgespeichert werden können. Vor ihrer Benutzung müssen sie definiert werden. Bei der Definition einer Variablen wird ihr ein Name - ein beliebiger Bezeichner - zugeordnet. Außerdem wird durch die Angabe eines Datentyp festgelegt, welche Werte die Variable speichern kann.

Die folgenden Anweisungen definieren eine Variable frei zum Speichern von booleschen Werten sowie eine Variable anzahlKoerner zum Speichern von ganzen Zahlen. Der Variablen frei wird der Initialwert false zugewiesen, der Variablen anzahl der Wert 13.

   boolean frei = false;
   int anzahl = 13;

2.7.3 Ausdrücke

Ausdrücke  sind spezielle Programmierkonstrukte zum Berechnen und Liefern eines Wertes. Boolesche Ausdrücke haben Sie bereits kennen gelernt. Sie liefern boolesche Werte. Zur Berechnung boolescher Ausdrücke können auch boolean-Variablen hinzugezogen werden. Enthält ein boolescher Ausdruck den Namen einer booleschen Variablen, dann wird bei der Auswertung des booleschen Ausdrucks an der entsprechenden Stelle der Wert berücksichtigt, der aktuell in der Variablen gespeichert ist.

Einen weiteren Typ von Ausdrücken stellen arithmetische Ausdrücke  dar. Sie berechnen und liefern Werte vom Typ int, also ganze Zahlen. Arithmetische Ausdrücke lassen sich auf folgende Art und Weise bilden:

2.7.4 Zuweisung

Mit Hilfe einer Zuweisungsanweisung  - kurz auch Zuweisung  genannt - können Variablen neue Werte zugewiesen werden. Die alten Werte gehen dabei verloren.

Syntaktisch wird die Zuweisung so gebildet, dass dem Namen der betroffenen Variablen das Zeichen = - der Zuweisungsoperator  - und anschließend ein Ausdruck  folgt. Bei booleschen Variablen muss das ein boolescher Ausdruck sein, bei int-Variablen ein arithmetischer Ausdruck.

Bei der Ausführung einer Zuweisung wird zunächst der Ausdruck ausgewertet und anschließend der berechnete Wert der Variablen auf der linken Seite des Zuweisungsoperators zugewiesen. Die Zuweisungsanweisung zahl = zahl + 1; erhöht bspw. den Wert einer int-Variablen zahl um den Wert 1.

2.7.5 Vergleichsausdrücke

Vergleichsausdrücke  sind boolesche Ausdrücke , die zum Vergleichen arithmetischer Ausdrücke  dienen. Sie liefern boolesche Werte nach folgenden Gesetzmäßigkeiten: Seien x und y zwei arithmetische Ausdrücke, dann gilt:

Die Vergleichsoperatoren sind linksassoziativ. Die Operatoren <, <=, > und >=haben eine höhere Priorität  als die Operatoren == und !=. Weiterhin ist zu beachten, dass die Vergleichsoperatoren eine niedrigere Priorität  besitzen als die arithmetischen Operatoren  und eine höhere Priorität als der Zuweisungsoperator .

2.7.6 Gültigkeitsbereiche von Variablen

Variablen lassen sich innerhalb von Prozeduren und Funktionen definieren. In diesem Fall nennt man sie lokale Variablen . Variablen, die außerhalb von Prozeduren oder Funktionen definiert werden, heißen globale Variablen .

Als Gültigkeitsbereich  einer Variablen wird der Teil eines Programmes bezeichnet, in dem eine Variable genutzt werden kann, d.h. in dem der Name einer Variablen verwendet werden darf. Der Gültigkeitsbereich  einer lokalen Variablen erstreckt sich von der der Variablendefinition folgenden Anweisung bis zum Ende desselben Blockes und umschließt alle inneren Blöcke. Der Gültigkeitsbereich einer globalen Variablen umfasst das gesamte Hamster-Programm. Im Gültigkeitsbereich einer Variablen darf keine weitere Variable mit demselben Namen definiert werden.

2.7.7 Lebensdauer von Variablen

Während der Gültigkeitsbereich einer booleschen Variablen zur Compilierzeit von Bedeutung ist, ist die Lebensdauer  einer booleschen Variablen eine Größe, die zur Laufzeit  Relevanz besitzt. Sie ist definiert als die Zeitspanne, während der im Hauptspeicher  Speicherplatz für eine Variable reserviert ist. Es gilt dabei: Die Lebensdauer einer globalen Variablen  umfasst die gesamte Ausführungszeit eines Hamster-Programms. Die Lebensdauer einer lokalen Variablen  beginnt bei ihrer Definition und endet nach der vollständigen Abarbeitung des Blocks, in dem sie definiert wurde.

2.7.8 Beispielprogramm

Im folgenden Programm läuft der Hamster bis zur nächsten Wand. Anschließend dreht er sich um und läuft zum Ausgangsfeld zurück. Die Anzahl der gelaufenen Schritte merkt er sich dabei in einer globalen Variablen anzahl.

  int anzahl = 0; // globale Variable

  void laufeBisZurWand() {
    while (vornFrei()) {
      vor();
      anzahl = anzahl + 1;  // Zuweisung
    }
  }

  void laufeZurueckZumAusgangspunkt() {
    while (anzahl > 0) { // Vergleichsausdruck
      vor();
      anzahl = anzahl - 1;
    }
  }

  void main() {
    laufeBisZurWand();
    linksUm(); linksUm();
    laufeZurueckZumAusgangspunkt();
  }


next up previous contents index
Next: 2.8 int-Funktionen Up: 2. Das imperative Hamster-Modell Previous: 2.6 Boolesche Funktionen
Dietrich Boles
2004-10-05