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


Options: