
Funktionen sind das wichtigste Konzept der strukturierten Programmierung. Einmal schreiben, überall nutzen – das ist DRY: Don't Repeat Yourself!
Was ist eine Funktion?
Ein benannter, wiederverwendbarer Code-Block. Du definierst ihn einmal und rufst ihn beliebig oft auf.
Rückgabetyp name(Parameter) { // Funktionskörper }
void trennlinie() { printf("------\n"); }
Anatomie einer Funktion
| Teil | Beispiel | Bedeutung |
|---|---|---|
| Rückgabetyp | void | Was gibt die Funktion zurück? void = nichts |
| Name | begruesse | Eindeutig, sprechend, klein geschrieben |
| Parameterliste | () | Eingaben – leer wenn keine |
| Körper | { ... } | Der ausgeführte Code |
Prototypen
Vorwärtsdeklaration
Wenn eine Funktion nach main() steht, braucht sie einen Prototyp vorher:void begruesse(); ← Prototyp (Semikolon!)
Dann kann der Compiler die Funktion kennen, bevor er sie sieht.
Warum Funktionen?
| Vorteil | Erklärung | Ohne Funktionen |
|---|---|---|
| DRY-Prinzip | Code einmal schreiben, überall nutzen | Denselben Code 10x kopieren |
| Lesbarkeit | main() beschreibt WAS, Funktionen WIE | Eine riesige main() mit allem |
| Testbarkeit | Jede Funktion einzeln testen | Gesamtprogramm testen |
| Wartbarkeit | Fehler nur einmal beheben | Fehler an 10 Stellen beheben |
Ausführungsreihenfolge
Das Programm startet immer in main(). Von dort werden Funktionen aufgerufen – in der Reihenfolge der Aufrufe. Nach dem Ende einer Funktion kehrt die Ausführung genau an die Stelle zurück, von der sie aufgerufen wurde.
Ablauf-Schema
main() startet
→ f1() wird aufgerufen
← Rückkehr zu main()
→ f2() wird aufgerufen
← Rückkehr zu main()
main() endet (Programm fertig)
Häufige Fehler
Warnung: Typische Anfängerfehler mit Funktionen
- Funktion nach main() ohne Prototyp: Der Compiler sieht die Funktion nicht rechtzeitig – Warnung oder Fehler. Lösung: Prototyp vor main() einfügen.
- void-Funktion mit Rückgabewert aufrufen:
int x = trennlinie();– void gibt nichts zurück, der Wert ist undefiniert. - Funktion definiert aber nie aufgerufen: Die Funktion existiert im Code, wird aber nie ausgeführt. Kein Fehler, aber toter Code – Hinweis auf Logikfehler.
⚡ Code-Simulator
Schreibe eigene Funktionen und teste sie – der Simulator zeigt printf-Ausgaben:

Schreibe eigene Funktionen und ändere die Argumente beim Aufruf. So siehst du direkt wie Funktionen Daten verarbeiten!
🎯 Wissens-Quiz
📋 Spickzettel
✅ Checkliste Unit 16
- Ich kann eine void-Funktion definieren und aufrufen
- Ich kenne die 4 Teile einer Funktion
- Ich weiß was ein Prototyp ist und wann er nötig ist
- Ich verstehe das DRY-Prinzip