Grundlagenmodul - Cheatsheet
Einführung in Programmiersprachen und Syntax
Definition:
Einführung in grundlegende Programmierkonzepte und die Syntax verschiedener Programmiersprachen
Details:
- Programmiersprachen: formelle Sprachen zur Beschreibung von Algorithmen
- Syntax: Regeln zur Bildung von gültigen Programmstrukturen
- Lexikalische Analyse: Aufteilung des Codes in Tokens
- Syntaxanalyse (Parsing): Überprüfung der korrekten Struktur anhand der Grammatik
- Typen: Datentypen (integer, float, char, etc.) und Typprüfung
- Kontrollstrukturen: if-else, switch, loops (for, while)
- Funktionen und Prozeduren: Modularisierung und Wiederverwendung von Code
- Ein- und Ausgabe: Arbeitsweise mit Input/Output-Operationen
- Beispielcode (in einer Sprache deiner Wahl)
Kontrollstrukturen: Schleifen und Bedingungen
Definition:
Kontrollstrukturen steuern den Ablauf von Programmen. Schleifen und Bedingungen sind fundamentale Kontrollstrukturen in der Programmierung.
Details:
- Bedingungen (if, else, switch): Steuern die Ausführung von Code-Blöcken basierend auf booleschen Ausdrücken.
- If-Bedingung:
if (Bedingung) { Anweisungen }
- Else-Bedingung:
if (Bedingung) { Anweisungen } else { Anweisungen }
- Schleifen (for, while, do-while): Wiederholen Code-Blöcke solange eine Bedingung erfüllt ist.
- For-Schleife:
for (Initialisierung; Bedingung; Iteration) { Anweisungen }
- While-Schleife:
while (Bedingung) { Anweisungen }
- Do-While-Schleife:
do { Anweisungen } while (Bedingung);
Sortier- und Suchalgorithmen
Definition:
Sortieralgorithmen ordnen Elemente einer Liste nach einer bestimmten Reihenfolge. Suchalgorithmen durchsuchen Datenstrukturen nach bestimmten Elementen.
Details:
- Wichtige Sortieralgorithmen: Bubble Sort, Merge Sort, Quick Sort, Insertion Sort
- Komplexität: Beispiel Quick Sort \(O(n \log n)\)
- Wichtige Suchalgorithmen: Linear Search, Binary Search
- Komplexität: Beispiel Binary Search \(O(\log n)\)
- Stabilität: Ein Sortieralgorithmus ist stabil, wenn er die Reihenfolge von Elementen mit gleichen Schlüsseln beibehält.
- Speicherbedarf: Beispiel Merge Sort benötigt zusätzlichen Speicher, Quick Sort arbeitet in-place.
- Bedeutung für Anwendungen: Effizienz der Algorithmen ist entscheidend für die Performance von Software
Big-O-Notation und Laufzeitanalyse
Definition:
Mittel zur Bestimmung der Effizienz von Algorithmen hinsichtlich ihrer Laufzeit und Speicherplatzbedarf.
Details:
- Big-O-Notation: Charakterisiert das Wachstum der Laufzeit/Speicherbedarf in Abhängigkeit von der Eingabegröße.
- Wichtige Klassen:
- Konstant: O(1)
- Logarithmisch: O(\log n)
- Linear: O(n)
- Quadratisch: O(n^2)
- Kubisch: O(n^3)
- Exponential: O(2^n)
- Analyse der Laufzeit: Theoretische Abschätzung der Schleifen, Rekursionen und anderen Kontrollstrukturen.
- Best/Worst/Average-Case: Unterschiedliche Betrachtungen der Laufzeit für verschiedene Eingabemengen.
Grundlagen der digitalen Logik und Schaltkreise
Definition:
Grundkonzepte digitaler Logik und Schaltkreise, einschließlich Boolescher Algebra und grundlegender logischer Gatter (AND, OR, NOT).
Details:
- Boolesche Algebra: Grundlage zur Analyse und Synthese digitaler Schaltungen.
- Logische Gatter: AND (\texttt{\textbf{•}}), OR (\texttt{\textbf{+}}), NOT (\texttt{\textbf{¯}}).
- Kombinatorische Logik: Logische Funktionen ohne Speicherwirkung.
- Sequenzielle Logik: Speichernde Schaltungen wie Flip-Flops.
- Karnaugh-Diagramme: Minimierung logischer Ausdrücke.
- Arithmetische Schaltungen: Volladdierer, Halbaddierer.
- Zähler und Register: Anwendung von Flip-Flops.
- PLL und FPGA: Programmierbare Logikschaltungen.
CPU-Architekturen und Funktionsweise
Definition:
Grundlegende Strukturen und Abläufe einer CPU. Verschiedene Architekturen für unterschiedliche Zwecke und Leistungen.
Details:
- Von-Neumann-Architektur: gemeinsamer Speicher für Daten und Programme
- Harvard-Architektur: separater Speicher für Daten und Programme
- Registersätze: Schnellzugriff auf häufig verwendete Daten
- ALU (Arithmetic Logic Unit): führt arithmetische und logische Operationen aus
- Steuereinheit: steuert den Ablauf der Befehlsausführung
- Taktgeber: bestimmt die Arbeitsgeschwindigkeit der CPU
- Pipeline: parallele Ausführung von Befehlen zur Effizienzsteigerung
- Cache-Speicher: schneller Zwischenspeicher zur Beschleunigung des Datenzugriffs
- Multithreading und Multicore: parallele Verarbeitung zur Leistungssteigerung
- Befehlssatzarchitektur (ISA): definiert die Schnittstelle zwischen Software und Hardware
Logik und Mengenlehre
Definition:
Grundzüge der mathematischen Logik und Mengenlehre, die in der Informatik von Bedeutung sind.
Details:
- Logische Operatoren: \(\land\) (Und), \(\lor\) (Oder), \(eg\) (Nicht), \(\Rightarrow\) (Implikation), \(\Leftrightarrow\) (Bikonditional)
- Mengen: Sammlungen von Objekten/Elementen
- Operationen auf Mengen: Vereinigung \(\cup\), Schnittmenge \(\cap\), Differenz \(\setminus\), Komplement \(\overline{A}\)
- Kardinalität: Anzahl der Elemente in einer Menge
- Quantoren: Existenzquantor \(\exists\), Allquantor \(\forall\)
- Hypothese, Aussage, Beweis
- Russellsche Antinomie und Zermelo-Fraenkel-Mengenlehre (ZFC)
Softwareentwicklungsprozesse und -modelle
Definition:
Softwareentwicklungsprozesse und -modelle strukturieren die Entwicklung von Software, um Qualität und Effizienz zu gewährleisten.
Details:
- Wasserfallmodell: Sequenziell, jede Phase muss abgeschlossen sein bevor die nächste beginnt. Ideal für klar definierte Projekte.
- V-Modell: Erweiterung des Wasserfallmodells, mit parallelen Testphasen zu jeder Entwicklungsphase. Emphasis auf Verifikation und Validierung.
- Spiralmodell: Kombination von Design und Prototyping in Stufen, fokussiert auf Risikomanagement.
- Agile Methoden: Iterativ und inkrementell, fördert Flexibilität und Kundenfeedback. Beispiele: Scrum, Kanban.
- DevOps: Integration von Entwicklung und Betrieb, automatisierte und kontinuierliche Lieferpipelines, fördert Zusammenarbeit.
- Vorausplanung von Meilensteinen und Ressourcen an kritischen Punkten wichtig.