Java - Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität IT Services Anja Aue
Anweisung int zahl; zahl = 2; zahl = zahl * 10; int zahl; ; Jede Anweisung endet mit einem Semikolon. Eine Anweisung kann leer sein. Die Anweisung besteht nur aus dem Semikolon. Java - Einführung 06.05.15 Seite 2
Zuweisung an eine Variable int zahl; zahl = 2; zahl = zahl * 10; Mit Hilfe des Gleichheitszeichens wird einer Variable ein Wert zugewiesen. Links vom Gleichszeichen steht die Variable. Die Variable ist ein Platzhalter für die Box, in der der Wert rechts vom Gleichheitszeichen gespeichert wird. Der Wert rechts vom Gleichheitszeichen kann als Literale angegeben oder berechnet werden. Java - Einführung 06.05.15 Seite 3
Berechneter Ausdruck variable = operand Operator operand; Der Gleichheitszeichen als Zuweisungsoperator weist dem links vom Gleichheitszeichen stehenden Operator einen berechneten Wert zu. Arithmetische Operatoren benötigen ein bis zwei Operanden. Java - Einführung 06.05.15 Seite 4
Operanden Variablen, die mit datentyp name definiert sind. Konstanten, die mit final datentyp name definiert sind. Literale wie zum Beispiel 2, 3.5, 'A'. Java - Einführung 06.05.15 Seite 5
Arithmetische Operatoren Operator Berechnung Beispiel + Addition 3 + 4 = 7 - Subtraktion 3 4 = -1 * Multiplikation 3 * 4 = 12 / Division 3 / 4 = 0.75 % Division mit Rest 3 % 4 = 3 Java - Einführung 06.05.15 Seite 6
Inkrement- und Dekrement-Operator Inkrement-Operator variable++ wird aus zwei Pluszeichen zusammengesetzt. entspricht der Anweisung variable = variable + 1. Dekrement-Operator variable-- wird aus zwei Minuszeichen zusammengesetzt. entspricht der Anweisung variable = variable - 1. Java - Einführung 06.05.15 Seite 7
Präfix und Postfix int x = 1; result x int result = 0; ++x 2 2 --x 0 0 int x = 1; int result = 0; result x++ 1 2 x-- 1 0 x Java - Einführung 06.05.15 Seite 8
Anweisungsblock { } int zahl; zahl = 2; zahl = zahl * 10; Klammerung von zusammengehörigen Anweisungen mit Hilfe der geschweiften Klammern. Um die Lesbarkeit zu erhöhen, werden die Anweisungen in einem Block eingerückt. Java - Einführung 06.05.15 Seite 9
Bedingungen variable = (operand Operator operand) Zwei Operanden werden mit Hilfe eines Vergleichsoperators überprüft. Eine Bedingung liefert immer einen boolschen Wert zurück. Die Bedingung ist wahr oder falsch. Die Bedingung wird mit Hilfe von runden Klammern zusammengefasst. Beantwortung von Ja- / Nein-Fragen. Java - Einführung 06.05.15 Seite 10
Vergleichsoperatoren Operator Berechnung Beispiel == ist gleich 4 == 5 falsch!= ungleich 4!= 5 true < kleiner als 4 <5 true <= kleiner gleich als 4 <= 5 true > größer als 4 > 5 false >= größer gleich als 4 >= 5 false Java - Einführung 06.05.15 Seite 11
Beispiel boolean result; int wert = 5; result = (wert == 4); result = (wert > 0.5); Dezimalzahlen sind Nährungswerte. Aus diesen Grund sollten Dezimalzahlen nicht auf Gleichheit getestet werden. Java - Einführung 06.05.15 Seite 12
Verknüpfung von Bedingungen variable = (bedingung) Operator (bedingung) Bedingungen werden mit Hilfe von Verknüpfungsoperatoren verbunden. Die Verknüpfung liefert einen boolschen Wert. Java - Einführung 06.05.15 Seite 13
Verknüpfungsoperatoren Operator Erläuterung x y x ODER y. Einer der beiden Ausdrücke muss wahr sein. Wenn x true ist, wird y nicht mehr ausgewertet. x && y x UND y Beide Ausdrücke müssen wahr sein. Wenn x false ist, wird y nicht mehr ausgewertet.!x NICHT x Wahr wird zu falsch und umgekehrt. Java - Einführung 06.05.15 Seite 14
Beispiel result = ((zeichen == 'F') (zeichen == 'f')); result = ((temperatur > 0.0) && (temperatur < 99.97)); result = (!(zeichen == 'q') ) (op vergleichsoperator op) verknüpfung (op vergleichsoperator op). Die boolschen Ausdrücke werden geklammert. Der Verknüpfungsausdruck wird geklammert. Java - Einführung 06.05.15 Seite 15
Prioritäten Priorität Operator 1 Nicht! Inkrement ++, Dekrement -- 2 Multiplikation * Division Modulo % 3 Addition + Subtraktion - 4 Kleiner <, Kleiner Gleich <= Größer >, Größer gleich >= 5 ist Gleich ==, ist ungleich!= 6 Und && 7 Oder Java - Einführung 06.05.15 Seite 16
Assoziativität Operator Inkrement ++, Dekrement Multiplikation * Division Modulo % Addition + Subtraktion - Kleiner <, Kleiner Gleich <= Größer >, Größer gleich >= ist gleich ==, ist nicht gleich!= Und &&, Oder Nicht! Inkrement ++, Dekrement -- Zuweisung = Java - Einführung 06.05.15 Seite 17
Schleifen Iterationsanweisungen. Wiederholung von Anweisung in Abhängigkeit einer Bedingung. Eine Verschachtelung von Schleifen ist möglich. Java - Einführung 06.05.15 Seite 18
while-schleife int anfangswert = 1; int summe = 0; int zaehler; zaehler = anfangswert; while (zaehler < 10) { summe = summe + zaehler; System.out.println(zaehler + ". Schleifendurchlauf: " + summe); } zaehler++; Java - Einführung 06.05.15 Seite 19
Schleifenkopf einer while-schleife while (zaehler < 10) Der Schleifenkopf beginnt mit dem Schlüsselwort while (solange). Dem Schlüsselwort folgt in runden Klammern die Bedingung. Wenn die Bedingung zutrifft, wird der dazugehörige Schleifenrumpf ausgeführt. Java - Einführung 06.05.15 Seite 20
Schleifenrumpf { } summe = summe + zaehler; System.out.println(zaehler + ". Schleifendurchlauf: " + summe); zaehler++; Anweisungsblock, der mit den geschweiften Klammern beginnt und endet. Sobald die Bedingung im Schleifenkopf zutrifft, wird der Schleifenrumpf ausgeführt. Java - Einführung 06.05.15 Seite 21
Ablauf zaehler = anfangswert zaehler < 10 nein ja summe = summe + zaehler zaehler = zaehler + 1 Java - Einführung 06.05.15 Seite 22
do-while-schleife int anfangswert = 1; int summe = 0; int zaehler; zaehler = anfangswert; do { summe = summe + zaehler; System.out.println(zaehler + ". Schleifendurchlauf: " + summe); zaehler++; }while(zaehler < 10); Java - Einführung 06.05.15 Seite 23
Erläuterung Der Schleifenkopf beginnt mit dem Schlüsselwort do. Dem Schlüsselwort folgt der Schleifenrumpf. Der Schleifenrumpf wird mindestens einmal durchlaufen. Im Schleifenfuß beginnt die Bedingung mit dem Schlüsselwort while. Die Bedingung muss mit einem Semikolon abgeschlossen werden. Java - Einführung 06.05.15 Seite 24
Ablauf zaehler = anfangswert summe = summe + zaehler zaehler = zaehler + 1 ja zaehler < 10 nein Java - Einführung 06.05.15 Seite 25
Endlosschleife do{ } while(true); Die Bedingung ist immer erfüllt. Falls die Schleife nicht innerhalb des Schleifenrumpfs abgebrochen wird, läuft diese endlos. Java - Einführung 06.05.15 Seite 26
Zählschleife int zaehler; int[] feld = new int[6]; for (zaehler=0;zaehler < feld.length; zaehler++) { feld[zaehler] = (int)math.floor((math.random() * 49) + 1); } for (zaehler=0;zaehler < feld.length; zaehler++) { System.out.println(feld[zaehler]); } Java - Einführung 06.05.15 Seite 27
Mathematische Methoden Math.floor() rundet auf die nächst mathematisch niedrige Ganzzahl. Die Methode liefert ein double-wert zurück. Math.random() liefert eine Dezimalzahl größer als 0.0 und kleiner als 1.0 Java - Einführung 06.05.15 Seite 28
Schleifenkopf for (zaehler=0;zaehler < feld.length; zaehler++) for(initialisierung; Bedingung; Schritt). In den runden Klammern stehen drei Anweisungen zur Initialisierung, Überprüfung und Neuberechnung der Variablen. Die Anweisungen werden durch ein Semikolon abgeschlossen. Java - Einführung 06.05.15 Seite 29
Initialisierung for (zaehler=0;zaehler < feld.length; zaehler++) Vor Beginn der Schleife wird der Zähler einmal initialisiert. Der Zählvariablen wird ein Startwert zugewiesen. Java - Einführung 06.05.15 Seite 30
Deklaration und Initialisierung for (int zaehler=0;zaehler < feld.length; zaehler++) Die Zählvariable kann gleichzeitig deklariert und initialisiert werden. Hinweis: Die Variable zaehler ist nur im Schleifenrumpf der for- Schleife sichtbar. Die Variable kann nur innerhalb des dazugehörigen Schleifenrumpfes genutzt werden. Java - Einführung 06.05.15 Seite 31
Nutzung einer leeren Anweisung int zaehler = 0; for (;zaehler < feld.length; zaehler++) Die Initialisierung wird durch eine leere Anweisung ersetzt. Der Zählvariablen sollte aber vor Beginn der Schleife initialisiert werden. Java - Einführung 06.05.15 Seite 32
Bedingung for (zaehler=0;zaehler < feld.length; zaehler++) Die Zählvariable wird mit einem Wert verglichen. Der Vergleichswert kann im Schleifenkopf berechnet werden. Bedingungen können verknüpft werden. Solange die Bedingung wahr ist, werden die Anweisungen im Schleifenrumpf ausgeführt. Java - Einführung 06.05.15 Seite 33
Nutzung einer leeren Anweisung for (zaehler=0;; zaehler++) { if (zaehler < feld.length) { } } Als Bedingung wird eine leere Anweisung genutzt. Die Bedingung ist immer wahr. Das heißt, die Schleife wird immer ausgeführt. Die Bedingung sollte im Schleifenrumpf überprüft werden. Java - Einführung 06.05.15 Seite 34
Nächster Schritt for (zaehler=0;zaehler < feld.length; zaehler++) Nach jedem Schleifendurchlauf, aber vor jeder Überprüfung der Zählvariable, wird diese Anweisung ausgeführt. Es kann jeder berechnete Ausdruck genutzt werden. Java - Einführung 06.05.15 Seite 35
Verschachtelte Schleifen int MAXZEILE = 2; int[][] feld = {{1, 2, 3, 4}, {3, 0, 4, 5, 6}}; int element = 0; for (int zeile=0;zeile < MAXZEILE; zeile++){ int maxspalte = feld[zeile].length; } for(int spalte = 0; spalte < maxspalte; spalte++){ element = feld[zeile][spalte]; System.out.println("for-innen:" + element); } Java - Einführung 06.05.15 Seite 36
Vorzeitiger Abbruch von Schleifen for(int spalte = 0; spalte < maxspalte; spalte++) { element = feld[zeile][spalte]; if (element == 0) { break; } } System.out.println("for-innen:" + element); Java - Einführung 06.05.15 Seite 37
Schlüsselwort break Beendigung einer Fallunterscheidung in einer switch- Anweisung. Vorzeitige Beendigung einer Schleife. Hinweis: Bei verschachtelten Schleifen wird immer nur die, zu dem Schleifenrumpf gehörende Schleife abgebrochen. Java - Einführung 06.05.15 Seite 38
Beispiel for (gegenkathete=0;gegenkathete <= 10; gegenkathete++) { for (hypotenuse=0;hypotenuse <= 10; hypotenuse++) { sinus = gegenkathete / hypotenuse; System.out.println(sinus); } } if (Math.toDegrees(sinus) < 10){ break; } Java - Einführung 06.05.15 Seite 39
Abbruch und Beginn neuer Schleifendurchlauf for(int spalte = 0; spalte < maxspalte; spalte++) { element = feld[zeile][spalte]; if ((element % 2) > 0) { continue; } } geradezahl.add(integer.valueof(element)); Java - Einführung 06.05.15 Seite 40
Schlüsselwort continue Der aktuelle Schleifendurchlauf wird beendet. Die Zählvariable wird neu berechnet. Ein neuer Schleifendurchlauf beginnt. Java - Einführung 06.05.15 Seite 41
Füllen eines Arrays final int MAXELEMENT = 10; int[] feld = new int[maxelement]; int index; for (index = 0; index < MAXELEMENT; index++) { feld[index] = index; } Java - Einführung 06.05.15 Seite 42
Ausgabe der Array-Elemente for (index = 0; index < MAXELEMENT; index++) { System.out.println(index + ". Durchlauf: " + feld[index]); } index = 0; for(int element: feld) { System.out.println(index + ". Durchlauf: " + element); } Java - Einführung 06.05.15 Seite 43
foreach-schleife for(datentyp feldelement: feld). Für jedes Element im Array Der Platzhalter für das Element eines Arrays hat den gleichen Datentyp wie das dazugehörige Array. Lesen von Elementen in einem Array. Java - Einführung 06.05.15 Seite 44