Computing">
Zusammenfassung Stukturiert Programmieren 1 (JAVA)
Zusammenfassung Stukturiert Programmieren 1 (JAVA)
24
Inhaltsverzeichnis
0 Java-Programmgerüst...................................................................................................................................... 2
2 Java................................................................................................................................................................. 5
4 Datentypen...................................................................................................................................................... 5
6 Operatoren...................................................................................................................................................... 7
6.4 Zuweisungsoperatoren........................................................................................................................................................................................8
7.1 Ausrücke.............................................................................................................................................................................................................10
7.2 Anweisungen......................................................................................................................................................................................................10
7.3 Zuweisungen......................................................................................................................................................................................................10
8 Typumwandlung............................................................................................................................................ 10
9 Ausgaben....................................................................................................................................................... 11
10 Eingaben........................................................................................................................................................ 13
10.2 Eingabedialog...............................................................................................................................................................................................14
11 Darstellungsmöglichkeiten............................................................................................................................. 14
1
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
13 Kontrollstrukturen......................................................................................................................................... 16
14.1 Fehlerarten...................................................................................................................................................................................................17
14.2 Schreibtischttest...........................................................................................................................................................................................17
14.3 Debugger......................................................................................................................................................................................................17
15 Methoden...................................................................................................................................................... 17
16.1 Zeichenextraktion.........................................................................................................................................................................................20
16.5 Konvertierungsfunktionen............................................................................................................................................................................21
17 Datenstrukturen............................................................................................................................................ 22
0 Java-Programmgerüst
package Paketname;
import java.util.Scanner;
System.out.println();
2
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
Ausdruck Kombination von Konstanten, Operatoren, Variablen und Klammern, die verwendet
wird, um einen Wert zu berechnen
Cross-Compiler Erzeugen Maschinencode für eine andere Computerplattform als die, auf der sie
selbst laufen. z.B. für Mikrocontroller
Konstante Behälter für eine Größe, die nach der Zuweisung nicht verändert
Loader Lädt das Programm in den Arbeitsspeicher und passt dabei alle relativen
Adressbezüge auf absolute Adressen an.
3
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
Präprozessor Modifiziert vor dem eigentlichen Kompilieren den Quellcode. Mit seiner Hilfe
werden weitere Quelltextdateien eingebunden, Teile des Codes ignoriert oder
ersetzt.
Typumwandlung Werden Werte mit verschiedenen Datentypen miteinander durch einen Operator
verknüpft, so muss das Ergebnis einem der beiden Datentypen entsprechen. Dazu
muss der Datentyp einer der beiden Variablen umgewandelt werden.
Variable Speicherzelle, die über einen Namen (den Bezeichner) angesprochen wird.
Zuweisung Anweisung, bei der mit Hilfe des Zuweisungsoperators = der Wert des rechts vom
Gleichheitszeichen stehenden Ausdruckes der linken Seite, meist eine Variable,
zugewiesen wird
4
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
2 Java
Zur Java-Technik gehören die folgenden Bestandteile:
Compiler Interpreter
Vollständige Übersetzung des Quelltextes vor der Zeilenweise Übersetzung des
Ausführung des Programmes durch einen Compiler in Programmes während seiner Ausführung durch einen
Maschinensprache. Interpreter.
4 Datentypen
Typnam Größe Wertebereich Beschreibung
e
boolean undefiniert true / false Boolescher Wahrheitswert, Boolescher Typ
char 16 bit 0 ... 65.535 (z. B. 'A') Unicode-Zeichen (UTF-16)
byte 8 bit -128 ... 127 Zweierkomplement-Wert
short 16 bit -32.768 ... 32.767 Zweierkomplement-Wert
int 32 bit -2.147.483.648 ... 2.147.483.647 Zweierkomplement-Wert
long 64 bit -263 bis 263-1, ab Java 8 auch 0 bis Zweierkomplement-Wert
264 -1
float 32 bit +/-1,4E-45 ... +/-3,4E+38 32-bit IEEE 754, es wird empfohlen, diesen Wert
5
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
Konstanten können wie Variablen im Programm angesprochen werden, verändern aber während des
Programmlaufes ihren Wert nicht. Wird dies trotzdem versucht, reagiert der Compiler mit einer
Fehlermeldung. Konstanten werden üblicherweise in Großbuchstaben geschrieben.
Die Erzeugung einer Variablen oder Konstanten, bezeichnet man als Deklaration. Hierfür wird ein Datentyp
und ein Bezeichner (Variablenname) benötigt. Der benötigte Speicherplatz wird mit der Deklaration anhand
des Datentyps reserviert.
Abbildung 1: Variablendeklaration
Namen müssen mit einem Buchstaben beginnen und dürfen weitere Buchstaben, Ziffern und den
Unterstrich _ enthalten. Die Groß- und Kleinschreibung wird beachtet, name, Name und NAME sind also 3
verschiedene Variablen. Leerzeichen sind in Variablennamen nicht erlaubt.
Es existiert eine Namenskonvention, die Regeln für die Bildung von Variablennamen vorschlägt. Sie sollten
sich an diese Konvention nach Möglichkeit halten.
Die erstmalige Zuweisung eines Wertes an eine Variable wird als Initialisierung bezeichnet. Sie kann
zusammen mit der Deklaration oder getrennt davon erfolgen. Die Initialisierung einer Variablen kann durch
jeden Ausdruck erfolgen, der einen passenden Wert liefert. Finden Deklaration und Initialisierung
6
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
gemeinsam statt, können mehrere Variablen desselben Typs gleichzeitig in einem Ausdruck deklariert
werden.
6 Operatoren
Rangfolge Typ Operatoren
1 Postfix-Operatoren, Postinkrement, Postdekrement x++, x--
2 Einstellige (unäre) Operatoren, Vorzeichen ++x, --x, +x, -x, ~b, !b
3 Multiplikation, Teilerrest a*b, a/b, a % b
4 Addition, Subtraktion a + b, a - b
5 Bitverschiebung d << k, d >> k, d >>> k
6 Vergleiche a < b, a > b, a <= b, a >= b, s instanceof S
7 Gleich, Ungleich a == b, a != b
8 UND (Bits) b&c
9 Exor (Bits) b^c
10 ODER (Bits) b|c
11 Logisch UND B && C
12 Logisch ODER B || C
13 Bedingungsoperator a?b:c
a = b, a += 3, a -= 3, a *= 3, a /= 3, a %= 3, b &=
14 Zuweisungen
c, b ^= c, b |= c, d <<=k, d >>= k, d >>>= k
Für zwei besonders in Schleifen häufig anzutreffende Berechnungen gibt es eine abkürzende Schreibweise.
Post- und Pre-Operatoren verhalten sich bezüglich ihrer Berechnung absolut gleich, der Unterschied ist der
Zeitpunkt, wann die Operation ausgeführt wird. Zum Tragen kommt das bei Zuweisungen:
i = 1;
a = ++i; // i = 2 und a = 2 (erst hochzählen, dann zuweisen)
7
i = 1;
b = i++; // i = 2 und b = 1 (erst zuweisen, dann hochzählen)
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
6.4 Zuweisungsoperatoren
Operator Bezeichnung Beispiel Beschreibung
Es wird a der Wert von b zugewiesen und b als
= Einfache Zuweisung a=b
Rückgabewert geliefert.
Es wird a das Ergebnis aus a + b zugewiesen
+= Additionszuweisung a += b
und a + b als Rückgabewert geliefert.
Es wird a das Ergebnis aus a – b zugewiesen
-= Subtraktionszuweisung a -= b
und a – b als Rückgabewert geliefert.
Es wird a das Ergebnis aus a * b zugewiesen
*= Multiplikationszuweisung a *= b
und a * b als Rückgabewert geliefert.
Es wird a das Ergebnis aus a / b zugewiesen
/= Divisionszuweisung a /= b
und a / b als Rückgabewert geliefert.
Es wird a das Ergebnis aus a % b zugewiesen
%= Modulozuweisung a %= b
und a % b als Rückgabewert geliefert.
Es wird a das Ergebnis aus a | b zugewiesen
|= Oder-Zuweisung a |= b
und a | b als Rückgabewert geliefert.
Es wird a das Ergebnis aus a ^ b zugewiesen
^= Exklusiv-Oder-Zuweisung a ^= b
und a ^ b als Rückgabewert geliefert.
Es wird a das Ergebnis aus a << b zugewiesen
<<= Linksschiebe-Zuweisung a <<= b
und a << b als Rückgabewert geliefert.
Es wird a das Ergebnis aus a >> b zugewiesen
>>= Rechtsschiebe-Zuweisung a >>= b
und a >> b als Rückgabewert geliefert.
>>>= Rechtsschiebe-Zuweisung a >>>= b Es wird a das Ergebnis aus a >>> b zugewiesen
8
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
ohne Vorzeichen
Konstanten: PI, E
double x = Math.sqrt(2);
x = Math.toDegrees(Math.PI);
y = Math.toRadians(90);
Pseudozufallswert ausgeben aus dem Bereich von größer oder gleich 0.0 bis kleiner 1.0
9
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
double x =
Math.random();
7.2 Anweisungen
Unter einer Anweisung oder einem Statement versteht man in der Programmierung einen einzelnen Befehl
oder Methodenaufruf. Anweisungen haben, ganz im Gegensatz zu Ausdrücken, nicht immer einen Wert.
Eine Anweisung wird immer mit einem Semikolon abgeschlossen.
7.3 Zuweisungen
Eine Zuweisung ist ebenfalls eine Anweisung, bei der mit Hilfe des Zuweisungsoperators = der Wert des
rechts vom Gleichheitszeichen stehenden Ausdruckes der linken Seite, meist einer Variable, zugewiesen
wird. Bei Zuweisungen wir immer zuerst die rechte Seite (rechts vom Gleichheitszeichen) vollständig
abgearbeitet und ausgewertet (berechnet), und dann erst wird dieses Ergebnis der linken Seite zugewiesen.
8 Typumwandlung
8.1 Automatische Typumwandlung
Die Typumwandlung wird vom Compiler / Interpreter automatisch durchgeführt, wenn dadurch kein
Informationsverlust zu erwarten ist. So geht bei einer Umwandlung einer Variablen vom Datentyp int nach
double keine Information verloren.
Eine Typumwandlung kann vom Programmierer erzwungen werden, indem der Zieldatentyp in runden
Klammern vor den Variablennamen geschrieben wird.
10
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
9 Ausgaben
9.1 Ausgabe auf der Konsole
Ausgaben auf die Konsole erreicht man mit dem Befehl System.out.println(). Der auszugebende Inhalt wird
in die Klammern geschrieben. Es können alle Arten von Zeichen und Zahlen ausgegeben werden.
System.out.println("Hallo Welt."); // Gibt den Text Hallo Welt. auf der Konsole aus.
System.out.println(a); // Gibt den Wert der Variablen a auf der Konsole aus.
Zeichenketten (Strings) können mit dem "+" - Operator verknüpft (oder verkettet) werden.
a = "Peter ";
b = "Lustig.";
System.out.println( a + b );
Sie können auf diese Weise auch Texte, Stringvariablen und beliebige andere Variablen konkatenieren.
JOptionPane.PLAIN_MESSAGE)
11
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
Jeder Formatierungsausdruck besteht aus einem Prozentzeichen (%), dem die eigentliche
Formatbeschreibung folgt, z.B. %3d für die 3-stellige Ausgabe einer Ganzzahl. Der Formatierungsausdruck
hat folgende allgemeine Form (die Einträge in den eckigen Klammern sind optional):
%[Schalter][Breite][.Genauigkeit]Typ
Die optionale Breite ist eine nicht-negative Ganzzahl, welche die Mindestanzahl der insgesamt
ausgegebenen Zeichen bestimmt.
Mit der optionalen Genauigkeit wird üblicherweise die Anzahl der ausgegebenen Zeichen nach dem Komma
eingeschränkt. Es wird gerundet.
Typ Beschreibung
s Der zugehörige Parameter wird als String ausgegeben
S Der zugehörige Parameter wird als String in Großbuchstaben ausgegeben
D Der zugehörige Parameter wird als Ganzzahl ausgegeben
f Der zugehörige Parameter wird als Dezimalzahl (mit Nachkommastellen) ausgegeben.
System.out.printf("Text");
a) TextX
System.out.printf("X");
b) System.out.printf("%d\n", 12); 12
int x = 12;
c) X= 12, Y=12345
System.out.printf("X=%3d, Y=%3d\n", x, 12345);
double y=1234.1254567890;
System.out.printf("A:%f\n", y); A:1234,125457
d) System.out.printf("B:%5.2f\n", y); B:1234,13
System.out.printf("C:%12.5f\n", y); C: 1234,12546
System.out.printf("D:%12.6f\n",y); D: 1234,125457
String gs = "gross";
e) double d = 1.9; ! 1,9m ist GROSS!
System.out.printf("!%4.1fm ist %7S!\n", d, gs);
12
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
Sequenz Bedeutung
\b Rückschritt (Backspace)
\t Horizontaler Tabulator
\n Zeilenschaltung (Newline)
\f Seitenumbruch (Formfeed)
\r waagenrücklauf (Carriage return)
\" Doppeltes Anführungszeichen
\' Einfaches Anführungszeichen
\\ Backslash
\nnn Oktalzahl nnn
\uXXXX Unicode XXXX (hexadezimal)
Mit Hilfe der Escape-Sequenzen können Sie also auch " auf die Konsole schreiben. Normalerweise beginnt
oder endet ein String ja mit einem ", was die Ausgabe dieses Zeichen verhindern würde. Man nennt diesen
Vorgang auch "maskieren".
10 Eingaben
10.1 Klasse Scanner
Im Paket java.util steht die Klasse Scanner zur Verfügung. Mit ihrer Hilfe ist das Einlesen über die Tastatur
(auch Standardeingabe genannt), inklusive einer Umwandlung in den gewünschten Datentyp (int, double)
einfach möglich.
13
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
10.2 Eingabedialog
Eingabefenster lassen sich mit Hilfe der swing-Klasse JOptionPane erzeugen. In der einfachsten Form stellt
die Klasse die mehrfach überladene Methode showInputDialog() bereit, mit der das gewünschte Fenster
erzeugt und wunschgemäß konfiguriert werden kann.
11 Darstellungsmöglichkeiten
Viele Problemstellungen sind umfangreich und kompliziert, daher erfordern sie eine systematische
Vorgehensweise zur Erarbeitung der Lösung. Der Entwurf eines Programms kann
programmiersprachenunabhängig mit grafischen Darstellungsmitteln erfolgen.
Darstellungsmöglichkeiten
Struktogramm
PAP (Programmablaufplan)
Pseudocode
etc.
14
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
Anweisung1
Reihenfolge
Anweisung2
(Sequenz)
Anweisung3
Wenn Bedingung
Dann Anweisung
Verzweigung
(Alternative)
Wenn Bedingung
Dann Anweisung 1
Sonst Anweisung 2
Für Variable
Wert 1:
Anweisung 1
Fallunterscheidung Wert 2:
Anweisung 2
…
[sonst Anweisung]
Von
Zähler:=Startwert
Zählschleife
Bis Endwert
Anweisung
Anfangsgeprüfte
Schleife oder Solange Bedingung
kopfgesteuerte Anweisung
Schleife
15
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
13 Kontrollstrukturen
Drei grundlegende Kontrollstrukturen reichen aus, um alle berechenbare Programme zu implementieren:
16
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
14.2 Schreibtischttest
Den Schreibtischtest führt man nicht im Computer durch, sondern mit dem Kopf, Bleistift und Papier. Man
legt sich eine Liste aller Variablen an, wählt Eingangswerte, zu denen man die Ergebnisse, die der
Algorithmus liefern soll, bereits kennt und geht dann Schritt für Schritt durch das Programm und prüft, ob
das Ergebnis mit den Erwartungen übereinstimmt. Bei dieser Vorgehensweise kann man oft erkennen, an
welcher Stelle das Programm falsch ist.
14.3 Debugger
Computerprogramm, das das Aufspüren und Diagnostizieren von Fehlern in Computersoftware ermöglicht.
Ziel eines solchen Hilfswerkzeugs ist es, die Funktionalität der überprüften Software auf allen anvisierten
Geräten und Plattformen langfristig zu gewährleisten.
15 Methoden
Kleinere Programmieraufgaben lassen sich noch leicht innerhalb der main-Funktion realisieren, größere
Projekte mit mehreren hundert oder tausend Anweisungen werden aber Sinnvollerweise in kleinere Teile
(Unterprogramme, Funktionen) zerlegt. Komplexe Programmieraufgaben werden so mittels Funktionen in
kleinere, einfachere Teile aufgespaltet. Die Programmteile werden bei der Programmerstellung "bottom
up" erzeugt, d.h. zuerst werden die einzelnen Funktionen geschrieben, die anschließend zum
Gesamtprogramm zusammengefügt werden.
Vorteil:
17
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
[Anweisungen;]
Sichtbarkeit public
Die Sichtbarkeit public sagt aus, dass jeder diese Methode benutzen darf. Sie ist für die main()-Methode
zwingend erforderlich, da sonst ein Java-Programm nicht mehr ausführbar ist. Bei den Grundlagen der
Objektorientierung werden wir noch genauer auf die Sichtbarkeiten eingehen.
Schlüsselwort static
Das Schlüsselwort static bewirkt, dass die Methode direkt über den Klassennamen aufrufbar ist, ohne das
ein Objekt der Klasse erzeugt werden muss. Weißt den Compiler an, die Methode in den Arbeitsspeicher zu
laden, damit sie bei ihrem Aufruf ohne weitere Vorarbeiten ausgeführt werden kann. Alle Programmteile
(wie Variablen, Methoden usw.), die in der main()-Methode ausgeführt werden sollen, müssen sich im
Arbeitsspeicher befinden. Hierzu dient (bis auf weiteres) das Schlüsselwort static. Näheres dazu auch im
Abschnitt der Objektorientierung.
Vor dem Methodennamen steht der Typ des Rückgabewertes einer Methode.
Mit dem Schlüsselwert void kann hier festgelegt werden, dass die Methode keinen Rückgabewert
hat.
Methoden ohne Rückgabewerte können direkt aufgerufen werden.
Als Typ des Rückgabewertes ist neben void jeder gültige Daten- oder Objekttyp möglich
Soll eine Methode einen Rückgabewert liefern, so muss der Datentyp des zu erwartenden
Ergebnisses definiert sein. Die letzte Anweisung muss ein return-Befehl sein, an den sich das
Ergebnis der Methode anschließt.
Der Rückgabewert einer Methode wird nach deren Ausführung einer Variablen zugewiesen. (siehe Beispiel
Methoden mit Rückgabewert)
18
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
Methodenname
Sie beginnen meist mit einem Kleinbuchstaben und sollten einen möglichst sprechenden Namen haben. Es
folgt ein Paar runde Klammern für die Übergabeparameter. Hat die Methode keine Übergabeparameter so
wie im Beispiel, dann bleiben die Klammern einfach leer.
Benötigt eine Methode zur Erledigung ihrer Aufgabe bestimmte Informationen, so werden dafür
Übergabeparameter definiert. Diese werden mit Angabe des Datentyps in die runden Klammern nach dem
Methodennamen eingefügt. Mehrere Übergabeparameter werden durch ein Komma getrennt. Die
Übergabeparameter können nur innerhalb der der Methode verwendet werden, in der sie deklariert
wurden. Solche Übergabeparameter werden auch formale Parameter genannt.
Übersicht Methoden
19
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
20
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
16.5 Konvertierungsfunktionen
String valueOf(boolean b);
String valueOf(char c);
Methode
String valueOf(double d);
String valueOf(int i);
Diese Methoden wandeln primitive Datentypen in Zeichenketten um. Neben den hier
Bedeutung genannten gibt es noch einige mehr. Es handelt sich um sogenannte Klassenmethoden
(dazu später mehr).
String sx
Beispiel sx = String.valueOf(42); //sx = „42“
21
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
17 Datenstrukturen
17.1 Felder (Arrays)
Syntax der Deklaration:
feld[i] = 0;
feld[i][j] = 0;
22
F. Schneider Zusammenfassung Strukturiert Programmieren mit Java 10.08.24
import java.util.Arrays;
System.out.println(Arrays.toString(meinArray)); // [5, 2, 1, 4, 3]
// Array sortieren
Arrays.sort(meinArray); // 1, 2, 3, 4, 5
// Binäre Suche
Arrays.binarySearch(meinArray, 1); // 0
// Array füllen
Arrays.fill(meinArray, 1); // 1, 1, 1, 1, 1
// Array kopieren
// Arrays vergleichen
23