| 5.2. Programmierung |
|
|
Letztmalig dran rumgefummelt: 06.11.26 12:19:57 |
|
|
Ein Programm
ist die Umsetzung eines Algorithmus und der zugehörigen Datenbereiche in
eine Programmiersprache. Während Algorithmen relativ allgemein beschrieben
werden können, sind Programme wesentlich konkreter. Nach DIN 44300 ist ein Programm eine „nach den Regeln der verwendeten Programmiersprache festgelegte syntaktische Einheit aus Anweisungen und Vereinbarungen, welche zur Lösung einer Aufgabe notwendige Elemente umfasst“. Eng mit dem Programm verknüpft sind Begriffe wie: Algorithmus, Daten, Datei, Variablen Datentypen, Resultate, Software. Nicht unbedingt ist der Begriff des Programms an den Computer gebunden (wenngleich er heute meist damit im Zusammenhang zu sehen ist!!!), so gibt es Veranstaltungsprogramme, das Fernsehprogramm (wahrscheinlich das bekannteste), selbst der Fahrplan der Bundesbahn repräsentiert ein Programm eine Folge von Schritten (deren Ablauf) nach einer geplanten Reihenfolge. |
|||||||
0.
Top-Down-Entwicklung am Beispiele |
||||||||
|
||||||||
Quellen:
|
||||||||
|
| 0. Top-Down-Entwicklung |
|
|
|
|
|
Die Top-Down-Entwicklung versteht sich als die Methode: "... von der Spitze des Problems herab zum absoluten Einzelschritt". | |||||||||||||||||||||||||
| Top-Down Entwicklung (wörtlich übersetzt: TOP-DOWN - von der Spitz nach
unten besser: vom Problem zum lauffähigen Programm) 1. Aufgabenstellung: - wenn Ihnen eine Aufgabe nicht gestellt ist, dann versuchen Sie so exakt wie nur möglich zu formulieren, was Ihr zu erstellendes Programm zu leisten hat - verschaffen Sie sich Klarheit darüber, ob Ihr Problem überhaupt in einen Algorithmus und damit auf dem Rechner formulierbar ist - beachten Sie Probleme mit schwer fassbaren Größen (evtl. Unendlichkeit zu verarbeitender Größen) - beginnen Sie bereits hier mit dem notwendigen Fachstudium - was müssen Sie beherrschen, um die Aufgabe zu lösen? Beispiel: Ermitteln Sie in einem Programm die Fallzeit und die Fallgeschwindigkeit bei variabel vorzugebender Höhe! 2. Problemanalyse: - Erstellen des notwendigen mathematischen oder sonstigen Algorithmus - Festlegung der Ausgabegrößen (dies sind diejenigen, die laut Aufgabestellung "gesucht...", oder "zu ermitteln..."sind) - Festlegung der Eingabegrößen (sind dann die Größen, die der mathematische Algorithmus benötigt und die nicht Ausgabegrößen sind) - Entwicklung aller logischen zusammenhänge des Programms - beachten Sie hier besonders anzuwendende Maßeinheiten! - Datendefinition nach Typen und Anzahl - wie komme ich vom Gegebenen zum Gesuchten? Beispiel: Formeln: v=s:t; t=Wurzel(2 x h:g) Eingabe: hoehe:REAL; Ausgabe: endgeschwindigkeit:REAL in m/s und km/h fallzeit:REAL in sec. Konstante: erdbeschleunigung:REAL=9.81 m x s-² Problem: was wird mit Eingaben hoehe<0? 3. Algorithmierung: ... ergibt eine eindeutige Vorschrift zur Lösung einer Aufgabe mit endlicher Schrittzahl und festgelegter Reihenfolge. • geschieht entweder im TOP-DOWN oder BOTTOM-UP-Verfahren ((BOTTOM-UP: von unten nach oben) leider bei vielen Computerfreaks sehr verbreitet) • Erstellung eines Struktogrammes oder Pseudocodes • Erstellung eines Datenflußplanes Beispiel: >>vereinbarung aller benötigten daten<< >>read hoehe<< >>fallzeit:=sqrt(2*hoehe/erdbeschleunigung)<< >>endgeschwindigkeit:=erdbeschleunigung*fallzeit<< >>write fallzeit,endgeschwindigkeit<< seien Sie sich bewußt, daß Sie bis zum Abschluß dieses Schrittes vollkommen frei von der Programmiersprache sind, diese Entscheidung müssen Sie erst hier treffen - können natürlich bei der späteren Umsetzung in eine andere Sprache bis hierher äquivalent bleiben! 4. Progammierung und Implemaentation: PROGRAM fall (INPUT,OUTPUT); USES WINCRT; CONST erdbeschleunigung=9.81; VAR hoehe:REAL; fallzeit:REAL; endgeschwindigkeit:REAL; {************************** Haupptprogramm ***************************} BEGIN{begin mainroutine} CLRSCR; WRITELN('Dieses Programm berechnet Ihnen Fallzeit und'); WRITELN('Endgeschwindigkeit beim freien Fall von Körpern'); WRITELN('aus verschiedenen Höhen'); WRITELN; WRTIELN('>ENTER<'); REPEAT UNTIL KEYPRESSED; WRITE('Bitte geben Sie jetzt die Höhe in Metern ein: '); READLN(hoehe); CLRSCR; fallzeit:=SQRT(2*hoehe/erdbeschleunigung); endgeschwindigkeit:=erdbeschleunigung*fallzeit; WRITELN('Die Endgeschwindigkeit beträgt: ',endgeschwindigkeit,' m/s'); WRITELN('Die fallzeit beträgt: ',fallzeit,' s'); READLN; END.{end of program} {****** Copyrights by F. Rost - Arbeitsstand: 10.11.1995 *******} 5. Programmtest und Korrektur: • testen Sie mit einfachen Größen (probieren Sie mit nachkon-trollierbaren Ergebnissen - also kleinen Zahlen) • testen Sie mit großen Zahlen - rechnen Sie mit Taschenrechner nach • testen Sie auf kritische Größen, z. B.: 0, 1, Grenzwerten des zugelassenen Bereiches • bauen Sie nun Sicherheiten gegen Fehlbedienung ein 6. Dokumentierung: • kommentieren Sie Ihre Programme gut • legen Sie mehrere ausgetestete Kopien an |
||||||||||||||||||||||||||
|
| 1. Programmentwicklung |
|
|
|
|
|
Hier läuft die Problemlösung, der Algorithmus, die Lösungsverfahren, Software-Engeneering und die Wahl der Programmiersprache miteinander konform. |
| die Befehlsdokumentation GW-BASIC - eine Ausarbeitung aus dem Jahre 1992
unter Mitarbeit von Schülern des Gymnasiums Flöha stellen wir
|
|
| Der Editor ist eine Schreibfläche innerhalb des Programmsystems, die ähnlich wie ein Textverarbeitungssystem arbeitet (viele Funktionen sind sogar gleich). Erkennbar ist der Editor an seinen Menüsymbolen. Seine Aufgabe ist es, den Programmquelltext aufzunehmen, zu verändern und auch abzuspeichern. | |
| der Quelltext ist das im Editor stehende fertige Programm, nachdem die
Schritte der Programmentwicklung durchlaufen wurden. Der Quelltext ist
unmittelbar an das Programmiersystem gebunden, er muss in eben der gewählten
Programmiersprache geschrieben sein. Er enthält die syntaktischen
Anweisungsfolgen der gewählten Programmiersprache. Beachten muss man, dass jede Programmiersprache Vorteile, aber auch Nachteile hat. |
| 2. Programmierfehler |
|
|
|
| 3. Compiler und Interpreter |
|
|
|
|
|
Natürlich begeben wir uns hier ins Reich der heiligen Kühe (wieder mal). Natürlich einigen wir uns darauf, dass ein Compilersytem eine Mehrheit an Vorteilen bietet, dass aber ein interpretatives System eben auch seine guten Seiten hat - und, nun kommt's: Nutzen nicht auch Compilersyteme so etwas "Primitives" wie Breakpoints? Richtig ein interpretatives System, bis eine definierte Stelle erreicht wurde, oder diese nicht erreicht werden kann, da Fehler im Programm? Das übrigens Interpreter eine Reihe von Fragen offen lassen, liegt nicht an der Philosophie des Systems an sich, sondern daran, dass sie schlecht oder unbedacht bezüglich Worst-Case gemacht sind. Niemand hätte Bill Gates daran hindern können, einen Interpreter zu schreiben, in welchem auch die Variablen einschließlich ihrer Datentypen deklariert werden müssen. |
| Ist ein Übersetzerprogramm, der einen Programmtext in eine, dem Computer verständliche Sprache (Maschinensprache) übersetzt. Nach dem Lauf des Compilers liegt unser Programm genau zweimal im Hauptspeicher des Computers. Nämlich einmal als Quelltext, einmal als Maschinenprogramm. Das ist die Sprache, welche letztendlich als Befehl vom jeweiligen Prozessor verstanden und abgearbeitet werden kann. Ist die Hochsprache selbst frei für die jeweilige Plattform, so ist es der betreffende Compiler nicht mehr, denn er übersetzt direkt in die Zielsprache. | |
| Das Gegenstück eines Compilers ist ein Interpreter. Hier werden jeweils Programmzeilen übersetzt und anschließend sofort ausgeführt. Das bringt insbesondere bei der Programmentwicklung Vorteile. Beide haben Vor- und Nachteile, wenn es allerdings um Geschwindigkeit geht, ist ein Compiler immer die effektivere Lösung. |
| 4. Anforderungen an ein Programm und an den Programmierer |
|
|
|
|
|
Gut entwickelte Programme ...
Demgegenüber werden auch Sie nach kurzer Zeit feststellen, dass dies einfach und logisch klingt, jedoch gar nicht so einfach realisierbar ist! Und nun folgen die Forderungen an Sie: I. Sinn
und Zweck des Programms darlegen. |
| die bearbeiteten Biographien stellen wir
|
| 5. Programm-Dokumentation |
|
|
|
|
|
Eines der wichtigsten Programm-Beschreibungsmöglichkeiten sind Ablaufpläne sowie Struktogramme. Sauberdurchgeführte Programmdokumentation sind weitere Grundlagen der Software-Entwicklung im Team. Denn hier werden Schnittstellen, gemeinsam benutzte Größen, Datentypen und Übergabeparameter definiert. |
| Pseudocode-Notation | |
| Struktogramme | |
|
Beispiel für eine Programm-Dokumentation zum Post'schen Korrespondenzproblem
|
| 6. Maschinenprogrammierung |
|
|
|
|
|
|
| 7. Echtzeitverhalten und Echtzeitsysteme |
|
|
|
|
|
Das ist eine Extremforderung an Software, welche mit genau dafür zugeschnittener Hardware ein Maximum an Effizienz, ein Minimum an Redundanz und damit wiederum ein Minimum an Rechenzeit zu erreichen sucht. Es gilt hier, in extrem kurzer Zeit auf Ereignisse von außen angemessen zu reagieren (also auch nicht über zu reagieren). Echtzeitsysteme haben ihr zu hause in der Industrie, der Weltraumfahrt |
| 8. Programmierbeispiele |
|
|
|
|
|
Zunehmend etappliert sich das Lazarus-Programmiersystem an den Schulen Deutschlands als kostenfreie Programmiersprache, welche auch allen Anforderungen gerecht wird und über hinreichende Mächtigkeit im Leistungsumfang verfügt. Besonders positiv ist seine Verwandtschaft zu Delphi. | ||||||||||
|
|||||||||||
| 9. Verwandte Themen |
|
|
|
|
|
I-) | ||||||
|
|||||||
|
zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost im Oktober 2007 |
|
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus (das haben wir schon den Salat - und von dem weiß ich!) nicht mehr teilzunehemn ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |
|
Diese Seite wurde ohne Zusatz irgendwelcher Konversationsstoffe erstellt ;-) |