JAVA Flashcards
1
Q
Vom Problem zum Programm:
A
- Lösbarkeit: Ist das Problem mit den Methoden der Informatik lösbar?
- Strukturierung: Kann das Problem in Teilprobleme zerlegt werden, sodass im Team daran gearbeitet werden kann?
- Modellierung: Bieten sich bestimmte Datentypen und -strukturen an, die die Programmierung vereinfachen?
- Schnittstelldefinition: Wie müssen die Daten und Softwaremodule einzelner Arbeitsgruppen zur Gesamtlösung des Problems verknüpft werden?
2
Q
Top-Down-Lösungsstrategie
A
- Präzisieren der Ein- und Ausgabe: Festlegen der Datentypen für Ein- und Ausgabe
- Entwickeln einer Lösungsidee: korrekte Lösung, effiziente Lösung
- Entwurf des groben Programmgerüsts: Darstellung des Lösungswegs mit Hilfe von grafischen Diagrammen
- Schrittweise Verfeinerung: Verfeinerungen des Programmablaufs zur Umsetzung in Programmiersprache
- Umsetzung in eine Programmiersprache
- Testen und Korrigieren von Fehlern: Prüfen des Programm -> Prozess des Debugging
3
Q
Definition: Programmsprachen
A
- Programmiersprache = „Dolmetscher“ zwischen Mensch und Computer
- systemorientierte Sprachen:
• Programmierung der Befehlssatzebene des Prozessors - problemorientierte Sprachen – „Hochsprachen der Programmierung“
• imperative Programmiersprachen: Formulierung von Lösungen in Form von Anweisungen Unterscheidung: objektorientierte Sprachen (JAVA, C#) und prozedurale Sprachen (Basis, C)
• deklarative Programmiersprachen: Beschreibung von Objekten und deren Beziehung zueinander (Prolog, Lisp, LOGO) - Compilersprachen
• Compiler („Übersetzer“) = Computerprogramm, das vorgegebenen Quellcode in maschinennahe Sprache übersetzt (JAVA, C, C++) - Interpretersprachen: Übersetzen von Befehlen eines Programmquellcodes während Abarbeitung durch Interpreter
4
Q
zeitliche Entwicklung der Programmsprachen
A
- FORTAN (1954) mathematisch-wissenschaftlich
- ALGOL (1958) mathematisch-wissenschaftlich
- COBOL (1959) kommerziell, kaufmännisch
- BASIC (1963) Hobbybereich
- PASCAL (1968) Ausbildung
- C (1969) Systemimplementierung
- ADA (1975) sicherheitskritische Anwendungen
- C++ (1980) Objektorientierung
- JAVA (1995) Objektorientierung, Internet-Anwendungen
- C# (2000) Objektorientierung, Internet-Anwendungen
5
Q
Definition: Programmaufbau in JAVA
A
- Aufbau eines JAVA-Programms aus Klassen (Bezeichnung „class“)
• notwendig die Klasse „main“ in einer Anwendung - Abschließen von Befehlen mit Semikolon
- Einschließen logischer Blöcke, wie z.B. Klassen, mit paarweise zusammengehörigen geschweiften Klammern
- Unterscheidung zwischen Groß- und Kleinschreibung
- Importieren von Klassenbibliotheken: Berechnen der Wurzel mit Hilfe der Wurzelfunktion „Math.sqrt“ aus mathematischen Klassenbibliothek „java.math“
- Variable „ein“ aus separaten Eingabeklasse - Eingabe.class - abgebildet, die einfache Eingabe von Zahlen und Zeichen ermöglicht
• readChar, readInt, readFloat, readDouble, readLine
6
Q
Definition: Nasse-Schneider-Diagramm
A
- Ziel: übersichtliche Darstellung des Ablaufs von Computerprogrammen
- Erinder: Issac Nassi + Ben Shneidermann
- auch bezeichnet als „Struktogramme“
Darstellung der wesentlichen Komponenten von Programmen: Folge von Anweisungen, Verzweigungen, Schleifen
7
Q
PAP
A
Programmaufbauplan
- in abgewandelter Form Einsatz als Aktivitätsdiagramme in UML
- abgerundete Rechtecke = Kontrollpunkte
- Parallelogramm = Ein- und Ausgabe
- Rechtecke = Anweisungen
- Raute = Verzweigung (Wiederholungen/ Schleife)
- Verbindungslinien = Darstellung des Programmablaufs
8
Q
Definition: Anweisungsfolge
A
- Programmanläufe vielfach linear aufgebaut
• Überführung von Eingabedaten durch Folge einzelner Rechenschritte in Ausgabedaten - Beispiel des JAVA-Programms „Quader“
• Eingabe der Katenlängen a, b und c
• Quadervolumen: V = abc
• Quaderoberfläche: O = 2 (ab + ac + b*c)
• Raumdiagonale: d = Wurzel aus (a^2 + b^2 + c^2)
• Ausgabe der Berechnungen Quadervolumen, Quaderoberfläche und Raumdiagonale
9
Q
Definition: Verzweigungen
A
- Programmabläufe können Verzweigungen enthalten
• d.h. es müssen Entscheidungen getroffen werden, welche Programmanweisungen ausgeführt werden sollen - Beispiel: Lösen einer „Quadratischen Gleichung“ ax^2+bx+c = 0
- JAVA-Code:
• if (Bedingung)
{AnsweisungoderBlock}
• else if (Bedingung)
{AnsweisungoderBlock}
• else (Bedingung)
{AnsweisungoderBlock}
10
Q
Test von Programmen
A
- Syntaxfehler (Compiler)
- Fehlerlokalisierung für logische Programmfehler:
• Schreibtischtest (Schritt-für-Schritt mit Vergleich der Änderung der Variablen und Attribute)
• Ausgabe von Werten mit Hilfe von „Print-Befehlen“:
System.out.printIn(„Attributename“ + Attributname)
• Einschaltung des „debugging“-Modus im Programm
• Defintion von Haltepunkten: Programmablauf abhalten + alle Variablenwerte inspizieren
11
Q
Sortieren durch Auswahl - Selection Sort
A
- in jeweils betrachteten Folge Suchen des kleinsten Elementes + Vertauschen mit ersten Element der Folge
- Beginnen der nächsten zu betrachtende Folge ein Element weiter
- Aufwand unabhängig von Eingabeverteilung
- nie mehr als 0(n) Vertauschungen erforderlich
- 0(n^2) Vergleiche notwendig, unabhängig von Eingabeverteilung
12
Q
Sortieren durch Austauschen - Bubble Sort
A
- Durchgang = Betrachten jeweils 2 benachbarter Elemente + Vertauschen, wenn größeres Element zuerst
- Durchgang = Wiederholen des Verfahrens, jedoch nur bis zum vorletzten Element
- geringster Aufwand, wenn Folge bereits soritert
- eines der schlechtesten Sortierverfahren überhaupt
13
Q
Sortieren durch Einfügen - Insertion Sort
A
- Einfügen eines einzelnen Elements in eine bereits sortierte Folge, sodass sich ergeben Folge wieder sortiert ist
- Verschieben aller Elemente vor der Einfügestelle um jeweils einen Platz
- geringer Aufwand für fast sortierte Folgen
- geringe konstante Kosten
- gut geeignet für doppelt verkettete lineare Listen
14
Q
sequentielle Suche
A
- Daten nicht vorsortiert
• d.h. Datenfeld muss von hinten nach vorn Schritt für Schritt durchkämmt werden - Voraussetzungen für Algorithmus:
• Existieren einer sortierten/ unsortierten Datenarray
• Existieren eines Suchschlüssels (Key) - Prinzip
• Durchsuchen des Datenbereichs, bis gewünschte Element gefunden oder Ende des Haufens erreicht
15
Q
binäre Suche
A
- Daten vorsortiert
- Voraussetzungen für Algorithmus:
• Existieren einer sortierten/ unsortierten Datenarray
• Existieren eines Suchschlüssels (Key) - Algorithmus:
• Auswahl des mittleren Elements (Mitte)
• Vergleich mit Suchschlüssel (Schlüssel)
• Wenn kleiner/größer als Suchschlüssel: Fortsetzung beim linken/ rechten Teilhaufen
16
Q
Definition: Interation
A
- Programm arbeitet iterativ, wenn Folge von Anweisungen, die zur Lösung des Problems führen, schrittweise in Schleife abgearbeitet werden
- Beispiele: Lösungen, die sich in Form von for-Schleifen formulieren lassen
17
Q
Definition: Rekursion
A
- aus Mathematik; bedeutet: Selbstbezug
- Lösen von Problemstellungen durch Selbstaufruf rekursiver Prozeduren
- Programmcode meist kürzer als bei iterativen Lösungen
- Methode = rekursiv, wenn sie sich selbst aufruft
• Bsp.: Fakultätsfunktion n! = 1 * 2 * 3 … (n-1)*n
• 5! = 1 * 2 * 3 * 4 * 5 = 120
18
Q
Definition: FIBONACCI-Folge
A
- aus Legende der Abschätzung der Vermehrung von Kaninchen
- Reihung von Zahlen, die die Entwicklung der Population wiedergibt
- Algorithmus: nächste Zahl der Folge erhält man aus Summe der beiden vorangehenden Zahlen
19
Q
Objektorientierte Programmierung: Klassen
A
- legt die Eigenschaften und Verhaltensweisen für bestimmte Objekte fest
- allgemeine Beschreibung für bestimmte Objekte
- Klasse = Bauplan
- Bereitstellung mehrerer Datentypen (im Unterschied zur bislang verwendeten Datenstruktur Array)
20
Q
Objektorientierte Programmierung: Objekt
A
- konkrete Mitglieder (Realisierungen) einer Klasse - häufig auch Begriff „Instanz“ verwendet
- Aufbau
• Eigenschaften: beschreiben Objekt, legen Zustand des Objekts fest
• Methoden: aktive Vorgänge, die auf Objekt angewendet werden können und die Zustände des Objekts verändern können - Objekt = konkrete Instanz
21
Q
Objektorientierte Programmierung: Konstruktoren
A
- jede Klasse = mindestens eine Methode, mit der Objekte (Instanzen) der Klasse erzeuget werden können
- Standard-Konstruktor = Methode, die aus dem Namen der Klasse und dem leeren Klammerpaar () besteht, z.B. public class DukeBike () {…}
- Anlegen („Konstruieren“) des Objekts gleich mit Werten
- tragen Namen der Klasse als Bezeichner
- keinen Rückgabewert
- Deklaration eines Konstruktors darf kein Datentyp sein
- Konstruktoren müssen public sein, wenn aus beliebig anderen Klassen Instanzen mit Hilfe des Konstruktors erzeugt werden müssen
- Aufruf von Konstruktoren mit Schlüsselwort „new“
- Klassen können mehrere Konstruktoren haben, die sich in Liste der Parameter unterscheiden