OOPM1617 Übungswoche 10 (23.01-29.01.17)
Zielsetzung für die Übung
- Besprechung der Hausaufgabe aus letzter Woche
- Vor- und Nachbedingung
- Verifikation von Algorithmen
Übungsaufgabe:
{n >= 0}
{true}
{0 == 0}
{0 == (1 - 1) * 1 / 2}
i = 1;
{0 == (i - 1) * i / 2}
s = 0;
{s == (i - 1) * i / 2}
while (i <= n) {
{s == (i - 1) * i / 2 && i <= n}
[1]
{s + i == i * (i + 1) / 2}
s = s + i;
{s == i * (i + 1) / 2}
{s == (i + 1 - 1) * (i + 1) / 2}
i = i + 1;
{s == (i - 1) * i / 2}
}
{s == (i - 1) * i / 2 && n == i - 1 }
{s == (i - 1) * (i - 1 + 1) / 2 && n == i - 1 }
{s == n * (n + 1) / 2 && n == i - 1 }
{s == n * (n + 1) / 2 && i == n + 1}
{s == n * (n + 1) / 2} => {I && !B}
Beweis zu [1]
{s + i == i * (i + 1) / 2}
{s == (i * (i + 1) - 2*i) / 2}
{s == (i^2 + i - 2*i) / 2}
{s == (i^2 - i) / 2}
{s == i*(i - 1) / 2}
Zielsetzung für das Programmierpraktikum
- Objektorientiere Verträge
page revision: 2, last edited: 24 Jan 2017 15:10