📘 Kapitel 1 · Unit 3 von 30

Aufbau eines
C-Programms

main · #include · return · Kommentare – jede Zeile hat eine Bedeutung. Heute verstehst du sie alle!

3 / 30 Units
Ömer
Kapitel 1: Einstieg & Grundlagen Dauer: ~45 Min. Interaktive Anatomie + Quiz + Spickzettel
Ömer
Ömer sagt:

In Unit 2 haben wir Hello World geschrieben – aber kennst du wirklich jede Zeile? Heute sezieren wir ein C-Programm vollständig. Klicke danach auf „Interaktive Anatomie" – da kannst du jede Zeile anklicken und die Erklärung sehen!

Die drei Säulen jedes C-Programms

#include

Lädt externe Bibliotheken. <stdio.h> = Standard Input/Output. Ohne sie kein printf, kein scanf.

int main()

Die Hauptfunktion – hier startet jedes C-Programm. Das int sagt: main gibt eine ganze Zahl zurück.

return 0;

Beendet das Programm. 0 = Erfolg. Jede andere Zahl signalisiert einen Fehler ans Betriebssystem.

#include – Bibliotheken

#include ist eine sogenannte Präprozessor-Direktive – sie wird noch vor dem Kompilieren ausgeführt und lädt den Inhalt einer Headerdatei in dein Programm.

Spitze vs. Anführungszeichen

#include <stdio.h> → Spitze Klammern = Suche in System-Bibliotheken
#include "meine.h" → Anführungszeichen = Suche im aktuellen Ordner

BibliothekInhaltWichtige Funktionen
<stdio.h>Standard Ein-/Ausgabeprintf, scanf, getchar
<stdlib.h>Speicher, Zufall, Exitmalloc, free, rand, exit
<math.h>Mathematiksqrt, pow, sin, cos
<string.h>Stringsstrlen, strcmp, strcpy

Kommentare

Kommentare werden vom Compiler ignoriert. Sie helfen dir und anderen, den Code zu verstehen.

kommentare.c C
/* Mehrzeiliger Kommentar:
   Autor: Ömer
   Datum: 2025 */

#include <stdio.h>

int main() {
    // Einzeiliger Kommentar (ab C99)
    printf("Kommentare sieht man nicht!\n"); // am Zeilenende
    return 0;
}
▶ Ausgabe
Kommentare sieht man nicht!

Typische Fehler

❌ Fehler 1 – Semikolon fehlt
printf("Hallo") ← fehlendes ;
error: expected ';' before 'return'
❌ Fehler 2 – Klammer fehlt
int main() {
printf("Hallo\n");
return 0;
← } fehlt!
error: expected '}' at end of input
❌ Fehler 3 – Großschreibung (C unterscheidet!)
int Main() { ... } ← 'Main' ≠ 'main'!
error: undefined reference to 'main'

🔬 Interaktive Anatomie

Klicke auf eine beliebige Zeile des Programms – rechts erscheint die detaillierte Erklärung dazu.

aufbau_komplett.c – klicke auf eine Zeile! C
1 /* Autor: Ömer, HTL 2025 */
2 #include <stdio.h>
3
4 int main() {
5
6 printf("Hello, World!\n");
7
8 return 0;
9 }

← Klicke auf eine Zeile links, um die Erklärung zu sehen.

💬 Kommentar

Kommentare werden vom Compiler vollständig ignoriert. Sie dienen nur der Dokumentation für Menschen.

Es gibt zwei Arten:

  • /* Text */ – mehrzeilig (immer verfügbar)
  • // Text – einzeilig (ab C99)

Gute Praxis: Am Anfang jeder Datei Autor, Datum und Zweck kommentieren!

/* Autor: Ömer */
// Einzeilig
📦 #include <stdio.h>

#include ist eine Präprozessor-Direktive – sie wird vor dem Kompilieren ausgeführt und fügt den Inhalt der Headerdatei ein.

stdio.h = Standard Input/Output. Ohne sie sind printf und scanf unbekannt.

Spitze Klammern < > = sucht in System-Bibliotheken.
Anführungszeichen " " = sucht im eigenen Projektordner.

#include <stdio.h> // System
#include "meine.h" // Eigene
🚀 int main()

Das Betriebssystem sucht beim Programmstart nach einer Funktion namens main – genau diese wird als erstes ausgeführt.

int = main gibt eine ganze Zahl zurück (den Rückgabewert).
Die Klammern () können Parameter aufnehmen.
Die geschweifte Klammer { öffnet den Codeblock.

Achtung: C unterscheidet Groß-/Kleinschreibung! Mainmain!

int main() { ... }
📢 printf(...)

printf = print formatted – gibt Text auf dem Bildschirm aus. Kommt aus der Bibliothek stdio.h.

Der Text steht in doppelten Anführungszeichen " ".
\n am Ende = Zeilenumbruch.
Das ; am Ende ist Pflicht – jede Anweisung endet mit Semikolon!

printf("Text\n");
printf("Wert: %d\n", 42);
↩️ return 0;

return beendet die Funktion und gibt einen Wert zurück.

return 0 → Programm erfolgreich beendet (kein Fehler)
return 1 (oder anderer Wert) → Fehler aufgetreten

Dieser Wert geht ans Betriebssystem und kann von Skripten und Build-Systemen ausgewertet werden.

return 0; // Erfolg
return 1; // Fehler
} Schließende Klammer

Die schließende geschweifte Klammer } beendet den Block, der mit { begonnen wurde.

Hier endet die main-Funktion. Jede öffnende Klammer muss eine schließende haben – sonst gibt es einen Kompilierfehler.

Tipp: Einrückungen helfen, den Überblick zu behalten!

int main() { // öffnet
...
} // schließt
Ömer
Ömer sagt:

Hast du alle 7 anklickbaren Zeilen durchgegangen? Dann kennst du jetzt jede Zeile eines C-Programms auswendig. Das ist die Basis für alles Weitere!

🎯 Wissens-Quiz – Unit 3

Frage 1
Wofür steht das "int" in "int main()"?
Ainteger-Datentyp der Variable main
Bmain gibt eine ganze Zahl (integer) zurück
CEs ist ein Schlüsselwort ohne Bedeutung
DInternes = bezeichnet interne Funktion
Frage 2
Was macht #include <stdio.h> ?
ADefiniert die main-Funktion
BGibt Text auf dem Bildschirm aus
CLädt die Bibliothek für printf und scanf
DStartet das Programm
Frage 3
Was ist der Unterschied zwischen // und /* */ ?
AKein Unterschied, beide sind gleich
B// ist einzeilig, /* */ kann mehrzeilig sein
C// wird ausgeführt, /* */ wird ignoriert
D/* */ ist veraltet und sollte nicht verwendet werden
Frage 4
Welcher Fehler steckt in: int Main() { return 0; } ?
Areturn 0 ist falsch
B"Main" muss "main" heißen (Kleinschreibung!)
CDie Klammern fehlen
Dint ist falsch
Frage 5
Was bedeutet return 1; am Ende von main()?
ADas Programm gibt die Zahl 1 aus
BDas Programm startet neu
CDas Programm signalisiert einen Fehler ans Betriebssystem
DDas ist genau gleich wie return 0
Frage 6
Was macht #include <stdio.h>?
ADefiniert die main-Funktion
BStartet das Programm automatisch
CGibt Text auf dem Bildschirm aus
DBindet die Standard-I/O-Bibliothek ein
Frage 7
Was sind die drei Pflichtteile jedes C-Programms?
A#include, main(), return 0
Bprintf, scanf, return
Cint, char, float
Dgcc, main, exit
Frage 8
Was ist der Unterschied zwischen // und /* */?
AKein Unterschied – beide sind gleich
B/* */ ist einzeilig, // ist mehrzeilig
C// ist einzeilig, /* */ kann mehrzeilig sein
D// wird vom Compiler ausgeführt, /* */ nicht

📋 Spickzettel – Unit 3

Programmaufbau
/* ... */Kommentar
#include <...>Bibliothek laden
int main() {Startpunkt
...Anweisungen
return 0;Erfolg signalisieren
}Ende main
Wichtige Bibliotheken
<stdio.h>printf, scanf
<stdlib.h>malloc, rand, exit
<math.h>sqrt, pow, sin
<string.h>strlen, strcmp
Häufige Fehler
; fehltNach jeder Anweisung!
} fehltJede { braucht }
Main ≠ mainGroßschreibung zählt!
#include fehltprintf unbekannt
Kommentare
// TextEinzeilig (C99)
/* Text */Mehrzeilig
return 0= Erfolg
return 1+= Fehler

✅ Checkliste – Unit 3

  • Ich kann alle Teile eines C-Programms benennen und erklären
  • Ich weiß, was #include <stdio.h> macht
  • Ich kenne den Unterschied zwischen /* */ und //
  • Ich verstehe warum return 0 und return 1 unterschiedlich sind
  • Ich kenne die 5 häufigsten Anfängerfehler
Ömer
Ömer sagt:

Unit 3 abgeschlossen! In Unit 4 lernen wir Variablen und Datentypen – das ist der Moment, wo das Programmieren richtig spannend wird. Wir können dann Daten speichern und verarbeiten!