Einführung in die Programmierung - Cheatsheet.pdf

Einführung in die Programmierung - Cheatsheet
Imperatives Programmieren: Bekannte Konzepte und Beispiele Definition: Imperatives Programmieren: Programmierparadigma, bei dem Anweisungen in einer bestimmten Reihenfolge ausgeführt werden. Details: Sequenz von Befehlen: Befehle werden nacheinander ausgeführt. Kontrollstrukturen: Anweisungen, die den Fluss des Programms steuern (z.B. Schleifen, Bedingungsabfragen). Variablen: Speicherplätze für D...

© StudySmarter 2024, all rights reserved.

Imperatives Programmieren: Bekannte Konzepte und Beispiele

Definition:

Imperatives Programmieren: Programmierparadigma, bei dem Anweisungen in einer bestimmten Reihenfolge ausgeführt werden.

Details:

  • Sequenz von Befehlen: Befehle werden nacheinander ausgeführt.
  • Kontrollstrukturen: Anweisungen, die den Fluss des Programms steuern (z.B. Schleifen, Bedingungsabfragen).
  • Variablen: Speicherplätze für Daten, die während der Programmausführung verändert werden können.
  • Prozeduren und Funktionen: Wiederverwendbare Codeblöcke, die bestimmte Aufgaben ausführen.

Objektorientiertes Programmieren: Klassen, Objekte und Vererbung

Definition:

Objektorientiertes Programmieren basiert auf den Konzepten Klassen, Objekte und Vererbung.

Details:

  • Klassen: Baupläne für Objekte, definieren Eigenschaften (Attribute) und Methoden.
  • Objekte: Instanzen einer Klasse, besitzen konkrete Werte für die Attribute.
  • Vererbung: Mechanismus, bei dem eine Klasse (Unterklasse) Eigenschaften und Methoden einer anderen Klasse (Oberklasse) übernimmt.
  • Syntax (Beispiel in Python):
class Oberklasse:   def __init__(self, attribut):     self.attribut = attribut   def methode(self):     pass class Unterklasse(Oberklasse):   def __init__(self, attribut, neues_attribut):     super().__init__(attribut)     self.neues_attribut = neues_attribut   def neue_methode(self):     pass 

Funktionales Programmieren: Funktionen als erste Bürger, Rekursion

Definition:

Funktionales Programmieren: Funktionen werden als Daten behandelt, können als Argumente verwendet und von anderen Funktionen zurückgegeben werden.

Details:

  • Funktionen als erste Bürger: Funktionen können wie Variablen behandelt werden.
  • Rekursion: Eine Funktion ruft sich selbst auf, meist mit Basiskondition und Rekursionsschritt.
  • Beispiel: f(n) = n * f(n-1) mit f(0) = 1
  • Vorteile: Oft klarere und kürzere Programme, insbesondere bei Listen- und Baumoperationen.
  • Nachteile: Kann zu höherem Speicherverbrauch und schlechterer Performance führen.

Sortier- und Suchalgorithmen: Grundkonzepte und Optimierungen

Definition:

Grundlegende Techniken zum Ordnen von Daten und Finden spezifischer Elemente in einer Datenstruktur.

Details:

  • Sortieralgorithmen: Bubble Sort, Merge Sort, Quicksort, Heapsort
  • Suchalgorithmen: Lineare Suche, Binäre Suche
  • Komplexität: Bestimme Laufzeiten mit \(\text{O}(n)\), \(\text{O}(n \log n)\), \(\text{O}(n^2)\)
  • Stabilität und In-Situ-Sortierung
  • Optimierungen: Tuning von Pivot-Auswahl bei Quicksort, Einfügen von Insertion Sort in Merge Sort
  • Data-Structures: Arrays, Listen, Heaps für effiziente Implementierung

Rekursion und iterative Algorithmen: Methoden und Beispiele

Definition:

Rekursion und iterative Algorithmen sind Methoden zur Lösung von Problemen, wobei Rekursion auf sich selbst zurückgreift und Iteration wiederholte Anweisungen nutzt.

Details:

  • Rekursion: Ein Verfahren ruft sich selbst auf.
  • Iterative Algorithmen: Schleifen wie 'for', 'while'.
  • Basisfall: Rekursion endet, um Endlosschleifen zu vermeiden.
  • Beispiele Rekursion: Fakultät, Fibonacci.
  • Beispiele Iteration: Berechnung von Summen, Durchlaufen von Listen.
  • Komplexität: Rekursion kann höheren Speicherbedarf haben (Stapelüberlauf).
  • Iterative Algorithmen: Effizienter in Bezug auf Speicher.
  • Beispiele:
    • Fibonacci-Rekursion: \texttt{def fib(n): return n if n<=1 else fib(n-1) + fib(n-2)}
    • Fibonacci-Iterativ: \texttt{def fib(n): a, b = 0, 1; for _ in range(n): a, b = b, a+b; return a}
  • Umwandlung: Rekursive Algorithmen oft in iterative übertragbar.

Hash-Tabellen: Effiziente Speichermechanismen und ihre Implementierung

Definition:

Hash-Tabellen speichern Daten effizient mittels Schlüssel-Wert-Paaren.

Details:

  • Nutzen Hash-Funktionen, die einem Schlüssel einen Speicherplatz zuweisen.
  • Typische Operationen: Einfügen (\textit{insert}), Suchen (\textit{lookup}), und Löschen (\textit{delete}).
  • \textbf{Komplexität}: Durchschnittliche O(1) Zeit für grundlegende Operationen.
  • \textbf{Kollisionen}: Werden mit Techniken wie Verkettung oder offener Adressierung behandelt.
  • \textbf{Belastungsfaktor} (\textit{load factor}): Verhältnis der Anzahl der Elemente zur Kapazität der Hash-Tabelle; beeinflusst Leistung.
  • Implementiert in vielen Programmiersprachen, z.B. \texttt{dict} in Python, \texttt{HashMap} in Java.
  • Effizienter Speichermechanismus bei großen Datenmengen und häufigen Datenzugriffen.

Fehlerbehebung und Debugging: Techniken zur Problemlösung

Definition:

Identifikation, Analyse und Behebung von Fehlfunktionen im Code

Details:

  • Debugging-Tools: z.B. gdb, Eclipse Debugger
  • Logging: Verwende Logausgaben, um Programmfluss und Zustände zu analysieren
  • Breakpoints: Unterbrechen des Programms an bestimmten Stellen zur Analyse
  • Schrittweises Ausführen: Codezeilen einzeln ausführen, um Fehler schrittweise zu finden
  • Unit-Tests: Automatisierte Tests für einzelne Codeeinheiten
  • Code Reviews: Durchsicht des Codes durch andere Entwickler

Versionierung mit Git: Werkzeuge zur Versionskontrolle und Kollaboration

Definition:

Git ist ein verteiltes Versionskontrollsystem zur Verfolgung von Änderungen im Quellcode während der Softwareentwicklung.

Details:

  • Verteilen und Zusammenführen von Änderungen: Git ermöglicht das gleichzeitige Arbeiten mehrerer Entwickler an einem Projekt.
  • Branching: Erstellen von isolierten Entwicklungszweigen für unterschiedliche Funktionen oder Bugfixes.
  • Commit-Historie: Nachvollziehbare Änderungshistorie mit Verweisen auf spezifische Änderungen.
  • Tags: Markieren von spezifischen Punkten in der Historie (z.B. Releases).
  • Remote Repositories: Zusammenarbeit über zentrale Server wie GitHub oder GitLab.
  • Wichtige Befehle: git init (Initialisieren), git clone (Klonen), git commit (Änderungen speichern), git push (Änderungen hochladen), git pull (Änderungen herunterladen)
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden