DrippleTripple
Mitglied
Hi,
ich habe hier folgende Aufgabe bekommen:
Gegeben sei die folgende Java-Methode:
static int f(int n) {
assert n >= 0; // Vorbedingung P
int s = 0,
r = 1;
for (int i = 0; i <= n; i++) {
s = s + r;
r = r + 2;
}
assert ...; // Nachbedingung Q (*)
return s;
}
Welche Werte besitzen die Variablen s und r zum Zeitpunkt der Ausführung der assert-Anweisung (*)? Formulieren Sie eine entsprechende Nachbedingung Q. Schreiben Sie Q als Java-Ausdruck, sodass dieser in der assert-Anweisung (*) verwendet werden kann.
Also ganz salopp hätte ich gesagt, dass Q gleich s>=1 ist, aber ich denke ich muss dass in Abhängigkeit von n angeben. Sprich meine Werte s=s+r und r = r+2 als n angegeben werden müssen:
Nehmen wir an n sei 3, dann wird die schleife genau 3 mal durchlaufen:
1) s=1+0=1
r= 1+2=3
2) s=1+3=4
r=3+2=5
3) s=4+5=9
r=5+2=7
Also habe ich für s und r jeweils eine arithmetische Folge.
s = {1,4,9...} folgt => s= n^2
r={3,5,7...} folgt =>r= r(n-1)+2
Wie formuliere ich denn nun meine Nachbedingung? Irgendwie kann ich dass nicht in einen Javacode übersetzen...
ich habe hier folgende Aufgabe bekommen:
Gegeben sei die folgende Java-Methode:
static int f(int n) {
assert n >= 0; // Vorbedingung P
int s = 0,
r = 1;
for (int i = 0; i <= n; i++) {
s = s + r;
r = r + 2;
}
assert ...; // Nachbedingung Q (*)
return s;
}
Welche Werte besitzen die Variablen s und r zum Zeitpunkt der Ausführung der assert-Anweisung (*)? Formulieren Sie eine entsprechende Nachbedingung Q. Schreiben Sie Q als Java-Ausdruck, sodass dieser in der assert-Anweisung (*) verwendet werden kann.
Also ganz salopp hätte ich gesagt, dass Q gleich s>=1 ist, aber ich denke ich muss dass in Abhängigkeit von n angeben. Sprich meine Werte s=s+r und r = r+2 als n angegeben werden müssen:
Nehmen wir an n sei 3, dann wird die schleife genau 3 mal durchlaufen:
1) s=1+0=1
r= 1+2=3
2) s=1+3=4
r=3+2=5
3) s=4+5=9
r=5+2=7
Also habe ich für s und r jeweils eine arithmetische Folge.
s = {1,4,9...} folgt => s= n^2
r={3,5,7...} folgt =>r= r(n-1)+2
Wie formuliere ich denn nun meine Nachbedingung? Irgendwie kann ich dass nicht in einen Javacode übersetzen...