Ein Unterprogramm ist ein Programmteil, der unter einem Namen aufgerufen werden kann. Man unterscheidet in PASCAL zwei Arten von Unterprogrammen: Prozeduren und Funktionen.
Prozeduren
Die Prozeduren sind Teile des Deklarationsteils des Programms. Vom Programm aus wird die Prozedur aufgerufen, indem ihr Name in einer Anweisungszeile genannt wird. Bei der Arbeit mit Prozeduren ist zu beachten:
1. Prozeduren können auch von anderen Prozeduren aufgerufen werden.
2. Prozeduren können mehrmals aufgerufen werden.
3. Wird eine Prozedur von einer anderen Prozedur aufgerufen, so muß sie auch vor dieser Prozedur stehen.
4. Variablen und Konstanten des Hauptprogramms (vor den Prozeduren deklariert) nennt man "global". Sie haben im gesamten Programm Gültigkeit, d.h. auch in den Prozeduren.
5. Variablen und Konstanten einer Prozedur werden "lokal" genannt. Sie haben nur innerhalb der Prozedur Gültigkeit.
6. Sollten Variablen oder Konstanten von Hauptprogramm und Prozedur denselben Namen tragen (was erlaubt ist), so gilt immer der lokale Namen, da für die lokale Variable eine eigener Speicherplatz angelegt wird.
Durch die Verwendung von lokalen Variablen wird die Prozedur von den Gegebenheiten des Hauptprogramms unabhängig, und so kann die Prozedur eventuell leicht in anderen Programmen verwendet werden.
In PASCAL ist es möglich den Prozeduren eine oder mehrere Variablen zu übergeben. Diese Variablen (sie werden auch Parameter genannt) werden in einer Klammer hinter der Prozedur angefügt:
PROCEDURE Test ( I : Integer );
Dieser Prozedur wird ein ganzzahliger Wert übergeben, den diese dann verarbeitet. Soll die Prozedur eine übergebene Variable verarbeiten und das Ergebnis an das Hauptprogramm zurückliefern muß bei der Deklaration vor der Variable das Wörtchen VAR eingefügt werden:
PROCEDURE Test ( VAR I : Integer );
Werden der Prozedur Werte (ohne VAR) übergeben, so wird diese Übergabe auch "call-by-value" genannt. Wenn der Prozedur Variablen (mit VAR) übergeben werden, so spricht man von "call-by-reference" bzw. "call-by-variable".
Prozeduren dürfen auch geschachtelt werden. Das heißt im Deklarationsteil einer Prozedur dürfen weitere Prozeduren deklariert werden. Diese sind dann jedoch lokal zu der Prozedur, in der sie erklärt werden. Lokale Prozeduren dürfen also nur von der Prozedur aufgerufen werden, zu der sie lokal sind.
Funktionen
Auch Funktionen werden wie die Prozeduren im Deklarationsteil implementiert und dann von anderen Programmteilen aus aufgerufen.
Der Hauptunterschied liegt darin, daß Funktionen nicht einfach mit dem Namen aufgerufen, sondern einer Variable zugewiesen werden müssen. Funktionen liefern nämlich stets ein Ergebnis, wenn sie abgearbeitet worden sind. Die Parameterliste hat die gleiche Form wie bei den Prozeduren. Nach der Parameterliste muß der Ergebnistyp angegeben werden, der den Datentyp des Ergebnisses festlegt. Im Anweisungsteil der Funktion muß natürlich ein Ergebnis erlangt und dem Funktionsnamen zugewiesen werden.
Eine Funktion, die Minimum zweier ganzen Zahlen ermittelt, könnte folgendermaßen aussehen:
FUNCTION Min (a,b, : Integer) : Integer;
BEGIN
IF a < b THEN Min := a
ELSE Min := b;
END; (* von Min *)
|