Übersicht • Boolesche Ausdrücke (Werte wahr/falsch) – Relationale Operatoren (==, >,<, ..) • Kontrollstrukturen – while – do - while – switch – break 1 Boolesche Ausdrücke • Bedingungen in if oder for: • Beispiele: –if(i == 0) ... –for(int i = 0 ; i < 1000 ; i = i + 1)... 2 Relationale Operatoren Mathem. Notation Java Erläuterung = == Identität (Gleichheit) != Ungleichheit < < kleiner als <= kleiner oder gleich als > > größer als >= größer oder gleich als 3 Beispiel: For-Schleife mit komplexer Bedingung • Es sollen die Zahlen von 1 bis 100 addiert werden, jedoch soll vorher abgebrochen werden,wenn die Summe die Zahl 2000 erreicht hat. int Summe =0; for(int i = 1; (i <= 100 & Summe < 2000); i = i+1) { Summe = Summe + i; } 4 while- und do-while-Schleife while-Schleife: do-while-Schleife: while ( boolean-Ausdruck ) { Anweisung 1; Anweisung 2; …. } do { Anweisung 1; Anweisung 2; …. } while ( boolean-Ausdruck ); • Schleife mit Eintrittsbedingung – Anweisung wird 0 bis x-mal ausgeführt • Schleife mit Wiederholungsbedingung – Anweisung wird mindestens einmal ausgeführt 5 Übung 1 • Schreibe ein Programm, das die Zahlen von 1 bis 100 aufzählt, wobei anstelle der durch 5 und durch sieben teilbaren Zahl der Text „XY“ ausgeschrieben werden soll. Ist die Zahl nur durch 5 teilbar soll der Buchstabe „X„ und nur durch 7 teilbar der Buchstabe „Y“ ausgegeben werden. • Tip: Verwende die Operation % (Rest der ganzzahligen Division): • z.B. 11 % 5 = 1 (11 geteilt durch 5 ist 2 mit Rest 1) 6 Übung 2 Die Collatz-Folge ist definiert durch: n n/2 falls n gerade ist n 3n+1 falls n ungerade ist. Berechne diese Zahlenfolge für den Startwert 27 bis die Zahl 1 erreicht ist. Die ersten Folgenglieder lauten 27, 82, 41, 124, 62, 31 usw. 7 Übung 3 • Schreibe ein Programm, das die natürlichen Zahlen solange summiert, bis die Summe die Zahl 3000 erstmals überschreitet. Gib die Summe und die Anzahl der natürlichen Zahlen aus. • Tip: Verwende while-Schleifen: – while ( boolean-Ausdruck ) Anweisung; – do Anweisung; while ( boolean-Ausdruck ); 8 switch-Anweisung • dient zur Realisierung von Fallunterscheidungen • switch (Ausdruck ) { case Wert1 : Anweisung1; // 1. Fall Ausdruck=Wert1 case Wert2 : Anweisung2; // 2. Fall Ausdruck=Wert2 ... default: Ansonsten-Anweisung; // ansonsten } • es werden alle Anweisungen ab der ersten erfüllten caseBedingung ausgeführt !! (inkl. der Ansonsten-Anweisung ) • Ausdruck muss vom Typ byte, short, int oder char sein • Wert1, Wert2, … muss eine Konstante vom gleichen Typ wie Ausdruck sein 9 Beispiel 1 zur switch-Anweisung class Switch1 { public static void main (String args[]) { int i; for (i=0; i < 10; i=i+1) switch(i) { case 1: System.out.println("eins"); case 2: System.out.println("zwei"); case 5: System.out.println("fünf"); default: System.out.println(i); } } } Ausgabe: 0 eins zwei fünf 1 zwei fünf 2 3 4 fünf 5 6 7 8 9 Problem: fehlerhafte Ausgabe, da jeweils nach der ersten passenden case-Bedingung alle anderen Anweisungen ohne weitere Überprüfung ausgeführt werden! 10 Die break-Anweisung (1) • dient zum Abbruch von switch-Fallunterscheidungen switch ( Ausdruck ) { case Wert1 : { Anweisung1; break; } case Wert2 : { Anweisung2; break; } ... default: Ansonsten-Anweisung; } • Der Programmablauf wird bei Ausführung eines breakBefehls hinter der switch-Anweisung fortgesetzt! 11 Beispiel 2 zur switch-Anweisung class Switch2 { public static void main (String args[]) { int i; for (i=0; i < 10; i=i+1) switch(i) { case 1: {System.out.println("eins"); break;} case 2: {System.out.println("zwei"); break;} case 5: {System.out.println("fünf"); break;} default: System.out.println(i); } } } Ausgabe: 0 eins zwei 3 4 fünf 6 7 8 9 Die Ausgabe ist nun korrekt, da die switch-Anweisung jeweils nach der Ausführung der passenden case-Bedingung mittels break verlassen wird. 12 Die break-Anweisung (2) • kann auch zum Abbruch von Schleifen (for, while, dowhile) eingesetzt werden Beispiel while-Schleife: while ( boolean-Ausdruck1 ) { ... if ( boolean-Ausdruck2 ) break; // Abbruch ... } • Der Programmablauf wird hinter der Schleifenanweisung fortgesetzt 13