Files
programming-concepts-universal/README.md
2026-04-15 00:10:35 +02:00

257 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🎓 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
**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
│ ├── 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
└── exercises/
├── checkpoint_a.c # Memory & Typen
├── checkpoint_b.c # Taschenrechner
├── checkpoint_c.c # Dynamische Liste
└── final_project/ # Todo-App
├── todo_c/
└── todo_cpp/
```
---
## 🗺️ Kurs-Module
| Modul | Thema | C-Beispiel | C++-Gegenstück |
|-------|-------|------------|----------------|
| 1 | **Memory-Modell** | `malloc/free` | `new/delete`, Smart Pointer |
| 2 | **Datentypen** | `int32_t`, Overflow | `auto`, `constexpr` |
| 3 | **Flusskontrolle** | `if/for/while` | Gleich |
| 4 | **Funktionen** | Call-by-Value | References, `&` |
| 5 | **Datenstrukturen** | LinkedList, Stack | STL: `vector`, `stack` |
| 6 | **Pointer** | `*`, `&`, Arithmetik | References, Smart Ptr |
| 7 | **OOP** | Structs + Fct Ptrs | `class`, `virtual` |
| 8 | **Modularisierung** | MVC-Pattern | Namespaces, Templates |
---
## 🚀 Schnellstart
### Voraussetzungen
```bash
# C-Compiler (gcc oder clang)
gcc --version
# C++-Compiler (optional für Vergleich)
g++ --version
# Make (optional)
make --version
```
### Kompilieren
```bash
# Alle C-Beispiele kompilieren
cd src/c_examples
make all
# Einzelnes Modul
make module1
./module1
# Mit Debugging
make CFLAGS="-g -O0" module1
gdb ./module1
```
---
## 📖 Kursverwendung
### Empfohlener Lernpfad
**Woche 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 bestehen
**Woche 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
**Woche 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
**Woche 7-8:**
1. Modul 7-8 lesen
2. Quizfragen 7.1-8.3 + Final
3. Code: `module7_oop_in_c.c` + C++ Vergleich
4. 🎓 Final-Projekt: Todo-App in C, dann C++
---
## 🧪 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 |
---
## 💡 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
```c
// 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 |
| Strings | `char[]` | `std::string` |
| Arrays | Fixed/dynamisch | `std::vector` |
| OOP | Simuliert | Nativ (`class`) |
| Generics | `void*` | `template<T>` |
| Module | Header | Namespaces |
---
## 📝 Checkpoints
### Checkpoint A (nach Modul 2)
```c
// Frage: Was ist der Output?
void test() {
int x = 42;
int *p = &x;
// Was ist p nach Ende von test()?
}
```
### Checkpoint B (nach Modul 4)
Erstelle einen Taschenrechner mit:
- Menü-System (if/switch)
- Mathematische Funktionen
- Rekursive Fakultät
- Fehlerbehandlung
### Checkpoint C (nach Modul 6)
Implementiere eine dynamische Liste:
```c
typedef struct {
int* data;
int size;
int capacity;
} Vector;
void vector_push(Vector* v, int value);
int vector_get(Vector* v, int index);
```
### Final-Projekt
**Todo-App** mit:
1. CRUD-Operationen
2. File-Speicherung
3. CLI-Interface
4. Modularer Architektur
---
## 📚 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
### Online
- [exercism.org](https://exercism.org) - Sprachübergreifende Übungen
- [leetcode.com](https://leetcode.com) - Algorithmen
- [codewars.com](https://codewars.com) - Katas
### Dokumentation
- [C Reference](https://en.cppreference.com/w/c)
- [C++ Reference](https://en.cppreference.com/w/cpp)
---
## 🤝 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.*