Hallo,
ich habe hier bei java ist auch eine Insel über asserts erfahren. also die möglichkeit bedingungen in das Programm einzubauen, sodass man auf Exceptions verzichtet...
Leider sind da kaum Bsp. so dass ich nicht recht weiß, wann man welche asserts einbauen sollte und wann nicht und ob es immer vorbedingung mit einer nach bedingung verknüpft werden muss. muss es auch assert innerhalb von schleifen geben???
Hier also eine konkrete Frage (eine Aufgabe aus dem anderen Buch):
Es sei die Methode gegeben:
static intf(int n) {
assert n>=0; // Vorbedingung
int s=0,
r=1;
for (int i = 0; i <=n;i++){
s = s+r;
r = r+2;
}
assert...; // Nachbedingung (*)
return s;
}
Und hier nun ein wenig dubiosen Fragen in meinen Augen...
Welche Werte besitzen r und s zum Zeitpunkt der Ausführung der Nachbedingung? Formulieren Sie eine enstsprechende Nachbedingung. Schreiben Sie die Nachbedingung als Java Ausdruck, so dass dieser in der assert (*) Anweisung verwendet werden kann.
Also ist mir alles ein wenig Schleierhaft. Erstens ist n nirgends deklariert... also kann es ja jeden beliebigen Wert annehmen, welcher größer oder gleich null ist... Die Variablen sind ja von gerde abhängig, da ja n letzendlich bestimmt wie oft die schleife durchalufen wird.
Und Nachbedingung kann doch letzendlich alles sein oder???
Stehe da ein wenig auf dem Schlauch und weiß nicht was ich mit sowas nafangen soll... Wäre also für jede Hilfe dankbar.
ich habe hier bei java ist auch eine Insel über asserts erfahren. also die möglichkeit bedingungen in das Programm einzubauen, sodass man auf Exceptions verzichtet...
Leider sind da kaum Bsp. so dass ich nicht recht weiß, wann man welche asserts einbauen sollte und wann nicht und ob es immer vorbedingung mit einer nach bedingung verknüpft werden muss. muss es auch assert innerhalb von schleifen geben???
Hier also eine konkrete Frage (eine Aufgabe aus dem anderen Buch):
Es sei die Methode gegeben:
static intf(int n) {
assert n>=0; // Vorbedingung
int s=0,
r=1;
for (int i = 0; i <=n;i++){
s = s+r;
r = r+2;
}
assert...; // Nachbedingung (*)
return s;
}
Und hier nun ein wenig dubiosen Fragen in meinen Augen...
Welche Werte besitzen r und s zum Zeitpunkt der Ausführung der Nachbedingung? Formulieren Sie eine enstsprechende Nachbedingung. Schreiben Sie die Nachbedingung als Java Ausdruck, so dass dieser in der assert (*) Anweisung verwendet werden kann.
Also ist mir alles ein wenig Schleierhaft. Erstens ist n nirgends deklariert... also kann es ja jeden beliebigen Wert annehmen, welcher größer oder gleich null ist... Die Variablen sind ja von gerde abhängig, da ja n letzendlich bestimmt wie oft die schleife durchalufen wird.
Und Nachbedingung kann doch letzendlich alles sein oder???
Stehe da ein wenig auf dem Schlauch und weiß nicht was ich mit sowas nafangen soll... Wäre also für jede Hilfe dankbar.