Start | Familie | Info | Kontakt

Informatik - Skript zum Unterricht

(II) Software

 

 

3. Programmentwicklung

3.1 Implementierung

Bei der Implementierung wird eine abstrakte Beschreibung des Problems (erstellt in der Designphase) in ein Programm in einer spezifischen Programmiersprache überführt. Dieser Prozess wird in der folgenden Grafik veranschaulicht.

Pfeil nach oben

 

3.2 Grafische Darstellung der Algorithmen

Grafische Ablaufdarstellungen können unter den Begriffen Programmablaufplan (PAP), Flussdiagramm, Struktur- oder Blockdiagramm zusammengefasst werden.

Ein Ablaufplan stellt eine grafische Veranschaulichung der Algorithmenstruktur durch entsprechende, standardisierte Operationssymbole dar. Die gebräuchlichsten Formen von Programmablaufdarstellungen sind:
1. Sinnbilddarstellung (Blockbild, Blockdarstellung)
2. Programmlinienstruktur (Programmablaufplan im engeren Sinn)
3. Struktogramm
4. Petri-Netz

Die Auswahl der grafischen Darstellungsform ist von mehreren Faktoren abhängig. Wird eine schnell zu erarbeitende Flussdarstellung erforderlich, ist die Programmliniendarstellung vorteilhaft, da das Zeichnen der geometrischen Figuren der Sinnbilddarstellung entfällt. Diese Darstellungsformen verführt jedoch dazu, mit zahlreichen Einzelverzweigungen zu arbeiten, die nicht mehr der Gesamtstruktur untergeordnet sind (sog. Spaghetticode). Eine gut strukturierte Programmierung wird durch das Struktogramm begünstigt. Allerdings führen umfangreichere Programme in dieser Darstellungsmethode wieder zu schwer lesbaren Übersichten.

Um gut strukturierte Programme entwickeln zu können, werden heutzutage i.A. den Struktogrammen der Vorrang gegeben.

Pfeil nach oben

 

3.3 Struktogramm und Programmablaufplan

Die Programmdokumentation ist eine notwendige Voraussetzung zur Entwicklung und Wartung eines Programms. Vor allem müssen die Programme grafisch dargestellt werden, weil nur so ein Überblick möglich ist. Speziell dafür verwendet man genormte Sinnbilder nach DIN 66001 (Programmablaufplan) oder auch DIN 66261 (Struktogramm nach Nassi und Schneiderman).

Weiter führende Informatitonen finden Sie in Wikipedia
Struktogramm
Programmablaufplan

Pfeil nach oben

 

3.4 Schritte der Programmentwicklung

Die Lösung eines Problems mit Hilfe eines Computers kann in folgende Schritte eingeteilt werden.

Die Schritte werden zwar der Reihe nach durchlaufen, es kommen aber von jedem Schritt Rücksprünge zu vorangegangenen Schritten vor (Rückkopplung). Darüber hinaus ist es vom Problem abhängig, wie umfangreich ein Schritt ausfällt. Hierbei ist es auch möglich, dass die Reihenfolge variiert, ein Schritt in einen anderen integriert wird bzw. entfällt.
Grob kann man für die Algorithmusformulierung ein Drittel, für die Umsetzung in eine Programmiersprache mit Fehleranalyse ein weiteres Drittel und die Bewertung des Algorithmus mit Programmdokumentation das letzte Drittel des gesamten Zeitaufwandes ansetzen.

Pfeil nach oben

 

3.5 Beispiel der Programmentwicklung

Bei der Umsetzung des Beispiels ging es nicht darum, die optimale Programmierung, sondern ein verständliche Lösung anzugeben.

3.5.1 Problemstellung

Vater Max richtet seinem Sohn Otto bei dessen Geburt zu einem fest vereinbarten Zinssatz p ein Konto ein, indem er G € einzahlt. Dieses Konto bleibt n Jahre unangetastet.

 

3.5.2 Problempräzisierung bzw. -analyse / mathematisches Modell

Aus der Problemstellung lassen sich Aufgaben ableiten, wobei im folgenden nur die Aufgabe 1 näher betrachtet werden soll.

Aufgabe 1:   Wie hoch ist das Kapital nach n Jahren?
Aufgabe 2: Nach wie viel Jahren hat sich das eingezahlte Kapital verdoppelt?

Verfahren: Zinsrechnung (Zinseszins)

Drei-Schichten-Modell

 

3.5.3 Formulierung des Algorithmus mit Hilfe des EVA-Prinzips

In diesem Beispiel wird die mathematisch rekursive Berechnung mit Hilfe einer Schleife durchgeführt, da dieser Lösungsweg einfach auf die zweite Aufgabe zu übertragbar ist. Die explizite Berechnung des Kapitals wird zur Kontrolle verwendet.

Algorithmus: Eingabe       Kapital K
                           Anzahl der Jahre n
                           Zinssatz p
             Verarbeitung  wiederhole
                              K := K + G × z/100
                              (neues Kapital := altes Kapital + Zinsen)
                              i := i + 1 (Zähler für die durchlaufenen Jahre)
                           solange, bis i >= n
             Ausgabe       neues Kapital K

 

3.5.4 grafische Darstellung des Algorithmus

Drei-Schichten-Modell

 

3.5.5 Nachweis der Leistungsfähigkeit des Algorithmus

Es wird ein Testdurchlauf (Trockentest) für 10 Jahre mit einem Startkapital von 100€ und einem Zinssatz von 5% durchgeführt.

Drei-Schichten-Modell

 

3.5.6 Umsetzung des Algorithmus in eine Programmiersprache durch die Formulierung des Quelltextes

Nachfolgend wurde als Beispiel die Programmiersprache Turbo Pascal ausgewählt.

program Vater_Max;
uses    crt;
var     Jahre, i      :byte;
        Kapital, Zins :real;

begin
  clrscr;
  Write('Kapital in Euro     = '); readln(Kapital);
  Write('Laufzeit in Jahren  = '); readln(Jahre);
  Write('Zinssatz in Prozent = '); readln(Zins);
  Writeln;

  i:=0;

  repeat
    Kapital:=Kapital+Kapital*Zins/100;
    i:=i+1;
  until i=Jahre;

  Write('Das Kapital beträgt nach ',Jahre,' Jahren ', Kapital:10:2,' DM');
end.

 

3.5.7 Programmtest

Ein Programmtest muss mit verschiedene Werten durchgeführt werden. So ist es notwendig, Grenzfälle (n=0, K=0 oder p=0) zu untersuchen, um Laufzeitfehler bzw. logische Fehler zu vermeiden. Syntaxfehler (Schreibfehler) werden i.A. durch den eingesetzten Compiler oder Interpreter angezeigt.

 

3.5.8 zeit- und speicherkomplexe Bewertung des Algorithmus

Die Zeitkomplexität setzt sich aus Elementaroperationen zusammen. Generell wird jeder Rechenschritt des Computers, z.B. eine Addition oder der Aufruf eines Unterprogramms, als ein Schritt gewertet. Wird eine Schleife n-mal durchlaufen, so ergeben sich (abgesehen von den Operationen, die innerhalb der Schleife zusätzlich anfallen) n Schritte für den Algorithmus. Zur Initialisierung einer Schleife ist gewöhnlich eine konstante Zahl c von Schritten nötig, für den Schleifendurchlauf werden in der Regel konstant d Schritte benötigt, so dass bei n-maligem Durchlauf ein Aufwand von d×n+c entsteht.

Drei-Schichten-Modell

Die Zeitkomplexität ist in diesem Fall eine lineare Funktion, d.h. die Anzahl der Schritte steigt proportional zur Anzahl der Jahre. Bei Verwendung der expliziten Berechnungsmöglichkeit (Drei-Schichten-Modell) muss in Turbo Pascal berücksichtigt werden, dass hier keine Potenzfunktion zur Verfügung steht. Diese kann z.B. mit Hilfe einer Schleife emuliert werden, so dass sich die Zeitkomplexität bei Verwendung diese mathematischen Modells nur unwesentlich ändert.

Die Speicherkomplexität ist in diesem Beispiel der Zeitkomplexität untergeordnet. Durch die Wahl nur einer Variable K (Kapital) werden bei der Wertzuweisung K =: K*(1+p/100) 6 Byte (real) und beim Inscrement i nur 1 Byte (byte, 1 Byte) verwendet. Die Werte für den Zinssatz p (real, 6 Byte) und die Anzahl der Jahre (byte, 1 Byte) ändern sich nicht. Unabhängig von den Variablenwerten beträgt die Anzahl der Variablenspeicherplätze 14 Byte.

 

3.5.9 lauffähiges Programm bzw. ausführbare Datei

Der Quelltext liegt in Turbo Pascal vor. Mit Hilfe des Compilers kann eine ausführbare, für das entsprechende Betriebssystem lauffähige Datei erzeugt (compiliert) werden, die den Anforderungen genügt.

 

3.5.10 Erstellung der Programmdokumentation

Die Dokumentation muss eine Programmbeschreibung, Zielangabe, Variablenbelegung, Fehlerbetrachtung, Programmerweiterungsmöglichkeiten u.a. enthalten.

Pfeil nach oben

 

256MB RAM (Laptop)


__ eberhardt | KÖNIG ___