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