Calliope mini - Spaß durch Programmieren

Entwicklungsumgebungen

Digitalisierung von Dezimalzahlen

Ziel: Eine Dezimalzahl zwischen 0 und einem bestimmten Wert wird in die binäre Schreibweise umgewandelt und auf der LED-Leiste angezeigt.

Die Entwicklung des Programms erfolgt in mehreren Teilschritten. Jeder neue Schritt baut auf dem vorherigen Schritt auf!

1. Schritt: Eine Liste von 5 logischen Werten wird auf dem Bildschirm angezeigt.

Die Variable dezimal enthält die Zahl, die dann in eine binäre Zahl umgewandelt werden soll. In der Variablen bit_anzahl stehen die maximale Anzahl von Bits, die die binäre Zahl enthalten kann. Mit dieser Anzahl wird eine Liste von logischen Werten erzeugt. Dort drin steht dann die binäre Zahl.
Ändert man die maximale Anzahl der zur Verfügung stehenden Bits, wird die Liste beim Programmstart genau mit dieser Länge erzeugt.

Zu Beginn enthält die Liste nur Nullen, also den logischen Wert falsch.

Das Programm besteht aus zwei Schleifen. In der ersten Schleife wird die Liste mit zufälligen binären Werten gefüllt. Die zweite Schleife zeigt die Liste in der oberen Bildschirmzeile an.

Calliope mini

2. Schritt: Eine Dezimalzahl wird in eine 5 Bit breite Binärzahl umgewandelt.

Das Verfahren zum Digitalisieren einer Dezimalzahl ist recht einfach. Es besteht aus drei Schritten, die sich entsprechend der Bitzahl wiederholen. Dabei werden die Bits vom niedrigwertigsten zum höchstwertigsten Bit gesetzt. Dieser Programmteil wird an die Stelle der ersten Schleife im Programm gesetzt.

  1. Ist die Zahl nicht durch zwei teilbar (liefert die Division durch 2 als Rest eine 1, Modulo-Funktion)?
  2. Wenn das der Fall ist, wird das aktuelle Bit gesetzt.
  3. Die Dezimalzahl wird durch 2 geteilt, das Ergebnis abgerundet und der Zähler des aktuellen Bits um eins erhöht.

Die Tabelle zeigt die Prozedur für die Zahl 23. Die Tabelle muss von rechts nach links gelesen werden!

Dezimalzahl 1 2 5 11 23
gerade? nein ja nein nein nein
Bitnummer 4 3 2 1 0
Bitinhalt 1 0 1 1 1

 

Calliope mini

Zum besseren Verständnis kann das Programm im Debugger schrittweise bei der Arbeit beobachtet werden. Dazu müssen die Sensordaten angezeigt werden: und das Programm schrittweise abgearbeitet werden: .

Für die Zahl 23 erhält man die binäre Zahl 10111. Lässt man das Programm weiterlaufen, erscheint die Bitfolge in der ersten Zeile des Bildschirms. Aber sie ist verkehrt herum!

Klar: Der x-Wert 0 ist ja auf dem Bildschirm in der linken Ecke! Also muss bei der Ausgabe die Bitfolge umgekehrt ausgegeben werden.

Aufgabe: Ändere die zweite Schleife, so dass die Ausgabe richtig erfolgt.

Calliope mini

3. Schritt: Mit der LED-Leiste wird ein binärer Zähler realisiert

Legt man das bisherige Prorgamm in einer Funktion ab (z.B. dez_to_bin()), kann man es bequem in einer Zählscheife aufrufen und die jeweilige Zählvariable binär auf der LED-Leiste anzeigen. Ändert man die bit_anzahl; kann die gesamte Leiste mit ihren 10 LED zur Anzeige verwendet werden.

Die Entwicklung des Programms erfolgt in mehreren Teilschritten. Jeder neue Schritt baut auf dem vorherigen Schritt auf!

1. Schritt: Eine Liste von 5 logischen Werten wird auf dem Bildschirm angezeigt.

Die Variable dezimal enthält die Zahl, die dann in eine binäre Zahl umgewandelt werden soll. In der Variablen bit_anzahl stehen die maximale Anzahl von Bits, die die binäre Zahl enthalten kann. Mit dieser Anzahl wird eine Liste von logischen Werten erzeugt. Dort drin steht dann die binäre Zahl.
Ändert man die maximale Anzahl der zur Verfügung stehenden Bits, wird die Liste beim Programmstart genau mit dieser Länge erzeugt.

Das Programm besteht aus zwei Schleifen. In der ersten Schleife wird die Liste mit zufälligen binären Werten gefüllt. Die zweite Schleife zeigt die Liste in der oberen Bildschirmzeile an.

Calliope mini

2. Schritt: Eine Dezimalzahl wird in eine 5 Bit breite Binärzahl umgewandelt.

Das Verfahren zum Digitalisieren einer Dezimalzahl ist recht einfach. Es besteht aus drei Schritten, die sich entsprechend der Bitzahl wiederholen. Dabei werden die Bits vom niedrigwertigsten zum höchstwertigsten Bit gesetzt. Dieser Programmteil wird an die Stelle der ersten Schleife im Programm gesetzt.

  1. Ist die Zahl nicht durch zwei teilbar (liefert die Division durch 2 als Rest eine 1, Modulo-Funktion)?
  2. Wenn das der Fall ist, wird das aktuelle Bit gesetzt.
  3. Die Dezimalzahl wird durch 2 geteilt, das Ergebnis abgerundet und der Zähler des aktuellen Bits um eins erhöht.

Die Tabelle zeigt die Prozedur für die Zahl 23. Die Tabelle muss von rechts nach links gelesen werden!

Dezimalzahl 1 2 5 11 23
gerade? nein ja nein nein nein
Bitnummer 4 3 2 1 0
Bitinhalt 1 0 1 1 1

Aufgabe: Ändere das Programm!

  1. Das Array wird zu Beginn nur mit 0 gefüllt.
  2. Zwischen dem Füllen des Array mit 0 und der Anzeige wird die im Programmablaufplan gezeigte Umwandlung der Dezimalzahl in eine Binärzahl eingefügt.
  3. Der gesamte Block, der bisher in dauerhaft steht, wird in den Startblock geschoben.

 

Calliope mini

Für die Zahl 23 erhält man die binäre Zahl 10111. Startet man das Programm, erscheint die Bitfolge in der ersten Zeile des Bildschirms. Aber sie ist verkehrt herum!

Klar: Der x-Wert 0 ist ja auf dem Bildschirm in der linken Ecke! Also muss bei der Ausgabe die Bitfolge umgekehrt ausgegeben werden.

Aufgabe: Ändere die zweite Schleife, so dass die Ausgabe richtig erfolgt.

zurück