C: Unterschied zwischen den Versionen
imported>Import Version 174 |
Keine Bearbeitungszusammenfassung |
||
| Zeile 2: | Zeile 2: | ||
---- | ---- | ||
== Weblink == | == Weblink== | ||
* Jason Fedin / Tim Buchalka C Programming For Beginners - Master the C Language | * Jason Fedin / Tim Buchalka C Programming For Beginners - Master the C Language | ||
* Jason Fedin / Tim Buchalka Advanced C Programming Course | * Jason Fedin / Tim Buchalka Advanced C Programming Course | ||
== Einführung in C == | == Einführung in C == | ||
C ist eine leistungsstarke, strukturierte und hardwarenahe Programmiersprache, die als Basis für viele moderne Sprachen dient (z. B. C++, C#, Java). Sie wird häufig in der Systemprogrammierung, Embedded Systems (Mikrocontroller), Betriebssystemen und High-Performance-Anwendungen eingesetzt. | C ist eine leistungsstarke, strukturierte und hardwarenahe Programmiersprache, die als Basis für viele moderne Sprachen dient (z. B. C++, C#, Java). Sie wird häufig in der Systemprogrammierung, Embedded Systems (Mikrocontroller), Betriebssystemen und High-Performance-Anwendungen eingesetzt. | ||
== Lernpfad == | == Lernpfad == | ||
Dieser Lernpfad führt Sie systematisch von den Grundlagen bis zu fortgeschrittenen Konzepten der C-Programmierung. | Dieser Lernpfad führt Sie systematisch von den Grundlagen bis zu fortgeschrittenen Konzepten der C-Programmierung. | ||
=== Phase 1: Grundlagen === | === Phase 1: Grundlagen === | ||
* '''Entwicklungsumgebung:''' Installation von Compiler (GCC, Clang) und IDE/Editor (VS Code, CLion, Code::Blocks). | * '''Entwicklungsumgebung:''' Installation von Compiler (GCC, Clang) und IDE/Editor (VS Code, CLion, Code::Blocks). | ||
* '''Erstes Programm:''' `Hello World!` schreiben, kompilieren und ausführen. Struktur eines C-Programms (includes, `main`-Funktion). | * '''Erstes Programm:''' `Hello World!` schreiben, kompilieren und ausführen. Struktur eines C-Programms (includes, `main`-Funktion). | ||
| Zeile 25: | Zeile 21: | ||
=== Phase 2: Fortgeschrittene Grundlagen === | === Phase 2: Fortgeschrittene Grundlagen === | ||
* '''Funktionen:''' Deklaration, Definition, Aufruf, Parameterübergabe (Call by Value), Rückgabewerte. Gültigkeitsbereich von Variablen (lokal vs. global). | |||
* '''Funktionen:''' Deklaration, Definition, Aufruf, Parameterübergabe (Call by Value), Rückgabewerte. Gültigkeitsbereich von Variablen (lokal vs. | |||
* '''Arrays:''' Eindimensionale und mehrdimensionale Arrays. | * '''Arrays:''' Eindimensionale und mehrdimensionale Arrays. | ||
* '''Strings:''' Zeichenketten als Arrays von `char`, String-Funktionen (`string.h`). | * '''Strings:''' Zeichenketten als Arrays von `char`, String-Funktionen (`string.h`). | ||
| Zeile 32: | Zeile 27: | ||
=== Phase 3: Speicherverwaltung und Zeiger (Pointers) === | === Phase 3: Speicherverwaltung und Zeiger (Pointers) === | ||
* '''Zeiger Grundlagen:''' Was sind Zeiger (`*` und `&`), Pointer auf Variablen. | |||
* '''Zeiger Grundlagen:''' Was sind Zeiger (`*` und `& | |||
* '''Zeiger und Arrays/Strings:''' Zusammenhang zwischen Arrays und Pointern. | * '''Zeiger und Arrays/Strings:''' Zusammenhang zwischen Arrays und Pointern. | ||
* '''Call by Reference:''' Parameterübergabe über Zeiger an Funktionen. | * '''Call by Reference:''' Parameterübergabe über Zeiger an Funktionen. | ||
| Zeile 39: | Zeile 33: | ||
=== Phase 4: Dateiverwaltung und Fortgeschrittene Konzepte === | === Phase 4: Dateiverwaltung und Fortgeschrittene Konzepte === | ||
* '''Dateiverwaltung:''' Dateien öffnen (`fopen`), lesen (`fread`, `fscanf`, `fgets`), schreiben (`fwrite`, `fprintf`, `fputs`) und schließen (`fclose`). | * '''Dateiverwaltung:''' Dateien öffnen (`fopen`), lesen (`fread`, `fscanf`, `fgets`), schreiben (`fwrite`, `fprintf`, `fputs`) und schließen (`fclose`). | ||
* '''Präprozessor:''' Makros (`#define`), bedingte Kompilierung (`#ifndef`, `#ifdef`). | * '''Präprozessor:''' Makros (`#define`), bedingte Kompilierung (`#ifndef`, `#ifdef`). | ||
| Zeile 46: | Zeile 39: | ||
== Lernplan (12 Wochen) == | == Lernplan (12 Wochen) == | ||
Dieser Plan ist für ein Selbststudium mit einem Zeitaufwand von ca. 5-8 Stunden pro Woche ausgelegt. | Dieser Plan ist für ein Selbststudium mit einem Zeitaufwand von ca. 5-8 Stunden pro Woche ausgelegt. | ||
=== Woche 1-2: Erste Schritte und Kontrollstrukturen === | === Woche 1-2: Erste Schritte und Kontrollstrukturen === | ||
* '''Woche 1:''' Compiler installieren. "Hello World" schreiben. Variablen, Datentypen und einfache I/O (`printf`/`scanf`). | |||
* '''Woche 1:''' Compiler installieren. | * '''Woche 2:''' Kontrollstrukturen (`if`/`else`, `switch`, `for`, `while`). | ||
* '''Woche 2:''' Kontrollstrukturen (`if`/`else`, `switch`, `for`, `while`). | |||
* ''Übung:'' Taschenrechner programmieren, Zahlenraten-Spiel. | * ''Übung:'' Taschenrechner programmieren, Zahlenraten-Spiel. | ||
=== Woche 3-4: Funktionen und Arrays === | === Woche 3-4: Funktionen und Arrays === | ||
* '''Woche 3:''' Funktionen definieren und verwenden (Call by Value). Rückgabewerte. | * '''Woche 3:''' Funktionen definieren und verwenden (Call by Value). Rückgabewerte. | ||
* '''Woche 4:''' Eindimensionale und zweidimensionale Arrays. String-Grundlagen. | * '''Woche 4:''' Eindimensionale und zweidimensionale Arrays. String-Grundlagen. | ||
| Zeile 62: | Zeile 52: | ||
=== Woche 5-6: Zeiger (Der wichtigste Teil in C!) === | === Woche 5-6: Zeiger (Der wichtigste Teil in C!) === | ||
* '''Woche 5:''' Einführung in Zeiger (`Pointers`), Adressen, Dereferenzierung. | * '''Woche 5:''' Einführung in Zeiger (`Pointers`), Adressen, Dereferenzierung. | ||
* '''Woche 6:''' Zeigerarithmetik, Pointer und Arrays, Call by Reference bei Funktionen. | * '''Woche 6:''' Zeigerarithmetik, Pointer und Arrays, Call by Reference bei Funktionen. | ||
| Zeile 68: | Zeile 57: | ||
=== Woche 7-8: Datenstrukturen und Dynamischer Speicher === | === Woche 7-8: Datenstrukturen und Dynamischer Speicher === | ||
* '''Woche 7:''' Strukturen (`struct`), `union` und `typedef`. | * '''Woche 7:''' Strukturen (`struct`), `union` und `typedef`. | ||
* '''Woche 8:''' Dynamische Speicherallokation (`malloc`, `free`). Arrays zur Laufzeit vergrößern. | * '''Woche 8:''' Dynamische Speicherallokation (`malloc`, `free`). Arrays zur Laufzeit vergrößern. | ||
| Zeile 74: | Zeile 62: | ||
=== Woche 9-10: Dateiverarbeitung === | === Woche 9-10: Dateiverarbeitung === | ||
* '''Woche 9:''' Textdateien lesen und schreiben. | * '''Woche 9:''' Textdateien lesen und schreiben. | ||
* '''Woche 10:''' Binärdateien verarbeiten. Fehlerbehandlung bei Dateioperationen. | * '''Woche 10:''' Binärdateien verarbeiten. Fehlerbehandlung bei Dateioperationen. | ||
| Zeile 80: | Zeile 67: | ||
=== Woche 11-12: Spezielle Themen und Abschlussprojekt === | === Woche 11-12: Spezielle Themen und Abschlussprojekt === | ||
* '''Woche 11:''' Präprozessor-Direktiven, Kommandozeilenargumente, Funktionszeiger. | * '''Woche 11:''' Präprozessor-Direktiven, Kommandozeilenargumente, Funktionszeiger. | ||
* '''Woche 12:''' Abschlussprojekt. Wiederholung von schwachen Themen. | * '''Woche 12:''' Abschlussprojekt. Wiederholung von schwachen Themen. | ||
| Zeile 86: | Zeile 72: | ||
== Empfohlene Ressourcen == | == Empfohlene Ressourcen == | ||
* '''Bücher:''' "C von A bis Z" (Jürgen Wolf), "C Programming Language" (Brian Kernighan und Dennis Ritchie). | |||
* '''Bücher:''' | |||
* '''Online-Kurse:''' edX, Coursera, Udemy. | * '''Online-Kurse:''' edX, Coursera, Udemy. | ||
* '''Übungsplattformen:''' LeetCode, HackerRank, Codewars. | * '''Übungsplattformen:''' LeetCode, HackerRank, Codewars. | ||
Aktuelle Version vom 3. März 2026, 20:40 Uhr
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
Weblink
- Jason Fedin / Tim Buchalka C Programming For Beginners - Master the C Language
- Jason Fedin / Tim Buchalka Advanced C Programming Course
Einführung in C
C ist eine leistungsstarke, strukturierte und hardwarenahe Programmiersprache, die als Basis für viele moderne Sprachen dient (z. B. C++, C#, Java). Sie wird häufig in der Systemprogrammierung, Embedded Systems (Mikrocontroller), Betriebssystemen und High-Performance-Anwendungen eingesetzt.
Lernpfad
Dieser Lernpfad führt Sie systematisch von den Grundlagen bis zu fortgeschrittenen Konzepten der C-Programmierung.
Phase 1: Grundlagen
- Entwicklungsumgebung: Installation von Compiler (GCC, Clang) und IDE/Editor (VS Code, CLion, Code::Blocks).
- Erstes Programm: `Hello World!` schreiben, kompilieren und ausführen. Struktur eines C-Programms (includes, `main`-Funktion).
- Syntax und Datentypen: Variablen, Konstanten (`const`), Datentypen (`int`, `float`, `char`, `double`).
- Ein- und Ausgabe: `printf()` und `scanf()`.
- Operatoren: Arithmetische, relationale, logische und bitweise Operatoren.
- Kontrollstrukturen: Bedingungen (`if`, `else`, `switch`) und Schleifen (`for`, `while`, `do-while`).
Phase 2: Fortgeschrittene Grundlagen
- Funktionen: Deklaration, Definition, Aufruf, Parameterübergabe (Call by Value), Rückgabewerte. Gültigkeitsbereich von Variablen (lokal vs. global).
- Arrays: Eindimensionale und mehrdimensionale Arrays.
- Strings: Zeichenketten als Arrays von `char`, String-Funktionen (`string.h`).
- Strukturen und Unions: Eigene Datentypen mit `struct` und `union` definieren. `typedef`.
Phase 3: Speicherverwaltung und Zeiger (Pointers)
- Zeiger Grundlagen: Was sind Zeiger (`*` und `&`), Pointer auf Variablen.
- Zeiger und Arrays/Strings: Zusammenhang zwischen Arrays und Pointern.
- Call by Reference: Parameterübergabe über Zeiger an Funktionen.
- Dynamische Speicherverwaltung: `malloc()`, `calloc()`, `realloc()`, `free()` (`stdlib.h`). Speicherlecks vermeiden.
Phase 4: Dateiverwaltung und Fortgeschrittene Konzepte
- Dateiverwaltung: Dateien öffnen (`fopen`), lesen (`fread`, `fscanf`, `fgets`), schreiben (`fwrite`, `fprintf`, `fputs`) und schließen (`fclose`).
- Präprozessor: Makros (`#define`), bedingte Kompilierung (`#ifndef`, `#ifdef`).
- Konzepte für Fortgeschrittene: Funktionszeiger (Function Pointers), Kommandozeilenargumente (`argc`, `argv`), Bitmanipulation.
- Datenstrukturen: Implementierung einfacher verketteter Listen, Stacks und Queues in C.
Lernplan (12 Wochen)
Dieser Plan ist für ein Selbststudium mit einem Zeitaufwand von ca. 5-8 Stunden pro Woche ausgelegt.
Woche 1-2: Erste Schritte und Kontrollstrukturen
- Woche 1: Compiler installieren. "Hello World" schreiben. Variablen, Datentypen und einfache I/O (`printf`/`scanf`).
- Woche 2: Kontrollstrukturen (`if`/`else`, `switch`, `for`, `while`).
- Übung: Taschenrechner programmieren, Zahlenraten-Spiel.
Woche 3-4: Funktionen und Arrays
- Woche 3: Funktionen definieren und verwenden (Call by Value). Rückgabewerte.
- Woche 4: Eindimensionale und zweidimensionale Arrays. String-Grundlagen.
- Übung: Tic-Tac-Toe auf der Konsole, Array sortieren (Bubble Sort).
Woche 5-6: Zeiger (Der wichtigste Teil in C!)
- Woche 5: Einführung in Zeiger (`Pointers`), Adressen, Dereferenzierung.
- Woche 6: Zeigerarithmetik, Pointer und Arrays, Call by Reference bei Funktionen.
- Übung: Swap-Funktion mit Pointern, String-Länge ohne `strlen()` berechnen.
Woche 7-8: Datenstrukturen und Dynamischer Speicher
- Woche 7: Strukturen (`struct`), `union` und `typedef`.
- Woche 8: Dynamische Speicherallokation (`malloc`, `free`). Arrays zur Laufzeit vergrößern.
- Übung: Kontaktverwaltung (Adressbuch) im RAM programmieren (mit Arrays aus Structs).
Woche 9-10: Dateiverarbeitung
- Woche 9: Textdateien lesen und schreiben.
- Woche 10: Binärdateien verarbeiten. Fehlerbehandlung bei Dateioperationen.
- Übung: Die Kontaktverwaltung aus Woche 8 erweitern, sodass die Daten in einer Datei gespeichert und geladen werden können.
Woche 11-12: Spezielle Themen und Abschlussprojekt
- Woche 11: Präprozessor-Direktiven, Kommandozeilenargumente, Funktionszeiger.
- Woche 12: Abschlussprojekt. Wiederholung von schwachen Themen.
- Abschlussprojekt Ideen: Einfache Shell implementieren, Snake-Spiel auf der Konsole (mit ncurses), einfacher Webserver in C, Verschlüsselungsprogramm (Cäsar/Vigenère).
Empfohlene Ressourcen
- Bücher: "C von A bis Z" (Jürgen Wolf), "C Programming Language" (Brian Kernighan und Dennis Ritchie).
- Online-Kurse: edX, Coursera, Udemy.
- Übungsplattformen: LeetCode, HackerRank, Codewars.
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).