Die Funktion ist ganz wichtig beim Programmieren. Hier wird einiges dazu gesagt:
Erstens gruppiert eine Funktion einen gewissen Teil des Programms zu einer Einheit und gibt diesem Teil einen bestimmten Namen. Zweitens ist die Funktion wichtig für den Aufbau eines strukturierten Programms. Und ein guter und bald schon ins Auge fallender Grund, eine Funktion zu schreiben, ist der, dass man das Programm mit ihr verkleinern kann.
Dies ist ein kleines vollständiges Programm, welches auch noch später in abgewandelter Form vorkommt.
//reihe1.cpp
#include <iostream> //cout <<
#include <conio.h> //getch()
using namespace std;
//Funktionsdeklaration:
void sternchen();//Deklaration mit Semikolon:;
int main()
{
cout << "Sternchenreihe";
cout << endl << " zum Ansehen.";
//Erster Funktionsaufruf:
sternchen();
cout << endl << "C++ : seit 1979";
cout << endl << " Bjarne Stroustrup";
//Zweiter Funktionsaufruf:
sternchen();
cout << endl << endl << "Taste bitte ...";
getch();
return 0;
}//main Hauptprogramm
//Funktionsdefinition:
void sternchen()//Deklarator ohne Semikolon
{
cout << endl;
for (int i = 0; i < 78; i++)
cout << "*";
} //Funktion sternchen()
Stellen Sie das YouTube-Fenster groß. Sonst können Sie den kleinen Text nicht lesen.
Eine Funktion in C++ hat ganz bestimmt eine Funktionsdefinition. Die Funktionsdefinition sieht so aus:
void funktion()
{
cout << "Die Funktion \"funktion\" ist gerade aufgerufen!";
}
Diese Funktionsdefinition wird nicht innerhalb der "main"-Klammern hineingeschrieben, sondern außerhalb von main. Also entweder oberhalb oder unterhalb.
Falls die Funktionsdefinition unterhalb der main-Funktion steht, muss die Funktion dem Hauptprogramm noch einmal "bekannt" gemacht werden. Das geschieht durch "Funktionsdeklaration" so:
void funktion(); //Funktionsdeklaration
int main()//Hauptprogramm ...
Hier kannst Du lesen: void funktion(). Was bedeutet das "void"? Die ersten Verse der Bibel lauten: "In the beginning God created the heaven and the earth. And the earth was without form, and void; and darkness was upon the face of the deep. And the Spirit of God moved upon the face of the waters." - Ich glaube, void heißt "leer". Also: Leere Stelle, weil nichts zurückgegeben wird.
Das void hier unten rechts bedeutet, dass keine Werte aufgelesen werden (Argument), und links, dass kein Wert zurückgegeben wird (Rückgabewert).
Rückgabewert Argument (= das, was eingelesen wird)
| |
void funktion
(void)
Meistens soll eine Funktion aber etwas mit einigen Daten tun. Also haben die meisten Funktionen einen "Eingang" von Daten. Man nennt den "Eingang" ein Argument oder mehrere Argumente.
Eine Funktion mit einem Argument kann so beschaffen sein: Hier folgt ein einfaches Beispiel.
void einArgumentFunktion(int anzahl) // anzahl ist hier das eine Argument.
{
cout << "Die Funktion \"einArgumentFunktion\" ist gerade aufgerufen!" << endl;
for (int c=0; c<anzahl; c++)//Funktion schreibt den
cout << 'A'; //Buchstaben A anzahl mal.
cout << endl;
}
Das folgende Programm tut fast nichts Sinnvolles, kann aber den Einbau einer Funktion erläutern. Die Funktionsdeklaration muss in diesem Fall vor dem Hauptprogramm stehen.
#include <iostream> //cout, endl
#include <conio.h> //getch()
using namespace std;
void ausgabe(int ganzezahl); //Funktionsdeklaration
int main()//Hauptprogramm mit Rueckgabe an das Betriebssystem.
{
int variable;//Eine Variable einfuehren.
variable = 300;
ausgabe(variable);
variable = 100;
ausgabe(variable);
cout << "Drueck eine Taste, um fortzufahren!";
getch();
return 0; //int in "int main()"
}
//Funktionsdefinition:
void ausgabe(int ausgabewert) //Unterprogramm
{
cout << endl << ausgabewert << endl;
}
Jetzt wird es ein wenig komplizierter: Eine Funktion kann auch einen Ausgang haben. Die eine Funktion, die man "int main()" einleitet, ist die Hauptfunktion oder das Hauptprogramm. Hier gibt es - stillschweigend - schon einen Ausgang dieser Funktion. Denn wir haben ja nicht void main(), sondern int main() geschrieben.
Das int in int main() bedeutet, dass geplant ist, einen Ganzzahl-Wert zurückzugeben, und zwar an das Betriebssystem in diesem Fall. Wir können vom Hauptprogramm ja nicht an das Hauptprogramm zurückgeben, was vom Unterprogramm sehr wohl machbar wäre. Also wird vom Hauptprogramm main() an das Betriebssystem zurückgegeben.
Die Rückgabe erfolgt mit dem Schlüsselwort "return". Das return ist in dem folgenden Programm auch notwendig, wenn eine Dezimalzahl zurückgegeben wird.
Ein einfaches Beispiel, wie man einen Wert vom Unterprogramm ans Hauptprogramm zurückgibt, folgt dann jetzt:
//einargu.cpp
#include <iostream>
#include <conio.h>
using namespace std;
float printdezimal(float zahl);//Funktionsdeklaration
int main()
{
cout << "Beispielprogramm mit Rueckgabewert:";
cout << endl << "----------------------------------";
float dezimalzahl, de2, de3;
cout << endl << "Diese Zahlen lauten:";
dezimalzahl = 2.5;
cout << endl << printdezimal(dezimalzahl);
de2 = 3.2222;
cout << endl << printdezimal(de2);
de3 = 5.432;
cout << endl << printdezimal(de3);
cout << endl << "Drueck eine Taste!";
getch();
return 0;
}
//Die Funktion: Funktionsdefinition:
float printdezimal(float dezzahl)
{
return dezzahl;
}