Lernfeld 6: Entwickeln und Bereitstellen von Anwendungssystemen Fallbeispiel Baukredit Ralf Adams, TBS1 Bochum Version 3.0 vom 12. August 2009
Inhaltsverzeichnis 1 Einführung 3 2 Handlungssituation: Zinsrechnung 4 2.1 Aufgabenstellung.................................. 4 2.2 Vorgehen...................................... 4 2.3 Karteikarten..................................... 4 3 Handlungssituation: Grafische Dokumentationsformen 6 3.1 Aufgabenstellung.................................. 6 3.2 Vorgehen...................................... 6 3.3 Karteikarten..................................... 6 4 Handlungssituation: Anwendereingaben 8 4.1 Aufgabenstellung.................................. 8 4.2 Vorgehen...................................... 8 4.3 Karteikarten..................................... 8 5 Handlungssituation: Eingabewiederholung 10 5.1 Aufgabenstellung.................................. 10 5.2 Vorgehen...................................... 10 5.3 Karteikarten..................................... 10 6 Handlungssituation: Zinsvarianten 12 6.1 Aufgabenstellung.................................. 12 6.2 Vorgehen...................................... 12 6.3 Karteikarten..................................... 12 7 Projekt: Annuitätsdarlehen 13 7.1 Aufgabenstellung.................................. 13 7.2 Vorgehen...................................... 13 7.3 Karteikarten..................................... 14 Fallbeispiel Baukredit 2
1 Einführung Die Verbraucherschutzzentrale NRW möchte für alle potentiellen Kreditnehmer eine Software, die verschiedene Darlehensarten und -angebote berechnet, zur Verfügung stellen. Sie werden im Rahmen Ihrer Ausbildung mit dieser Anforderung konfrontiert. Abgrenzung Folgende Themen werden in dieser Fallbeispiel nicht eingeführt.: Mehrfachverzweigung (switch/case) Array String (als Array von char) Strukturen Zeiger(arithmetik) Dynamische Speicherreservierung Selbsterstelle Funktionen Fallbeispiel Baukredit 3
2 Handlungssituation: Zinsrechnung 2.1 Aufgabenstellung Bitte erstellen Sie ein Programm, welches bei einem Endfälligem Darlehen aus einem Kreditbetragb (Darlehenssumme), dem jährlichen Effektivzins (Zinssatz) und der Laufzeit (in Jahren) die zu leistenden Zinsen berechnet. In der ersten Ausbaustufe sollen diese Beträge nicht vom Anwender eingegeben werden, sondern im Quelltext vorgegeben werden. 2.2 Vorgehen 1. Erarbeiten Sie in 2er-Teams den Algorithmus zur Berechnung des Ergebnisses. 2. Erarbeiten Sie, was für Zahlenarten Sie zur Berechnung brauchen (Natürliche Zahlen, Ganze Zahlen, Brüche usw.). 3. Finden Sie z.b. anhand des Skriptes heraus, welche Datentypen zu welchen Zahlenarten gehören. 4. Ermitteln Sie, welche Grundrechenarten Sie brauchen und welche Ihnen in C zur Verfügung gestellt werden. 5. Lassen Sie sich in die Bedienung der Entwicklungsumgebung einführen. 6. Lassen Sie sich die Umsetzung in C zeigen. 7. Testen Sie ihr Programm. 2.3 Karteikarten Erstellen Sie zu folgenden Themen Karteikarten: Wie lautet eine mögliche Definition von Algorithmus? Woher kommt das Wort Algorithmus? Welche Datentypen passen (annähernd) zu den mathematischen Zahlenarten: Natürliche Zahlen, Ganze Zahlen und Rationale Zahlen? Was ist ein Endfälliges Darlehen? Wie ist die Entstehungsgeschichte von C? Was ist die derzeit gültige ANSI-C Version? Fallbeispiel Baukredit 4
2 Handlungssituation: Zinsrechnung Was ist eine IDE? Welche Aufgaben haben der Präprozessor, der Compiler und der Linker? Was ist der Unterschied zwischen dynamischen und statischen Linken? Welche Aufgabe hat der Debugger? Welche Aufgabe hat die Funktion printf? Welche Header-Datei muss wie in ein C-Programm eingebunden werden, um printf benutzen zu können? Liste der wichtigsten Formatierungzeichen für printf. Liste der Steuerzeichen für printf. Was ist der ASCII-Code und was bedeutet Ländercode? Was ist der Unicode? Fallbeispiel Baukredit 5
3 Handlungssituation: Grafische Dokumentationsformen 3.1 Aufgabenstellung Sie werden gebeten, Ihre Lösung zu dokumentieren. Die Dokumentation soll den üblichen Anforderungen an die Designspezifikation entsprechen. Sie dokumentieren Ihre Lösung nach Nass- Shneiderman (Struktogramm) und als Programmablaufplan. 3.2 Vorgehen 1. Ermitteln Sie in 2er Teams die Symboltabelle und die Verwendungsregeln für Nassi-Shneiderman Diagramme (Struktogramme). 2. Installieren Sie ein Programm zur Bearbeitung von Struktogrammen. 3. Verwenden Sie das Programm zur Dokumentation Ihrer Lösung. 4. Ermitteln Sie in 2er Teams die Symboltabelle und die Verwendungsregeln für Programmablaufpläne. 5. Benutzen Sie Visio oder ein anderes Programm ihrer Wahl zur Dokumentation Ihrer Lösung. 3.3 Karteikarten Erstellen Sie zu folgenden Themen Karteikarten: Welchen Zweck haben Struktogramme und Programmablaufpläne? Wie lautet die DIN/ISO-Norm für Nassi-Shneiderman Diagramme (Struktogramm)? Wie sind die Struktogrammsymbole für eine einzelne Anweisung und für eine Folge von Anweisungen? Geben Sie ein Beispiel an! Wie lautet die DIN/ISO-Norm für Programmablaufpläne? Wie ist das Programmablaufplansymbol für den Start und für das Ende des Programms? Geben Sie ein Beispiel an! Fallbeispiel Baukredit 6
3 Handlungssituation: Grafische Dokumentationsformen Wie sind die Programmablaufplansymbole für eine einzelne Anweisung und für eine Folge von Anweisungen? Geben Sie ein Beispiel an! Wie ist das Programmablaufplansymbol für eine Bildschirmausgabe? Geben Sie ein Beispiel an! Wie werden im Programmablaufplan Kommentare notiert? Geben Sie ein Beispiel an! Gibt es weitere grafische Notationen für Algorithmen (z.b. in der UML)? Fallbeispiel Baukredit 7
4 Handlungssituation: Anwendereingaben 4.1 Aufgabenstellung Ihr Algorithmus ist akzeptiert worden. Leider fehlt der Anwendung die Möglichkeit einer Tastatureingabe. Sie werden gebeten, diese hinzuzufügen. 4.2 Vorgehen 1. Ermitteln Sie, welche Werte eingegeben werden können. 2. Ermitteln Sie sinnvolle Plausibilitätsprüfungen. 3. Ermitteln Sie Struktogrammsymbole für die Tastatureingabe und für die Einfachverzweigung. 4. Ermitteln Sie Programmablaufplansymbole für die Tastatureingabe und für die Einfachverzweigung. 5. Ermitteln Sie, welche Vergleichsoperatoren C anbietet. 6. Erweitern Sie den Algorithmus um die Tastatureingabe und die notwendigen Plausibilitätsprüfungen. 7. Informieren Sie sich über die Funktion scanf. 8. Programmieren und testen Sie den Algorithmus. 4.3 Karteikarten Erstellen Sie zu folgenden Themen Karteikarten: Wie sieht das Programmablaufplansymbol für eine Tastatureingabe aus? Nennen Sie ein Beispiel! Wie sieht das Programmablaufplansymbol für eine Einfachverzweigung aus? Nennen Sie ein Beispiel! Wie kann man bei Programmablaufplänen Tastatureingaben von Bildschirmausgaben unterscheiden? Geben Sie ein Beispiel an! Wie sieht das Struktogrammsymbol für eine Einfachverzweigung aus? Nennen Sie ein Beispiel! Fallbeispiel Baukredit 8
4 Handlungssituation: Anwendereingaben Wie sieht das Struktogrammsymbol für einen Rücksprung aus? Nennen Sie ein Beispiel! Welche Vergleichsoperatoren kennt C? Geben Sie für jeden ein Beispiel an! Was bedeutet Variablendeklaration? Was bedeutet Variableninitialisierung? Was bedeutet die Ungarische Notation? Was sind die Unterschiede zwischen einer Meldung, Warnung und Fehlermeldung? Fallbeispiel Baukredit 9
5 Handlungssituation: Eingabewiederholung 5.1 Aufgabenstellung Bisher wird das Programm nach einer unplausiblen Eingabe beendet. Der Anwender soll aber solange aufgefordert werden eine Eingabe zu machen, bis die Eingabe plausibel ist. 5.2 Vorgehen 1. Formulieren Sie - nicht formal - eine Bedingung, wie wahr ist, solange nicht plausible Werte eingegeben werden. 2. Kann man die Mehrfachabfrage der Plausibilitätsbedingungen verhindern? 3. Ermitteln Sie das Struktogrammsymbol für eine kopfgesteuerte Schleife. 4. Ermitteln Sie das Programmablaufplansymbol für eine Schleife. 5. Markieren Sie die Anweisungen in Ihrem Algorithmus, die ggf. wiederholt werden müssen. 6. Erweitern Sie den Algorithmus um die Eingabewiederholung. 7. Programmieren und testen Sie den Algorithmus. 8. Erweitern Sie den Algorithmus so, dass nach dreimaliger Fehleingabe das Programm mit einer entsprechenden Fehlermeldung abbricht. 9. Programmieren und testen Sie den Algorithmus. 10. Erweitern Sie den Algorithmus um eine Hauptprogrammschleife. 5.3 Karteikarten Erstellen Sie zu folgenden Themen Karteikarten: Wie sieht das Programmablaufplansymbol für eine Schleife aus? Nennen Sie ein Beispiel! Wie sieht das Struktogrammsymbol für eine kopfgesteuerte Schleife aus? Nennen Sie ein Beispiel! Fallbeispiel Baukredit 10
5 Handlungssituation: Eingabewiederholung Wie sieht das Struktogrammsymbol für eine fußgesteuerte Schleife aus? Nennen Sie ein Beispiel! Was ist der Unterschied zwischen einer kopf- und einer fußgesteuerten Schleife? Wie oft wird bei einer fußgesteuerten Schleife der Anweisungsblock der Schleife mindestens ausgeführt? Was ist eine Hauptprogrammschleife? Fallbeispiel Baukredit 11
6 Handlungssituation: Zinsvarianten 6.1 Aufgabenstellung Die Anwendung soll in der Lage sein, zu gegebenen Darlehenssumme und Laufzeit unterschiedliche Zinssätze zu verarbeiten. Der Anwender soll nach Eingabe der Darlehenssumme und der Laufzeit angeben, wieviele Zinssätze er berechnen möchte. 6.2 Vorgehen 1. Formulieren Sie - nicht formal - die Erweiterung des Algorithmus; vergessen Sie dabei nicht auch diese Eingabe zu plausibilisieren. 2. Ermitteln Sie den Aufbau einer for-schleife in C. 3. Erweitern Sie den Algorithmus als Struktogramm oder Programmablaufplan. 4. Programmieren und testen Sie den Algorithmus. 5. Erweitern Sie den Algorithmus so, dass Sie einen Startzinssatz, einen Endzinssatz und eine Schrittgröße eingeben können. Die Bildschirmausgabe soll dann in Listenform für jeden Zinssatz die Zinsen ausgeben. 6. Programmieren und testen Sie den Algorithmus. 7. Beachten Sie die Zinsbeträge und interpretieren Sie das Ergebnis! 6.3 Karteikarten Erstellen Sie zu folgenden Themen Karteikarten: Wie sieht der Aufbau einer for-schleife in C aus? Nennen Sie ein Beispiel! Was ist der Unterschied zwischen einer for- und einer while-schleife? In welchem Verhältnis wachsen die Zinsen im Verhältnis zum Zinssatz? Was ist das EVA-Prinzip? Fallbeispiel Baukredit 12
7 Projekt: Annuitätsdarlehen 7.1 Aufgabenstellung Die drei Eingaben sollen nun zur Berechnung eines Annuitätsdarlehens verwendet werden. Die Anwendung soll folgende Eigenschaften haben: 1. Die Eingabe der Werte Darlehenssumme, Zinssatz und Laufzeit erfolgt mit Eingabeplausibilisierung wie beim endfälligen Darlehen (ohne Zinssatzvarianten). 2. Es wird die Annuität berechnet und ausgegeben. 3. Es werden pro Jahr der Tilgungs- und der Zinsanteil berechnet und ausgegeben. 4. Die Werte werden in CSV-Format in eine Datei geschrieben. 5. In einer Batch-Variante werden die Eingaben über eine Steuerdatei eingelesen und zusätzlich zur Wertedatei eine Log-Datei erstellt, die die Berechnung (incl. der Fehlermeldungen) enthält. 7.2 Vorgehen 1. Ermitteln Sie die mathematischen Grundlagen für die Berechnung eines annuitätischen Darlehens. 2. Ermitteln Sie, welche mathematischen Operationen und Funktionen verwendet werden. 3. Erstellen Sie in einer Tabellenkalkulation Ihrer Wahl eine Tabelle, die das Verhältnis von Tilgung und Zinsen bei folgenden Werten darstellt: Kreditsumme 100000EUR, Zinsensatz 4%, Laufzeit 15Jahre. 4. Erstellen Sie eine Programmablaufplan / Struktogramm, welches bis auf die Dateioperationen die obigen Anforderungen erfüllt. 5. Programmieren und testen Sie den Algorithmus. 6. Informieren Sie sich über CSV-Dateien und legen Sie ein sinnvolles Format fest. 7. Informieren Sie sich über Funktionen zum Öffnen/Anlegen, Lesen/Schreiben und Schließen von Dateien in C. 8. Erweitern Sie den Algorithmus um die Ausgabe einer CSV-Datei. Eine ggf. vorhandene Datei soll einfach überschrieben werden. 9. Programmieren und testen Sie den Algorithmus. Fallbeispiel Baukredit 13
7 Projekt: Annuitätsdarlehen 10. Importieren Sie die Daten in eine Tabellenkalkulation und erstellen Sie eine entsprechend Grafik. 11. Erstellen Sie auf Basis einer Kopie des obigen Programms die Batch-Variante des Algorithmus. 12. Programmieren und testen Sie den Algorithmus. 13. Ermitteln Sie Abdeckungsmaße für einen White Box Test. 14. Erstellen Sie eine Testfalltabelle, die die im Unterricht abgesprochenen Abdeckungen erzielt. 15. Testen Sie das Programm. 7.3 Karteikarten Erstellen Sie zu folgenden Themen Karteikarten: Was ist ein Dateizeigen / file pointer in C? Welche Aufgabe haben die Funktionen fopen() und fclose()? Was machen die Funktionen fprintf() und fscanf()? Wie ermittelt man das Ende einer Datei? Warum muss die Datei am Ende immer geschlossen werden? Legen Sie zu jedem Abdeckungsmaß eine Karteikarte mit Beispiel an. Was ist eine Testfalltabelle? Wie ist Sie aufgebaut? Fallbeispiel Baukredit 14