4tes Aufgabenblatt
In diesem Aufgabenblatt geht es um CMake, Speicherklassen und Effizienz:
Programmieraufgabe P1:
Ãœbersetzen Sie Ihr Programm mit CMake (via Definition eines entsprechenden CMakeLists.txt)
Programmieraufgabe P2:
Verwenden Sie eine modullokale Variable “count” um die Anzahl der Aufrufe von fibo mitzuzählen. Schreiben Sie eine Funktion get_fibo_calls(), welche die Anzahl der Aufrufe zurückgibt. Geben Sie diese Anzahl in main() aus. Achtung: Anpassung des Headers nicht vergessen!
Programmieraufgabe P3:
- Wieviele Aufrufe benötigt fibo(6) ?
- Wieviele Aufrufe benötigt fibo(42) ?
- Wieviele Aufrufe benötigt fibo(fibo(6)) ?
- Wieviele Aufrufe benötigt fibo(fibo(fibo(6)) ?
- Wieviele Aufrufe benötigt fibo(fibo(fibo(7)) ?
Programmieraufgabe P4:
Im Hauptmodul sollen nun keine printfs mehr vorkommen. Lagern Sie daher den entsprechenden Code in ein weiteres Nebenmodul print.c/.h aus. Achtung: Anpassung von CMakeLists.txt nicht vergessen!
Checkliste
- Mit wie vielen Leerzeichen rücken Sie ein?
- Welche maximale Einrückungstiefe kommt in Ihrem Programm vor?
- Welche maximale Schachtelungsstiefe kommt in Ihrem Programm vor?
- Wenn Sie richtig eingerückt haben, dann gibt es keine Anweisungen mit Einrückungstiefe 0. Haben Sie Sich daran gehalten?
- Haben Sie Sich an die zwei Konventionen für .c und .h Files gehalten?
- Welche zwei Konventionen waren das nochmal?
- Welche 4 Speicherklassen kennen Sie?
- Welche Speicherklasse ist (im Normalfall) verboten?
- Wieso ist sie verboten?
- Welche Speicherklasse verwenden wir wann immer möglich?
- Welcher Anwendungsfall ergibt sich für die übrig bleibenden Speicherklassen? Welches Stichwort beschreibt diesen Anwendungsfall am besten?
- Was ist der Sichtbarkeitsbereich einer lokalen Variable?
- Was ist die Lebensdauer einer lokalen Variable, die in einer Funktion deklariert wurde?
- Was ist die Lebensdauer einer statischen Variable, die in einer Funktion deklariert wurde?
- Was ist die Lebensdauer einer modullokalen Variable?
- Ist die modullokale Variable count in main() sichtbar?
- Ist die Implementierung von fibo() effizient?
- Was schätzen Sie, wie lange die letzte Berechnung in Aufgabe P3 dauert? Tipp: die gesamte Lebensdauer des Universums ist ca. $5\cdot10^{17}$ bzw. $2^{57}$ Sekunden