Grundlagen der Programmierung Flashcards
Was ist Softwaretechnik?
Softwaretechnik bezieht sich auf die systematische Anwendung von Prinzipien, Methoden und Werkzeugen zur effizienten Entwicklung, Wartung und Evolution von Software
Was ist das Ziel der Softwaretechnik?
Erstellung von Software mit Qualität. Qualität einer Software wird durch die Funktionserfüllung, Zuverlässigkeit, Benutzerfreundlichkeit, Effizienz und die Wartbarkeit bestimmt
Was ist ein Algorithmus?
Verhaltensmuster von geordneten Einzelvorschriften zur automatischen Lösung von Problemen
Was ist ein Programm?
Darstellung eines Algorithmus in einer für den Computer verständlichen (Programmir)Sprache, die die Regeln der Semantik und Syntax betrachtet
Erkläre Korrektheit, Terminierung, deterministisch und Determiniertheit
Korrektheit: Funktion entspricht der Aufgabenstellung
Terminierung: liefert nach endlich vielen Schritten ein Ergebnis
Deterministisch: Zu jedem Zeitpunkt gibt es nur eine mögliche Fortsetzung
Determiniertheit: gleiche Startbedingungen liefern dasselbe Ergebnis
Was macht eine objektorientierte Programmiersprache aus?
Eine objektorientierte Programmiersprache ermöglicht die Strukturierung von Programmen durch die Verwendung von Objekten, die Daten und Methoden zur Manipulation dieser Daten kombinieren.
Was sind die Merkmale von imperativen Programmiersprachen?
Eine imperative Programmiersprache definiert Programme durch eine Sequenz von Anweisungen, die den Zustand des Programms schrittweise ändern, indem sie explizit angeben, wie Aufgaben ausgeführt werden sollen.
Was ist modulare Programmierung?
Programmierung mit Modulen, Klassen und Vererbung
Was sind die Merkmale von deklarativen Programmiersprachen?
Deklarative Programmiersprachen betonen die Spezifikation von gewünschter Funktionalität ohne explizite Angabe von Schritten zur Ausführung, wodurch der Fokus auf “was” anstelle von “wie” liegt.
z.B. SQL
Was sind Semantik und Syntax im Kontext von Programmiersprachen?
Semantik ist die Bedeutung und Syntax die Darstellung - Programmiersprachen können das gleiche tun (Semantik) aber unterschiedliche Symbole verwenden (Syntax)
Was sind die vier Kontrollelemente von Algorithmen?
Sequenz: Ausführung mehrerer Anweisungen hintereinander
Auswahl: Durchführung von Anweisungen in Abhängigkeit bestimmter Bedingungen
Wiederholung: Wiederholte Ausführung einer oder mehrerer Anweisungen in Abhängigkeit von einer Bedingung
Aufruf anderer Algorithmen: Anwendung eines anderen Algorithmus (Funktion mit Parametern)
Was sind mögliche Kombinationsmöglichkeiten für Kontrollelemente?
Sequentielle Anordnung: einzusetzende Kontrollblöcke nacheinander
Schachtelung: Kontrollstrukturen werden ineinander eingebettet
Was ist mit dem Lokalitätsprinzip in Bezug auf Programmierung gemeint?
Programmierschritte in einzelnen Blöcken getrennt;
Vorteile:
-leichtere Überprüfbarkeit und bessere Modularität
Entwurfsmethoden: Top-Down-Strategie
Herunterbrechen eines komplexen Problems in kleinere Problemstellungen
Entwurfsmethoden: Bottom-Up-Strategie
bereits existierende Lösungen zusammensetzen zu einer neuen Lösung
Was ist ein Compiler?
übersetzt ein Programm in Maschinencode und führt es aus
lädt erst den gesamten Code und kann dadurch optimieren braucht aber mehr Zeit und kann Programmierfehler nicht direkt lokalisieren
Was ist ein Interpreter?
übersetzen ein Programm Zeile für Zeile und führen jede übersetzte Zeile sofort aus
führt direkt aus, Fehler können besser lokalisiert werden, Optimierungen nicht möglich
Was sind Operatoren?
Addition, Subtraktion, Division, Multiplikation, Rest
Was sind Bedingungen?
<, <=, >=, >, == in Kombination mit && sowie ||
Was sind die Hauptaspekte von Softwarequalität?
Funktionalität
Zuverlässigkeit
Benutzbarkeit
Effizienz
Änderbarkeit
Übertragbarkeit
Was bedeutet Lokalität von Variablen?
Variablen werden möglichst lokal initialisiert und konstant deklariert um Konstantheit zu unterstützen
Was sind Ausnahmen und wie können Sie behandelt werden?
- Error - schwerwiegend, kann nicht vom Programm behandelt werden
- Exceptions/Ausnahme: Fehler, die zur Laufzeit des Programms behoben werden können - try Catch block auffangen
Welche Arten von Softwaretests gibt es?
Dialogtest: interaktiver Test durch Menschen
Stapeltest automatischer Test mit automatischer Überprüfung der Ergebnisse
Blackbox-Stapeltest: automatischer Test bei dem erwartetes Verhalten mit tatsächlichem verglichen wird (Output)
Whitebox-Stapeltest: testet automatisch alle möglichen Abläufe eines Programmstücks
Wie ist eine Methodendefinition aufgebaut?
Modifier: Sichtbarkeit/Gültigkeit der Methode (Static, Public)
Rückgabetyp: int, void, etc.
Methodenname
Parameterliste
static int maximum(int a, int b) {
}
Was ist Call by Value und Call by Reference?
Call by Reference: Speicherort des Werts wird übermittelt, von dort aus wird er gelesen - geeignet für die Übermittlung großer Datenmengen, Nachteil: Datensicherheit
Call by Value: Werte werden kopiert - Datensicherheit
Was sind Aufwände im Zusammenhang mit Algorithmen?
Umfang an Speicherplatz, welches das Programm während Berechnung benötigt
Verständlichkeit des Programms
Änderbarkeit des Programms
Schnelligkeit, in der eine Lösung berechnet wird
Was sind Komplexitätsklassen?
Angabe für den Aufwand eines Algorithmus (Schrittzahl in Komplexitätsklassen)
Beispiele:
-konstanter Aufwand: O(1)
-logarithmischer Aufwand: O(log n)
-lineare Suchverfahren: O(n)
-gute Suchverfahren: O(n * log n)
-quadratischer Aufwand: O(n^2)
-exponentieller Aufwand (schlechtester): O(2^n)
Was ist eine dynamische Datenstruktur? Was eine statische Datenstruktur?
Dynamisch: Größe kann während der Laufzeit angepasst werden
Statisch: Größe kann während der Laufzeit nicht angepasst werden
Was ist eine verkettete Liste?
Eine Datenstruktur, bei der Elemente in Form von Knoten gespeichert sind, wobei jeder Knoten einen Wert und einen Verweis auf das nächste Element enthält, und sie ermöglicht das effiziente Einfügen und Löschen von Elementen.
Beispiel: Textverarbeitung (Speicher für Textzeilen)
Was sind die Merkmale eines Arrays?
-statische Datenstruktur
-direkter Zugriff auf Element über Index - ermöglicht schnellere Suchverfahren
-Umsortierung/Einfügen/Löschen mit hohen Aufwand verbunden
Was ist ein Baum und was macht sie aus?
-vereint Vorteil der Erweiterbarkeit mit einfacher Navigierbarkeit der Datenmenge
-schneller Zugriff in einem sortierten Baum
Was ist ein Binärbaum?
ein Baum wo die höheren Werte immer rechts, die kleineren Links sind
Was ist Rekursion?
Rekursion ist, wenn eine Funktion sich selbst aufruft
Wovon hängen die Aufwände bei Suchen ab?
-davon ab es eine Reihung, Liste oder ein Baum ist
-ob es sortiert oder unsortiert ist
Was ist Hashing?
Prozess, bei dem eine Funktion (Hashfunktion) verwendet wird, um Daten in eine feste Größe umzuwandeln (Hashwert), der dann zur Indexierung in einer Datenstruktur verwendet wird
ermöglicht effizientes Suchen und Abrufen von Informationen
Wie ist das Wasserfallmodell aufgebaut?
Analyse
Design
Codierung
Testen
Betrieb/Wartung
Parallel:
Dokumentation
Planung
Kontrolle
Verwaltung
Woraus sind Algorithmen aufgebaut?
Sequenz
Auswahl
Wiederholung
Aufruf anderer Algorithmen
Was sind drei Möglichkeiten Algorithmen darzustellen?
Programmablaufplan
Struktogramm
Pseudocode
Wie kann die Softwarequalität gesteigert werden?
Testen
Rücksprache mit dem Kunden
Modularität beachten
Dokumentation
Namenskonventionen
Was ist sequentieller Zugriff auf Dateien?
schrittweiser Zugriff von Anfang bis Ende
Zeichenweise oder byteweise
Was ist wahlfreier Zugriff auf Dateien?
direkter Zugriff an bestimmte Stelle oder zufälliger Zugriff