Einleitung | Einführungsbeispiel | Eingabe, Ausgabe, Variablen | Datentypen | Stukturen | For...EndFor | If...EndIf | Loop...EndLoop | While...EndWhile | Felder | Funktionen | Unterprogramme | Grafikprogrammierung | Index
Programmierkurs 

Felder

Mit dem bisher Gelernten sind wir nun auch in der Lage das Einführungsbeispiel "6 aus 45" zu verstehen. Betrachten wir den Programmcode dieses Beispiels noch einmal, so erkennen wir zunächst, dass sich While- und For-Schleifen beliebig ineinander verschachteln lassen:
 
Prgm
Local a, i, j, nz
ClrIO
For i, 1, 6
    false ® nz 
    While nz = false 
        rand(45) ® a[ i ]
        true ® nz
  For j, 1, i - 1
            If a[ i ] = a[ j ]
                false ® nz
  EndFor
    EndWhile
EndFor
Disp a
EndPrgm

 
Selbstverständlich gelten alle Verschachtelungsvarianten auch für die Loop-Schleife.

Weiters erkennt man, dass die sechs Zufallszahlen, die das Programm berechnet, auf einer einzelnen Variablen mit dem Namen a gespeichert werden. Diesen Variablentyp, auf dem mehrere Werte gleichen Typs gespeichert werden können, bezeichnet man zumeist als Feldvariable. Am TI-92 steht dafür der Variablentyp "Liste" zur Verfügung. Wie man anhand des obigen Beispiels erkennt, kann dieser Variablentyp besonders elegant innerhalb einer Schleife mit Werten belegt werden. Zum besseren Verständnis kann man sich diesen Datentyp in Form einer Tabelle vorstellen, deren Zellen von oben nach unten durchnummeriert sind und nach der Belegung mit Zufallszahlen folgendes Aussehen haben könnte:

Die Wertzuweisung der einzelnen Zellen im vorliegenden Programm erfolgt mit dem Befehl rand(45) ® a[ i ], wobei rand(45) eine Zufallszahl von 1 bis 45 erzeugt, die in der i-ten Zelle a[ i ] gespeichert wird. Da i die Laufvariable der äußeren FOR-Schleife ist und die Werte von 1 bis 6 annimmt, wird eine Liste mit sechs Einträgen erzeugt.

Der Zugriff auf einzelne Listenelemente erfolgt durch den Variablennamen mit anschließender eckiger Klammer, die die Platznummer des Listenelements enthält. Will man also beispielsweise die 4.Zelle mit dem Wert 33 belegen, verwendet man den Befehl  33 ® a[4]. Die Ausgabe des Wertes der 2.Zelle erfolgt mit dem Befehl Disp a[2]. Die ganze Liste lässt sich, wie im vorliegenden Beispiel ersichtlich, durch den Befehl Disp a anzeigen.

Die WHILE-Schleife und die darin enthaltene FOR-Schleife stellen sicher, dass in der Liste keine Zufallszahl mehrfach auftreten kann. Dabei wird zunächst die Boolean-Variable nz (= Neue Zahl) auf false gesetzt und dann die WHILE-Schleife solange wiederholt, bis nz den Wert true hat. Dafür wird innerhalb der WHILE-Schleife die Varible nz nach dem Erzeugen einer neuen Zufallszahl auf true gesetzt und anschließend die neue Zufallszahl mit den bereits erzeugten Zufallszahlen innerhalb der (blauen) FOR-Schleife verglichen. Tritt eine Übereinstimmung der neuen Zufallszahl mit einem bereits vorhanden Listenelement auf, wird nz wieder auf false gesetzt und das Erzeugen einer neuen Zufallszahl beginnt von vorne.

Übungsaufgaben

 
  1. Ergänze das Programm lotto so, dass die Zufallszahlen sortiert ausgegeben werden. Verwende dabei folgendes Sortierverfahren: Suche das kleinste Element in der Liste und tausche es mit dem Element an der ersten Stelle, suche danach das zweitkleinste Element der Liste und tausche es mit dem Element an der zweiten Stelle, usw. Beachte, dass das Tauschen von zwei Elementen nur mit einer Hilfsvariablen möglich ist! 
[Lösungsvorschlag]

 



Mail an den Autor, Karl.Weinstich@theresianum.ac.at