next up previous contents index
Next: 2.7 Variablen und Ausdrücke Up: 2. Das imperative Hamster-Modell Previous: 2.5 Wiederholungsanweisungen

Unterabschnitte

  
2.6 Boolesche Funktionen

Während Prozeduren dazu dienen, den Befehlsvorrat des Hamsters zu erweitern, dienen boolesche Funktionen  dazu, neue Testbefehle  einzuführen.

2.6.1 Boolesche return-Anweisung

Boolesche return-Anweisungen  werden in booleschen Funktionen zum Liefern eines booleschen Wertes benötigt.

Die Syntax der booleschen return-Anweisung ist sehr einfach: Dem Schlüsselwort return  folgt ein boolescher Ausdruck  und ein abschließendes Semikolon. Boolesche return-Anweisungen sind spezielle Anweisungen , die ausschließlich im Funktionsrumpf boolescher Funktionen verwendet werden dürfen.

Die Ausführung einer booleschen return-Anweisung während der Ausführung einer booleschen Funktion führt zur unmittelbaren Beendigung der Funktionsausführung. Dabei wird der Wert des booleschen Ausdrucks als so genannter Funktionswert  zurückgegeben.

2.6.2 Definition boolescher Funktionen

Die Syntax der Definition einer booleschen Funktion  unterscheidet sich nur geringfügig von der Definition einer Prozedur . Statt Prozedurkopf, -name und -rumpf spricht man hier von Funktionskopf , Funktionsname  und Funktionsrumpf .

Anstelle des Schlüsselwortes void  bei der Definition einer Prozedur muss bei der Definition einer booleschen Funktion das Schlüsselwort boolean  am Anfang des Funktionskopfes stehen.

Ganz wichtig bei der Definition boolescher Funktionen ist jedoch folgende Zusatzbedingung: In jedem möglichen Weg durch die Funktion muss eine boolesche return-Anweisung auftreten!

Boolesche Funktionen können überall dort in einem Hamster-Programm definiert werden, wo auch Prozeduren definiert werden können.

2.6.3 Aufruf boolescher Funktionen

Eine boolesche Funktion darf überall dort aufgerufen werden, wo auch einer der drei vordefinierten Testbefehle aufgerufen werden darf. Der Aufruf einer booleschen Funktion gilt also als ein spezieller boolescher Ausdruck . Der Funktionsaufruf  erfolgt syntaktisch durch die Angabe des Funktionsnamens gefolgt von einem runden Klammernpaar.

Wird bei der Berechnung eines booleschen Ausdrucks eine boolesche Funktion aufgerufen, so wird in deren Funktionsrumpf  verzweigt und es werden die dortigen Anweisungen aufgerufen. Wird dabei eine boolesche return-Anweisung ausgeführt, so wird der Funktionsrumpf unmittelbar verlassen und an die Stelle des Funktionsaufrufs zurückgesprungen. Der von der booleschen return-Anweisung gelieferte Wert (also der Funktionswert ) wird dabei zur Berechnung des booleschen Ausdrucks weiterverwendet.

2.6.4 Beispielprogramm

Im folgenden Programm sucht der Hamster auf der rechten Seite eine Nische. Findet er eine, begibt er sich hinein. Beim Suchen benutzt er eine boolesche Funktion rechtsFrei.

  void rechtsUm() {
    linksUm();
    linksUm();
    linksUm();
  }

  boolean rechtsFrei() { // Definition einer booleschen Funktion
    rechtsUm();
    if (vornFrei()) {
      linksUm();
      return true; // boolesche return-Anweisung
    } else {
      linksUm();
      return false; // boolesche return-Anweisung
    }
  }

  void main() {
    while (vornFrei() && 
           !rechtsFrei()) { // Aufruf einer booleschen Funktion
      vor();
    }
    if (rechtsFrei()) { // Aufruf einer booleschen Funktion
      rechtsUm();
      vor();
    }
  }


next up previous contents index
Next: 2.7 Variablen und Ausdrücke Up: 2. Das imperative Hamster-Modell Previous: 2.5 Wiederholungsanweisungen
Dietrich Boles
2004-10-05