Arten der Parameterübergabe
in den verschiedenen Programmiersprachen
1. Einleitung
Durch die immer stärker werdende Modularisierung
von Programmen durch Prozeduren, Funktionen
oder auch Objekte stellt sich das Problem des Informationsaustausches unter den
einzelnen Modulen.
Die Module sollen von außen Informationen bekommen und auch Informationen
zurückgeben können,
ohne dabei ihre Modularität zu verlieren. Dies wird in den meisten Fällen
mittels Parametern realisiert.
Parameter sind definierte Schnittstellen von Funktionen, die in drei Gruppen
aufgeteilt werden können.
1.1 Werte-Parameter (Eingabeparameter, call by value):
Werte-Parameter
dienen dazu, an eine Prozedur oder Funktion Informationen zu übergeben. Eine
Anderung des Parameters in der Prozedur hat keine Wirkung nach außen.
Eigenschaften:
1.2 Referenz-Parameter (Ein-/Ausgabeparameter, call by reference):
Referenz-Parameter haben den Zweck,
Ergebnisse aus einer Prozedur oder Funktion dem aufrufend-
en Modul zur Verfügung zu stellen (Output-Parameter). In den meisten
Programmiersprachen können
die Referenz-Parameter auch als Werte-Parameter verwendet werden.
Eigenschaften:
1.3 Funktions-Parameter:
Mit Funktionsparametern ist es möglich
eine Funktion, vielmehr einen Zeiger auf eine Funktion, einem
Modul zu übergeben und dann aufzurufen. Anwendung: Menüsteuerung,
Rückruffunktion, Quicksort
Eigenschaften:
1.4 Vor- bzw. Nachteile der Parameterübergabe:
Vorteile: +
keine globalen Variable nötig, übersichtlicher +
modulares Programmieren möglich +
Funktionen/Module lassen sich leichter testen +
Funktionen/Module in anderen Programmen wiederverwendbar
Nachteile:
-
Gefahr bei Rekursion (Stacküberlauf) -
Geschwindigkeitsverlust -
Gefahr von eventuellen Übergabefehlern (Reihenfolge, Typ oder Anzahl)
1.5 Weitere Begriffe
Aktual-Parameter:
- Parameter, die beim Aufruf einer Funktion/Prozedur angegeben werden.
- z.B. funktion(4177) 4177 ist Aktual-Parameter
Formal-Parameter:
- Parameter, die in der Funktion/Prozedur verwendet werden und den Wert
des Aktual-Parameters übernehmen.
- z.B. funktion(int x) x ist Formal-Parameter
1.6 Übersicht der Parameterübergaben:
|
Ansi-C |
C++ |
Java |
V-Basic (bis 4.0) |
Cobol |
Werte-Parameter Variable-Parameter Funktions-Parameter |
ja ja (Array) ja |
ja ja ja |
ja ja (nur bei Obj.) nein |
ja ja nein |
nein ja nein |
2.
Parameterübergabe in den verschiedenen Programmiersprachen
2.1 Ansi-C
void fu (int a, int *b) |
Aufruf: |
typedef int (*FZ) (int,int); // Funktions-Zeiger Deklaration void aufruf (FZ);
void aufruf (FZ fu) int add (int a, int b) int sub (int a, int b) |
2.2 C++
Referenzen ermöglichen Variable-Parameter
void fu (int a, int &b) |
Aufruf: |
void fu (int a, int b = 2, int c = 3) |
Aufruf: |
2.3 Java
In Java erfolgt die Parameterübergabe immer 'by value'
void add(int a, int b, int sum) |
Aufruf: |
Abhilfe: Returnwert int add (int a, int b) |
Aufruf: |
2.4 Visual Basic
In Visual Basic sind alle Parameter
standardmäßig Referenz-Parameter, können aber durch das
Schlüsselwort ByVal in Werte-Parameter umgewandelt werden (ausgenommen
Arrays).
Sub Add (ByVal a As Integer, ByVal b As Integer, Summe As Integer) Summe = a + b End Sub |
Aufruf: Add a, b, Summe oder Call Add (a, b, Summe) Hinweis: Add a, (b), Summe // 2. Parameter wird als Werte-Parameter übergeben (auch wenn 2. Ref.Par. ist) |
2.5 Cobol
Die Parameterübergabe ist nur an externe Unterprogramme möglich
IDENTIFICATION DIVISION. PROGRAM-ID. UNTER. ENVIRONMENT DIVISION. DATA DIVISION. LINKAGE SECTION. 77 A PIC 999. 77 B PIC 999. 77 SUMME PIC 9999. PROCEDURE DIVISION USING A, B, SUMME. COMPUTE SUMME = A + B. END. |
IDENTIFICATION DIVISION. PROGRAM-ID. HAUPT. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 A PIC 999. 77 B PIC 999. 77 SUMME PIC 9999. PROCEDURE DIVSION. ACCEPT A FROM TERMINAL. ACCEPT B FROM TERMINAL. CALL 'UNTER' USING A, B, SUMME. DISPLAY SUMME UPON TERMINAL STOP RUN. |
Haupt | Fügen Sie Referat | Kontakt | Impressum | Nutzungsbedingungen