![]() | Informatikmaterialien | Startseite | Informatik | Physik | Mathematik | Sonstiges | |
![]() |
Richard-Wossidlo-Gymnasium
Ribnitz-Damgarten |
---|
Jeder Prozessor (CPU) ist in der Lage, bestimmte Grundbefehle abzuarbeiten, wie z. B.:
Beispiel:
Programmausschnitt für einen Z80-Prozessor (Übungsmaterial für LC 80 bzw. LC 80-Simulator):
Addresse Maschinencode Mnemonic/Assembler Erläuterungen 2000 3A 40 20 LD A, (2040H)Das Register A wird mit dem Inhalt der Speicherzelle 2040h geladen.
2003 2F CPLDer Inhalt des Register A wird negiert.
2004 32 41 20 LD (2041H), AAuf die Speicherzelle 2041h wird der Inhalt des Registers A geschrieben.
2007 76 HALTProgrammhalt!
2040 6A DEFB 6AHDefiniertes Byte 6Ah (Datenbyte)
Bei den ersten Computern musste der Maschinencode noch bitweise eingegeben werden, wie etwa beim Altair 8080,
dem ersten kommerziell erhältlichen Mikrocomputer.
Nachfolgemodelle nutzten dann schon die Darstellung der Maschinencodes
durch Hexadezimalzahlen, wie der Polycomputer 880 oder der LC 80.
Dennoch war das Erstellen von Programmen mühsehlig und so
entwickelte sich eine erste maschinennahe
Programmiersprache: Assembler, die aus den kryptischen Bit- bzw.
Bytefolgen Befehle machte. Auch wenn diese ebenfalls noch kryptisch
waren, so gab es doch bereits Programme, die es ermöglichten den
Assembler einzugeben und daraus den Maschinencode zu erzeugen. Unter DOS/Windows gibt es den debug-Befehl noch heute und
man kann ihn auch noch benutzen!
Lerncomputer LC 80 mit dem o. g. Programm
Ein Programm ist eine Folge von Anweisungen, die dem Computer sagen, was er zu tun hat.
Solche Folgen von Anweisungen sind keine Erfindung des Computerzeitalters. Die Naturwissenschaften und Mathematik leben von Schrittfolgen zur Problemlösung. Allseits bekannt sind etwa:
Im mathematischen Sinne spricht man von Algorithmen. Aber auch außerhalb der Naturwissenschaften bestimmen Schrittfolgen unser Leben: Ausfüllen von Formularen, Waschen von Wäsche, Fahren eines Autos.
Ein (imperativer) Algorithmus ist eine Verarbeitungsvorschrift, die aus einer endlichen Folge von eindeutig ausführbaren Anweisungen besteht, mit dem eine Vielzahl gleichartiger Aufgaben gelöst werden kann.
Der Algorithmus gibt an, wie Eingabegrößen schrittweise in Ausgabegrößen umgewandelt werden.
Dabei müssen folgende Eigenschaften erfüllt sein:
Endlichkeit
Text zum Aufschreiben des Algorithmus ist endlich, bei der Abarbeitung benötigt er endlich viel Platz.Determiniertheit
Unter gleichen Startbedingungen und Parametern liefert des Algorithmus immer das gleiche Ergebnis.Universalität
Algorithmus löst eine Klasse von Problemen; die Auswahl des Problems erfolgt über Parameter.Deterministisch
Zu jedem Zeitpunkt gibt es höchstens eine Möglichkeit der Fortsetzung des Algorithmus.Terminiertheit
Algorithmus liefert nach endlich vielen Schritten ein Ergebnis (gilt nicht für Betriebssysteme)Die Bezeichnung Algorithmus leitet sich übrigens aus der Verstümmelung des Namens des persisch-arabischen Mathematikers Abu Ja'far Muhammad ibn Musa Al-Chwarizmi (787 bis ca. 850), der insbesondere in Bagdad wirkte und in dem Buch Hisab al-jabr w'al-muqabala viele Rechenverfahren beschrieben hat.
Damit ergibt sich folgende Situation:
Die Beschreibung des Algorithmus kann natürlich in Maschinensprache/Assenbler erfolgen. Wie oben gesehen, hat diese aber einige fundamentale Nachteile: sie ist schwer verständlich und prozessorabhängig. Sinnvoll wäre die Beschreibung des Algorithmus (fast) umgangssprachlich bzw. unter Verwendung fester Begriffe/Schlüsselwörter.
Diese Forderung erfüllen höhere Programmiersprachen. Eine der ersten höheren Programmiersprachen war COBOL und wurde von Navycaptain Grace Hopper entwickelt. Auf sie geht übrigens auch der Begriff Debugging und die Ursache des Millenium-Problem zurück.
Noch besser wäre eine prozessor- und programmiersprachenunabhängig Darstellung von Algorithmen, diese bietet dann das Flussdiagramm oder Struktogramm (Nasi-Shneiderman-Diagramm).
![]() zur Startseite | © Tino Hempel 1997 - 2007 | Im Web vertreten seit 1994. Eine Internet-Seite aus dem Angebot von Tino Hempel. Für alle Seiten gilt der ![]() |