ESP

Projekte und Beispiele

Praxisbeispiele aus ESP mit ASCII-Art, Dateioperationen, Tamagotchi-Zuständen und ergänzenden Java-Materialien.

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 fgets lesen
  • 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