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
© Copyright 2025 ExpyDoc