Prozeduren dienen zur Vereinbarung neuer Befehle. Diesbezüglich sind zwei Aspekte zu betrachten: die Definition von Prozeduren und deren Aufruf, d.h. Ausführung.
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.
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.
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();
}