140 likes | 269 Views
Übersicht. Boolesche Ausdrücke (Werte wahr/falsch ) Relationale Operatoren (==, >,<, ..) Kontrollstrukturen while do - while switch break. Boolesche Ausdrücke. Bedingungen in if oder for : Beispiele: if( i == 0 ) ... for(int i = 0 ; i < 1000 ; i = i + 1).
E N D
Übersicht • Boolesche Ausdrücke (Werte wahr/falsch) • Relationale Operatoren (==, >,<, ..) • Kontrollstrukturen • while • do - while • switch • break
Boolesche Ausdrücke • Bedingungen in if oder for: • Beispiele: • if(i == 0) ... • for(int i = 0 ; i < 1000 ; i = i + 1)...
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; }
while-Schleife: while ( boolean-Ausdruck ) { Anweisung 1; Anweisung 2; …. } Schleife mit Eintrittsbedingung Anweisung wird 0 bis x-mal ausgeführt while- und do-while-Schleife • do-while-Schleife: • do { • Anweisung 1; • Anweisung 2; • …. • } • while ( boolean-Ausdruck ); • Schleife mit Wiederholungsbedingung • Anweisung wird mindestens einmal ausgeführt
Ü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)
Ü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.
Ü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 );
switch-Anweisung • dient zur Realisierung von Fallunterscheidungen • switch (Ausdruck ) {case Wert1 : Anweisung1; // 1. Fall Ausdruck=Wert1case Wert2 : Anweisung2; // 2. Fall Ausdruck=Wert2. . . default: Ansonsten-Anweisung;// ansonsten} • es werden alle Anweisungen ab der ersten erfüllten case-Bedingung 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
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!
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 break-Befehls hinter der switch-Anweisung fortgesetzt!
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.
Die break-Anweisung (2) • kann auch zum Abbruch von Schleifen (for, while, do-while) eingesetzt werden Beispiel while-Schleife:while ( boolean-Ausdruck1 ) {. . .if ( boolean-Ausdruck2 ) break;// Abbruch. . . } • Der Programmablauf wird hinter der Schleifenanweisung fortgesetzt