• Keine Ergebnisse gefunden

Praktikum zu

N/A
N/A
Protected

Academic year: 2021

Aktie "Praktikum zu"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Fakult¨ at f¨ ur Informatik Lehrstuhl 14 Lars Hildebrand

Praktikum zu

Einf¨ uhrung in die Informatik f¨ ur LogWiIngs und WiMas Wintersemester 2018/19

Ubungsblatt 7 ¨

Besprechung:

10.–14.12.2018 (KW 50)

Hinweise zum Tower-Defense-Spiel

Anstelle der erg¨ anzenden Aufgaben k¨ onnen Sie ab diesem ¨ Ubungsblatt auch die Aufgaben zu unserem Tower-Defense-Spiel bearbeiten. Diese Aufgaben finden Sie auf der Veranstaltungswebsite tiny.cc/eini1819.

Vorbereitende Aufgaben

Aufgabe 7.1: Strings – Vorbereitung

a) Warum ist es normalerweise nicht sinnvoll, Strings mit dem ==-Operator zu vergleichen?

b) Wie vergleicht man stattdessen den Inhalt zweier Strings?

Aufgabe 7.2: Fakult¨ at rekursiv – Vorbereitung

Auf Aufgabenblatt 5 haben wir die Fakult¨ at einer Zahl iterativ berechnet. Die Fakult¨ atsfunktion eignet sich auch sehr gut f¨ ur rekursive Funktionen. ¨ Uberlegen Sie sich eine rekursive Definition zur Berechnung der Fakult¨ at.

Ubungsblatt 7 ¨ Seite 1 von 3

(2)

Pr¨ asenzaufgaben

Aufgabe 7.3: Fakult¨ at rekursiv

a) Beschreiben Sie schrittweise von Hand, wie die Fakult¨ at von 5 entsprechend Aufgabe 7.2 berechnet wird.

b) Nun sollen Sie Ihre ¨ Uberlegungen aus Aufgabe 2 implementieren. Schreiben Sie dazu eine Funktion factorial in der Klasse RecursiveFactorial. Sie soll die Fakult¨ at einer Zahl rekursiv berechnen. Rufen Sie sie in der main-Funktion auf und geben Sie das Ergebnis aus.

Hinweis: Hier sollten Sie keine Ausgabe in den rekursiven Funktionen verwenden.

Aufgabe 7.4: Potenzen

Nun wollen wir eine rekursive mathematische Definition implementieren. Um die Potenz b

e

auszurech- nen, kann man folgende Funktion benutzen (b ∈ R und e ∈ N , mit b als Basis und e als Exponent):

pow(b, e) =

 

 

1 falls e = 0

pow(b, e/2)

2

falls e gerade b · pow(b, e − 1) sonst

Machen Sie sich am Beispiel 3

5

klar, dass diese Funktion tats¨ achlich funktioniert.

Implementieren Sie diese Funktion in der Klasse Pow im Paket blatt07. Ignorieren Sie bei Ihrer Implementierung den Fall, dass der Exponent auch negativ sein kann.

Aufgabe 7.5:

” ganz einfache“ Rekursion

In dieser Aufgabe wollen wir uns tiefer mit dem Verhalten von rekursiven Programmen besch¨ aftigen.

Erstellen Sie eine Klasse EasyRecursion daf¨ ur.

a) Schreiben Sie eine rekursive Funktion descendingPrint, die die Zahlen von 1 bis n in abstei- gender Reihenfolge (von n bis 1) ausgibt. n ist der Parameter der Funktion.

b) Kopieren und ver¨ andern Sie die Funktion so, dass die Zahlen aufsteigend (von 1 bis n) ausgegeben werden. Nennen Sie die neue Funktion ascendingPrint.

Ubungsblatt 7 ¨ Seite 2 von 3

(3)

Aufgabe 7.6: Basisumrechnung

In den Aufgaben von Blatt 1 haben Sie bereits gelernt, wie man Zahlen in andere Zahlensysteme umrechnet. Implementieren Sie in der Klasse EasyRecursion eine Funktion

public static void printInBase(int n, int b) {...}

, mit der die Dezimalzahl n zur Basis b ausgegeben werden soll. Nehmen Sie an, dass n > 0 und 2 ≤ b ≤ 10 gilt.

Erg¨ anzende Aufgaben

Aufgabe 7.7: Euklidscher Algorithmus

Abschließend wollen ein rekursives Programm analysieren und optimieren. Der gr¨ oßte gemeinsame Teiler (ggT) zweier nat¨ urlicher Zahlen m und n ist die gr¨ oßte Zahl, durch die sowohl m als auch n teilbar ist. Ein Algorithmus zur Berechnung des ggT ist der euklidsche Algorithmus. In diesem wird immer abwechselnd die kleinere Zahl von der gr¨ oßeren abgezogen, bis eine von beiden 0 ergibt. Die andere Zahl ist dann der ggT. Eine rekursive Implementierung k¨ onnte so aussehen:

public static int euclid(int m, int n) { if(m == 0)

return n;

else if(n == 0) return m;

else if(m > n)

return euclid(m - n, n);

else

return euclid(m, n - m);

}

Diese Implementierung funktioniert, ist aber ineffizient. Im Laufe der Veranstaltung haben Sie eine M¨ oglichkeit kennengelernt, die Rechenschritte dieses Algorithmus zu verk¨ urzen.

Berechnen Sie per Hand euclid(15, 42) .

Was f¨ allt Ihnen auf? Angenommen m sei nach der letzten Vertauschung gr¨ oßer als n, was haben Sie berechnet, wenn in diesem Rekursionsschritt m nicht mehr gr¨ oßer als n ist?

Geben Sie eine rekursive Implementierung des euklidschen Algorithmus an, der sich diese Erkenntnis zu Nutze macht.

Ubungsblatt 7 ¨ Seite 3 von 3

Referenzen

ÄHNLICHE DOKUMENTE

schmal rund oval länglich Haare / Frisur:?. Haare

Schreibe eine Geschichte, in der die drei Wörter vorkommen und eine wichtige Rolle spielen.. Plane

Verwende in deiner Geschichte nicht immer die gleichen Verben.. Wähle Verben, die ganz genau beschreiben, was in deiner

Mit diesem Elternbrief kann man die Kinder dazu animieren, sich in den Ferien gegenseitig von ihren Ferienerlebnissen mit einer Postkarte zu

Es fällt auf, dass diese alltäglichen, lebenspraktischen Dinge von Kindern heute immer seltener ausgeführt werden können.. Viele Kinder eignen sich bereits im Kindergarten ein

Anschließend schreiben sie die Wörter auf ihren Block und sprechen dabei silbisch mit1. 1 Statt die Kopiervorlage zu laminieren und den Schülern wasserlösliche

Fällt ihm nicht rechtzeitig ein passender Reim ein, darf der nachfolgende Spieler ein Wort nennen und bekommt die Karte.. Wenn auch dieser kein passendes Wort nennen kann, wird

Hier bietet das Erzählen – als Zwischenschritt auf dem Weg zum eigenen Text – eine große Hilfe und Entlastung, denn dabei besteht die Möglichkeit, Gedanken zu ordnen und in Worte