12.07.2015 Aufrufe

2. Übungsblatt

2. Übungsblatt

2. Übungsblatt

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Programmierung WS12/13<strong>Übungsblatt</strong> 2 (Abgabe 0<strong>2.</strong>11.2012)Hinweise:• Wenn Sie mit dem Aussehen Ihres Kreuzes unzufrieden sind, weil es vertikal gestreckt ist, liegt diesvermutlich daran, dass in üblichen Schriftarten ein Zeichen ca. 2 mal so hoch wie breit ist. Wollen Sieein gleichmäßigeres Ergebnis erzielen, so dürfen Sie die y-Werte (also die Höhe) aller Koordinatenvor der Eingabe in inKreuz mit 2 multiplizieren. Dies wurde auch bei der obigen Beispielausgabegemacht.• Sie dürfen statt eines “#” für ein schöneres Ergebnis auch das Unicode-Zeichen “\u2663” (dargestelltals ♣) verwenden.d) ∗ Das Aussehen des Kreuzes kann noch verbessert werden, indem der Mittelpunkt des obersten Kreises sonach oben verschoben wird, dass die Mittelpunkte der drei oberen Kreise ein gleichseitiges Dreieck bilden.Dadurch entsteht jedoch eine Lücke im Kreuz, die durch einen zusätzlichen Test, ob die aktuelle Koordinateinnerhalb dieses Dreiecks liegt, wieder ausgefüllt werden kann. Adaptieren Sie Ihr Programm, sodasses diese optische Verbesserung umsetzt (auch dies wurde für die obige Beispielausgabe verwendet).Tutoraufgabe 5 (Verifikation):Gegeben sei folgendes Java-Programm P :〈 y ≥ 0 〉 (Vorbedingung)r = 1;c = y;while (c > 0) {r = r * x;c = c - 1;}〈 r = x y 〉 (Nachbedingung)a) Vervollständigen Sie die folgende Verifikation des Algorithmus im Hoare-Kalkül, indem Sie die unterstrichenenTeile ergänzen. Hierbei dürfen zwei Zusicherungen nur dann direkt untereinander stehen, wenndie untere aus der oberen folgt. Hinter einer Programmanweisung darf nur eine Zusicherung stehen, wenndies aus einer Regel des Hoare-Kalküls folgt.Hinweise:• Sie dürfen beliebig viele Zusicherungs-Zeilen ergänzen oder streichen. In der Musterlösung werdenallerdings genau die angegebenen Zusicherungen benutzt.• Bedenken Sie, dass die Regeln des Kalküls syntaktisch sind, weshalb Sie semantische Änderungen(beispielsweise von x+1 = y+1 zu x = y) nur unter Zuhilfenahme der Konsequenzregeln vornehmendürfen.7


Programmierung WS12/13<strong>Übungsblatt</strong> 2 (Abgabe 0<strong>2.</strong>11.2012)〈y ≥ 0〉r = 1;〈 〉c = y;〈 〉〈 〉while (c > 0) {〈 〉〈 〉r = r * x;〈 〉c = c - 1;〈 〉}〈 〉〈 〉〈r = x y 〉b) Untersuchen Sie den Algorithmus P auf seine Terminierung. Für einen Beweis der Terminierung muss eineVariante angegeben werden und mit Hilfe des Hoare-Kalküls die Terminierung unter der Voraussetzungy ≥ 0 bewiesen werden.Aufgabe 6 (Verifikation):Gegeben sei folgendes Java-Programm P :〈ϕ〉(Vorbedingung)r = 1;while (r * r < x) {r = r + 1;}〈ψ〉(Nachbedingung)(6 Punkte)8


Programmierung WS12/13<strong>Übungsblatt</strong> 2 (Abgabe 0<strong>2.</strong>11.2012)a) Als Vorbedingung ϕ für das oben aufgeführte Programm P gelte x > 0 und als Nachbedingung ψ gelter = ⌈ √ x ⌉ (hierbei ist ⌈x⌉ die ganzzahlige Aufrundung von x; siehe auch http://de.wikipedia.org/wiki/Abrundungsfunktion_und_Aufrundungsfunktion). Vervollständigen Sie die folgende Verifikationdes Algorithmus im Hoare-Kalkül, indem Sie die unterstrichenen Teile ergänzen. Hierbei dürfen zweiZusicherungen nur dann direkt untereinander stehen, wenn die untere aus der oberen folgt. Hinter einerProgrammanweisung darf nur eine Zusicherung stehen, wenn dies aus einer Regel des Hoare-Kalküls folgt.Hinweise:• Sie dürfen beliebig viele Zusicherungs-Zeilen ergänzen oder streichen. In der Musterlösung werdenallerdings genau die angegebenen Zusicherungen benutzt.• Bedenken Sie, dass die Regeln des Kalküls syntaktisch sind, weshalb Sie semantische Änderungen(beispielsweise von x+1 = y+1 zu x = y) nur unter Zuhilfenahme der Konsequenzregeln vornehmendürfen.〈x > 0〉r = 1;〈 〉〈 〉while (r * r < x) {〈 〉〈 〉r = r + 1;〈 〉}〈 〉〈 〉〈r = ⌈ √ x ⌉〉b) Untersuchen Sie den Algorithmus P auf seine Terminierung. Für einen Beweis der Terminierung musseine Variante angegeben werden und mit Hilfe des Hoare-Kalküls die Terminierung bewiesen werden.Hinweis: Sie dürfen in dieser Teilaufgabe annehmen, dass die Variable r nicht mit negativen Zahlenbelegt ist, d. h. Sie dürfen bei Verwendung der Konsequenzregeln immer von r ≥ 0 ausgehen.9

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!