Der Epina Delphi-Kurs bietet Ihnen eine allgemeine Einführung in das Programmieren mit Delphi/Pascal. Mit vielen ausgearbeiteten Beispielen können Sie direkt in die Delphi-Programmierung einsteigen. Mehr dazu finden Sie hier....

Parameterübergabe bei Unterprogrammen

Das Konzept der Übergabe von Parametern an Unterprogramme und die Rückgabe von im Unterprogramm berechneten Werten macht erfahrungsgemäß vielen Anfängern Schwierigkeiten. Darum wollen wir im Folgenden die wichtigsten Prinzipien der Parameterübergabe diskutieren.

Grundsätzlich gibts es drei Szenarien der Parameterübergabe zwischen Unter- und Hauptprogramm (die zusätzliche Möglichkeit der Kommunikation über globale Variablen oder Semaphoren sei hier nicht diskutiert):

Im Fall A wird das Unterprogramm ohne Parameter aufgerufen, und das Unterprogramm gibt auch keine Parameter zurück. Ein Beispiel für diesen Fall ist das Löschen des Bildschirms. Im zweiten Fall B werden dem Unterprogramm Parameter übergeben, das Unterprogramm selbst gibt aber keine Parameter zurück. Als Beispiel könnte man das Zeichnen von Linien am Bildschirm anführen. Das Hauptprogramm übergibt dem Unterprogramm die nötigen Parameter (z.B. Farbe der Linie, Start- und Endpunkt), das Unterprogramm führt die entsprechenden Aktionen aus, meldet aber keine Ergebnisse zurück (alleine die Tatsache, dass das Unterprogramm beendet ist, bedeutet, dass die entsprechende Linie gezeichnet wurde). Im Fall C werden Parameter sowohl an das Unterprogramm übergeben, als auch Ergebnisse zurückgegeben. So könnte das Hauptprogram z.B. ein Unterprogramm zur Berechnung des Alters einer Person in Tagen aufrufen. Es übergibt das Geburtsdatum und das aktuelle Datum, das Unterprogramm errechnet die Zahl der Tage und gibt diese an das Hauptprogramm zurück.

Die Übergabe von Parametern an ein Unterprogramm kann grundsätzlich durch zwei verschiedene Verfahren statt finden. Zum einen können die Werte der Parameter übergeben werden (im Fachjargon nennt man das "parameter passing by value"), also z.B. der Wert "5" (als ganze Zahl) oder der Wert "Das ist ein Haus" (als String). Zum anderen kann man Parameter aber auch übergeben, in dem man nicht den eigentlichen Wert übergibt, sondern den Namen der Variablen die diesen Wert enthält ("parameter passing by reference"). Man übergibt in diesem Fall also, technisch gesprochen, die Addresse des Speicherbereichs in dem der Wert abgelegt ist.

Die Übergabe per Variable hat den Vorteil (bzw. den Nachteil), dass das Unterprogramm die übergebene Variable verändern kann. Allerdings ist der Aufwand hier immer höher, da ja auf jeden Fall eine Variable deklariert werden muss, auch wenn ich nur einen ganz bestimmten und konstanten Wert übergebe.

Eine weitere Besonderheit stellt die Rückgabe des Funktionswertes dar. Funktionen haben (im Gegensatz zu Prozeduren) die Möglichkeit einen ausgewählten Wert so zurückzugeben, dass vom Hauptprogramm aus betrachtet, die Funktion selbst snytaktisch als Variable aufgefasst werden kann. Das hat enorme Vorteile, wenn es um die Berechnung von komplizierten Ausdrücken geht, da man mit Hilfe einer Funktion solchen Ausdrücken quasi einen Namen geben kann.

Last Update: 2008-09-09