Kapitel 4 Unit 1 von 5 Theorie + Übungen Dauer: ~45 Min.
Ömer
Ömer sagt:

Stell dir vor, du bräuchtest denselben Code 10 Mal. Ohne Funktionen müsstest du ihn 10 Mal schreiben. Mit Funktionen schreibst du ihn einmal und rufst ihn 10 Mal auf. Das ist das DRY-Prinzip: Don't Repeat Yourself! 🔧

Was ist eine Funktion? Funktionen definieren Funktionen aufrufen void-Funktionen Prototypen (Vorwärtsdeklaration)

🔧 Was ist eine Funktion?

Eine Funktion ist ein benannter, wiederverwendbarer Code-Block. Du definierst ihn einmal und rufst ihn überall auf. In C ist sogar main() eine Funktion!

void
Rückgabetyp – was gibt die Funktion zurück? void = nichts
begruesse
Name – eindeutig, sprechend, klein geschrieben
()
Parameterliste – Eingaben (leer = keine Parameter)
{ ... }
Funktionskörper – der ausgeführte Code

💻 Erste eigene Funktion

erste_funktion.cC
#include <stdio.h>

/* Funktionsdefinition – VOR main() */
void begruesse() {
    printf("Hallo von der Funktion!\n");
    printf("Ich kann mehrfach aufgerufen werden.\n");
}

int main() {
    begruesse();   // 1. Aufruf
    begruesse();   // 2. Aufruf
    begruesse();   // 3. Aufruf
    return 0;
}
▶ Ausgabe
Hallo von der Funktion!
Ich kann mehrfach aufgerufen werden.
Hallo von der Funktion!
Ich kann mehrfach aufgerufen werden.
Hallo von der Funktion!
Ich kann mehrfach aufgerufen werden.

📋 Prototypen – Vorwärtsdeklaration

Wenn du eine Funktion nach main() definierst, musst du sie vorher als Prototyp deklarieren – damit der Compiler weiß, dass sie existiert:

prototyp.cC
#include <stdio.h>

void begruesse();   // ← Prototyp (Deklaration)

int main() {
    begruesse();       // Aufruf
    return 0;
}

void begruesse() {   // ← Definition (nach main)
    printf("Hallo!\n");
}

💡 Warum Funktionen?

✏️ Übungen

Übung 1

Funktionsaufruf nachverfolgen

In welcher Reihenfolge werden die Ausgaben gemacht?

void linie()   { printf("------\n"); }
void titel()   { printf("MENU\n"); }
void trennlinie() { linie(); titel(); linie(); }

int main() {
    trennlinie();
    printf("1. Start\n");
    printf("2. Ende\n");
    linie();
    return 0;
}

Ausgabe (Zeile für Zeile):

Übung 2

Eigene void-Funktion

Schreibe eine Funktion drucke_stern(), die eine Zeile mit 20 Sternchen ausgibt. Rufe sie 3 Mal auf:

#include <stdio.h> /* Funktion hier definieren */ int main() { /* 3x aufrufen */ return 0; }
Übung 3 – Programm

Menü mit Funktionen

Lagere die Menü-Anzeige in eine Funktion zeige_menue() aus. Das Programm soll das Menü 3 Mal anzeigen (Simulation von 3 Durchläufen):

#include <stdio.h> void zeige_menue() { /* Menü mit Optionen 1-3 ausgeben */ } int main() { /* 3x das Menü anzeigen */ return 0; }
Eine void-Funktion hat kein return – sie führt einfach ihre Aufgabe aus und kehrt danach zum Aufrufer zurück.
Übung 4 – Bonus

Gerade oder ungerade?

Schreibe eine void-Funktion pruefe_zahl(int n), die ausgibt ob n gerade oder ungerade ist. Teste sie mit den Zahlen 1 bis 10 in einer Schleife:

#include <stdio.h> void pruefe_zahl(int n) { if (n % 2 == 0) printf("%d ist gerade.\n", n); else printf("%d ist ungerade.\n", n); } int main() { for (int i = 1; i <= 10; i++) { pruefe_zahl(i); } return 0; }
n % 2 == 0 bedeutet: n ist durch 2 teilbar → gerade. Ansonsten ungerade. Die Funktion selbst entscheidet und gibt aus.