Calliope mini - Spaß durch Programmieren

Zufallszahlen

(Diese Aufgabe funktioniert nur im Simulator. Auf dem Calliope mini bleibt das Programm schon beim Erzeugen der Liste hängen!)

Ziel: Für Simulationen oder Spiele braucht man manchmal eine zufällige Reihe von Ziffern, in der jede Ziffer nur einmal vorkommen darf. Z.B. können die 4 Pins des Calliope mini mit den Ziffern 1 bis 4 belegt werden, wobei jeder Pin eine andere Ziffer erhält. Die Reihenfolge der Ziffern wird per Zufall bestimmt.

Das Programm besteht aus drei Teilen

  1. Es werden in der Liste alle Elemente auf 0 gesetzt. Beim ersten Durchlauf wird dabei eine Liste (Array) erstellt, die so viele Elemente hat, wir die Variable anzahl vorgibt.
  2. Die Liste wird mit den Ziffern gefüllt.
  3. Die Liste wird Ziffer für Ziffer auf dem Bildschirm dargestellt.

Als erste werden die Schritte 1 und 3 programmiert. Sie sind im Vergleich zum 2. Schritt recht einfach und erfüllen grundlegende Aufgaben. Der erste Schritt setzt die Liste auf einen Grundzustand zurück und der 3. Schritt zeigt das Ergebnis der Arbeit.

In der Variablen anzahl steht die Anzahl der Zufallszahlen. Die LED zeigt an, welcher Schritt gerade bearbeitet wird.

Achtung: Im Unterschied zu einem Array hat das erste Elemente der Liste den Index 1. Ein richtiges Array beginnt bei 0.

Calliope mini-Zufallszahl

Der mittere Teil, der zwischen die beiden vorhandenen Zählschleifen eingebaut wird, fällt die Liste. Dazu wird wieder eine Zählschleife verwendet, die so oft durchlaufen wird, wie in der Variablen anzahl steht.

In anderen Programmiersprachen kann man ein Array zufällig mischen (z.B. PHP: shuffle(array)) Das geht im OpenRobertaLab leider nicht. Deshalb gehe ich in der Schleife so vor:

  • Die ganze Prozedur läuft in einer Schleife ab, die so lange durchlaufen wird, bis eine Zahl gewürfelt wurde, die in der Liste noch nicht vorhandfen ist.
  • Es wird eine Zufallszahl zwischen 1 und der anzahl gew?rfelt.
  • Man schaut, ob in den bereits bearbeiteten Listenfeldern diese Zahl vorkommt. Dazu wird die Variable vorhanden benutzt. Sie wird zu Beginn der Schleife auf falsch gesetzt. Ist die Zahl schon vorhanden, wird die Variable auf wahr gesetzt. Die Schleife läuft solange die Variable wahr ist.
  • Wenn ja, wird erneut gewürfelt, bis die Zahl nicht auftaucht.
  • Wenn nein, wird die Zahl in das aktuelle Listenfeld eingetragen und zum nächsten Feld gegangen.
Calliope mini-Zufallszahl

zurück