Einleitung | Einführungsbeispiel | Eingabe, Ausgabe, Variablen | Datentypen | Stukturen | For...EndFor | If...EndIf | Loop...EndLoop | While...EndWhile | Felder | Funktionen | Unterprogramme | Grafikprogrammierung | Index
Programmierkurs 

Einleitung

Für das erfolgreiche Erstellen von Programmen reicht die reine Kenntnis der Programmiersprache zumeist nicht aus. Auch der beste Programmierer kann keinen Primzahltest implementieren ( = den Programmcode in den Rechner eintippen), wenn ihm kein Algorithmus ( = schematischer Rechenvorgang, der meist aus Wiederholungen gewisser Rechenschritte besteht und mit Sicherheit zum Erfolg führt) bekannt ist, der dieses leistet.  Die Programmiertätigkeit sollte also nicht mit dem Einschalten des Rechners und sofortigem Eintippen des Codes beginnen, sondern mit einer sorgfältigen Analyse des zu Grunde liegenden Problems. Die Entstehung eines Progamms kann in folgende vier Phasen unterteilt werden:
 


Anhand eines Primzahltests soll dies im Folgenden gezeigt werden.

Definitionsphase

In dieser Phase soll genau festgelegt werden was ein Programm leisten soll. Je umfangreicher ein Progamm werden soll, desto wichtiger ist eine sorgfältige Planung in der Entwurfphase, da spätere Änderungen meist mit einem relativ großen Programmieraufwand verbunden sind. Für unser einfaches Beispiel reicht folgende Definition:

Nachdem der Benutzer eine natürliche Zahl eingegeben hat, soll das Programm ausgeben ob es sich dabei um eine Primzahl handelt oder nicht.

Entwurfphase

In diesem Abschnitt wird festgelegt, wie das gewünschte Ziel erreicht werden kann, d.h., hier werden der Programmablauf und die benötigten Variablen festgelegt. Beginnen wir mit einer verbalen Beschreibung des Programmablaufes:
 
Bei den ersten beiden Punkten und dem letzten Punkt handelt es sich um Routineaufgaben, die keiner weiteren Beschreibung bedürfen. Für den Primzahltest selbst gehen wir von folgender Überlegung aus, dass die Testzahl genau dann eine Primzahl ist, wenn sich bei der Division durch alle möglichen Primzahlen bis zur ("ganzzahligen") Quadratwurzel aus der Testzahl niemals der Rest 0 ergibt. Anhand eines konkreten Beispiels soll dies verdeutlicht werden:
 
 
Überprüfe, ob es sich bei der Zahl 137 um eine Primzahl handelt.

Die Wurzel aus 137 » 11,7. Man muss also alle Primzahlen von 2 bis 11 als mögliche Teiler testen.

2 teilt 137 nicht
3 teilt 137 nicht
5 teilt 137 nicht
7 teilt 137 nicht
11 teilt 137 nicht

Da 137 durch keine dieser Zahlen teilbar ist, handelt es sich um eine Primzahl.

Der Computer "kennt" jedoch keine Primzahlen von 2 bis n, daher müssen wir den Algorithmus etwas abwandeln. Wir testen zunächst, ob die Zahl gerade ist und prüfen dann alle ungeraden Zahlen (>2) bis zur Wurzel aus der Testzahl (n) als mögliche Teiler (t). Damit ließe sich der Primzahltest nun wie folgt beschreiben:

Eine weitere Möglichkeit sich über den Algorithmus Klarheit zu verschaffen, wäre eine graphische Darstellung des Programmablaufes. Ein derartiges Ablaufdiagrammes zeigt die folgende Abbildung, welche ein sogenanntes Flussidagramm des oben besprochenen Primzahltests wiedergibt:

Es versteht sich von selbst, dass sich diese Darstellung nur für Algorithmen eignet, die nicht zu umfangreich sind. Für den Anfänger kann sie dennoch in vielen Fällen eine große Hilfe darstellen, da gerade zu Beginn der Umfang der zu programmierenden Algorithmen eher gering sein wird. Welcher der beiden vorgestellten Darstellungsarten man den Vorzug gibt, ist unerheblich. Wesentlich ist jedoch, dass man sich bevor man zur Implementationsphase schreitet über den genauen Programmablauf im Klaren ist.
 

Implementationsphase

Wie nun der soeben erarbeitete Algorithmus programmtechnisch umgesetzt wird, kann klarerweise erst an einer späteren Stelle dieses Programmierkurses (im Kapitel If...EndIf) nachvollzogen werden.
 

Dokumentationsphase

Bei einfachen Programmen, wie dem Primzahltest würden als Dokumentation einige Kommentare reichen, die direkt in den Programmcode eingefügt werden (vgl. Beispiel 7 im Kapitel If...EndIf). Für umfangreichere Programme ist eine systematische Anlage von schriftlichen Unterlagen, die das Projekt betreffen zu empfehlen.
 
 
 



Mail an den Autor, Karl.Weinstich@theresianum.ac.at