IF-ELSE-IF-Ketten
Aufgabe:
Fiktiver Bußgeldkatalog I
>0 km/h: 1000 Euro
import java.io.*;
public class MainBussgeld1 { public static void main() throws IOException{ double v, bussgeld; String str;
System.out.println( "Geschwindigkeitsüberschr. eingeben"); BufferedReader myinput = new BufferedReader(new InputStreamReader( System.in)); str = myinput.readLine(); v=Double.parseDouble(str);
Wichtig:Wegen Platzmangels wird eine
Bildschirmausgabe durch print("...")
und die Eingabe über Tastatur durch
eingabe(...) abgekürzt.
if(v<=0){ bussgeld=0;}else{ bussgeld=1000;}
print("Strafe="+bussgeld);}
Aufgabe:
Fiktiver Bußgeldkatalog II
10 km/h: 20 Euro>10 km/h: 1000 Euro
if(v<=0){ bussgeld=0;}else{ if(v <= 10){ bussgeld=20; } else{ bussgeld=1000; }}
Warum ist folgendes nicht nötig ?
if ((v<=10)&&(v>0))
Weil im else-Teil automatisch
v>0ist
Nachteil der Darstellung:Hohe Verschachtelungstiefe
Alternative, übersichtlichere (flachere) Darstellung:
if(v<=0){ bussgeld=0;}else{ if(v <= 10){ bussgeld=20; } else{ bussgeld=1000; }}
if(v<=0){ bussgeld=0;}else{if(v <= 10){ bussgeld=20; }else{ bussgeld=1000;}}
Warum können Klammern
weggelassen werden ?
Weil sie nur eine Anweisung
einschliessen !
Die linke und die obige Darstellung sind – bis auf die
Optik – genau gleich
if(v<=0){ bussgeld=0;}else{ if(v <= 10){ bussgeld=20; } else{ bussgeld=1000; }}
if(v<=0){ bussgeld=0;}else if(v <= 10){ bussgeld=20;}else{ bussgeld=1000;}
Die obige Darstellung ist flacher als die linke Darstellung, aber
gleichwertig zur linken Darstellung
Sie heißt IF-ELSE-IF Kette
Aufgabe:
Fiktiver Bußgeldkatalog III
10 km/h: 20 Euro 20 km/h: 40 Euro>20 km/h: 1000 Euro
if(v<=0){ bussgeld=0;}else{ if(v <= 10){ bussgeld=20; } else{ if(v <= 20){ bussgeld=40; } else{ bussgeld=1000; } } }
Nachteil der Darstellung:Hohe Verschachtelungstiefe
Alternative, übersichtlichere (flachere) Darstellung:
if(v<=0){ bussgeld=0;}else{ if(v <= 10){ bussgeld=20; } else{ if(v <= 20){ bussgeld=40; } else{ bussgeld=1000; } } }
if(v<=0){ bussgeld=0;}else{if(v <= 10){ bussgeld=20;}else{if(v <= 20){ bussgeld=40;}else{ bussgeld=1000; }}}
Weil sie nur jeweils eine Anweisung einschliessen !
Die linke und die obige Darstellung sind – bis auf die
Optik – genau gleich
Warum können farbige Klammern
weggelassen werden ?
if(v<=0){ bussgeld=0;}else{ if(v <= 10){ bussgeld=20; } else{ if(v <= 20){ bussgeld=40; } else{ bussgeld=1000; } } }
if(v<=0){ bussgeld=0;}else if(v <= 10){ bussgeld=20;}else if(v <= 20){ bussgeld=40;}else{ bussgeld=1000; }
Die obige Darstellung ist flacher als die linke Darstellung, aber
gleichwertig zur linken Darstellung
Aufgabe:
Fiktiver Bußgeldkatalog IV
10 km/h: 20 Euro 20 km/h: 40 Euro 30 km/h: 60 Euro>30 km/h: 1000 Euro
if(v<=0){ bussgeld=0;}else{
if(v<=10){ bussgeld=20; } else{
if(v <= 20){ bussgeld=40; } else{
if(v <= 30){ bussgeld=60; } else{ bussgeld=1000; } } }}
Nachteil der Darstellung:Hohe Verschachtelungstiefe
Alternative, übersichtlichere (flachere) Darstellung:
if(v<=0){ bussgeld=0;}else{
if(v<=10){ bussgeld=20; } else{
if(v <= 20){ bussgeld=40; } else{
if(v <= 30){ bussgeld=60; } else{ bussgeld=1000; } } }}
if(v<=0){ bussgeld=0;}else{if(v<=10){ bussgeld=20;}else{if(v <= 20){ bussgeld=40;}else{if(v <= 30){ bussgeld=60;}else{ bussgeld=1000;}}}}
Klammern können weggelassen werden
if(v<=0){ bussgeld=0;}else{
if(v<=10){ bussgeld=20; } else{
if(v <= 20){ bussgeld=40; } else{
if(v <= 30){ bussgeld=60; } else{ bussgeld=1000; } } }}
if(v<=0){ bussgeld=0;}else if(v<=10){ bussgeld=20;}else if(v <= 20){ bussgeld=40;}else if(v <= 30){ bussgeld=60;}else{ bussgeld=1000;}
Die linke und die obige Darstellung sind – bis auf die Optik – genau gleich
if(v<=0){ bussgeld=0;}else{
if(v<=10){ bussgeld=20; } else{
if(v <= 20){ bussgeld=40; } else{
if(v <= 30){ bussgeld=60; } else{ bussgeld=1000; } } }}
if(v<=0){ bussgeld=0;}else if(v<=10){ bussgeld=20;}else if(v <= 20){ bussgeld=40;}else if(v <= 30){ bussgeld=60;}else{ bussgeld=1000;}
Zeichen Sie das dazugehörige Struktogramm!
W
b=0
v<=0
Wichtig: NUR Der Else Teil wird jeweils weiter verschachtelt !
Was fällt auf (hinsichtlich der Verschachtelung) ?
v<=10
v<=20
v<=30
b=20
b=40
b=60 b=1000
W
W
W
F
F
F
F
Struktogramm einer beliebigen
IF-ELSE-IF Kette
W F
W F
W F
W F
W F
A1
B1
B2
B3
B4
...
A2
A3
A4... ...
Wichtig: NUR Der Else Teil wird jeweils weiter verschachtelt !
Was fällt auf (hinsichtlich der Verschachtelung) ?