
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?
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 = nichts💻 Erste eigene Funktion
#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; }
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:
#include <stdio.h> void begruesse(); // ← Prototyp (Deklaration) int main() { begruesse(); // Aufruf return 0; } void begruesse() { // ← Definition (nach main) printf("Hallo!\n"); }
💡 Warum Funktionen?
- Wiederverwendung: Einmal schreiben, überall aufrufen
- Lesbarkeit: Komplexer Code wird übersichtlich
- Wartbarkeit: Fehler nur einmal beheben
- Testbarkeit: Funktionen einzeln testen
✏️ Übungen
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):
Eigene void-Funktion
Schreibe eine Funktion drucke_stern(), die eine Zeile mit 20 Sternchen ausgibt. Rufe sie 3 Mal auf:
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):
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: