Index

5. Problemlösetechniken

Module (2)


Prozeduren und Funktionen

In prozeduralen Programmiersprachen wie PASCAL, BASIC, C++ etc. werden Teilprogramme also Module meist als Prozeduren bzw. Funktionen realisiert. Diese haben einen ähnlichen Aufbau wie ein Programm, also einen Kopf, der den Namen des Moduls enthält und die Schnittstelle für den Datenübertrag, sowie den Block, der neben Deklarationen von weiteren (geschachtelten) Modulen und lokaler Variablen, die nur im Bereich des Moduls gültig sind, schließlich den Programmcode des Moduls enthält.
Funktionen haben die Besonderheit, dass sie nach ihrem Ablauf ein Datum zurückliefern, ähnlich einer mathematischen Funktion f(x,y,..), die in Abhängigkeit der Parameter x,y,.. einen Funktionswert bestimmt. Für Funktionen muss daher bei ihrer Deklaration ein Rückgabedatentyp angegeben werden.

Deklarations-Beispiel:

C++, Java PASCAL
Funktion
Rückgabetyp Name(Parameterliste)
{
  <Programmcode>
}	
function Name(Parameterliste): Rückgabetyp;
  <Deklarationen>
begin
  <Programmcode>
end;	
Prozedur
void Name(Parameterliste)
{
  <Programmcode>
}	
procedure Name(Parameterliste);
  <Deklarationen>
begin
  <Programmcode>
end;	

Während in PASCAL mit unterschiedlichen Schlüsselwörtern zwischen Funktionen (mit Rückgabewert) und Prozeduren (ohne Rückgabewert) unterschieden wird, wird in C nur der Begriff Funktion benutzt und durch den Rückgabetyp void angegeben, dass kein Wert zurückgegeben werden soll.

Funktionen wie Prozeduren können über die Parameterliste Werte übernehmen, als auch zurückliefern. Der Rückgabewert eine Funktion spielt dabei eine Sonderrolle, was sich beim Aufruf bemerkbar macht:

Variable = Funktionsname(Parameterliste);

Der Rückgabewert muss also z.B. einer Variablen eines geeigneten Typs zugewiesen oder in einem Term weiterverarbeitet werden.

Die Parameterliste enthät mit Datentypangabe deklarierte Variablen, die stellvertretend für die beim Aufruf erforderlichen aktuellen Parameter, welche tatsächlich benutzt werden sollen, im Modul benutzt werden wie allgemeine Varaiblen in Formeln. Man nennt diese Parameter daher auch formale Parameter.
Je nach Deklaration entscheidet sich beim Aufruf mit den aktuellen Parametern, ob von diesen eine Kopie (call by value) verwendet wird oder die originale Variable (call by reference). Im ersten Fall bleibt die originale Variable auf jeden Fall unverändert, selbst wenn Zuweisungen an die entsprechende formale Variable erfolgen, da ja nur eine Kopie benutzt wird. Im zweiten Fall ist dies nicht so; auf diese Weise können daher gezielt Werte nach außen übertragen werden.

Normal deklarierte Parameter sind vom Typ "call by value". Beim Aufruf können dafür aktuell auch konstante Werte verwendet werden. Soll ein Paramter vom Typ "call by reference" deklaraiert werden, so muss in PASCAL das Schlüsselwort var vorangestellt werden. In diesem Fall sind als aktuelle Parameter nur Variablen des entsprechenden Typs zulässig.

In C++ erfolgt die "call by reference"-Typisierung durch Anhängen des &-Verweisoperators an den Datentyp.

Beispiele

[Index] [Zurück/Module 1] [Fortsetzung/Module 3]


Autor: Jürgen Dehmer
Letzte Änderung: