
In Unit 2 haben wir Hello World ausgeführt – aber weißt du, warum jede Zeile so aussieht wie sie aussieht? Heute sezieren wir ein C-Programm komplett: jede Zeile, jede Klammer, jedes Semikolon hat eine Bedeutung. Danach wirst du nie wieder „einfach abtippen" – du wirst verstehen! 🔍
🔬 Anatomie eines C-Programms
Jedes C-Programm besteht aus denselben Grundbausteinen. Schau dir dieses vollständige Programm an – rechts siehst du, was jede Zeile bedeutet:
#include <stdio.h>
int main() {
printf("Hallo!\n");
return 0;
}
🏛️ Die drei Säulen jedes C-Programms
#include
Lädt externe Bibliotheken (auch „Header-Dateien"). <stdio.h> = Standard Input/Output. Ohne sie gibt es kein printf und kein scanf.
int main()
Die Hauptfunktion – hier beginnt jedes C-Programm. Das int bedeutet: main gibt eine ganze Zahl zurück. Die { } umschließen den Programminhalt.
return 0;
Beendet das Programm und gibt den Wert 0 an das Betriebssystem zurück. 0 = kein Fehler. Jeder andere Wert signalisiert einen Fehler.
📦 #include – Bibliotheken einbinden
Das #include-Präprozessor-Direktive lädt den Inhalt einer Headerdatei in dein Programm. Stell dir vor, du baust ein Haus – #include ist wie das Bestellen von Werkzeug-Sets:
| Bibliothek | Inhalt / Verwendung | Wichtige Funktionen |
|---|---|---|
| <stdio.h> | Standard Ein-/Ausgabe | printf, scanf, getchar |
| <stdlib.h> | Standardbibliothek (Speicher, Zufall) | malloc, free, rand, exit |
| <math.h> | Mathematische Funktionen | sqrt, pow, sin, cos |
| <string.h> | String-Operationen | strlen, strcmp, strcpy |
| <time.h> | Datum und Uhrzeit | time, clock |
Spitze vs. Anführungszeichen
#include <stdio.h> – spitze Klammern → sucht in den System-Bibliotheken (Standard)
#include "meine_datei.h" – Anführungszeichen → sucht zuerst im aktuellen Ordner (eigene Dateien)
🚀 int main() – Der Startpunkt
Wenn du ein C-Programm startest, sucht das Betriebssystem zuerst nach der Funktion namens main. Ohne sie gibt es keinen Startpunkt – das Programm kann nicht ausgeführt werden.
Schreibweisen von main
int main() { ... }
// Mit Programmargumenten:
int main(int argc, char* argv[]) { ... }
Für den Einstieg verwenden wir immer int main().
Die geschweiften Klammern { }
Öffnende { und schließende } Klammer markieren einen Codeblock. Alles zwischen diesen Klammern gehört zu main.
Jede öffnende Klammer braucht eine schließende – sonst gibt es einen Fehler!
↩️ return 0 – Rückgabewert
Das int vor main bedeutet, dass die Funktion eine ganze Zahl (integer) zurückgibt. Diese Zahl geht zurück ans Betriebssystem und zeigt an, ob das Programm erfolgreich war:
✅ return 0
Programm wurde erfolgreich beendet. Standard für Programme ohne Fehler.
❌ return 1 (oder andere Werte)
Zeigt einen Fehler an. Nützlich für Skripte und automatische Tests.
💬 Kommentare
Kommentare sind Texte im Code, die vom Compiler vollständig ignoriert werden. Sie dienen der Dokumentation und helfen dir (und anderen), den Code zu verstehen.
/* Das ist ein mehrzeiliger Kommentar. Er kann über mehrere Zeilen gehen. */ #include <stdio.h> int main() { // Das ist ein einzeiliger Kommentar (ab C99) printf("Kommentare sieht man nicht!\n"); // Kommentar am Zeilenende return 0; }
| Kommentartyp | Syntax | Verwendung |
|---|---|---|
| Einzeilig | // Text | Kurze Erklärungen, ab C99 Standard |
| Mehrzeilig | /* Text */ | Längere Beschreibungen, immer verfügbar |
| Datei-Kommentar | /* Datei, Autor, Datum */ | Am Anfang jeder Datei (gute Praxis!) |
⚠️ Typische Fehler – und wie man sie vermeidet
Fehlermeldung: error: expected ';' before 'return'
printf("Hallo\n");
return 0;
← } fehlt!
Fehlermeldung: error: expected '}' at end of input
printf("Hallo\n"); ← printf nicht bekannt!
return 0;
}
Fehlermeldung: warning: implicit declaration of function 'printf'
⚠️ Die häufigsten Anfänger-Fehler
- Semikolon
;am Ende einer Anweisung vergessen - Geschweifte Klammern
{ }nicht geschlossen #include <stdio.h>nicht eingebunden- Groß-/Kleinschreibung falsch:
Main()stattmain() - Anführungszeichen im String nicht geschlossen
✏️ Übungen
Teile benennen
Beschrifte die markierten Teile dieses C-Programms mit dem richtigen Fachbegriff:
/* Programm: Begrüßung */ ← (A) _______________ #include <stdio.h> ← (B) _______________ int main() { ← (C) _______________ printf("Willkommen!\n"); ← (D) _______________ return 0; ← (E) _______________ }
Fehler finden & korrigieren
In diesem Programm sind 3 Fehler versteckt. Finde und markiere sie, dann schreibe die korrigierte Version:
#include <stdio.h>
int Main() {
printf("Hallo HTL")
return 0
}
Die 3 Fehler sind:
Korrigiertes Programm:
Kommentare hinzufügen
Ergänze das folgende Programm mit sinnvollen Kommentaren. Füge mindestens einen einzeiligen (//) und einen mehrzeiligen (/* */) Kommentar ein:
Warum ist return 0 wichtig?
Erkläre in 2–3 Sätzen, wozu return 0; am Ende von main() verwendet wird. Was passiert, wenn das Programm einen Fehler hat?
Programm erweitern & live ausführen
Erweitere das Startprogramm so, dass es genau diese Ausgabe erzeugt. Füge Kommentare für jede Sektion ein, dann klick auf ▶ Ausführen:
============================ Oemer erklaert C HTL Informatik Kapitel 1 - Aufbau ============================
return 1; – siehst du einen Unterschied in der Ausgabe? (Nein – aber das Betriebssystem bemerkt den Fehlercode!)