Hausaufgabe "Module"
← C | ● | CMake und SVN →
a) Starten Sie mit dem Beispielprogramm aus der Vorlesung und realisieren ein Modul, das eine Funktion zur Berechnung der n-ten Fibonacci Zahl enthält. Übersetzen Sie es auf der Kommandozeile.
b) Realisieren die folgende einfache Aufgabenstellung mit Hilfe eines weiteren Moduls in Modultechnik:
- 10-elementiges Array in Modul #1 deklarieren und mit den Zahlen von 1–10 initialisieren.
- 5tes Element des Array’s in Modul #2 (Hauptmodul) ausgeben.
Zur Motivation: Stellen Sie Sich vor, das Array repräsentiert eine Bank mit 10 Bankschließfächern.
Das Array soll modullokal in einem Nebenmodul deklariert werden (array.cpp/.h). Aus dem Hauptmodul dürfen Sie daher nicht auf das Array direkt zugreifen, sondern Sie benötigen eine Funktion (d.h. einen sog. Getter), welche den Wert des i-ten Array-Elements ausliest und zurück gibt.
Hinweise zur Bearbeitung:
- Erstellen Sie zunächst die Module, in dem sie nur ein (noch) leeres Nebenmodul und ein Hauptmodul mit der leeren main-Funktion erstellen (Beispiel-Code finden Sie hier)!
- Testen Sie, ob das leere Basisprogramm kompiliert (Salamitaktik)!
- Erstellen Sie nun die benötigten Funktionen (im Prinzip nur eine einzige, d.h. eine sog. Zugriffsfunktion bzw. access function = getter) prototypisch im Header “array.h” und die Implementierung entsprechend in der C++ Datei “array.cpp”. Zusätzlich benötigen Sie ein Main-Modul “main.cpp”, welches den Getter bzw. die Zugriffsfunktion aufruft und die Ausgabe mittels
printf()
bewerkstelligt.
Compilieren Sie Ihr Programm unter Unix mit dem g++.
Optionale Zusatzaufgaben:
c) Realisieren Sie ein weiteres Nebenmodul (newton.cpp/.h), in dem die Wurzelberechnung (per Newton-Iteration) als Funktion bereitgestellt wird.
d) Beschleunigen Sie die Wurzelberechnung mit Hilfe einer vorberechneten Tabelle: Verwenden Sie im Modul array.cpp/.h anstelle eines 10-elementigen Arrays ein 1000-elementiges Array und initialisieren Sie das i-te Element auf die Quadratwurzel von i per Newton-Iteration.
Q Was ist der Vorteil bzw. Nachteil einer solchen Wurzel-Tabelle in Bezug auf Speicherverbrauch und Geschwindigkeit?
Q Angenommen wir inkludieren in array.h die Prototypen von newton.h, was wĂĽrde passieren?
← C | ● | CMake und SVN →