30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

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.

5. Funktionen<br />

Pr<strong>in</strong>zipiell ist e<strong>in</strong>e Funktion e<strong>in</strong>e Zusammenfassung mehrerer Anweisungen zu<br />

e<strong>in</strong>em aufrufbaren Ganzen. Weiters nimmt e<strong>in</strong>e Funktion Parameter entgegen<br />

und liefert e<strong>in</strong>en return-Wert. Die Def<strong>in</strong>ition e<strong>in</strong>er Funktion sieht formal<br />

folgendermaßen aus:<br />

retval function-name(param-list)<br />

{<br />

block-of-code<br />

}<br />

Hierbei bezeichnet retval den return-Wert der Funktion, wobei bei der Def<strong>in</strong>ition<br />

hier e<strong>in</strong>fach e<strong>in</strong> Datentyp (z.B. <strong>in</strong>t) angegeben wird. Der (sprechende!!!)<br />

Name e<strong>in</strong>er Funktion wird durch function-name def<strong>in</strong>iert und dieser<br />

ist gefolgt von e<strong>in</strong>er Parameterliste, hier durch param-list gekennzeichnet, <strong>in</strong><br />

runden Klammern. Diese gesamte erste Zeile bezeichnet man auch als Funktionskopf<br />

. Der Code, der ausgeführt wird, wenn e<strong>in</strong>e Funktion aufgerufen<br />

wird, steht als Block (also durch geschwungene Klammern e<strong>in</strong>gefasst) <strong>in</strong> Anschluss<br />

an den Kopf. Diesen Block bezeichnet man auch als Funktionsrumpf .<br />

Die Parameterübergabe beim Aufruf von Funktionen erfolgt gleich wie <strong>in</strong><br />

C immer als call-by-value. Das bedeutet, dass immer zuerst e<strong>in</strong>e vollständige<br />

Evaluierung der Ausdrücke stattf<strong>in</strong>det, die als Parameter übergeben werden<br />

und dass das Ergebnis dieser Evaluierung als Wert an die Funktion übergeben<br />

wird. Sollte man z.B. e<strong>in</strong>e Variable als Parameter an e<strong>in</strong>e Funktion<br />

übergeben, so kann <strong>in</strong>nerhalb der Funktion problemlos der Wert des Parameters<br />

beliebig verändert werden, der Wert der Variable außerhalb ändert sich<br />

garantiert nicht!<br />

Das Liefern e<strong>in</strong>es return-Wertes erfolgt über e<strong>in</strong> explizites return Statement,<br />

das genau dort <strong>in</strong> der Funktion steht, wo der Rücksprung erfolgen<br />

soll. Es kann auch mehrere return Statements <strong>in</strong> e<strong>in</strong>er Funktion geben, die<br />

je nach Kontrollfluss des Programms (z.B. durch if...else) alternativ den<br />

Rücksprung veranlassen. Es wird garantiert, dass der Rücksprung aus e<strong>in</strong>er<br />

Funktion genau an der Stelle des return Statements stattf<strong>in</strong>det.<br />

Nicht so selten gibt es auch Fälle, dass Funktionen gar ke<strong>in</strong>en return-Wert<br />

liefern, weil sie eigentlich nur als Prozeduren gebraucht werden, die irgende<strong>in</strong>e<br />

Aufgabe (z.B. Bildschirmanzeige) erfüllen. Für diese Fälle gibt es den

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!