====== Unterprogramme / Funktionen ohne Parameter ====== Eine Funktion gibt einer Reihe von Anweisungen einen Namen. Mit diesem Namen kann die Anweisungsfolge abgearbeitet // (aufgerufen) // werden. ==== Die Funktion main ==== 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. ==== Beispiel ==== Im folgenden Beispiel werden die ersten n mit Hilfe einer Funktion aufsummiert. #include #include using namespace std; int n, sum; void berechnung(){ int i; sum=0; for (i=1;i<=n;i++ ) { sum=sum+i; } } //Berechnung void main() { cout <<"Dieses Programm summiert alle Zahlen von 1 bis n"; cout <<"\n Zahl n: "; cin >> n; if (n>0) { berechnung(); cout<<"\n Summe: " < 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. ==== Prototypen ==== 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 #include using namespace std; void berechnung(); int n, sum; void main() { cout <<"Dieses Programm summiert alle Zahlen von 1 bis n"; cout <<"\n Zahl n: "; cin >> n; if (n>0) { berechnung(); cout<<"\n Summe: " < === Aufgabe 1 "Sterne" === Schreibe ein Programm, welches folgende Ausgabe liefert: ********** Einleitung: ********** Hauptteil: ********** Schluss: ********** Die Sterne sollen jeweils mit Hilfe eines Unterprogramms ausgegeben werden.