07.10.2013 Aufrufe

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

MEHR ANZEIGEN
WENIGER ANZEIGEN

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:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!