Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
c○ Prof. Dr. B. Bartning, HS <strong>Emden</strong>/<strong>Leer</strong> Rumpfskript ” Informatik I/II“ (WS/SS 2010/11) 69<br />
FUNKTION sonderFkt(formalPar1 TYP typ1, formalPar2 TYP typ2) TYP typFkt<br />
// . . .<br />
// optional:<br />
WENN . . . DANN<br />
RÜCKSPRUNG WERT . . .<br />
// . . .<br />
RÜCKSPRUNG WERT . . .<br />
ENDE FUNKTION<br />
Beide Baueinheitarten können sog. formale Parameter haben, durch die mit ihnen kommuniziert<br />
werden kann; oben sind jeweils zwei Parameter angegeben. Näheres dazu s. (6.23).<br />
Bei beiden Baueinheiten gibt es das neue Schlüsselwort RÜCKSPRUNG; es soll bedeuten,<br />
dass der Steuerfluss an dieser Stelle die Baueinheit verlässt.<br />
Bei der Prozedur kann am Ende (direkt vor ENDE PROZEDUR) auf RÜCKSPRUNG<br />
verzichtet werden, da dort sowieso die Prozedur verlassen wird.<br />
Bei der Funktion muss mit RÜCKSPRUNG auch der Wert angegeben werden, der zurückgegeben<br />
werden soll; daher kann am Ende (direkt vor ENDE FUNKTION) nicht auf RÜCK-<br />
SPRUNG verzichtet werden, das sonst kein Rückgabewert vorhanden wäre. Außerdem hat<br />
der Funktionsname – nicht der Prozedurename – einen TYP, nämlich den Typ des Rückgabewertes,<br />
im Beispiel ” typFkt“.<br />
(b) Die Benutzung oder Anwendung der Baueinheit wird Aufruf 〈call〉 genannt; sie geschieht<br />
durch Nennung des Namens, dazu, wenn nötig, mit Angabe der zugehörigen sog. aktuellen<br />
Parameter:<br />
(6.23) Parameter<br />
neuProz(aktPar1, aktPar2)<br />
sonderFkt(aktPar1,aktPar2)<br />
ANFANG<br />
VARIABLE x, y TYP Ganzzahl<br />
x ← 23<br />
neuProz(16, 2∗x)<br />
y ← sonderFkt(x, 34) + 3<br />
Schreibe x, y<br />
ENDE<br />
(a) Es muss streng zwischen den beiden Parameterarten unterschieden werden:<br />
• formale Parameter – sie werden bei der Definition eingeführt, sie sind Formen, Hüllen,<br />
noch ohne Inhalt,<br />
• aktuelle Parameter – sie werden beim Aufruf angegeben, sie sind die Inhalte zu den<br />
Hüllen der formalen Parameter.<br />
Jedem aktuellen Parameter (beim Aufruf) entspricht genau ein formaler Parameter (in der<br />
Definition); Anzahl und Reihenfolge, ferner (nach ggf. erlaubter Anpassung) jeweils auch<br />
der Typ müssen übereinstimmen.<br />
(b) Denkbar sind viele verschiedene Arten der Verknüpfung oder der Kopplung zwischen einem<br />
aktuellen Parameter und seinem zugehörigen formalen Parameter. Daher unterschiedet<br />
man in der Informatik verschiedene Parameterübergabearten. In dieser Vorlesung sollen<br />
zwei von ihnen besprochen werden, nämlich die durch die Sprache C ++ unterstützten<br />
Parameterübergabearten:<br />
• Übergabe per Wert ( ” CALL BY VALUE“): der Wert des aktuellen Parameters<br />
wird kopiert auf den eigenen Speicherplatz des formalen Parameters, danach gibt es<br />
keine Verbindung mehr zwischen aktuellem und formalem Parameter.<br />
• Übergabe per Referenz ( ” CALL BY REFERENCE“): der formale Parameter<br />
wird zu einem Synonym des aktuellen Parameter, zu einer sog. Referenz; alles, was<br />
mit dem formalen Parameter geschieht, geschieht in Wirklichkeit mit dem aktuellen<br />
Parameter.<br />
Die Auswirkungen dieser beiden Parameterübergabearten sind je nach Zugriff innerhalb der<br />
Prozedur/Funktion unterschiedlich: