3tes Aufgabenblatt
In diesem Aufgabenblatt geht es um eine Modularisierung eines C-Programms mit Hilfe des sog. Linkers. Es kommen Funktions-Prototypen und Implementierungen zu Einsatz:
Programmieraufgabe P1:
Berechnung Sie die Kapitalverdoppelungszeit mit Hilfe einer Funktion „verdoppelung“. Diese berechnet für einen bestimmten Zinssatz z die Anzahl der Jahre j bis zur Verdoppelung des eingesetzten Kapitals k und gibt die Anzahl j zurück. Die Funktion soll keine printfs enthalten. Globale Variablen sind verboten.
Beispielrechnung für 3% Zinsen und 100 EUR Startkapital: aus 100 EUR werden in einem Jahr 103 EUR. Solange wiederholen bis das Kapital auf mindestens 200 angewachsen ist.
Programmieraufgabe P2:
Geben Sie eine Tabelle aus, welche die Verdoppelungszeit für verschiedene Zinssätze darstellt. Verwenden Sie Zinssätze von 1% bis 10% in 1%-Schritten. Verständnisfrage: Welche Prozentsätze führen zu einer Verdoppelung in unter 10 Jahren?
Programmieraufgabe P3:
Verschieben die Implementierung der Verdoppelungsfunktion hinter main() via Vorwärtsdeklaration.
Programmieraufgabe P4:
Verlagern Sie anschließend die Verdoppelungsfunktion in ein Nebenmodul. Die Implementierung kommt in “verdoppelung.c”, der Prototyp in “verdoppelung.h”. Compilieren Sie das Programm Schritt für Schritt auf der Kommandozeile, d.h. erst Modul für Modul Ãœbersetzen dann insgesamt Linken).
Checkliste
- Was ist eine Referenz und was ist insbesondere eine undefinierte Referenz?
- Mit welchem Programm können Sie undefinierte Referenzen anzeigen lassen.
- Nach was hält man hier Ausschau?
- Welchen Schleifentyp verwenden Sie bei Ihre Verdoppelungsberechnung (bestimmte oder unbestimmte Schleife, abweisende oder nicht-abweisende Schleife)?
- An welcher Adresse liegt main und die Verdoppelungsfunktion?
- Welche Kommandozeile haben Sie für P1 verwendet?
- Welche Kommandozeilenbefehle haben Sie für P4 benötigt?
- Was unterscheidet die Implementierung von einem Protoptypen (Syntax)?
- Wo kommt der Präprozessor zum Einsatz?
- Was für Modifikationen bewirkt er?
- Welche Programme der GCC-Toolchain kennen sie nun bisher?