Programmstruktur

2.6. Programmstruktur#

In diesem Abschnitt lernen wir die fundamentalen Bausteine der Programmierung kennen:

  • Kontrollstrukturen und

  • Datenstrukturen Diese beiden Konzepte bilden zusammen die Grundlage für alle Algorithmen und Programme!

Die Kernidee ist einfach.

  • Ein Programm braucht einen Kontrollfluss, der festlegt, welche Schritte wann ausgeführt werden.

  • Ein Programm braucht Daten, mit denen es arbeitet, also Werte und Strukturen im Speicher.

  • Kontrollfluss und Daten sind unterschiedliche Dinge, aber sie greifen ständig ineinander.

Maschinencode-Beispiel (vereinfacht)

In dem Beispiel wird ein Kontostand berechnet.

  • Das Programm liest zuerst einen Startwert aus dem Speicher (der aktuelle Kontostand).

  • Danach addiert es mehrere Beträge (z. B. Buchungen wie +45.000, +10.000, +5.000).

  • Am Ende schreibt es das Ergebnis zurück in den Speicher und beendet sich.

Adresse   Inhalt   Bedeutung                        Rolle
--------------------------------------------------------------------------------
0000h     01h      Opcode: Lade Wert aus Speicher    KONTROLLFLUSS
0001h     20h      Teil der Adresse                  DATEN           \
0002h     00h      Teil der Adresse                  DATEN            > Adresse: 0020h
0003h     00h      Teil der Adresse                  DATEN           /

0004h     02h      Opcode: Addiere nächsten Wert     KONTROLLFLUSS
0005h     C8h      Teil des Werts                    DATEN           \
0006h     AFh      Teil des Werts                    DATEN            > Wert: 00AFC8h = 45.000
0007h     00h      Teil des Werts                    DATEN           /

0008h     02h      Opcode: Addiere nächsten Wert     KONTROLLFLUSS
0009h     10h      Teil des Werts                    DATEN           \
000Ah     27h      Teil des Werts                    DATEN            > Wert: 002710h = 10.000
000Bh     00h      Teil des Werts                    DATEN           /

000Ch     02h      Opcode: Addiere nächsten Wert     KONTROLLFLUSS
000Dh     88h      Teil des Werts                    DATEN           \
000Eh     13h      Teil des Werts                    DATEN            > Wert: 001388h = 5.000
000Fh     00h      Teil des Werts                    DATEN           /

0010h     03h      Opcode: Schreibe Ergebnis         KONTROLLFLUSS
0011h     20h      Teil der Adresse                  DATEN           \
0012h     00h      Teil der Adresse                  DATEN            > Adresse: 0020h
0013h     00h      Teil der Adresse                  DATEN           /

0014h     FFh      Opcode: Programmende              KONTROLLFLUSS

--------------------------------------------------------------------------------
0020h     00h      Startwert / Ergebnis (Byte 0)     DATEN           \
0021h     00h      Startwert / Ergebnis (Byte 1)     DATEN            > Ergebnis: 0000EA60h = 60.000
0022h     00h      Startwert / Ergebnis (Byte 2)     DATEN           /
0023h     00h      Startwert / Ergebnis (Byte 3)     DATEN

Erkennen Sie die Trennung zwischen Kontrollfluss und Daten?

  • Einige Bytes sind Befehle (OpCodes), die der CPU sagen, welche Aktion als nächstes ausgeführt wird (Kontrollfluss).

  • Andere Bytes sind Daten, zum Beispiel Adressen oder Zahlenwerte, auf die sich ein Befehl bezieht (Daten).

  • Ohne Befehle passiert nichts, und ohne Daten hat ein Programm nichts, worauf es arbeiten kann.

Im Folgenden verschaffen wir uns einen Überblick, was mit Kontrollfluss und Datenstrukturen gemeint ist und welche typischen Formen es dafür gibt.