====== Was ist ein Programm? ====== Programm = Daten + Befehle Jedes Programm besteht aus zwei Grundelementen, den Daten und den Befehlen. * **Daten** sind jene Elemente, die von einem Programm verarbeitet werden. Das können Zahlen, Texte, aber auch Bilder oder Videos sein. Daten werden im Speicher eines Rechners abgelegt. Ein Speicher besteht aus Zellen, die wir uns wie kleine Schachteln vorstellen können. Jede Zelle enthält ein Datenelement, z.B. eine Zahl. Damit wir die Zellen ansprechen können, haben sie Adressen, die wir uns wie einen Namen vorstellen können. Ein Speicher besteht also aus benannten Zellen, die Werte enthalten. Die Werte in den Speicherzellen sind klarerweise binär codiert. * **Befehle** sind die Operationen, die mit den Daten ausgeführt werden. Beispielsweise gibt es Befehle, um Zahlen zu addieren, Texte zu lesen oder Bilder zu drucken. Ein Rechner verfügt über wenige, sehr einfache Befehle, mit denen er die Datenzellen manipulieren kann. Auch Befehle sind binär codiert und werden wie Daten im Speicher eines Rechners abgelegt. Bei Befehlen gibt es verschiedene Abstraktionsebenen. Ein Programmierer arbeitet nur selten auf der Ebene von **Maschinenbefehlen**. Er benutzt mächtigere Befehle (so genannte Anweisungen) einer Programmiersprache. Diese Anweisungen müssen schlussendlich jedoch auf Maschinenbefehle zurückgeführt werden, da ein Rechner nur Maschinenbefehle versteht, wie z.B. |ACC ← x |Lade den Wert der Zelle x in ein Rechenregister ACC (Accumulator)| |ACC ← ACC+y |Addiere den Wert der Zelle y zu ACC| |z ← ACC |Speichere den Wert aus ACC in Zelle z ab(dh. ersetze den Wert der Zelle z durch den Wert von ACC)| Die Umsetzung von Anweisungen in Maschinenbefehle wird durch ein Übersetzungsprogramm vorgenommen, das man **Compiler** nennt. In der folgenden Abbildung werden die Schritte, die bei der Entstehung eines Programms durchlaufen werden, zusammengefasst. {{:inf:progc:programmablauf.jpg?750|Programmablaufschema}} ---- ([[:inf:progc:c1|zurück]] <> [[:inf:progc:c3|weiter]])