Eine Funktion gibt einer Reihe von Anweisungen einen Namen. Mit diesem Namen kann die Anweisungsfolge abgearbeitet (aufgerufen) werden.
Eine Funktion war bereits in allen bisher betrachteten Programmen vorhanden: die Funktion namens main(). Diese Funktion wird vom Betriebssystem aufgerufen, um das Programm zu starten. Sie können aber weitere Funktionen hinzufügen und diese aus der Funktion main() heraus aufrufen. Innerhalb der Funktionen können wiederum andere Funktionen aufgerufen werden.
int main() { cout<<"Hello World!"; getch(); return 0; }
Hieran kann man schon die grundlegenden Eigenschaften einer Definition einer Funktion erkennen. Zuerst wird - wie bei Variablen auch - der Typ dieser Funktion angegeben - bei einer Funktion ist damit der Rückgabetyp gemeint. Dieser ist hier int , und gibt an, dass ein Integer-Wert mit return am Ende der Funktion zurückgegeben wird.
Ein besonderer Rückgabetyp ist void , der besagt, dass kein Wert zurückgegeben wird.
Danach folgt der Name der Funktion mit direkt anschließenden Klammern. Diese stellen die Liste der Übergabewerte - der Parameter - dar. Da wir bislang keine Werte übergeben haben, blieb diese Liste immer leer.
Zuletzt folgt der Anweisungsteil in geschwungener Klammern. In ihm steht, was diese Funktion machen soll.
Das Hauptprogramm und das Unterprogramm stehen im C++-Programmtext in beliebiger Reihenfolge hintereinander und werden auch nacheinander übersetzt.
Im folgenden Beispiel werden die ersten n mit Hilfe einer Funktion aufsummiert.
#include <iostream> #include <conio.h> using namespace std; int n, sum; //globale Variablen (gelten auch in Unterprogrammen) void berechnung(){ int i; //Variable i wird nur innerhalb des Unterprogramms angelegt) sum=0; for (i=1;i<=n;i++ ) { sum=sum+i; } } //Berechnung int main() { cout <<"Dieses Programm summiert alle Zahlen von 1 bis n"; cout <<"\n Zahl n: "; cin >> n; if (n>0) { berechnung(); cout<<"\n Summe: " <<sum; } else{cout<<"Es wurde ein falscher Wert eingegeben";} getch(); } //Hauptprogramm
Im Unterprogramm berechnung ist die Variable i, die als Laufvariable verwendet wird, deklariert. Diese Variable ist eine lokale Variable, da sie nur innerhalb dieses Unterprogramms gültig ist, außerhalb ist sie nicht bekannt.
Im Gegensatz dazu stehen die Variablen sum und n vor Haupt- und Unterprogramm, sie sind damit global vereinbart. Sie sind im gesamten Programm gültig.
Die Reihenfolge der Funktionen ist beliebig. Daher könnte das Hauptprogramm auch an erster Stelle stehen. Wenn der Rechner das Hauptprogram (main) übersetzt, kennt er das Unterprogramm (berechnung) noch nicht. Daher gibt der Compiler eine entsprechende Fehlermeldung aus.
Der moderne Programmierstil von C++ verlangt, dass (am besten zu Beginn des Programms) für jedes „unbekannte“ Unterprogramm ein Prototyp angegeben wird.
Der Prototyp enthält den Namen und Typ des Unterprogramms. Nach den Parameterklammern steht ein Strichpunkt; dadurch kann der Compiler einen Prototyp von der eigentlichen Funktion unterscheiden.
#include <iostream> #include <conio.h> using namespace std; void berechnung(); int n, sum; int main() { cout <<"Dieses Programm summiert alle Zahlen von 1 bis n"; cout <<"\n Zahl n: "; cin >> n; if (n>0) { berechnung(); cout<<"\n Summe: " <<sum; } else{cout<<"Es wurde ein falscher Wert eingegeben";} getch(); } //Hauptprogramm void berechnung(){ int i; sum=0; for (i=1;i<=n;i++ ) { sum=sum+i; } } //Berechnung
Schreibe ein Programm, welches folgende Ausgabe liefert:
********** Einleitung: ********** Hauptteil: ********** Schluss: **********
Die Sterne sollen jeweils mit Hilfe eines Unterprogramms ausgegeben werden.