Einführung in die Informatik - Cheatsheet.pdf

Einführung in die Informatik - Cheatsheet
Komplexitätsklassen und algorithmische Effizienz Definition: Kategorisierung von Algorithmen basierend auf den Ressourcen, die sie benötigen (Zeit und Speicher). Details: Komplexitätsklassen: Einordnung basierend auf Asymptotik Zeitkomplexität: Laufzeit in Abhängigkeit von der Eingabegröße Wichtige Zeitklassen: P, NP, NP-vollständig, NP-schwer Ablauf: Zeitkomplexität als Funktion f(n) (z. B. O(n),...

© StudySmarter 2024, all rights reserved.

Komplexitätsklassen und algorithmische Effizienz

Definition:

Kategorisierung von Algorithmen basierend auf den Ressourcen, die sie benötigen (Zeit und Speicher).

Details:

  • Komplexitätsklassen: Einordnung basierend auf Asymptotik
  • Zeitkomplexität: Laufzeit in Abhängigkeit von der Eingabegröße
  • Wichtige Zeitklassen: P, NP, NP-vollständig, NP-schwer
  • Ablauf: Zeitkomplexität als Funktion f(n) (z. B. O(n), O(n^2))
  • Algorithmische Effizienz: Geschwindigkeit und Ressourcennutzung

Rekursive und iterative Prozessgestaltung

Definition:

Rekursive und iterative Prozessgestaltung sind zwei grundlegende Methoden, um wiederholende Abläufe in der Programmierung zu implementieren.

Details:

  • Rekursion: Eine Funktion ruft sich selbst auf.
  • Iteration: Einsatz von Schleifen (z.B. for, while).
  • Rekursive Algorithmen nutzen Basisfälle und Rekursionsschritte.
  • Iterative Algorithmen durchlaufen Schleifen bis zu einer Abbruchbedingung.
  • Rekursion kann zu Stackoverflow führen, Iteration zu hoher Laufzeit.
  • Rekursion oft einfacher und eleganter, Iteration meist effizienter.
  • Beispiel für rekursive Definition der Fakultät:
a=[Rekursion, Iteration]

Datenstrukturen: Listen, Bäume und Graphen

Definition:

Grundlegende Datenstrukturen in der Informatik, verwendet zur Organisation und Speicherung von Daten.

Details:

  • Listen: Sequenz von Elementen, geordnet, indiziert.
  • Bäume: Hierarchische Struktur, Knotenelemente (Knoten, Wurzel, Blatt), rekursiv definiert.
  • Graphen: Menge von Knoten (Ecken) und Kanten, können gerichtet oder ungerichtet sein.
  • Wichtige Operationen: Einfügen, Löschen, Suchen.
  • Komplexität: Listen (linear), Bäume (logarithmisch, linear), Graphen (variiert je nach Algorithmus).

Algorithmen zur Datenmanipulation

Definition:

Algorithmen zur Transformation, Verarbeitung und Analyse von Daten

Details:

  • Änderung der Datenstruktur: z.B. Sortieren (\texttt{Quicksort}, \texttt{Mergesort})
  • Datenfiltern: z.B. Benutzung von Prädikaten zur Auswahl von Daten
  • Aggregationsoperationen: z.B. Summieren, Durchschnittsbildung
  • Map-Reduce: Verteilung und parallele Verarbeitung großer Datenmengen
  • \texttt{CRUD}-Operationen: \texttt{Create}, \texttt{Read}, \texttt{Update}, \texttt{Delete}

Objektorientierte Programmierung und Design-Patterns

Definition:

Objektorientierte Programmierung (OOP) ist ein Paradigma, das Objekte verwendet, um Daten und Funktionen zu organisieren. Design-Patterns sind wiederverwendbare Lösungen für häufige Probleme in der Softwareentwicklung.

Details:

  • Objekte: Instanzen von Klassen, die Daten (Attribute) und Funktionen (Methoden) kapseln
  • Klassen: Baupläne für Objekte
  • Vererbung: Mechanismus, bei dem eine Klasse (Subklasse) von einer anderen Klasse (Superklasse) erbt
  • Polymorphismus: Fähigkeit, Methoden auf unterschiedliche Weise zu implementieren
  • Abstraktion: Prozess der Vereinfachung komplexer Systeme durch Fokussierung auf entscheidende Details
  • Kapselung: Verbergen der internen Zustände und das Bereitstellen von Methoden zur Änderung und Abfrage dieser Zustände
  • Design-Patterns:
    • Singleton: Stellt sicher, dass eine Klasse nur eine Instanz hat
    • Factory: Erzeugt Objekte ohne Angabe der genauen Klasse
    • Observer: Benachrichtigt Abonnenten über Änderungen eines Zustands
    • Decorator: Fügt Objekten dynamisch Verantwortung hinzu
    • Strategy: Definiert eine Familie von Algorithmen, die austauschbar sind

Debugging-Techniken und Fehlersuche

Definition:

Fehlersuche und Korrektur von Programmfehlern

Details:

  • Breakpoints setzen: Programm an bestimmten Stellen anhalten
  • Step-by-step-Ausführung: Programm Codezeile für Codezeile durchlaufen
  • Variable beobachten: Werte von Variablen während der Ausführung überwachen
  • Log-Statements: Ausgabe von Zustandsinformationen in der Konsole
  • Debugger-Tools: Verwendung spezialisierter Software zum Debuggen (z.B. GDB, Visual Studio Debugger)
  • Testfälle: Schreiben von Tests, um Fehler zu identifizieren und zu reproduzieren
  • Spezielle Debugging-Methoden: Unit-Tests, Integrationstests

Softwareentwicklungsmethoden: Agile und klassische Ansätze

Definition:

Unterschiedliche Ansätze zur Softwareentwicklung. Agile Methoden (flexibel, inkrementell) vs. klassische Methoden (planbasiert, sequentiell).

Details:

  • Agile Methoden: Scrum, Kanban.
  • Klassische Methoden: Wasserfallmodell, V-Modell.
  • Agil: Kunde im Fokus, regelmäßige Anpassungen, kurze Entwicklungszyklen.
  • Klassisch: Feste Phasen, umfassende Planung im Voraus, weniger Anpassungen während des Prozesses.

Projektmanagement in der Softwareentwicklung

Definition:

Projektmanagement in der Softwareentwicklung umfasst die Planung, Überwachung und Steuerung von Softwareprojekten, um sicherzustellen, dass die Projektziele innerhalb der geplanten Zeit und des Budgets erreicht werden.

Details:

  • Phasen: Initiierung, Planung, Ausführung, Überwachung & Steuerung, Abschluss
  • Wichtige Konzepte: Scope, Time, Cost, Quality, Resource Management
  • Methoden: Wasserfallmodell, Agile (Scrum, Kanban)
  • Werkzeuge: JIRA, Trello, Microsoft Project
  • Rollen: Projektmanager, Entwickler, Tester, Scrum Master (bei Agile)
  • Wichtige Dokumente: Projektplan, Lastenheft, Pflichtenheft, Statusberichte
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