Algorithmen und Programmierung Fachgebiet Telematik/Rechnernetze WS 12/13 Prof. Dr.-Ing. Günter Schäfer Übungsblatt 1 Aufgabe 1 2 Punkte Lösen Sie die folgenden zwei Terme auf. Bitte mindestens je drei Zwischenschritte angeben. 2 + if (2 > 1) then 5 · 8 else 7 · (3 + 35 mod 5) fi 3−if true∧false∨¬true then 5·8/10 else if false∨true∧true then 3+27/10 else 2 fi fi Aufgabe 2 2 Punkte Skizzieren Sie alle nicht-deterministischen Möglichkeiten (unter Beachtung der Vorrangregeln), die folgende Formel schrittweise auszuwerten: 4 · (25 + 3 · (4 + 5)) − 314 + 4 · 37 Aufgabe 3 6 Punkte Ein Bonbonglas ist mit Lakritz und Karamell-Bonbons gefüllt. Außerdem liegt neben dem Glas eine ,,Wundertüte”, die mit enorm viel Lakritz gefüllt ist. Der folgende Vorgang soll nun solange ausgeführt werden, bis nur noch eine einzelne Süßigkeit im Glas übrig ist: – Entnehmen Sie zwei beliebige Süßigkeiten aus dem Glas. – Falls beide Bonbons die gleiche Geschmacksrichtung haben, essen Sie beide auf und füllen ein Lakritz aus der nebenstehenden Tüte in das Glas. – Haben Sie ein Lakritz und ein Karamell gezogen, dürfen Sie nur das Lakritz naschen. Das Karamell-Bonbon müssen Sie wieder in das Glas zurücklegen. a) Terminiert dieser Vorgang? Wenn ja, welche Aussage kann allgemein über die letzte im Glas zurückbleibende Süßigkeit getroffen werden? b) Nehmen Sie an, es existieren N Lakritz und kein Karamellbonbon im Glas; Wie viele Lakritz müssen Sie essen, bis das Glas leer ist oder nichts mehr gegessen werden kann? c) Gesetzt den Fall, es befinden sich zu Anfang des Versuchs gleich viel Lakritz und Karamellbonbons im Glas: können Sie eine Aussage dazu treffen, wie häufig Sie eines der beiden essen müssen? Falls nicht, können Sie angeben, wieviele Sie mindestens und wieviele Sie höchstens essen müssen? Hinweis: Wir empfehlen, eine genügend große Anzahl von Karamell- und LakritzBonbons zur praktischen Demonstration Ihrer Lösung mitzubringen. Eventuell kann man auch gelbe und grüne Gummibärchen nutzen (je nach Geschmack!). Aufgabe 4 2 Punkte Bitte geben Sie einen rekursiven Algorithmus für die Berechnung von n! an. Aufgabe 5 2 Punkte In der Vorlesung ist Ihnen die rekursive Lösung zu den Türmen von Hanoi vorgestellt worden. Wie viele Bewegungen müssen Sie durchführen, um einen Turm aus fünf Scheiben vom Start zum Ziel zu bringen? Können Sie eine Formel für beliebig hohe Türme angeben? Aufgabe 6 3 Punkte In der Vorlesung wurde Ihnen beigebracht, wie Kaffee gekocht wird. a) Zeichnen Sie ein Struktogramm des in der Vorlesung angegebenen Algorithmus zum Kaffeekochen. b) Verfeinern Sie das Struktogramm weiter um die Beschaffung eines sauberen Löffels (wer im Wohnheim wohnt, wird zunächst abwaschen müssen, als gut erzogener Student waschen Sie solange ab bis kein Geschirr übrig ist!) und führen Sie die Bedingung ein, dass in dem Kaffeeglas noch Pulver ist. Ist das nicht der Fall, so leihen Sie Kaffee vom Nachbarn (der hat immer welchen). c) Schreiben Sie den entstandenen Algorithmus als Pseudocode auf. Bitte achten Sie dabei darauf, eine gute Lesbarkeit durch einrücken der einzelnen Programmteile sicher zu stellen (siehe Vorlesungsskript). Aufgabe 7 3 Punkte Entwerfen Sie ein Pseudocode-Programm, das drei ganze Zahlen einliest und verarbeitet. Die Summe, das Produkt, das arithmetische Mittel und die größte der drei Zahlen sind auszugeben.