Übung 2 - auf Matthias

Werbung
H. Schweppe
I. Dageförde
Algorithmen und Programmierung II
Objektorientierte Programmierung
Ausgabe: 24.4.2008
Abgabe: 2.5.2008, 10:00
Übung 2
Aufgabe 2.1 (10 P)
a) Definieren Sie die Befehle xi = xj + c , xi = xj - c durch ein elementares while-Programm
mit den Befehlen xi = xi +1 , xi = xi -1, while x != 0 {P}.
Im Folgenden können alle Befehle, die schon definiert sind (VL oder Ihre Lösungen)
verwendet werden.
Definieren Sie folgende Befehle durch ein while-Programm:
b) NOP (no operation), der nichts tut
c) xi = xj - xk
d) if xi > c then {P}
e) if xi = xj then {P1} else {P2}
Aufgabe 2.2 (10 P)
a) Viele Programmiersprachen kennen die abweisende Schleife
repeat {P} until x=0
Mit der Semantik: führe P so lange aus, bis x den Wert 0 hat. Die Prüfung findet nach der
Ausführung von P statt.
Zeigen Sie, dass repeat- und while-Programme äquivalent
sind, also while durch repeat und umgekehrt ausgedrückt werden können. Dazu können Sie
außer den Zuweisungen von while-Registermaschinen Fallunterscheidungen (Vorlesung,
Übung 2.1) verwenden.
b) Schreiben Sie ein while-Programm zur Berechnung von
xi = xj DIV xk und xm = xj MOD xk .
c) Welchen Fehler hat die folgende Implementierung des μ-( "mü"-)Operators durch ein
while-Programm?
i=0; y=1;
while (y > 0 ) {y=g(i,x), i=i+1;};
Aufgabe 2.3 (10 P)
a) Verändern Sie das Beispielprogramm Primes.java so, dass die Dichte der Primzahlen
jeweils in Hunderterschritten ermittelt und ausgedruckt wird. Die Dichte (pro 100) ist hier
definert als
(Anzahl Primzahlen zwischen n und n+100 ) / 100.0 . Verzichten Sie auf die Ausgabe der
Primzahlen selbst und geben Sie lediglich in Hunderterschritten die Dichte aus, etwa "Von
1700 bis 1800: 0.12".
b) Das in PASCAL auf einer Folie angegebene Programm "eratos" implementiert einen etwas
anderen Algorithmus, nämlich das Sieb des Eratostenes. Implementieren Sie diesen
Algorithmus in Java.
1
H. Schweppe
I. Dageförde
Algorithmen und Programmierung II
Objektorientierte Programmierung
Ausgabe: 24.4.2008
Abgabe: 2.5.2008, 10:00
Aufgabe 2.4 (10 P)
a) System.out.println(" MAX_VALUE+1 =="+(Integer.MAX_VALUE+1));
liefert folgende Ausgabe:
MAX_VALUE+1 ==-2147483648 .
Dagegen ist Infinity + 1 == Infinity + 2.
Erklären Sie das Verhalten. Informieren Sie sich ggf. über den IEEE-Standard zu
Gleitpunktzahlen.
b) Beschreiben Sie möglichst präzise in wenigen Zeilen zentrale Unterschiede zwischen
imperativer und funktionaler Programmierung.
2
Herunterladen