1.1 Wie erstelle ich eigene Software?

1 Einführung
Delphi
1.1 Wie erstelle ich eigene Software?
Um spezielle Problemlösungen zu erstellen bzw. Unterstützung durch den Computer zu erfahren, bedient sich der
Anwender spezifischer Softwareprogramme, die im Falle der Nutzung von DOS-kompatiblen Rechnern in großer
Fülle auf dem Markt angeboten werden. Hier sind oft Programme notwendig, die auf die eventuell erforderlichen
Bedürfnisse des Benutzers zugeschnitten werden. Man spricht in diesem Fall von Programmanpassungen über die
Programmier- bzw. Softwareschnittstelle. Bei Computersystemen in höheren Größenordnungen wird die Software
für den Benutzer auf der Basis des dort bestehenden Betriebssystems speziell geschrieben, so dass den betrieblichen
Anforderungen schon von Anbeginn Rechnung getragen wird. Man kann Software also auch unterscheiden in fertiggestellte Programme und in Programmiersprachen, mit denen sie erstellt werden können.
Lerninhalte
L1
Œ
•
Ž
•
Programmiersprachen
Grundlagen des Programmiere ns
Lerninhalte
Der Begriff “Algorithmus”
Beschreibungsmöglichkeiten für Algorithmen
Programmiersprachen
Programme, die für einen Computer geschrieben werden, bedienen sich des Befehlsvorrats, den der Mikroprozessor
im Computer „verstehen“ kann. Der Prozessor vom Typ 8080 z. B. versteht 243 verschiedene Befehle wie „addiere“, „subtrahiere“, „hole aus Speicherzelle“ usw. Diese Befehle werden dem Prozessor allerdings in binär codierter
Form eingegeben. Der Befehl „addiere“ lautet beispielsweise verschlüsselt 10000110. Da diese Verschlüsselung
oder „Sprache“ den Prozessor direkt zur Ausführung von Operationen veranlasst, nennt man sie auch Maschine nsprache .
Allerdings ist diese Form der Sprache zum Programmieren sehr ungünstig; man müsste in diesem Fall nämlich 243
verschiedene 8-stellige Zahlen kennen und die entsprechende Funktion zuordnen. Es lag nahe, anstelle der Zahle nkombination Abkürzungen zu verwenden, die von ihrer Namensgebung einen Rückschluss auf die Funktion zulassen
(sogenannte Mnemonics). Aus dem Zahlencode wurde ein Buchstabencode und die Umsetzung übernimmt ein entsprechendes Programm, der sogenannte Assembler. ADD z. B. steht für addiere, SUB steht für subtrahiere. Diese
Beschreibungsart nennt man Assemblersprache .
Die Assemblersprache ist sehr maschinennah, aber immer noch bedienerunfreundlich. Insbesondere weist jeder
Mikroprozessortyp eine andere Assemblersprache auf. Die Folge davon war die Entwicklung von höheren Programmiersprachen. Diese beinhalten nun Wörter aus der (englischen bzw. amerikanischen) Umgangssprache, so
dass der Abstraktionsgrad nicht mehr so hoch und die Eingabe von Befehlen wesentlich komfortabler ist. Nach Abschluss einer Programmerstellung muss dieses lediglich mit einem Übersetzungsprogramm (Compiler oder Interpreter) in die jeweilige Maschinensprache übertragen werden, damit die Befehlsmenge für den Prozessor „verständlich“ ist und dieser sie ausführen kann. Damit ist auch gewährleistet, dass die gleichen Programme auf verschiedenen Mikroprozessorsystemen abgearbeitet werden können.
datadidact
Grundlagen der Programmierung mit Delphi: Konsolenprogramme
1-1
1 Einführung
Delphi
L2
Grundlagen des Programmierens
Die Praxis der Grundlagen der Programmierung wird in der Programmiersprache Delphi behandelt. In Delphi lässt
sich strukturiert programmieren und Grundlagen, die hier erarbeitet werden lassen sich mühelos auf andere Programmiersprachen anwenden. Auf viele Spezialitäten von Delphi, die sich in anderen Sprachen nicht wiederfinden,
wird im Grundlagenteil nicht eingegangen.
Alleine die Kenntnis der Befehle einer speziellen Hochsprache genügt nicht, um Programme erstellen zu können.
Die Kodierung einer Vorschrift zur Problemlösung (Programmerstellung) steht vielmehr am Ende eines länger dauernden Prozesses, der im folgenden skizziert ist.
Mensch
Problemstellung
Umgangssprache,
mehrdeutig, komplex
Struktursprache,
eindeutig, detailliert
Algorithmus
Assemblersprache
Hochsprache
Assembler
Compiler/Interpreter
Programmiersprache
eindeutiger Formalismus
genormt
prozessorunabhängig
Sprachenübersetzer
Maschinensprache,
prozessorabhängig
Maschinensprache
Maschine
Mikroprozessor
Von der Problemstellung bis zur Bearbeitung durch den Mikroprozessor
Ausgangspunkt der Programmierung ist eine Problemstellung, die meist umgangssprachlich vorgegeben ist. Daher
ist sie oft mehrdeutig, unvollständig oder unklar; diese Mehrdeutigkeiten, Unvollständigkeiten und Unklarheiten müssen im Gespräch mit dem Problemsteller geklärt werden oder vom Programmierer in eigenem Ermessen beseitigt
werden.
Der erste Ansatz zur Lösung besteht darin, einen Algorithmus zur Lösung des Problems zu entwerfen, der möglichst unabhängig von der verwendeten Programmiersprache ist (vgl. S. 1-3). Dieser Entwurf wird zunächst grob
sein und muss verfeinert werden; dies kann in mehreren Stufen geschehen (Prinzip der schrittweisen Verfeinerung).
Ein wichtiger Ansatzpunkt für den Grobentwurf des Algorithmus' ist das EVA-Prinzip. Es ist demnach wichtig zu
erkennen, wo in der Problemstellung sich die Eingabedaten befinden, wo der Verarbeitungsvorgang stattfindet und
welches die interessanten Ausgabedaten sind (Problemanalyse).
datadidact
Grundlagen der Programmierung mit Delphi: Konsolenprogramme
1-2
1 Einführung
Delphi
Ist der Algorithmus fixiert, kann er in eine Programmiersprache übertragen werden. Dabei werden üblicherweise
syntaktische Fehler gemacht (Schreibfehler), die sofort vom Compiler erkannt werden. Semantische Fehler (auch
logische Fehler genannt) sind Fehler in der Bedeutung; es wird etwas anderes programmiert, als beabsichtigt. Diese Fehler sind schwer zu finden und müssen durch mehrfachen Test des Programms entdeckt und eliminiert werden. Am Ende dieser Entwicklung steht ein Programm, welches das gestellte Problem fehlerfrei löst.
L3
Der Begriff “Algorithmus”
Losgelöst von der gewählten höheren Programmiersprache muss zunächst eine genaue Beschreibung bzw. Definition des Problems, das gelöst werden soll, auf allgemeine Weise erreicht werden. Dazu bedarf es einer exakten Analyse, die Aufschluss über einzugebende Daten und die Festlegung der auszugebenden Daten beinhaltet. Diese
Analyse muss am Ende auch kleinste Schrittfolgen aufzeigen, die die Lösung der Aufgabenstellung beschreiben.
i
Ein Algorithmus ist eine endliche Folge von eindeutig bestimmten, ausführbaren Anweisungen zur Lösung einer Klasse von Problemen.
In einem Algorithmus werden also Anweisungen aneinandergereiht, die unser Problem lösen. Dabei sind folgende
Bedingungen zu beachten.
1. Die Anweisungsfolge muss ein Ende haben, sie muss terminieren. Ohne Ende liefert die Anweisungsfolge nämlich kein Ergebnis.
2. Die einzelnen Anweisungen müssen eindeutig bestimmt und ausführbar sein. „Dividiere a durch b“ erscheint
uns als sinnvolle Anweisung; im Falle b=0 ist diese Anweisung aber gar nicht mehr ausführbar, und ein Computer
reagiert auf solche Anweisungen dann mit Fehlermeldungen und Programmabbrüchen.
3. Die Anweisungsfolge löst eine Klasse von Problemen, also nicht nur das aktuelle Problem mit den aktuellen
Werten, sondern mindestens mit allgemeinen Werten oder sogar noch eine ähnliche Problemstellung. Wenn z.B.
das Ergebnis der Addition 4+5 gefragt ist, soll der Algorithmus a und b als Eingabe nehmen und die Summe a+b
ausgeben. Eventuell kann darüber nachgedacht werden, nicht nur die Summe der Zahlen, sondern auch noch Differenz, Produkt und Quotient mit auszugeben.
Im täglichen Leben begegnen uns viele Dinge, die wir unbewusst mehr oder weniger komplex ausführen und die
sich, würden wir sie exakt beschreiben, als Alltagsalgorithmen darstellen.
datadidact
Grundlagen der Programmierung mit Delphi: Konsolenprogramme
1-3
1 Einführung
Delphi
Beispiel: Bedienung eines Getränkeautomaten
Umgangssprachlich: Ich werfe Geld hinein, er liefert mir mein Getränk
Eingaben in den Algorithmus:
Verarbeitung:
Ausgabe aus dem Algorithmus:
Eine Verfeinerung des Algorithmus ist möglich, indem man als weitere Eingabe die Geldmenge im Geldbeutel betrachtet und nach dem Prüfen der Kosten testet, ob das Geld reicht. Nur in diesem Fall ist es nämlich sinnvoll, Geld
einzuwerfen.
L4
Beschreibungsmöglichkeiten für Algorithmen
Um einen Algorithmus letztlich in eine höhere Programmiersprache übertragen zu können, ist die rein verbale Form
wenig geeignet. Daher wird der Algorithmus zunächst graphisch dargestellt. Die graphische Form kann dann in eine
Pseudo-Programmiersprache oder in eine konkrete Programmiersprache übertragen werden.
Als graphische Darstellungsform werden der Programmablaufplan (PAP) und das Struktogramm verwendet.
Programmablaufplan (PAP).
Der PAP leitet nicht zum strukturierten Programmieren an, daher wird er nicht näher besprochen.
datadidact
Grundlagen der Programmierung mit Delphi: Konsolenprogramme
1-4
1 Einführung
Delphi
Ausschnitt aus einem Programmablaufplan
Struktogramm
Struktogramme wurden 1973 von Nassi/Shneidermann entwickelt. Der Aufbau eines Struktogramms ist selbst bei
komplexen Algorithmen sehr übersichtlich, was ein einfaches Lesen zur Folge hat. Hinzu kommt, dass in etwa zeitgleich die Programmiersprachen PASCAL und C entwickelt wurden, die die gleichen Programmstrukturen verwenden. Ein Algorithmus, der mittels Struktogramm dargestellt wird, lässt sich deshalb recht leicht in die Programmie rsprachen PASCAL oder C übertragen. Anhand eines Beispiels wird der Aufbau eines Struktogramms vorgestellt.
Problemstellung: Klassensprecherwahl mit zwei Kandidaten
Auszählen der Stimmen bei der Klassensprecherwahl; Es gibt nur zwei Kandidaten; alle Stimmzettel befinden sich in
der Wahlurne und weisen einen der beiden Namen auf.
Struktogramm
datadidact
Grundlagen der Programmierung mit Delphi: Konsolenprogramme
1-5
1 Einführung
Delphi
Das gezeigte Struktogramm enthält die elementaren Grundstrukturen Folge, Auswahl und Schleife. Diese werden in
einem der nächsten Abschnitte genauer erläutert.
Pseudo-Programmiersprache
Als Pseudo-Programmiersprache wird eine Sprache bezeichnet, die sich an eine bestehende Programmiersprache
anlehnt; bei der Formulierung des Algorithmus werden aber nicht so strenge Richtlinien angelegt wie bei der konkreten Programmiersprache.
Beispiel:
ALGORITHMUS Klassensprecherwahl-Stimmauszaehlung
SOLANGE Stimmzettel in der Wahlurne TUE
BEGINN
Stimmzettel entnehmen
Stimmzettel lesen
WENN Name = A-Mann DANN Strich bei A-Mann
SONST Strich bei B-Frau
ENDE
Striche zaehlen
WENN Anzahl der Striche A-Mann = Anzahl der Striche B-Frau
DANN Losentscheid
SONST
WENN Anzahl Striche A-Mann > Anzahl Striche B-Frau
DANN A-Mann gewaehlt
SONST B-Frau gewaehlt
datadidact
Grundlagen der Programmierung mit Delphi: Konsolenprogramme
1-6