Funktionen in C++

Diese Lektion behandelt Funktionen in C++. Ziel ist, Programme modular, wiederverwendbar und übersichtlich zu gestalten.

1. Was ist eine Funktion?

Eine Funktion ist ein benannter Codeblock, der bestimmte Aufgaben ausführt und optional Werte zurückgibt.
int addiere(int a, int b) {
    return a + b;
}
Funktionen ermöglichen:

2. Funktionsdeklaration und Definition

Eine Funktion kann vorher deklariert werden, bevor sie im Code definiert ist.
// Deklaration
int quadriere(int x);

// Definition
int quadriere(int x) {
    return x * x;
}

int main() {
    std::cout << quadriere(5) << std::endl;
    return 0;
}

3. Parameter und Argumente

Parameter sind Variablen in der Funktionsdefinition, Argumente sind die übergebenen Werte beim Aufruf.
void druckeSumme(int a, int b) {
    std::cout << "Summe = " << a + b << std::endl;
}

int main() {
    druckeSumme(3, 4); // a=3, b=4
}

4. Rückgabewerte

Funktionen können einen Wert zurückgeben, der im Aufruf weiterverwendet wird.
double berechneKreisFlaeche(double r) {
    return 3.14159 * r * r;
}

int main() {
    double f = berechneKreisFlaeche(2.0);
    std::cout << "Fläche = " << f << std::endl;
}

5. Void-Funktionen

Funktionen ohne Rückgabewert verwenden den Typ void.
void begruessung() {
    std::cout << "Hallo C++!" << std::endl;
}

int main() {
    begruessung();
}

6. Überladung von Funktionen

In C++ können mehrere Funktionen denselben Namen haben, solange sie unterschiedliche Parameterlisten besitzen.
int max(int a, int b) { return (a > b ? a : b); }
double max(double a, double b) { return (a > b ? a : b); }

int main() {
    std::cout << max(3, 5) << std::endl;
    std::cout << max(2.5, 7.1) << std::endl;
}

7. Standardargumente

Parameter können Standardwerte haben, die beim Aufruf weggelassen werden können.
void druckeText(std::string text = "Hallo Welt") {
    std::cout << text << std::endl;
}

int main() {
    druckeText();             // "Hallo Welt"
    druckeText("C++ Regeln"); // "C++ Regeln"
}

8. Rekursive Funktionen

Funktionen können sich selbst aufrufen, z.B. für mathematische Berechnungen.
int fakultaet(int n) {
    if (n <= 1) return 1;
    return n * fakultaet(n - 1);
}

int main() {
    std::cout << fakultaet(5) << std::endl;
}
Vorsicht: Jede Rekursion benötigt eine Abbruchbedingung, sonst führt sie zu Stackoverflow.

9. Zusammenfassung