Projekte und Beispiele
Projekte und Beispiele
Neben den Folien und Übungen enthalten die Materialien mehrere Programmdateien und Projektbeispiele. Sie zeigen, wie die Grundlagen in kleinen Programmen zusammenkommen.
ASCII-Art aus Datei lesen
Ein Beispiel liest ASCII-Art aus einer Textdatei ein und speichert die Zeilen in einem mehrdimensionalen Array.
Zentrale Ideen:
- Datei mit
fopen_söffnen - Zeilen mit
fgetslesen - Inhalte in ein Array kopieren
- Datei wieder schließen
- gespeicherte ASCII-Art ausgeben
Vereinfachte Struktur:
#define MAX_LINES 10
#define MAX_LINE_LENGTH 30
char asciiArts[10][MAX_LINES][MAX_LINE_LENGTH];
Das Beispiel verbindet mehrere ESP-Themen:
- Konstanten
- Arrays
- Strings
- Dateioperationen
- Schleifen
- Fehlerbehandlung
Wichtige Sicherheitsfragen beim Datei-Lesen
Beim Arbeiten mit Dateien sollte geprüft werden:
- Existiert die Datei?
- Konnte sie geöffnet werden?
- Passt jede Zeile in den vorgesehenen Puffer?
- Wird das Ende der Datei korrekt behandelt?
- Werden Rückgabewerte ausgewertet?
Ein Programm sollte nicht einfach weitermachen, wenn eine Datei nicht geladen werden konnte.
Tamagotchi als Zustandsprogramm
Das Tamagotchi-Beispiel verwaltet den Zustand eines virtuellen Haustiers.
Ein einfacher Zustand kann so aussehen:
typedef struct {
int hunger;
int energy;
int happiness;
} Tamagotchi;
Typische Aktionen:
- füttern
- spielen
- schlafen
- Status anzeigen
- zufälliges Ereignis auslösen
Das ist ein gutes Beispiel für:
struct- Funktionen
- Menüs
- Zufallszahlen
- Zustandsänderungen
- Kontrollfluss
Zustände begrenzen
Bei Zustandswerten ist wichtig, Grenzen einzuhalten.
Beispiel:
if (pet->hunger < 0) {
pet->hunger = 0;
}
Ohne Begrenzung könnten Werte unsinnig werden, etwa negative Energie oder Zufriedenheit über einem sinnvollen Maximum.
Plattformabhängigkeit
Einige Beispiele verwenden Funktionen wie:
system("cls");
scanf_s(...);
fopen_s(...);
strcpy_s(...);
Diese Funktionen passen besonders zu Windows und Visual Studio. Auf anderen Systemen oder mit anderen Compilern kann Anpassung nötig sein.
Das ist kein Fehler der Übung, sondern ein guter Hinweis: C-Code ist oft stärker von Plattform, Compiler und Bibliothek abhängig als moderne Web- oder Skriptsprachen.
Codequalität als Lernpunkt
Beim Durchsehen von Beispielcode lohnt sich immer der Blick auf:
- passende Funktionssignaturen
- korrekte Rückgabewerte
- klare Parameter
- geprüfte Eingaben
- keine unnötigen globalen Zustände
- verständliche Fehlermeldungen
- keine Zugriffe außerhalb von Arrays
Ein Beispiel aus den Materialien zeigt etwa, warum Rückgabewerte und Funktionsdeklarationen zusammenpassen müssen: Eine Funktion, die als void deklariert ist, sollte keinen Fehlerwert zurückgeben.
Ergänzende Java-Projekte
Die Unterlagen enthalten auch Java-Projekte und ein Java-Buch als Zusatzmaterial. Für ESP sind sie vor allem als Vergleich interessant.
Java nimmt viele Speicherprobleme ab, die in C direkt sichtbar werden. Trotzdem bleiben sichere Grundideen gleich:
- Eingaben prüfen
- Datenstrukturen sinnvoll wählen
- Fehler behandeln
- Zustände klar modellieren
- Funktionen und Methoden verständlich aufteilen
Merksatz
Die Projektbeispiele zeigen: Sichere Programmierung entsteht nicht erst bei großen Anwendungen. Sie beginnt bei jeder Datei, jeder Eingabe, jedem Array und jeder Funktion.
Zuletzt aktualisiert: 6. Juni 2026