Programmierung - Cheatsheet
Variablen und Datentypen
Definition:
Variablen speichern Daten; Datentypen definieren, welche Art von Daten in einer Variable gespeichert werden können.
Details:
- Variablen: Symbolische Namen für Speicherorte, die Werte enthalten.
- Datentypen: Beschreiben die Art der Daten, z.B. int, float, char.
- Primitive Datentypen: Grundlegende Typen wie int, float, double, char, bool.
- Typischerweise verwendete Operationen:
- Addition: \texttt{+}
- Subtraktion: \texttt{-}
- Multiplikation: \texttt{*}
- Division: \texttt{/}
- Deklaration:
Datentyp Variablenname;
z.B. \texttt{int x;} - Initialisierung:
Variablenname = Wert;
z.B. \texttt{x = 5;}
Kontrollstrukturen wie Schleifen und Bedingungen
Definition:
Kontrollstrukturen steuern den Ablauf eines Programms.
Details:
- Schleifen: Wiederholen Anweisungen, solange eine Bedingung erfüllt ist. Haupttypen:
- for-Schleife: Wird bei bekannter Iterationsanzahl verwendet. Syntax:
for (Initialisierung; Bedingung; Schritt) { Anweisungen }
- while-Schleife: Fortsetzung, solange Bedingung wahr ist. Syntax:
while (Bedingung) { Anweisungen }
- do-while-Schleife: Führt Anweisung mindestens einmal aus. Syntax:
do { Anweisungen } while (Bedingung);
- Bedingungen: Entscheiden über Programmfluss je nach erfüllter oder nicht erfüllter Bedingung.
- if-Anweisung: Basisform der Bedingung. Syntax:
if (Bedingung) { Anweisungen }
- if-else-Anweisung: Alternative Anweisungen bei Nicht-Erfüllung. Syntax:
if (Bedingung) { Anweisungen } else { Anweisungen }
- switch-Anweisung: Erleichtert mehrere Bedingungsprüfungen. Syntax:
switch (Ausdruck) { case Wert: Anweisungen; break; ... default: Anweisungen; }
- Bedingte (ternäre) Operatoren: Kurzform. Syntax:
bedingung ? Ausdruck1 : Ausdruck2
Rekursive Algorithmen und Dynamic Programming
Definition:
Rekursive Algorithmen nutzen die Technik, ein Problem durch kleinere Instanzen desselben Problems zu lösen. Dynamic Programming (DP) optimiert rekursive Algorithmen durch Speicherung und Wiederverwendung bereits berechneter Teilergebnisse.
Details:
- Rekursion: Problem in kleinere Teillösungen zerlegen, bis eine einfache Lösung erreichbar ist.
- DP: Memorization (Top-down) und Tabulation (Bottom-up) zur Optimierung von rekursiven Ansätzen.
- Beispiele für DP: Fibonacci, Knapsack-Problem, kürzeste Pfade.
- Formel: \( F(n) = F(n-1) + F(n-2) \), für das Fibonacci-Problem.
- Zeitkomplexität eindeutig verringert durch Wiederverwendung von Zwischenergebnissen.
Klassen und Objekte
Definition:
Definiert Datentypen und Funktionen in einem strukturierten Rahmen.
Details:
- Klasse: Bauplan für Objekte, definiert Attribute und Methoden.
- Objekte: Instanzen einer Klasse mit spezifischen Werten.
- Attribute: Daten/Felder einer Klasse, z.B. Variablen.
- Methoden: Funktionen einer Klasse, definieren Verhalten.
- Instanziierung: Erzeugung eines Objekts aus einer Klasse, z.B.
obj = Klasse()
. - Selbstreferenz: Enthält
self
als erstes Argument in Methoden.
Vererbung und Polymorphismus
Definition:
Vererbung und Polymorphismus sind fundamentale Konzepte in der objektorientierten Programmierung, die die Wiederverwendbarkeit und Flexibilität von Code erhöhen.
Details:
- Vererbung: Erlaubt es einer Klasse (Subklasse), die Eigenschaften und Methoden einer anderen Klasse (Superklasse) zu übernehmen.
- Polymorphismus: Ermöglicht es Objekten unterschiedlicher Klassen mit einer gemeinsamen Oberklasse, durch denselben Schnittstellenaufbau angesprochen zu werden.
- Erlaubt Methodenüberschreibung: Subklassen können Methoden der Superklasse überschreiben.
- Fördert die Code-Wiederverwendbarkeit und Anwendbarkeit durch erweiterbare Klassen.
- Verringert die Kopplung von Code.
Algorithmische Komplexität und Big-O-Notation
Definition:
Definiert die Effizienz eines Algorithmus in Bezug auf Laufzeit und Speicherplatz.
Details:
- Big-O-Notation beschreibt das asymptotische Verhalten der Funktion, wie sie sich bei wachsender Eingabe verhält.
- Für Funktion f(n) und g(n) sagt f(n) = O(g(n)), dass es Konstanten c und n0 gibt, sodass für alle n > n0 gilt: f(n) ≤ c*g(n).
- O(1): konstant
- O(log n): logarithmisch
- O(n): linear
- O(n log n): linear-logarithmisch
- O(n^2): quadratisch
- schlechtere Notationen: O(2^n), O(n!), etc.
Git und Versionskontrollsysteme
Definition:
Verwaltung von Quellcode-Änderungen, Kollaborationstool zur Versionskontrolle
Details:
- Git: Verteiltes Versionskontrollsystem
- Repository: Speicherort für Code
- Commit: Speichern eines Snapshots des Codes
- Branch: Parallele Entwicklungsstränge
- Merge: Zusammenführen von Branches
- Remote: Externes Repository
- Pull: Änderungen vom Remote ins lokale Repository
- Push: Änderungen vom lokalen ins Remote-Repository
- Grundlegende Befehle:
git init
, git clone
, git add
, git commit
, git pull
, git push
, git checkout
Agile Methoden und Scrum
Definition:
Agile Methoden und Scrum sind iterative und inkrementelle Vorgehensmodelle im Projektmanagement, die Flexibilität, Kundenzufriedenheit und schnelle Reaktionszeiten fokussieren.
Details:
- Iterative und inkrementelle Entwicklung.
- Fokus auf Anpassungsfähigkeit und schnelle Reaktionszeiten.
- Sprint-Zyklen von typischerweise 2-4 Wochen.
- Rollen: Product Owner, Scrum Master, Entwicklungsteam.
- Artefakte: Product Backlog, Sprint Backlog, Burndown Chart.
- Meetings: Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective.