IF-ELSE-IF- Ketten. Aufgabe: Fiktiver Bußgeldkatalog I >0 km/h: 1000 Euro

Preview:

Citation preview

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) ?

Recommended