Benutzer:Arbol01/Programmieren für Überflieger: Arrays, Zeiger und Stems

Einleitung

Bearbeiten

Manchmal will man in einem Programm indizierte Variablen benutzen. Das kann zum Beispiel ein Feld für Tage sein:

tag[1] = "Montag"
tag[2] = "Dienstag"
tag[3] = "Mittwoch"
tag[4] = "Donnerstag"
tag[5] = "Freitag"
tag[6] = "Samstag"
tag[7] = "Sonntag"

Vielleicht will man auch ein zweidimensionales Feld verwenden:

zahl[1][1] = "eins" ;  zahl[2][1] = "one"   ;  zahl[3][1] = "une" ;
zahl[1][1] = "zwei" ;  zahl[2][1] = "two"   ;  zahl[3][1] = "deux" ;
zahl[1][1] = "drei" ;  zahl[2][1] = "three" ;  zahl[3][1] = "trois" ;
zahl[1][1] = "vier" ;  zahl[2][1] = "four"  ;  zahl[3][1] = "quatre" ;

Es gibt allerdings Fälle, bei denen dieses Schema nicht passend ist. Viele Variablen des Arrays würden unbenutzt bleiben, oder was viel schlimmer ist, ein Eintrag würde über das Array hinnausgehen. Man muß also in jedem Fall dafür sorgen, das Benutzung eines Arrays, dieses immer ausreichend groß ist.

Für solche Fälle gibt es die Zeiger, die leider nicht von jeder Progammiersprache unterstützt werden. Der Zeige alleine ist dabei allerdings noch uninteressant. Wie die Zeiger Funktionieren wird im Folgenden gezeigt:

Zuerst braucht man eine Konstrution:
TYPE
  zeiger = ^stack;
  stack  = RECORD
            inhalt     : integer;
            nachfolger : zeiger ;
          end;
Das Ganze sieht ein bisschen merkwürdig aus, da die Typendeklaration zeiger in der noch nicht deklarierten Konstruktion als Typ auftaucht. Das ist so ein bisschen wie sich mit dem Schopf aus dem Sumpf ziehen. Aber es funktioniert.


Es gibt Programmiersprachen, wie REXX, die weder Arrays noch Zeiger bereitstellen. Für REXX gibt es stattdessen den Typ des Stem. Einerseits lassen sich Stems wie Arrays verwenden:

tag.1 = "Montag"
tag.2 = "Dienstag"
tag.3 = "Mittwoch"
tag.4 = "Donnerstag"
tag.5 = "Freitag"
tag.6 = "Samstag"
tag.7 = "Sonntag"

Wobei die Indizes keine Zahlen sein müssen, sonder z.B. auch Strings sein können:

farbe."rot" = "cyan"
farbe."gelb" = "blau"
farbe."grün" = "magenta"
farbe."cyan" = "rot"
farbe."blau" = "gelb"
farbe."magenta = "grün"

Genauso lassen sich Stems aber auch wie Zeiger verwenden:

z_inhalt.i
z_nachfolger.i