Files
programming-concepts-universal/README.md

8.2 KiB
Raw Blame History

🎓 programming-concepts-universal

Interaktiver Programmierkurs: Von C zu universellen Konzepten

📋 Übersicht

Dieses Repository enthält einen kompletten Kurs für Programmieranfänger mit C-Grundlagen, der sich auf sprachunabhängige Konzepte konzentriert.

Zielgruppe: Student mit C-Erfahrung, geplantem C++-Umstieg
Kursdauer: 8 Wochen + Setup
Lernziel: Konzepte verstehen, die auf jede Programmiersprache übertragbar sind


📁 Repository-Struktur

.
├── README.md                           # Diese Datei
├── docs/
│   ├── programming-concepts-universal.md  # Hauptkurs-Dokument
│   └── quiz-fragen.md                    # Interaktive Quizfragen
├── src/
│   ├── c_examples/                       # C Code-Beispiele
│   │   ├── module0_setup.c               # 🆕 Entwicklungsumgebung
│   │   ├── module1_memory.c
│   │   ├── module2_datatypes.c
│   │   ├── module3_controlflow.c
│   │   ├── module4_functions.c
│   │   ├── module5_datastructures.c
│   │   ├── module6_pointers.c
│   │   ├── module7_oop_in_c.c
│   │   ├── module8_modularization.c
│   │   ├── Makefile
│   │   └── README.md
│   └── cpp_examples/                     # 🆕 C++ Vergleichsbeispiele
│       ├── module1_memory_cpp.cpp        # Smart Pointers, RAII
│       ├── module5_datastructures_cpp.cpp # STL Container
│       ├── module7_oop_cpp.cpp           # Klassen, Vererbung
│       ├── module8_stl_cpp.cpp           # 🆕 Iteratoren, Lambdas
│       └── README.md
└── exercises/
│   ├── checkpoint_a.c                    # 🆕 Lösung: Memory & Typen
│   ├── checkpoint_b.c                    # 🆕 Lösung: Taschenrechner
│   ├── checkpoint_c.c                    # 🆕 Lösung: Dynamische Liste
│   └── final_project/                    # 🆕 Abschlussprojekt
│       ├── README.md
│       ├── todo_c/
│       │   └── todo.c                    # C-Implementierung
│       └── todo_cpp/
│           └── todo.cpp                  # C++-Implementierung

🗺️ Kurs-Module

Modul Thema C-Beispiel C++-Gegenstück
0 Setup module0_setup.c -
1 Memory-Modell module1_memory.c module1_memory_cpp.cpp
2 Datentypen module2_datatypes.c (Konzepte ähnlich)
3 Flusskontrolle module3_controlflow.c (Konzepte identisch)
4 Funktionen module4_functions.c (Konzepte ähnlich)
5 Datenstrukturen module5_datastructures.c module5_datastructures_cpp.cpp
6 Pointer module6_pointers.c References, Smart Pointers
7 OOP module7_oop_in_c.c module7_oop_cpp.cpp
8 Modularisierung module8_modularization.c module8_stl_cpp.cpp

🚀 Schnellstart

Voraussetzungen

# C-Compiler (gcc oder clang)
gcc --version

# C++-Compiler (optional für Vergleich)
g++ --version

# Make (optional)
make --version

Kompilieren

# Alle C-Beispiele
cd src/c_examples
make all

# Einzelnes Modul
make module1
./module1

# C++ Beispiele
cd ../cpp_examples
g++ -std=c++17 -o memory module1_memory_cpp.cpp
./memory

# Final-Projekt
cd ../../exercises/final_project/todo_c
gcc -o todo todo.c -Wall -Wextra
./todo

📖 Kursverwendung

Empfohlener Lernpfad

Vorbereitung (Modul 0):

  1. Lese src/c_examples/module0_setup.c
  2. Installiere VS Code, GCC, Git
  3. Erstelle erstes "Hello World" Programm
  4. Initialisiere Git-Repository

Woche 1-2 (Modul 1-2):

  1. Lese docs/programming-concepts-universal.md Modul 1-2
  2. Bearbeite docs/quiz-fragen.md Fragen 1.1-2.3
  3. Kompiliere und teste module1_memory.c & module2_datatypes.c
  4. Checkpoint A: Lösung in exercises/checkpoint_a.c vergleichen

Woche 3-4 (Modul 3-4):

  1. Modul 3-4 lesen
  2. Quizfragen 3.1-4.3
  3. Code-Beispiele: module3_controlflow.c, module4_functions.c
  4. 📝 Checkpoint B: Taschenrechner implementieren, mit checkpoint_b.c vergleichen

Woche 5-6 (Modul 5-6):

  1. Modul 5-6 lesen
  2. Quizfragen 5.1-6.3
  3. Code: module5_datastructures.c, module6_pointers.c
  4. 🔧 Checkpoint C: Eigene LinkedList implementieren, mit checkpoint_c.c vergleichen

Woche 7-8 (Modul 7-8):

  1. Modul 7-8 lesen
  2. Quizfragen 7.1-8.3 + Final
  3. Code: module7_oop_in_c.c + C++ Vergleich (module7_oop_cpp.cpp)
  4. 🎓 Final-Projekt: Todo-App in C, dann C++ (exercises/final_project/)

🧪 Quiz-System

Das Kursmaterial enthält 28 Quizfragen mit:

  • Multiple Choice
  • 📝 Code-Analyse
  • 🔍 Konzept-Fragen
  • 🎯 Score-Tabelle (0-28 Punkte)

Bewertung:

Punkte Bewertung
26-28 🏆 Meister
22-25 Experte
18-21 Gut
< 18 📚 Nacharbeiten

🎯 Checkpoints (mit Lösungen)

Checkpoint Thema Datei Schwierigkeit
A Memory & Typen exercises/checkpoint_a.c Mittel
B Taschenrechner exercises/checkpoint_b.c Fortgeschritten
C Dynamische Liste exercises/checkpoint_c.c Experte

Jeder Checkpoint enthält:

  • Aufgabenstellung als Kommentar
  • Vollständige Lösung
  • Erklärungen der Konzepte
  • Test-Funktionen

🏆 Final-Projekt: Todo-App

Vollständige CRUD-Anwendung mit:

  • C-Version: Manuelle Speicherverwaltung, structs
  • C++-Version: Klassen, STL, Smart Pointers

Features:

  • Todo hinzufügen/ansehen/abschließen/löschen
  • Datei-Speicherung
  • Menü-System
  • Fehlerbehandlung

Vergleich C vs C++:

Aspekt C C++
Codezeilen ~300 ~250
Speicherverwaltung Manuell (malloc/free) RAII (destruktoren)
Datenstruktur Struct + Funktionen Klasse mit Methoden
String-Handling char[] (manuell) std::string
Fehlerbehandlung Return codes Exceptions (optional)

💡 Kernkonzepte

1. Memory-Modell (Universell)

┌─────────────────┐
│     Stack       │ ← Automatisch, schnell, begrenzt
│   (short-term)  │
├─────────────────┤
│      Heap       │ ← Manuell/verwaltet, flexibel
│   (long-term)   │
└─────────────────┘

In jeder Sprache: Stack/Heap existieren, Management variiert

2. Typen als Konzepte

// Nicht lernen: "int ist 4 Bytes"
// Lernen: "int ist ein ganzzahliger Typ mit begrenztem Bereich"

3. OOP-Prinzipien (Sprachunabhängig)

  • Kapselung: Daten schützen
  • Abstraktion: Wie ist egal
  • Vererbung: "IS-A" Beziehung
  • Polymorphie: Gleiche Schnittstelle

🔧 C vs C++ Vergleich

Feature C C++
Memory malloc/free new/delete, RAII, Smart Pointers
Strings char[] std::string
Arrays Fixed/dynamisch std::vector
OOP Simuliert (structs + fct ptrs) Nativ (class, virtual)
Generics void* template<T>
Algorithmen Manuell implementieren 100+ STL-Algorithmen
Iteratoren Manuell (Index/Pointers) Einheitlich für alle Container

📚 Ressourcen

Bücher

  • "The C Programming Language" (K&R) - Klassiker
  • "C++ Primer" (Lippman) - Umfassend
  • "Clean Code" (Robert C. Martin) - Sprachunabhängig!
  • "Design Patterns" (Gang of Four) - Das Original
  • "The C++ Standard Library" (Nicolai Josuttis) - STL Referenz

Online


🤝 Mitwirken

Dieser Kurs ist für Bildungszwecke gedacht. Verbesserungsvorschläge willkommen!


📄 Lizenz

MIT License - Für Bildungszwecke frei nutzbar.


Viel Erfolg beim Lernen! 🚀

Remember: Programmieren ist nicht Syntax lernen es sind Konzepte, die in jeder Sprache wiederkehren, nur mit anderem Akzent.