Schleifen- beobachtung. Aufgabe: Schreiben Sie ein Programm (auf Papier), das die folgende Summe...

Preview:

Citation preview

Schleifen-beobachtung

Aufgabe:Schreiben Sie ein

Programm (auf Papier), das die folgende Summe

berechnet:1+2+3+4+...+98+99+100

Programmier-Idee:

1

sum

2+

sum

3+

sum

4+

sum

...+

umgesetzt in Java ergibt dies:

sum = 1;sum = sum+2;sum = sum+3;sum = sum+4;...

Diese sich immer wiederholenden Anweisungen kann man kürzer

darstellen durch eine...

Schleife !

Wert von sum: 1

Wert von sum: 1 + 2

Wert von sum: 1 + 2 + 3

Wert von sum: 1 + 2 + 3 + 4

sum = sum+i;

Bei jedem Schleifendurchgang muß i

um 1 erhöht werden !

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

sum =i =

0;1;

100

Vorschlag für die Anfangswerte.

Vorschlag für die Bedingung

Woher weiß man, daß diese Werte ein korrektes Programm liefern ??

Man muß die Werte von i und sum beobachten !

Beobachtung von Programmen

(Debuggen)

Jedesmal, wenn das Programm an die mit dem Pfeil --> bezeichnete Stelle kommt, wird der Prozessor gedanklich angehalten (analog: der Filmprojektor) und die aktuellen Werte der Variablen in die Tabelle eingetragen (analog: Das Bild , das gerade vom Filmprojektor gezeigt wird, also die aktuelle Momentaufnahme). Dann wird der Film wieder bis an die mit dem Pfeil --> bezeichnete Stelle weitergespult und es werden wieder die aktuellen Werte der Variablen in die Tabelle eingetragen.

In der Tabelle wird also die dynamische Entwicklung der Inhalte der Variablen festgehalten.

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

sum =i =

0;1;

100

sum 1 1+2 1 +2+3 ...1+2+3+4

i 2 3 4 ...5 101

Welchen Wert hat i, wenn das Programm das letzte Mal an diese Stelle kommt ?

Welchen Wert hat dann sum?

Welchen Zusammenhang gibt es zwischen i und sum ?

Die letzte Zahl in sum ist jeweils um 1 kleiner als

der Wert von i !

1+2+3+...+98+99+100

Hier wird beobachtet

Alternative Möglichkeit, die Korrektheit eines

Programms zu "beweisen":

Man testet die Schleife für wenigere

Schleifendurchgänge

sum = 0;i = 1;

while(i<=100){

sum = sum+i;

i = i+1;

}

Man wählt also nicht 100, sondern kleinere Werte wie z.B. 3 oder 4.

sum = 0;i = 1;

while(i<= ){

sum = sum+i;

i = i+1;

}

Man wählt also nicht 100, sondern kleinere Werte wie z.B. 3 oder 4.

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

Man wählt also nicht 100, sondern kleinere Werte wie z.B. 3 oder 4.

Jetzt betrachtet man für jede Anweisung, wie sich die Variablen verändern.

Welche Anweisungen werden jetzt also konkret gemacht und welche Variablen werden auf welche Werte gesetzt? Wir

beginnen mit der 1. Anweisung...

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum

i

00

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 11

0

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 11

0

1

wahr

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 11

0

1

0 11

1

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 11

0

1

0 11

1

12

2

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 1

2

1

2

wahr

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 1

2

1

1 21+2

1+2

2

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 1

2

1

1 21+2

23

2 3

1+2

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 1

3

1

2 3

1+2

wahr

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 1

3

1

2 3

1+2 31+2+3

1+2 1+2+3

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 1

3

1

2 3

1+2 31+2+3

1+2 1+2+3

34

4

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 1

1

2 3

1+2 1+2+3

4

4

falsch

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 1

1

2 3

1+2 1+2+3

4

4

sum = 0;i = 1;

while(i<=3 ){

sum = sum+i;

i = i+1;

}

sum 0

i 1

1

2 3

1+2 1+2+3

4

Damit berechnet das Programm die Summe 1 + 2 + 3wenn man für die Bedingung i <= 3schreibt. Damit kann man vermuten, dass dies analog für i <= 100 funktioniert. Um sicher zu gehen, sollte man noch ein paar weitere Tests machen, wie z.B. für i <= 4

Recommended