next up previous contents index
Next: 2.4 Auswahlanweisungen Up: 2. Das imperative Hamster-Modell Previous: 2.2 Anweisungen und Programme

Unterabschnitte

  
2.3 Prozeduren

Prozeduren  dienen zur Vereinbarung neuer Befehle. Diesbezüglich sind zwei Aspekte zu betrachten: die Definition von Prozeduren und deren Aufruf, d.h. Ausführung.

2.3.1 Prozedurdefinition

Durch eine Prozedurdefinition  wird ein neuer Befehl  vereinbart. In der Definition muss zum einen angegeben werden, wie der Befehl heißt (Prozedurname ), und zum anderen muss festgelegt werden, was der Hamster tun soll, wenn er den neuen Befehl erhält. Ersteres erfolgt im so genannten Prozedurkopf , letzteres im so genannten Prozedurrumpf .

Im Prozedurkopf muss zunächst das Schlüsselwort void  angegeben werden. Anschließend folgt ein Bezeichner , der Prozedurname  bzw. der Name des neuen Befehls. Nach dem Prozedurnamen folgt ein rundes Klammernpaar, das den Prozedurkopf  beendet. Der Prozedurrumpf  beginnt mit einer öffnenden geschweiften Klammer, der eine Anweisungssequenz  folgt. Der Prozedurrumpf und damit die Prozedurdefinition endet mit einer schließenden geschweiften Klammer.

Auch das oben eingeführte main-Konstrukt ist im Prinzip eine Prozedur. Sie wird automatisch beim Start eines Programms durch das Laufzeitsystem aufgerufen. Die Definition einer neuen Prozedur darf vor oder nach der Definition der main-Prozedur  erfolgen.

2.3.2 Prozeduraufruf

Durch eine Prozedurdefinition wird ein neuer Befehl eingeführt. Ein Aufruf des neuen Befehls  wird Prozeduraufruf  genannt. Ein Prozeduraufruf entspricht syntaktisch dem Aufruf eines der vier Grundbefehle des Hamsters. Er beginnt mit dem Prozedurnamen. Anschließend folgen eine öffnende und eine schließende runde Klammer und ein Semikolon.

Wird irgendwo in einem Programm eine Prozedur aufgerufen, so werden bei der Ausführung des Programms an dieser Stelle die Anweisung(en) des Prozedurrumpfes ausgeführt. Der Kontrollfluss des Programms verzweigt beim Prozeduraufruf in den Rumpf der Prozedur, führt die dortigen Anweisungen aus und kehrt nach der Abarbeitung der letzten Anweisung des Rumpfes an die Stelle des Prozeduraufrufs zurück. Durch Aufruf der return-Anweisung (return;)  kann eine Prozedur vorzeitig verlassen werden.

2.3.3 Beispielprogramm

Im folgenden Hamster-Programm wird eine Prozedur rechtsUm definiert und aufgerufen, die bewirkt, dass sich der Hamster dreimal nach links dreht, was einer Rechtsdrehung um 90 Grad entspricht. Der Hamster frisst in dem in Abbildung 2.3 skizzierten Territorium zwei Körner:

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

  void main() {     // main-Prozedur
    // friss erstes Korn
    rechtsUm();     // Prozeduraufruf
    vor();
    vor();
    nimm();

    // friss zweites Korn
    rechtsUm();     // Prozeduraufruf
    vor();
    vor();
    nimm();
  }


  
Abbildung 2.3: Hamster-Territorium zum Beispielprogramm
\begin{figure}
\centerline{\epsffile{zeichnungen/impmodell/bsp2.eps}}\end{figure}


next up previous contents index
Next: 2.4 Auswahlanweisungen Up: 2. Das imperative Hamster-Modell Previous: 2.2 Anweisungen und Programme
Dietrich Boles
2004-10-05