Vergleich von Schleifen: Wie kann man eine Schleife durch eine andere darstellen ?
Aufgabe: Wie stellt man eine for-Schleife durch eine while-Schleife dar ?
while-Schleife A1 f f B B w w A A A3 for- Schleife
for(A1;B;A3){ A; } A1; while(B){ A; A3; }
Beispiel:
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);
A3 A B A1 A1 B A A3 sum = 0; for(i=z1;i<=z2;i=i+1){ sum = sum+i; } Was berechnet dieses Programm ? Die Summe aller ganzen Zahlen zwischen z1 und z2, wobei z1<=z2 sein muß. A B A1 A1 B sum = 0; } i = z1; A while(i<=z2){ sum = sum+i; A3 i = i+1;
Aufgabe: Wie stellt man eine while-Schleife durch eine for-Schleife dar ?
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. for(;B;){ A; }
Beispiel:
B B A A sum = 0; i = z1; sum = 0; i = z1; while(i<=z2){ sum = sum+i; i = i+1; } } for(;i<=z2;){ sum = sum+i; i = i+1; A A
Aufgabe: Wie stellt man eine do...while –Schleife durch eine while-Schleife dar ?
Das Programm ist wieder in einer while-Schleife ! Angenommen, das Programm wurde bis an diesen Punkt abgearbeitet. Was fällt dann auf ? f A B Das Programm ist wieder in einer while-Schleife ! w A f B w do...while- Schleife
do{ A; }while(B); A; while(B){ A; }
Beispiel:
A B B A A sum = 0; sum = 0; i = z1; i = z1; do{ sum = sum+i; i = i+1; }while(i<=z2); } sum = sum+i; i = i+1; while(i<=z2){ sum = sum+i; i = i+1; B A A
Aufgabe: Wie stellt man eine while-Schleife durch eine do...while –Schleife dar ?
Das Programm ist wieder in einer do...while-Schleife ! B Das Programm ist wieder in einer do...while-Schleife ! w A f B w Angenommen, das Programm wurde bis an diesen Punkt abgearbeitet. Was fällt dann auf ?
while(B){ A; } if(B){ do{ A; }while(B); }
Beispiel:
B B B A A sum = 0; i = z1; sum = 0; i = z1; while(i<=z2){ sum = sum+i; i = i+1; } } if(i<=z2){ do{ sum = sum+i; i = i+1; }while(i<=z2); B A A
Geben Sie eine weitere Möglichkeit an, eine Aufgabe: Geben Sie eine weitere Möglichkeit an, eine while-Schleife durch eine do...while –Schleife darzustellen.
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. ...
dar, bzw. eine do...while –Schleife Aufgabe: Wie stellt man eine for-Schleife durch eine do...while –Schleife dar, bzw. eine do...while –Schleife
Man wandelt die for-Schleife in eine while –Schleife um und dann die while –Schleife in eine do...while –Schleife bzw. umgekehrt, kurz:
for-Schleife <==> while-Schleife <==> do...while –Schleife siehe oben (frühere Folie) <==> while-Schleife siehe oben (frühere Folie) <==> do...while –Schleife