Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

26
Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Transcript of Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Page 1: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Vergleich von Schleifen:

Wie kann man eine Schleife durch eine andere darstellen ?

Page 2: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Aufgabe:Wie stellt man eine

for-Schleife durch eine

while-Schleife dar ?

Page 3: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

B

f

w

A

A1

B

A

A3

f

w

while-Schleife

for-Schleife

Page 4: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

A1;while(B){ A; A3;}

for(A1;B;A3){ A;}

Page 5: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Beispiel:

Page 6: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Annahme:Bei allen folgenden Beispiel-Programmen wird stillschweigend vorausgesetzt, daß über Tastatur für die Variablen z1 und z2 ganze Zahlen eingegeben wurden:scanf("%d" ,&z1);scanf("%d" ,&z2);

Page 7: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

for(i=z1;i<=z2;i=i+1){ sum = sum+i;}

sum = 0;

}

sum = 0;

BA1

A3

AA1

B

AA3

Was berechnet dieses Programm ?

Die Summe aller ganzen Zahlen zwischen z1 und z2, wobei z1<=z2 sein muß.

i = z1;while(i<=z2){sum = sum+i;i = i+1;

Page 8: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Aufgabe:Wie stellt man eine

while-Schleife durch eine

for-Schleife dar ?

Page 9: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

while(B){ A;}

for(;B;){ A;}

Im Schleifenkopf der for-Anweisung müssen 3 Ausdrücke vorkommen, die

durch zwei Semikolon getrennt werden. Da links vom 1. Semikolon und rechts vom 2. Semikolon nichts steht, muss dies jeweils der leere Ausdruck sein.

Page 10: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Beispiel:

Page 11: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

while(i<=z2){ sum = sum+i; i = i+1;} }

sum = 0;i = z1;

sum = 0;i = z1;

B B

A A

for(;i<=z2;){sum = sum+i;i = i+1;

Page 12: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Aufgabe:Wie stellt man eine do...while –Schleife

durch eine while-Schleife

dar ?

Page 13: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

B

f

w

A

do...while-Schleife

Bf

w

A

Angenommen, das Programm wurde bis an diesen Punkt abgearbeitet. Was fällt dann auf ?

Das Programm ist wieder in einer while-Schleife !

Page 14: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

A;while(B){ A;}

do{ A;}while(B);

Page 15: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Beispiel:

Page 16: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

do{ sum = sum+i; i = i+1;}while(i<=z2);

sum = 0;i = z1;

}

sum = 0;i = z1;

BA

A B

A

sum = sum+i;i = i+1;

sum = sum+i;i = i+1;

while(i<=z2){

Page 17: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Aufgabe:Wie stellt man eine

while-Schleife durch eine

do...while –Schleife dar ?

Page 18: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

B

f

w

A

Bf

w

A

Angenommen, das Programm wurde bis an diesen Punkt abgearbeitet. Was fällt dann auf ?

do...while-Schleife

while-Schleife

Das Programm ist wieder in einer

do...while-Schleife !

Page 19: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

while(B){ A;}

if(B){ do{ A; }while(B);}

Page 20: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Beispiel:

Page 21: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

while(i<=z2){ sum = sum+i; i = i+1;}

sum = 0;i = z1;

}

sum = 0;i = z1;

B

A

sum = sum+i;i = i+1;

if(i<=z2){

}while(i<=z2);

do{

B

A B

Page 22: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Aufgabe:Geben Sie eine weitere Möglichkeit an, eine

while-Schleife durch eine

do...while –Schleife darzustellen.

Page 23: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

while(B){ A;}

do{ if(B){ A; }}while(B);

Testen Sie dies, indem sie folgende Voraussetzungen machen:1) B ist genau 0 Mal richtig.2) B ist genau 1 Mal richtig.3) B ist genau 2 Mal richtig.4) B ist genau 3 Mal richtig....

Page 24: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Aufgabe:Wie stellt man eine

for-Schleife durch eine

do...while –Schleife dar, bzw. eine

do...while –Schleife durch eine

for-Schleife

Page 25: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

Man wandelt die for-Schleifein einewhile –Schleife um und dann die while –Schleifein eine do...while –Schleife bzw. umgekehrt, kurz:

Page 26: Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?

for-Schleife siehe oben (frühere Folie)

<=

=>

<=

=>

siehe oben (frühere Folie)

while-Schleife

do...while –Schleife