OOPM1617 Übungswoche 09 (16.01-22.01.17)

Zielsetzung für die Übung

  • Besprechung der Hausaufgabe aus letzter Woche
    • Beweis von Eigenschaften
  • Vor- und Nachbedingung

Übungsaufgabe:

    /*
     * sqrt berechnet Näherungsweise die Quadratwurzel von x.
     * x ist eine Zahl größer gleich 0 (x>=0)
     */
    public static double sqrt(double x) {
        assert x >= 0;
        double epsilon = 1E-15; // 1 * 10^-15
        double r = x;
        assert r == x && x >= 0;
        while (Math.abs(x - r * r) > epsilon) {
            assert x >= 0 && r > 0 && Math.abs(x - r * r) > epsilon;
            r = (x / r + r) / 2.0;
            assert x >= 0 && r > 0;
        }
        assert Math.abs(x - r * r) <= epsilon && x >= 0 && r > 0;
        return r;
    }

    /*
     * ggt berechnet den größten gemeinsamen Teiler von x und y
     * x und y sind Natürliche Zahlen (x>0, y>0)
     */
    private static int ggt(int x, int y) {   
        assert x > 0 && y > 0;
        while (y != 0) {
            assert x > 0 && y > 0;
            if (x > y) {
                assert x > y && y > 0;
                x = x - y;
                assert x > 0 && y > 0;
            } else {
                y = y - x;
            }
            assert y >= 0 && x > 0;
        }
        assert y == 0 && x > 0;
        return x;
    }

Zielsetzung für das Programmierpraktikum

  • Ausnahmen