Calliope mini - Spaß durch Programmieren

Bubblesort

Ziel: In einem Array werden zufällige Zahlenwert abgelegt, die dann der Größe nach sortiert werden.

1. Anzeige der Zahlen

In einem Array werden fünf Zahlen abgelegt, die zwischen 1 und 5 liegen. Die Zahlenwerte werden auf dem Bildschirm als Säulen angezeigt.

Hinweis: Die j-Schleife zählt von 0 bis eine Zahl vor dem Eintrag im Array-Element. Im ersten Fall wird die Schleife also nur ein Mal durchlaufen und die LED bei 4-0=4 eingeschaltet.

anzeige

2. Taste A

Im nächsten Schritt werden die eben geschriebenen Anzeigebefehle in einer Funktion abgelegt. Das macht das Programm dann übersichtlicher.

Dann wird die Taste A dazu verwendet, bei jedem Druck die Anzeige zu aktualisieren und die Farbe der LED zu wechseln. Die eigentliche Sortierung erfolgt im nächsten Schritt vor der Aktualisierung der Anzeige.

Quersumme

3. Tauschen

Es werden nun im Array die ersten beiden Werte miteinander verglichen. Falls der erste Wert größer als der zweite Wert ist, werden beide Einträge getauscht. Damit rutscht eine größere Zahl eine Position nach rechts, also zum Ende des Arrays hin.

Danach wird der Zähler um eins erhöht und die nächsten beiden Einträge im Array miteinander verglichen. Die größere Zahl von diesen beiden wird wieder nach rechts geschoben. Damit wandert eine große Zahl Schritt für Schritt nach rechts.

Wichtig: In dem Programmblock, der beim Loslassen der Taste A ausgeführt wird, muss überprüft werden, ob die Variable zaehler nicht größer als 4 wird. Falls das der Fall ist, muss sie auf 0 zurückgesetzt werden, sie darf also den Wert 5 nie erreichen.

anzeige

Bei jedem Druck auf die Taste A werden zwei benachbarte Zahlen verglichen und bei Bedarf getauscht. Zum Schluss stehen die 5 Zahlen schön geordnet da.

4. Mit Schleifen arbeiten

Wenn man den Programmteil zum Tauschen von einer Schleife mehrmals aufrufen lässt, kann man bei jedem Drücken der Taste A das Array einmal durchwandern und die größte Zahl nach rechts wandern lassen.

Ruft man den Tauschprozess mit einer weiteren Schleife vier Mal auf, wird das Array in einem Rutsch geordnet.

anzeige

Das Video zeigt den schlimmsten Fall: zu Beginn sind alle Zahlen verkehrt herum geordnet. Ein Knopfdruck und alles hat seine Ordnung.

Da das Prinzip jetzt bekannt sein dürfte, kann man größere Arrays ordnen lassen. Als Anzeige ist der Calliope-Monitor nun aber nicht mehr geeignet. Besser ist der seriell Monitor aus der Arduino-IDE.

Da die komplette Anzeige in einer Fuktion steht, kann man entweder die Funktion ändern oder eine neue Anzeigefunktion schreiben.

anzeige

Nun kann man ordentlich in die Vollen gehen. Im Beispiel besteht das Array aus 30 Zufallszahlen zwischen 1 und 150.

anzeige

1. Anzeige der Zahlen

In einem Array werden fünf Zahlen abgelegt, die zwischen 1 und 5 liegen. Die Zahlenwerte werden auf dem Bildschirm als Säulen angezeigt.

Hinweis: Die j-Schleife z�hlt von 0 bis zu der Zahl , die in dem Array-Element steht. Im ersten Fall wird die Schleife also zwei Mal durchlaufen. Da aber nur eine LED eingeschaltet werden soll, muss vom Wert noch 1 abgezogen werden.

anzeige

2. Taste A

Im n�chsten Schritt werden die eben geschriebenen Anzeigebefehle in einer Funktion abgelegt. Das macht das Programm dann �bersichtlicher.

Dann wird die Taste A dazu verwendet, bei jedem Druck die Anzeige zu aktualisieren und die Farbe der LED zu wechseln. Die eigentliche Sortierung erfolgt im n�chsten Schritt vor der Aktualisierung der Anzeige.

Quersumme

3. Tauschen

Es werden nun im Array die ersten beiden Werte miteinander verglichen. Falls der erste Wert größer als der zweite Wert ist, werden beide Einträge getauscht. Damit rutscht eine größere Zahl eine Position nach rechts, also zum Ende des Arrays hin.

Danach wird der Zähler um eins erhöht und die nächsten beiden Einträge im Array miteinander verglichen. Die größere Zahl von diesen beiden wird wieder nach rechts geschoben. Damit wandert eine große Zahl Schritt f�r Schritt nach rechts.

Wichtig: In dem Programmblock, der beim Loslassen der Taste A ausgeführt wird, muss überprüft werden, ob die Variable zaehler nicht größer als 4 wird. Falls das der Fall ist, muss sie auf 0 zurückgesetzt werden, sie darf also den Wert 5 nie erreichen.

anzeige

Bei jedem Druck auf die Taste A werden zwei benachbarte Zahlen verglichen und bei Bedarf getauscht. Zum Schluss stehen die 5 Zahlen schön geordnet da.

4. Mit Schleifen arbeiten

Wenn man den Programmteil zum Tauschen von einer Schleife mehrmals aufrufen lässt, kann man bei jedem Drücken der Taste A das Array einmal durchwandern und die größte Zahl nach rechts wandern lassen.

Ruft man den Tauschprozess mit einer weiteren Schleife vier Mal auf, wird das Array in einem Rutsch geordnet.

anzeige

Das Video zeigt den schlimmsten Fall: zu Beginn sind alle Zahlen verkehrt herum geordnet. Ein Knopfdruck und alles hat seine Ordnung.

Da das Prinzip jetzt bekannt sein dürfte, kann man größere Arrays ordnen lassen. Als Anzeige ist der Calliope-Monitor nun aber nicht mehr geeignet. Besser ist der seriell Monitor aus der Arduino-IDE.

Da die komplette Anzeige in einer Fuktion steht, kann man entweder die Funktion ändern oder eine neue Anzeigefunktion schreiben.

anzeige

Nun kann man ordentlich in die Vollen gehen. Im Beispiel besteht das Array aus 30 Zufallszahlen zwischen 1 und 150.

anzeige

5.Bubblesort grafisch anzeigen

Über die Erweiterung oledpaint lassen sich senkrechte Linien auf dem Display darstellen. Wenn man die Anzeigefunktion entsprechend umgestaltet, lassen sich die Zahlen im Array in Linien verschiedener Länge anzeigen.

Im konkreten Beispiel bestand das Array aus 128 Einträgen. In jedem Eintrag stand eine Zufallszahl zwischen 0 und 63. Zu Beginn ist das Array völlig ungeordnet und am Ende stehen die großen Zahlen hinten und die Kleinen ganz vor.

zurück