Schleifen- beobachtung. Aufgabe: Schreiben Sie ein Programm (auf Papier), das die folgende Summe...
-
Upload
leonhard-zapf -
Category
Documents
-
view
105 -
download
1
Transcript of Schleifen- beobachtung. Aufgabe: Schreiben Sie ein Programm (auf Papier), das die folgende Summe...
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