Funktionen definieren
In dieser Lektion lernst du, eigene Funktionen zu schreiben. Beginnen wir mit einem Problem: Wir brauchen die Flächen von drei Rechtecken. Die Fläche eines Rechtecks ist seine Breite mal seine Höhe, wir könnten also das Programm schreiben, das du im Editor hast:
#include <iostream>
int main() {
int breite1 = 5;
int hoehe1 = 6;
int flaeche1 = breite1 * hoehe1;
std::cout << flaeche1 << std::endl;
int breite2 = 10;
int hoehe2 = 5;
int flaeche2 = breite2 * hoehe2;
std::cout << flaeche2 << std::endl;
int breite3 = 1;
int hoehe3 = 5;
int flaeche3 = breite3 * hoehe3;
std::cout << flaeche3 << std::endl;
}Führe es aus. Es gibt aus:
30
50
5Es funktioniert, aber wir haben dieselben vier Zeilen dreimal geschrieben, und nur die Zahlen haben sich geändert. Stell dir hundert Rechtecke vor! Und wenn wir einen Fehler in der Berechnung fänden, müssten wir ihn an hundert Stellen beheben.
Programmierer versuchen, Code nicht zu wiederholen. Stattdessen schreiben sie den wiederholten Teil einmal, geben ihm einen Namen und verwenden ihn dann überall, wo sie ihn brauchen. Ein solches benanntes Stück Code heißt Funktion.
Tatsächlich schreibst du seit der ersten Lektion schon eine Funktion: main. Die Zeile int main() { beginnt die Definition einer Funktion namens main, und die Anweisungen zwischen den geschweiften Klammern sind ihr Rumpf. Wenn du ein Programm ausführst, beginnt es mit der Ausführung der Funktion main. Eine eigene Funktion definierst du auf ähnliche Weise:
void sageHallo() {
std::cout << "Hallo!" << std::endl;
std::cout << "Schönen Tag noch!" << std::endl;
}Eine Funktionsdefinition hat diese Teile:
void(englisch für „leer“) ist der Rückgabetyp. Er sagt, dass die Funktion keinen Wert zurückgibt; sie tut nur etwas, hier gibt sie zwei Zeilen aus. Funktionen, die Werte zurückgeben, lernst du später in dieser Lektion kennen.- Der Name der Funktion, hier
sageHallo. Für ihn gelten dieselben Regeln wie für Variablennamen: Buchstaben, Ziffern und_, keine Leerzeichen, Groß- und Kleinschreibung zählen, und Namen aus mehreren Wörtern werden in camelCase geschrieben. Wähle einen Namen, der sagt, was die Funktion tut, wiesageHalloodergibFlaecheAus. - Runde Klammern
(). Sie sind vorerst leer; bald erfährst du, was hineingehört. - Der Rumpf der Funktion in geschweiften Klammern
{ }. Er enthält die Anweisungen, die die Funktion ausführt.
Schreibe die Funktion über main, nicht hinein. In C++ darf eine Funktionsdefinition nicht in einer anderen Funktion stehen. Schreibst du sie in den Rumpf von main, lässt sich das Programm nicht kompilieren, und der Compiler meldet den Fehler error: function definition is not allowed here.
Wenn du das Programm mit der neuen Funktion ausführst, gibt es trotzdem nur aus, was main ausgibt. Das ist kein Fehler! Eine Definition sagt nur, was die Funktion tun soll, wie ein Rezept in einem Kochbuch: Noch hat niemand etwas gekocht. In der nächsten Übung bringst du die Funktion zum Laufen.
So schreibst du es:
Anweisungen
- 1
Erstelle über der Funktion
main, anstelle des Kommentars, eine Funktion namensersteFunktion, deren RumpfDas ist meine erste Funktion!ausgibt. Führe dann das Programm aus: Es gibt weiterhin nur die drei Flächen aus, denn noch hat niemand die Funktion aufgerufen. So soll es sein.