252-0027 Einführung indie Programmierung 2.3.2Verschachtelte Schleifen 2.4Methoden mit Parametern 2.5“if”-Anweisungen ThomasR.Gross DepartmentInformatik ETHZürich Uebersicht § 2.2Typen undVariable § § Deklaration vonVariablen 2.3Schleifen (Loops) § § 2.3.1“for”Loops 2.3.2Verschachtelte Schleifen § 2.4Methoden mit Parametern § 2.5“if”-Anweisungen § 2.6Nochmals Schleifen § § “while”Loops 2.XInput 3 2.3.2Verschachtelte for Schleifen for Schleife for (initialization; test; update) { statement; statement; ... statement; } header (Kopf) body (Rumpf) statement(Anweisung im Rumpf derSchleife)kann beliebige Java Anweisung sein Auch wieder eine Schleife …. Verschachtelte Schleifen § Verschachtelte Schleifen ("nestedloop"):Schleife ineiner Schleife for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 10; j++) { System.out.print("*"); } System.out.println(); // to end the line } § DerRumpf deräusseren Schleife wird 5-mal ausgeführt,derRumpf derinneren (Schleife) 10-mal(jedesmal) Output: ********** ********** ********** ********** ********** Verschachtelte Schleifen Wasgibt diesesProgrammsegment aus? for (int i = 1; i <= 5; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } § Output: System.out.println(); * } ** *** **** ***** Verschachtelte Schleifen Wasgibt diesesProgrammsegment aus? for (int i = 1; i <= 5; i++) { for (int j = 1; j <= i; j++) { System.out.print(i); § Output: } System.out.println(); 1 } 22 333 4444 55555 Mögliche Fehler § DieSchleife terminiert nicht § Läuft undläuft undläuft § Endlosschleife ("infiniteloop") Mögliche Fehler § DieSchleife terminiert nicht § Läuft undläuft undläuft § Endlosschleife ("infiniteloop") § Beispiele: for (int i = 1; i <= 5; i++) { for (int j = 1; i <= 10; j++) { System.out.print("*"); } System.out.println(); } Mögliche Fehler § DieSchleife terminiert nicht § Läuft undläuft undläuft § Endlosschleife ("infiniteloop") § Beispiele: for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 10; i++) { System.out.print("*"); } System.out.println(); } Wastun? § Eclipsekann solche Programme stoppen. § Klicken auf"Terminate" 17 Mehr Beispiele § Welche verschachtelten for Schleifen erzeugen diesen Output? ....1 ...2 ..3 .4 5 Mehr Beispiele § Welche verschachtelten for Schleifen erzeugen diesen Output? innere Schleife (für jede Zeile) ....1 ...2 ..3 .4 5 äussere Schleife (5-mal da es 5 Zeilen gibt) § Wir müssen eine Ausgabezeile konstruieren: § mit einer äusseren Schleife für jede Zeile § mit innerer(n)Schleife(n)für dasMusterjeder Zeile Äussere undinnere Schleife § Legen Sie erst dieäussere Schleife fest,zählt von1bis zur Anzahl derZeilen for (int line = 1; line <= 5; line++) { ... } § Analysieren Sie jede Zeile.Entdecken Sie dasMuster: § ein paar Punkte (0Punkte inderletzten Zeile)gefolgt vonZahl ....1 ...2 ..3 .4 5 Beobachtung:DieAnzahl der Punkte hängt vonder Zeilennummer ab. Zahlenfolgen à Schleifen for (int count = 1; count <= 5; count++) { System.out.print( ... ); } Welche Anweisung im Rumpf würde diesen Outputergeben: 4 7 10 13 16 for (int count = 1; count <= 5; count++) { System.out.print(3 * count + 1 + " "); } Zahlenfolgen à Schleifen mit Tabellen § Welche Anweisung im Rumpf würde diesen Outputergeben: 2 7 12 17 22 § Zum Finden desMusterserstellen Sie eine Tabelle mit count unddenZahlen. § Wenn sich count um1erhöht,sollte dieZahl um5heraufgehen. § Abercount * 5 ist zu gross(um3),alsosubtrahieren wir 3. count Zahl in Folge 5 * count 5 * count - 3 1 2 5 2 2 7 10 7 3 12 15 12 4 17 20 17 5 22 25 22 Weiteres Tabellen Beispiel § Welche Anweisung im Rumpf würde diesen Outputergeben: 17 13 9 5 1 § Konstruieren wir dieTabelle. § Wenn sich count um1erhöht,sollte dieZahl ... § AberdiesesProdukt ist zu ... count Zahl in Folge -4 * count -4 * count + 21 1 17 -4 17 2 13 -8 13 3 9 -12 9 4 5 -16 5 5 1 -20 1 Zurück zum Beispiel mit for Schleife § Konstruieren wir eine Tabelle ....1 ...2 ..3 .4 5 line # Punkte -1 * line -1 * line + 5 1 4 -1 4 2 3 -2 3 3 2 -3 2 4 1 -4 1 5 0 -5 0 § Umeinen Buchstaben mehrfach zu drucken verwenden wir eine for Schleife. for (int j = 1; j <= 4; j++) { System.out.print("."); } // 4 Punkte Lösung mit for Schleife § Antwort: for (int line = 1; line <= 5; line++) { for (int j = 1; j <= (-1 * line + 5); j++) { System.out.print("."); } § Output: System.out.println(line); ....1 } ...2 ..3 .4 5 Verschachtelte for Schleifen § Wasist derOutputdieser verschachtelten Schleifen? for (int line = 1; line <= 5; line++) { for (int j = 1; j <= (-1 * line + 5); j++) { System.out.print("."); } for (int k = 1; k <= line; k++) { § Answer: System.out.print(line); ....1 } ...22 System.out.println(); ..333 } .4444 55555 Verschachtelte for Schleifen Uebung § Verändern Sie dasletzte Programm sodass dieser Output erzeugt wird: ....1 ...2. ..3.. .4... 5.... Verschachtelte for Schleifen Uebung Verändern Sie dasletzte Programm sodass dieser Outputerzeugt wird: ....1 ...2. ..3.. .4... 5.... (Eine)Antwort: for (int line = 1; line <= 5; line++) { for (int j = 1; j <= (-1 * line + 5); j++) { System.out.print("."); } System.out.print(line); for (int j = 1; j <= (line - 1); j++) { System.out.print("."); } System.out.println(); } 2.4Methoden mit Parametern 31 Zurück zu unserem einfachen Beispiel § Wir sich nicht andieRegeln hält musssie abschreiben: class Beispiel { public static void main (String[] args) { for (int i = 1; i <= 5; i++) { System.out.println( "Ich werde die Schulhausregeln beachten"); } } // end main } 32 Mit Methode § Wir sich nicht andieRegeln hält musssie abschreiben: class Beispiel { public static void main (String[] args) { strafe(); } // end main public static void strafe() { … } // end strafe } 33 Mit Methode public static void strafe () { for (int i = 1; i <= 5; i++) { System.out.println( "Ich werde die Schulhausregeln beachten"); } } // end strafe 34 Mit Methoden strafe5, strafe10, strafe15 public static void strafe5 () { for (int i = 1; i <= 5; i++) { ... } } // end strafe5 public static void strafe10 () { for (int i = 1; i <= 10; i++) { ... } } // end strafe10 public static void strafe15 () { for (int i = 1; i <= 15; i++) { ... } } // end strafe15 35 Noch mehr Strafen … § Diese "Lösung"lässt nur eine vorgebene Anzahl von Wiederholungen zu … § WaswennwirauchandereAnzahl Wiederholungen wollen? § OK,keinechtesThemaaberesgehtunsjaumdasPrinzip § WirbraucheneinenWeg,dieAnzahlderWiederholungender Situationanzupassen § Parametrisierung:mit (veränderbaren)Parametern versehen 36 Parametrisierung § Parameter:Ein Wertdeneine aufgerufene Methode vonder aufrufenden Methode erhält. § Statt strafe5, strafe10, strafe15 entwicklen wir eine Methode flexstrafe sodass verschiedene Wiederholungen gewählt werden können. § Wenn wir eine Methode deklarieren dann geben wir an,dass diese Methode einen Parameterbraucht. § Wenn wir dieMethodaufrufen,dann geben wir einen Wertfür denParameteran. Parametrisierung main 5 10 flexstrafe flexstrafe Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Ich werde dieSchulhausregeln beachten Parameterdeklarationen Gibt andass eine Methode einen Parameterbraucht um ausgeführt werden zu können public static void name ( type name ) { statement; } § Beispiel: public static void echoPin(int code) { System.out.println(”Die Geheimnummer ist: " + code); } Parameterdeklarationen Gibt andass eine Methode einen Parameterbraucht um ausgeführt werden zu können public static void name ( type name ) { statement; } name:ParameterVariable § Beispiel: public static void echoPin(int code) { System.out.println(”Die Geheimnummer ist: " + code); } Parameterdeklarationen Gibt andass eine Methode einen Parameterbraucht um ausgeführt werden zu können public static void name ( type name ) { statement; } § Beispiel: § Wenn echoPin aufgerufen wird dann mussderAufrufer einen int Wertangeben. public static void echoPin(int code) { System.out.println(”Die Geheimnummer ist: " + code); } Wert(e)für Parameter Beim Aufruf einer Methode mussein Wertfür denParameterangegeben werden. name (expression); § Beispiel: public static void main(String[] args) { echoPin(42); echoPin(12345); } § Output Die Geheimnummer ist: Die Geheimnummer ist: 42 12345 Wie werden Parameterübergeben? § Uebergeben:vom Aufrufer zur aufgerufenen Methode § Wenn eine Methode aufgerufen wird dann: § Der Wertwird inder ParameterVariablegespeichert § DieAnweisungen derMethode werden ausgeführt (mit diesem Wert für dieParameterVariable). § DerWert,denderAufrufer übergibt,kann durch eine Variable gegeben sein § DerWertkann durch einen Ausdruck berechnet werden § Eine Konstante (Literal)ist auch ein Ausdruck § Zurück zum Beispiel: Methode mit Parameter class Beispiel { public static void main (String[] args) { flexstrafe(1000); } // end main public static void flexstrafe(int wieoft) { for (int i = 1; i <= wieoft; i++) { System.out.println("Ich werde die Schulhausregeln beachten"); } } // end flexstrafe } 46 Parameter § Ein ParameterinderDeklaration einer Methode heisst formaler Parameter(“formalparameter”) § Formalparameter:definiert Variable(legt Typ undNamen fest!) § Derübergebene Wertheisst tatsächlicher Parameter(“actual parameter”)oder Argument(“argument”) § Aktuell:augenblicklich,derzeitig [Duden] § Aktueller Wert Parameter Ein Parameterkann inderMethode wie jede Variableverwendet werden (z.B.Anzahl derIterationen einer Schleife kontrollieren) public static void main(String[] args) { printPunkt(3); } public static void printPunkt(int times) { for (int i = 1; i <= times; i++) { System.out.println(“."); } } Output:… Wie werden Parameterübergeben? public static void main(String[] args) { printPunkt(3); printPunkt(7); 3 7 } public static void printPunkt(int times) { for (int i = 1; i <= times; i++) { System.out.println(“."); } } Mögliche Fehler § Wenn eine Methode einen Parametererwartet dann muss dieser auch übergeben werden. printPunkte(); required // ERROR: parameter value § Der Wertmussdenrichtigen Typ hben printPunkte(3.7); // ERROR: must be of type int DieRegeln für Umwandlungen gelten auch hier Mehrere Parameter § Eine Methode kann mehrere Parametererwarten (getrennt durch ,inDeklaration undim Aufruf) § Wenn dieMethode aufgerufen wird mussein Wertfür jeden Parameterangegeben werden § Deklaration: public static void name (type name, ..., type name) { statement; } § Aufruf:name (value, value, ..., value); Beispiel mit mehreren Parametern public static void main (String[] args) { Scanner console = new Scanner(System.in); System.out.print("Input lower bound: "); int low = console.nextInt(); System.out.print("Input upper bound: "); int up = console.nextInt(); printOdd(low, up); printOdd(-up, -low); } public static void printOdd(int from, int to) { for (int i=from; i<=to; i++) { if (i%2==1) { System.out.println(i); } } } Wie werden Parameterübergeben? § Wenn eine Methode aufgerufen wird: § Derübergebene Wertwird inderParameterVariablegespeichert § DieAnweisungen derMethode werden ausgeführt (mit diesem Wert für dieParameterVariable). § DerWert,denderAufrufer übergibt,kann durch einen Ausdruck (Expression)gegeben sein § DerWertdesExpressionswird berechnet § Dieaufgerufene Methode erhält denWertundhatkeine Kenntnis wie derWertberechnet wurde Uebergabe vonWerten (“Valuesemantics”) public static void main(String[] args) { printPunkt(3); printPunkt(3+4); } 3 7 public static void printPunkt(int times) { for (int i = 1; i <= times; i++) { System.out.println(“."); } } Wie werden Parameterübergeben? § Wenn eine Methode aufgerufen wird: § Derübergebene Wertwird inderParameterVariablegespeichert § DieAnweisungen derMethode werden ausgeführt (mit diesem Wert für dieParameterVariable). § DerWert,denderAufrufer übergibt,kann durch eine Variable gegeben sein § Der Wertder Variablewird verwendet § Dieaufgerufene Methode erhält denWertundhatkeine Kenntnis wie derWertberechnet wurde § Insbesondere kennt dieaufgerufene Methode nicht dieVariablen des Aufrufers Uebergabe vonWerten (“Valuesemantics”) § Gegeben ein ParameterP eines Basistyps (int,double,…) § Wenn dasArgumentdurch eine VariableV bestimmt wird dann wird derWertdieser Variablekopiert,d.h.Pwird auf denWertvonV gesetzt § Wir sprechen von“valuesemantics” § Veränderungen derParameterVariableP inderaufgerufenen Methode haben keine Auswirkung aufV. Uebergabe vonWerten (“Valuesemantics”) public static void strange(int x) { x = x + 1; System.out.println("1. x = " + x); } public static void main(String[] args) { int x = 23; strange(x); System.out.println("2. x = " + x); ... } Output: 1. x = 24 2. x = 23 60 Uebergabe vonWerten (“Valuesemantics”) § valuesemantics bedeutet dass (nur)derWertübergeben wird § Veränderungen derParameterVariableinderaufgerufenen Methode haben keine Auswirkung aufV. § Nameeines aktuellen Parameters(wenn eine Variableverwendet wird)ist unwichtig. 63 Uebersicht § 2.5"if"Anweisungen § 2.6Nochmal Schleifen 64 if Anweisung ("if-statement") § Führt eine Anweisung (oder Anweisungen)nur aus wenn ein TestdenWertwahr ("true")ergibt. if (test) { statement; ... statement; } § Beispiel: nein Ist testwahr? ja Anweisung(en) ausführen Folgende Anweisung ausführen double punkte = console.nextDouble(); if (punkte >= 50.0) { System.out.println("Pruefung bestanden."); } if-else Anweisung § Führt einen Gruppe vonAnweisungen aus wenn ein TestdenWertwahr ("true")ergibt,sonst eine andere Gruppe if (test) { nein ja statement(s); Ist testwahr? } else { statement(s); "else"Anweisung(en) "if"Anweisung(en) ausführen ausführen } § Beispiel: Folgende Anweisung double punkte = console.nextDouble(); ausführen if (punkte >= 50.0) { System.out.println("Pruefung bestanden."); } else { System.out.println("Pruefung nicht bestanden."); } Boolesche Ausdrücke § if Anweisungen undfor Schleifen verwenden beide boolesche Ausdrücke. for (int i = 1; i <= 10; i++) { ... if (i <= 10) { ... § Diese Ausdrücke werden ausgewertet --- Ergebnis entweder "true"oder "false" § Verwenden Vergleichsoperatoren 73 Gebrauch vonif Wasfällt Ihnen indiesem CodeBeispiel auf? Scanner console = new Scanner(System.in); System.out.print("Wieviele Punkte haben Sie erreicht? "); int percent = console.nextInt(); if (percent >= 90) { System.out.println("Ihre Note ist 6.0."); } if (percent >= 80) { System.out.println("Ihre Note ist 5.0."); } if (percent >= 70) { System.out.println("Ihre Note ist 4.0."); } if (percent >= 60) { System.out.println("Ihre Note ist 3.5."); } if (percent < 60) { System.out.println("Ihre Note ist 3.0."); } ... Verschachtelte if-else Anweisungen Auswahl bestimmt durch mehrere Tests if (test) { statement(s); } else if (test) { statement(s); } else { statement(s); } nein Ergibt test1wahr? nein Ergibt test2wahr? Gruppe 3Anweisungen ausführen ja Gruppe 1Anweisungen ausführen Gruppe 2Anweisungen ausführen Folgende Anweisung ausführen ja Verschachtelte if-else Anweisungen Beispiel: if (x > 0) { nein System.out.println("Positiv"); Ergibt testwahr? ja } else if (x < 0) { System.out.println("Negativ"); nein Ergibt testwahr? ja Gruppe 1Anweisungen ausführen } else { System.out.println("Null"); Gruppe 3Anweisungen ausführen Gruppe 2Anweisungen ausführen } Folgende Anweisung ausführen Verschachtelte if-else-if § Endet mit else:genau ein Pfad mussausgeführt werden § Endet mit if:Eventuell wird keine Anweisung ausgeführt. nein ja if (test) { Ergibt testwahr? statement(s); } else if (test) { Gruppe 1Anweinein ja Ergibt testwahr? sungen ausführen statement(s); } else if (test) { Gruppe 2Anweinein ja Ergibt testwahr? sungen ausführen statement(s); } Gruppe 3Anweisungen ausführen Verschachtelte if-else-if if (place == 1) { System.out.println("Gold!!"); } else if (place == 2) { System.out.println("Silver!"); } else if (place == 3) { System.out.println("Bronze."); } nein nein Ergibt testwahr? Ergibt testwahr? Ergibt testwahr? ja ja Gruppe 1Anweisungen ausführen Gruppe 2Anweisungen ausführen Gruppe 3Anweisungen ausführen ja Verschachtelte if Konstrukte • Genau ein 1 Pfad (gegenseitiger Ausschluss) • if (test) { statement(s); } else if (test) { statement(s); } else { statement(s); } • 0 oder 1 Pfad (gegenseitiger Ausschluss) if (test) { statement(s); } else if (test) { statement(s); } else if (test) { statement(s); } 0, 1, oder viele Pfade (unabhängig, kein gegenseitiger Ausschluss) if (test) { statement(s); } if (test) { statement(s); } if (test) { statement(s); } Welche if/else Kombination? (1)if/if/if (2) verschachtelte if/else(3) verschachtelte if/else/if § Ob– abhängig vonfrüheren Rennen – jemand inderersten,zweiten,oder dritten Gruppe startet. § (2) § Obes eine Medaille (Notendurschnitt ≥ 5.9)oder eine Urkunde (5.75-5.9)gibt. § (3) § verschachtelte if / else if Obeine Zahl durch 2,3, und/oder 5teilbar ist. § (1) § verschachtelte if / else if / else Folge vonif / if / if Note(auf0.25gerundet)aufgrund derPunkte (Prozent)inderPrüfung. § (2) verschachtelte if / else if / else if / else if / else Verschachtelte if/else Beispiel Formelfür Body-Mass-Index(BMI): BMI < 18.5 18.5 – <25 25.0 -- <30 ≥ 30.0 Weight class Untergewicht Normalgewicht Uebergewicht Adipositas § Schreiben Sie ein Programm dasfolgenden Outputproduziert: Dieses Programm erhebt die Daten fuer 2 Personen und berechnet den Body-Mass-Index(BMI). Geben Sie die Daten fuer die naechste Person ein: Laenge(in m)? 1.70 Masse(in kg)? 60 Geben Sie die Daten fuer die naechste Person ein: Laenge(in m)? 1.65 Masse(in kg)? 75 Verschachtelte if/else Beispiel Formelfür Body-Mass-Index(BMI): BMI < 18.5 18.5 – <25 25.0 -- <30 ≥ 30.0 Weight class Untergewicht Normalgewicht Uebergewicht Adipositas § Schreiben Sie ein Programm dasfolgenden Outputproduziert: Dieses Programm erhebt die Daten fuer 2 Personen und berechnet den Body-Mass-Index(BMI). Person 1 BMI = 20.761245674740484 Normalgewicht Person 2 BMI = 27.548209366391184 Uebergewicht Differenz = 6.786963691650700 Nestedif/else System.out.println("Person " + number + " BMI = " + bmi); if (bmi < 18.5) { System.out.println(" Untergewicht "); } else if (bmi < 25) { System.out.println(" Normalgewicht "); } else if (bmi < 30) { System.out.println(" Uebergewicht "); } else { System.out.println(" Adipositas "); } Boolesche Operatoren § Vergleiche können durch boolesche Operatoren verknüpft werden Operator && Description and Example (2 == 3) && (-1 < 5) Result false || or (2 == 3) || (-1 < 5) true ! not !(2 == 3) true § ”Wahrheitstabelle"für diese Operatoren,für Aussagen p undq: p && q p true q true true false false false true true false false false false p || q true true p true false true false true false !p Boolesche Ausdrücke § Vergleichsoperatoren haben eine tiefere Präzedenz als arithmetische Operatoren. 5 * 7 5 * 7 35 35 true >= >= >= >= 3 + 5 * (7 - 1) 3 + 5 * 6 3 + 30 33 § Vergleichsoperatoren können nicht eine “Kette”bilden wie inMathematik 2 <= x <= 10 true <= 10 error! (Annahme:x ist 15) Boolesche Ausdrücke § Aussagen können mit && oder || kombiniert werden 2 <= x && x <= 10 true && false false (Annahme:x ist 15) § Boolesche Operatoren haben eine tiefere Präzedenz als Vergleichsoperatoren. § Verwenden Sie Klammern umKlarheit zu schaffen Beispiel § Welcher boolesche Ausdruck ergibt true wenn ein Jahr jahr ein Schaltjahr ist? § jahr ist Schaltjahr wenn jahr durch 4teilbar ist (ohne Rest),jahr aber nicht durch 100ohne Restteilbar ist,es sei denn dass jahr ohne Restdurch 400teilbar sei. § int jahr; // aktuelles Jahr § jahr % 4 == 0 && jahr % 100 != 0 || jahr % 400 == 0 § Besser mit Klammern: ((jahr % 4 == 0) && (jahr % 100 != 0)) || (jahr % 400 == 0) 93 Boolesche Ausdrücke § Wasist dasErgebnis für diefolgenden Ausdrücke? int x = 42; int y = 17; int z = 25; § § § § § y < x && y <= z x % 2 == y % 2 || x % 2 == z % 2 x <= y + z && x >= y + z !(x < y && x < z) (x + y) % 2 == 0 || !((z - y) % 2 == 0) § Answers:true,false,true,true,false Faktorisierung § Sie erinnern sich andieZerlegung einer Zahl inPrimzahlen § OderdieZerlegung vonPolynomen § Faktorisierung § Idee:keine Ueberlappung § Faktorisierung (factoring)vonCode:Herausarbeiten von gemeinsamen/redundanten Anweisungen § Inder PraxisofRefaktorisierung (refactoring) Faktorisierung für if/else Anweisungen § Example: if (a == 1) { System.out.println(a); x = 3; b = b + x; } else if (a == 2) { System.out.println(a); x = 6; y = y + 10; b = b + x; } else { // a == 3 System.out.println(a); x = 9; b = b + x; } System.out.println(a); b = b + x; Faktorisierung für if/else Anweisungen § Example: if (a == 1) { System.out.println(a); x = 3; b = b + x; } else if (a == 2) { System.out.println(a); x = 6; y = y + 10; b = b + x; } else { // a == 3 System.out.println(a); x = 9; b = b + x; } System.out.println(a); x = 3 * a; b = b + x; Faktorisierung für if/else Anweisungen § Example: if (a == 1) { System.out.println(a); x = 3; b = b + x; } else if (a == 2) { System.out.println(a); x = 6; y = y + 10; b = b + x; } else { // a == 3 System.out.println(a); x = 9; b = b + x; } System.out.println(a); x = 3 * a; if (a == 2) { y = y + 10; } b = b + x; Boolesche Ausdrücke if (((x>0) && (y>0)) && (z > 0)) { // block 1 } // more code if (((x>0) && (y>0)) && (z >= 0)) { // block 2 } § Wasist andiesem CodeBeispiel schlecht? 100 Boolesche Ausdrücke if (((x>0) && (y>0)) && (z > 0)) { // block 1 } // more code if (((x>0) && (y>0)) && (z >= 0)) { // block 2 } § Wasist andiesem CodeBeispiel schlecht? § (x>0) && (y>0) mehrfach berechnet 101