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

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! 🔍

Lernziele dieser Unit
Aufbau eines C-Programms kennen #include verstehen main()-Funktion erklären return 0 verstehen Kommentare schreiben Typische Fehler vermeiden

🔬 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:

aufbau_demo.c C – Vollständige Erklärung
/* Programmbeschreibung */
#include <stdio.h>

int main() {

    printf("Hallo!\n");

    return 0;
}
KommentarBeschreibt das Programm
#includeLädt Bibliotheken
LeerzeileLesbarkeit
int main()Startpunkt
{ }Codeblock
printf()Ausgabefunktion
return 0Erfolgreich beendet
}Ende main

🏛️ 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:

BibliothekInhalt / VerwendungWichtige Funktionen
<stdio.h>Standard Ein-/Ausgabeprintf, scanf, getchar
<stdlib.h>Standardbibliothek (Speicher, Zufall)malloc, free, rand, exit
<math.h>Mathematische Funktionensqrt, pow, sin, cos
<string.h>String-Operationenstrlen, strcmp, strcpy
<time.h>Datum und Uhrzeittime, 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

// Einfachste Form:
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.

kommentare.c C
/* 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;
}
▶ Ausgabe
Kommentare sieht man nicht!
KommentartypSyntaxVerwendung
Einzeilig// TextKurze 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

❌ Fehler 1 – Fehlendes Semikolon
printf("Hallo") ← fehlendes Semikolon!
Fehlermeldung: error: expected ';' before 'return'
❌ Fehler 2 – Fehlende schließende Klammer
int main() {
printf("Hallo\n");
return 0;
← } fehlt!
Fehlermeldung: error: expected '}' at end of input
❌ Fehler 3 – #include vergessen
int main() {
printf("Hallo\n"); ← printf nicht bekannt!
return 0;
}
Fehlermeldung: warning: implicit declaration of function 'printf'

⚠️ Die häufigsten Anfänger-Fehler

✏️ Übungen

Übung 1

Teile benennen

Beschrifte die markierten Teile dieses C-Programms mit dem richtigen Fachbegriff:


C
/* Programm: Begrüßung */           ← (A) _______________
#include <stdio.h>                   ← (B) _______________

int main() {                          ← (C) _______________
    printf("Willkommen!\n");          ← (D) _______________
    return 0;                         ← (E) _______________
}
Die Antworten findest du in der Anatomie-Übersicht weiter oben.
Übung 2

Fehler finden & korrigieren

In diesem Programm sind 3 Fehler versteckt. Finde und markiere sie, dann schreibe die korrigierte Version:

C – FEHLER DRIN!
#include <stdio.h>

int Main() {
    printf("Hallo HTL")
    return 0
}

Die 3 Fehler sind:

Korrigiertes Programm:

Übung 3

Kommentare hinzufügen

Ergänze das folgende Programm mit sinnvollen Kommentaren. Füge mindestens einen einzeiligen (//) und einen mehrzeiligen (/* */) Kommentar ein:

#include <stdio.h> int main() { printf("Ömer erklärt C\n"); printf("HTL Informatik\n"); return 0; }
Übung 4 – Vertiefung

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?

Denke daran: Der Rückgabewert geht ans Betriebssystem. Skripte und Build-Systeme werten ihn aus!
Übung 5 – Challenge

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:

Gewünschte Ausgabe
============================
  Oemer erklaert C
  HTL Informatik
  Kapitel 1 - Aufbau
============================
/* TODO: Ergaenze dieses Programm mit allen Zeilen und Kommentaren */ #include <stdio.h> int main() { /* Trennlinie */ printf("============================\n"); /* Hier weitere printf-Zeilen einfuegen */ return 0; }
Probiere auch return 1; – siehst du einen Unterschied in der Ausgabe? (Nein – aber das Betriebssystem bemerkt den Fehlercode!)