Unterprogramme können Parameter haben. Sie dienen dazu, Werte an Funktionen durchzureichen. Diese Möglichkeit macht die Arbeit mit Funktionen um ein Vielfaches flexibler. Um aus der aufgerufenen Funktion auf die Werte des Aufrufers zuzugreifen, könnten man natürlich auch globale Variablen verwenden. Durch die Parameter wird aber offen dokumentiert, welche Informationen eine Funktion von außen bekommt. Man spricht auch von der Schnittstelle einer Funktion.
Die Parameterdefinition eines Unterprogramms gleicht einer Variablendefinition. Der Typ der Parameter ist wichtig, um zu prüfen, ob die Aufrufparameter mit den Parametern der Funktion auch kompatibel sind. Über die Parameternamen wird von innen aus der Funktion heraus auf die Parameter zugegriffen.
Im folgenden Beispiel wird das Programm „Summe“ um entsprechend verändert.
#include <iostream> #include <conio.h> using namespace std; void berechnung(int n); int sum; void main() { int zahl; cout <<"Dieses Programm summiert alle Zahlen von 1 bis n"; cout <<"\n Zahl n: "; cin >> zahl; if (zahl>0) { berechnung(zahl); cout<<"\n Summe: " <<sum; } else{cout<<"Es wurde ein falscher Wert eingegeben";} getch(); } //Hauptprogramm void berechnung(int n){ sum=0; while(n>=0){ sum=sum+n; n--; } } //Berechnung
sum bleibt weiterhin eine globale Variable und wird daher vor main und berechnung vereinbart.
Der Datenaustausch zwischen dem Aufrufer und der Funktion sollte möglichst immer über Parameter erfolgen. Auch wenn es manchmal bequemer erscheint, eine globale Variable zu verwenden, sollten Sie dies nur in wohl begründeten Ausnahmesituationen tun. Der Zugriff von Funktionen auf globale Variablen nennt man Seiteneffekt. Dieser führt dazu, dass Zusammenhänge unübersichtlich werden. Darum sollten Sie ein solches Verhalten einer Funktion ausgiebig kommentieren.
Anmerkung zum Unterprogramm berechnung :
Der Eingangsparameter n wird wie eine lokale Variable behandelt, der zu Beginn des Unterprogramms ein Wert zugewiesen wird.
Modifiziere das bereits erstellt Programm „Sterne“ so, dass der Benutzer festlegen kann, wie viele Sterne an belieber Stelle ausgegeben werden.
Schreibe ein Programm, welches mit Hilfe einer Funktion überprüft, ob die vom Benutzer eingegebene Zahl gerade ist.
#include <iostream> #include <conio.h> using namespace std; void gerade(int zahl) { if (zahl%2==0) cout << "Ihre eingegebene Zahl ist gerade!\n"; else cout << "Ihre eingegebene Zahl ist ungerade!\n"; } int main() { int eingabe; cout<<"Dieses Programm ueberprueft, ob eine Zahl gerade ist oder nicht!\n"; cout<<"Bitte geben Sie eine Zahl ein: "; cin>>eingabe; gerade(eingabe); getch(); return 0; }