Array: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Wechseln zu: Navigation, Suche
(Beispielprogramm - Lotto-Zahlen)
 
(142 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Was ist das?=
+
==Video==
  
Du hast bereits kennengelernt, was eine [[Variablen|Variable]] ist. Mit Variablen kannst du verschiedene Daten speichern, wie etwa Zahlen oder eine Zeichenfolge. Nun kommt es aber vor, dass du nicht nur eine Zahl oder ein einzelnes Wort speichern möchtest. Stell' dir vor, du füllst einen Steckbrief aus. Nun möchtest deine verschiedenen Hobbys aufzählen und diese alle in eine Variable speichern. Du brauchst dafür ein Array.
+
'''Arrays'''
  
Ein Array ist eine '''Liste''', in der du mehrere Daten speichern kannst. Um beim Beispiel deiner Hobbys zu bleiben, könnte ein Array so aussehen:
+
[[Datei:icon_you_tube.png|20px|Icon]] https://youtu.be/f0UYiq6I5FA
  
Hobbys = {"Lesen", "Fernsehen", "Wandern", "Basketball"}
+
==Was ist das?==
  
Wie du siehst, werden in einem Array die Daten hintereinander gespeichert. Ein Array hat dabei eine bestimmte Größe, die du festlegen kannst.
+
Wie du wahrscheinlich bereits weißt, kannst du dir eine Variable wie eine Box vorstellen, die beispielsweise eine Zahl oder eine Zeichenkette beinhalten kann.<br />
 +
In einer Box können sich aber auch weitere Boxen, die wiederum bestimmte Daten enthalten, befinden.  
  
=Erklärungsvideo=
+
[[Datei:array_boxinbox_v2.png|300px|box-in-box-modell]]
  
[[Datei:icon_progress.png|20px]]  In Arbeit!
 
  
=Befehlsblöcke=
+
Die kleinen Boxen in der großen Box sind dabei '''nummeriert'''.<br />
 +
Die '''Reihenfolge''', in der die Boxen in die große Box gelegt werden, ist also '''wichtig'''.<br />
 +
Eine solche Box (Variable) nennt man '''Liste''' oder '''Array'''.
 +
 
 +
Ein Array, also eine spezielle Variable, muss also immer dann erstellt werden, wenn eine '''Liste''' von Zahlen, Zeichen oder Wörtern in einer bestimmten Reihenfolge gespeichert werden sollen, z.B. die Produkte auf einer Einkaufsliste:
 +
 
 +
 
 +
[[Datei:array_boxeinkaufsliste.png|600px|box-modell-einkaufsliste]]
 +
 
 +
 
 +
*Jedes Array hat einen '''eindeutigen Namen''', zum Beispiel „Einkaufsliste“. Das bedeutet, dass es kein weiteres Array geben darf, dass den denselben Namen hat. Der Name soll darüber Auskunft geben, welche Daten in der Liste gespeichert sind.
 +
 
 +
*Jedes Element des Arrays besitzt denselben '''Datentyp'''. Bei der „Einkaufsliste“ handelt es sich um eine Liste von Wörtern, also Zeichenketten. 
 +
 
 +
*Die Elemente der Arrays sind durchnummeriert. Dabei wird bei 0 zum Zählen begonnen. Das Wort „Eis“ befindet sich an der '''0.''' Stelle des Arrays „Einkaufsliste“. Das Wort „Schokolade“ befindet sich an der '''5. Stelle''' des Arrays.
 +
 
 +
 
 +
[[Datei:array_einkaufsliste.png|500px|einkaufsliste]]
 +
 
 +
 
 +
*Über die Nummer (Position im Array) kann auf jedes einzelne Element im Array zugegriffen werden. So kann beispielsweise der Wert des Listeneintrags mit der Nummer 3 abgefragt, verändert oder gelöscht werden.
 +
 
 +
*Es können auch neue Elemente zur Liste hinzugefügt werden.
 +
 
 +
==Befehle==
  
 
Für die Programmierung des BBC micro:bit stehen die folgenden Befehle in der Kategorie '''Fortgeschritten > Arrays''' zur Verfügung:
 
Für die Programmierung des BBC micro:bit stehen die folgenden Befehle in der Kategorie '''Fortgeschritten > Arrays''' zur Verfügung:
  
==Array anlegen und Werte zuweisen==
+
[[Datei:Befehle_arrays_neu.png|600px|Befehlskategorie Arrays]]
 +
 
 +
==Neues Array erstellen==
 +
 
 +
Um ein neues Array zu erstellen, muss zuerst eine '''neue Variable''' angelegt werden. Das ist die große Box, die nun weitere kleine Boxen enthalten soll.<br />
 +
An dieser Stelle ist es wichtig, ob du eine '''Liste''' von '''Zahlen''' oder '''Wörtern''' (also Zeichenfolgen, Strings) anlegen möchtest.<br />
 +
Auch eine '''Liste''' von '''Bildsymbolen''' ist möglich.
 +
 
 +
'''Merke dir:'''
 +
In einem Array können mehrere '''Elemente, die denselben Datentyp haben''' gespeichert werden.
  
[[Datei:Array_erstellen.PNG|450px|Array erstellen]]
+
Um eine Liste von Wörtern anzulegen, gehst du so vor:
  
* Zu Beginn musst du ein passendes Array anlegen (entweder für Zahlen oder für Zeichenfolgen) und dieses einer [[Variablen|Variable]] zuweisen. Vergiss dabei nicht, deiner Variable einen aussagekräftigen Namen zu geben:
+
1. Erstelle eine '''neue Variable''':
  
[[Datei:array_erstellen_2.png|450px|Array erstellen]]
+
[[Datei:Array_erstellen_neu2.png|500px|Array bzw. Variable erzeugen]]
  
==Array erweitern==
+
2. Gib der Variablen einen '''Namen''':
  
In das Array wurden bereits die ersten Hobbys eingetragen. Doch da fehlen ja noch ein paar! Richtig, denn nun musst du dein Array erweitern. Das machst du mit folgendem Befehl:
+
[[Datei:Array_variable_umbenennen_neu.png|500px|Variable benennen]]
  
[[Datei:array_erweitern.png|450px|Array erweitern]]
+
3. Ändere die Elemente der Liste:
  
*Mit einem Klick auf das Zahnrad kannst du dein Array größer machen! Dazu musst du nur den Block '''Wert''' in das Array ziehen. Dadurch bestimmst du, wie groß dein Array sein soll.
+
[[Datei:Array_erstellen_neu1.png|600px|Array Elemente ändern]]
  
*Du kannst dann neue Daten in dein Array einfügen. Einen Block für eine weitere Zeichenfolge findest du in der Kategorie '''Text'''. Wenn dein Array aus Zahlen besteht, findest du eine neue Zahl in der Kategorie '''Mathematik'''.
+
4. Ändere die Anzal der Elemente in der Liste:
  
==Wert abrufen==
+
Klicke auf '''+''', um Elemente zur Liste hinzuzufügen. <br />
 +
Klicke auf '''-''', um Elemente von der Liste zu löschen. <br />
  
Nun möchtest du Daten aus deinem Array abrufen und ausgeben. Angenommen, du willst z.B. dein Lieblingshobby ausgeben, dann machst du das mit dem folgenden Block:
+
[[Datei:Befehle_befuellen_neu.png|350px|Anzahl der Elemente im Array ändern]]
 +
<!--
 +
[[Datei:Array_variable_befehle.PNG|300px|Befehlskategorie Variablen]]
  
[[Datei:wert_abrufen_array.png|450px|Wert abrufen]]
+
[[Datei:Array_neuevariable.PNG|300px|Neue Variable erstellen]]
  
*Aufgepasst! Was fällt dir auf? Wir wollen unser Lieblingshobby auswählen (also das erste Hobby in der Liste), und nehmen deshalb den Wert, der sich an der '''0. Stelle''' befindet. Merke dir: Bei einem Array beginnt das Zählen bei '''0''' und nicht bei 1! Wenn du also z.B. dein drittliebstes Hobby auswählen willst, musst du die zweite Stelle im Array auswählen und nicht die dritte.
+
[[Datei:Array_erstellen.png|200px|Variable initialisieren]]
  
=Beispielprogramm - C-Dur-Tonleiter=
 
  
Mithilfe eines Arrays kannst du alle Töne der C-Dur-Tonleiter abspeichern. Durch das Drücken der Taste A wird dann zufällig ein Ton aus der Tonleiter abgespielt. Es wird dabei zufällig ein Ton zwischen der 0. und der 7. Stelle des Arrays ausgewählt - da sich 8 Töne im Array befinden.
+
Mit dem folgenden Befehl kann eine Liste von Zeichen oder Zeichenketten erstellt werden:
  
[[Datei:tonleiter_beispiel.png|800px|C-Dur-Tonleiter]]
+
[[Datei:Array_leeresarray.png|200px|Leeres Array]]
  
=Übung=
+
Um 2 Elemente zum Array „Einkaufsliste“ hinzuzufügen, müssen die Befehlsblöcke miteinander verbunden werden.
  
Versuche, die Biber-der-Informatik-Aufgabe '''Vegetarische Schnitzeljagd''' zu lösen.
+
[[Datei:Array_variableeinkaufsliste.png|350px|Variable - Array]]
  
* Du findest sie unter folgendem Link auf Seite 45:
+
Die Boxen können nun mit Inhalten befüllt werden.
 +
 
 +
[[Datei:Array_arraybefuellen.png|350px|Array initialisieren]]
 +
-->
 +
 
 +
<!--
 +
==Weitere Elemente zum Array hinzufügen==
 +
 
 +
Auf der Einkaufsliste stehen 6 Produkte. Dazu müssen weitere 4 Elemente zur Liste hinzugefügt werden.
 +
 
 +
Mit Klick auf das Zahnrad-Symbol kann das Array erweitert werden.
 +
Ziehe dazu den violetten Wert-Block in den Array-Block. 
 +
 
 +
[[Datei:Array_neueelemente1.png|400px|weitere Elemente zum Array hinzufügen]]
 +
 
 +
[[Datei:Array_neueelemente2.png|400px|weitere Elemente zum Array hinzufügen]]
 +
 
 +
 
 +
In der Befehlskategorie '''Fortgeschritten > Text''' findest du den folgenden Textblock:
 +
 
 +
[[Datei:Array_textblock.png|100px|Text]]
 +
 
 +
Damit kann die Liste nun vervollständigt werden:
 +
 
 +
[[Datei:Array_unvollstaendig.png|400px|Array mit Werten befüllen]]
 +
 
 +
[[Datei:Array_vollstaendig.png|450px|Array befüllt]]-->
 +
 
 +
==Auf ein Element im Array zugreifen==
 +
 
 +
So kannst du auf ein Element im Array an einer bestimmten Stelle zugreifen:
 +
 
 +
Das folgende Programm gibt das Element, das sich an der '''4. Stelle''' im Array befindet, aus.<br \>
 +
Wenn Knopf A gedrückt wird, dann wird das Wort „Apfel“ als Laufschrift am LED-Display angezeigt.<br \>
 +
Achte darauf, dass die '''Nummerierung bei 0''' startet.<br \>   
 +
 
 +
<pre id="ar01">
 +
input.onButtonPressed(Button.A, function () {
 +
    basic.showString("" + (Einkaufsliste[3]))
 +
})
 +
let Einkaufsliste: string[] = []
 +
Einkaufsliste = [
 +
"Eis",
 +
"Milch",
 +
"Brot",
 +
"Apfel",
 +
"Karotten",
 +
"Schokolade"
 +
]
 +
</pre>
 +
<!--[[Datei:Array_beispielprogramm.png|400px|Beispielprogramm Einkaufsliste]]-->
 +
Zum Programm: https://makecode.microbit.org/_Vcoft6Ae1ChD
 +
<!--https://makecode.microbit.org/_eXxLCgVhEadj-->
 +
 
 +
 
 +
Das funktioniert auch mit '''Bildsymbolen''':
 +
 
 +
<pre id="ar05">
 +
input.onButtonPressed(Button.A, function () {
 +
    Bilderbuch[1].showImage(0)
 +
})
 +
let Bilderbuch: Image[] = []
 +
Bilderbuch = [images.iconImage(IconNames.Heart), images.iconImage(IconNames.Asleep), images.iconImage(IconNames.Yes)]
 +
</pre>
 +
 
 +
Zum Programm: https://makecode.microbit.org/_LmJ6kidTK4VV
 +
 
 +
 
 +
Und so funktioniert das auch mit '''Zahlen''':
 +
 
 +
<pre id="ar06">
 +
input.onButtonPressed(Button.A, function () {
 +
    basic.showNumber(zahlenliste[4])
 +
})
 +
let zahlenliste: number[] = []
 +
zahlenliste = [
 +
123,
 +
25,
 +
42,
 +
194,
 +
76
 +
]
 +
</pre>
 +
 
 +
Zum Programm: https://makecode.microbit.org/_eex4w4Cqdh6C
 +
 
 +
==Beispielprogramm – Wer erledigt den Einkauf?==
 +
 
 +
Manchmal wird eine Entscheidungshilfe benötigt, zum Beispiel in der Frage, welche Person den Einkauf erledigt.<br \>
 +
In einem Array können die Namen aller Personen, die zur Erledigung des Einkaufs in Frage kommen, gespeichert werden.<br \>
 +
 
 +
Um '''zufällig''' eine Person auszuwählen, wird eine '''Zufallszahl zwischen 0 und 3''' berechnet und diese in der '''Variable''' Zufallsposition gespeichert.<br \> 
 +
Das '''Element an der zufällig ermittelten Position''' im Array wird abschließend am LED-Display des micro:bit ausgegeben.<br \>
 +
 
 +
Welche Person wird wohl ausgewählt werden?
 +
 
 +
<pre id="ar02">
 +
let Personen = [
 +
"Mary",
 +
"Max",
 +
"Anna",
 +
"Daniel"
 +
]
 +
let Zufallsposition = randint(0, 3)
 +
basic.showString("" + (Personen[Zufallsposition]))
 +
</pre>
 +
 
 +
Zum Programm: https://makecode.microbit.org/_R36XXRDWHKi7
 +
 
 +
==Beispielprogramm - C-Dur-Tonleiter==
 +
 
 +
Mithilfe eines Arrays können auch alle Töne der C-Dur-Tonleiter abgespeichert werden.<br \>
 +
Durch das Drücken der Taste A wird dann '''zufällig''' ein Ton aus der Tonleiter abgespielt.<br \>
 +
 
 +
Mithilfe einer Zufallszahl zwischen '''0''' und '''7''' wird eine zufällige Position im Array ausgewählt.
 +
 
 +
<pre id="ar03">
 +
input.onButtonPressed(Button.A, function () {
 +
    music.playTone(Tonleiter[randint(0, 7)], music.beat(BeatFraction.Whole))
 +
})
 +
let Tonleiter: number[] = []
 +
Tonleiter = [
 +
262,
 +
294,
 +
330,
 +
349,
 +
392,
 +
440,
 +
494,
 +
523
 +
]
 +
</pre>
 +
 
 +
Zum Programm: https://makecode.microbit.org/_EAA8my2uE826
 +
 
 +
 
 +
==Beispielprogramm - Lotto-Zahlen==
 +
 
 +
Bei '''"Lotto 6 aus 45"''' werden bei einer Ziehung 6 verschiedene Zahlen '''zufällig''' ermittelt.
 +
 
 +
Du kannst dir das so vorstellen:<br \>
 +
In einem Korb befinden sich '''45 Kugeln''', die mit den Zahlen
 +
1,2,3,4,5,6,7,8,9,10,
 +
11,12,13,14,15,16,17,18,19,20,
 +
21,22,23,24,25,26,27,28,29,30,
 +
31,32,33,34,35,36,37,38,39,40,
 +
41,42,43,44 '''oder''' 45 beschriftet sind.
 +
 
 +
Es wird 6 mal hintereinander eine Kugel aus dem Korb gezogen.<br \>
 +
Eine gezogene Kugel wird '''nicht''' mehr in den Korb zurückgeleget.<br \>
 +
Das bedeudet, dass jede Zahl nur einmal gezogen werden kann.
 +
 
 +
 
 +
Der BBC micro:bit kann dir dabei helfen, 6 Zahlen für das nächste Lotto-Spiel zu ermitteln.<br \>
 +
Das folgende Programm zeigt eine mögliche Lösung.
 +
 
 +
'''1.''' Zuerst wird ein '''Array''' erstellt, das alle Zahlen von 1 bis 45 enthält.<br \>
 +
'''2.''' Wird '''Knopf A''' gedrückt, dann wird '''zufällig''' ein Element im Array '''ausgewählt''', '''angezeigt''' und sogleich aus dem Array '''gelöscht'''.<br \>
 +
'''3.''' Das Array hat nun eine '''andere Länge'''.<br \>
 +
'''4.''' Wird '''Knopf B''' gedrückt, dann wird die ermittelte Lottozahl '''erneut angezeigt'''.<br \>
 +
'''5.''' Um insgesamt 6 Zahlen für das Lotto-Spiel zu ermitteln, müssen diese Schritte wiederholbar sein.<br \>
 +
'''6.''' Nachdem alle 6 Zahlen ermittelt wurden, wird ein '''Bildsymbol''' angezeigt.
 +
 
 +
Hinweis: Das Array im hier gezeigten Programm enthält (zur besseren Übersicht) nur 10 anstatt 45 Elemente!
 +
 
 +
<pre id="ar10">
 +
input.onButtonPressed(Button.A, function () {
 +
    if (anzahl < 6) {
 +
        zufallsposition = randint(0, zahlenliste.length - 1)
 +
        lottozahl = zahlenliste.removeAt(zufallsposition)
 +
        basic.showNumber(lottozahl)
 +
        anzahl += 1
 +
    } else {
 +
        basic.showIcon(IconNames.Yes)
 +
    }
 +
})
 +
input.onButtonPressed(Button.B, function () {
 +
    basic.showNumber(lottozahl)
 +
})
 +
let lottozahl = 0
 +
let zufallsposition = 0
 +
let zahlenliste: number[] = []
 +
let anzahl = 0
 +
anzahl = 0
 +
zahlenliste = [
 +
1,
 +
2,
 +
3,
 +
4,
 +
5,
 +
6,
 +
7,
 +
8,
 +
9,
 +
10
 +
]
 +
</pre>
 +
 
 +
Zum Programm: https://makecode.microbit.org/_V0KWmaMyEDKs
 +
 
 +
==Übung==
 +
 
 +
Versuche, die Biber-der-Informatik-Aufgabe '''"Vegetarische Schnitzeljagd"''' zu lösen.<br \>
 +
Du findest die Aufgabe unter folgendem Link auf '''Seite 45''':
  
 
http://www.ocg.at/sites/ocg.at/files/Biberheft_2016_ohne_neu.pdf
 
http://www.ocg.at/sites/ocg.at/files/Biberheft_2016_ohne_neu.pdf
 +
 +
<htmlet>makecode_embed</htmlet>

Aktuelle Version vom 7. Juni 2022, 15:48 Uhr

Video

Arrays

Icon https://youtu.be/f0UYiq6I5FA

Was ist das?

Wie du wahrscheinlich bereits weißt, kannst du dir eine Variable wie eine Box vorstellen, die beispielsweise eine Zahl oder eine Zeichenkette beinhalten kann.
In einer Box können sich aber auch weitere Boxen, die wiederum bestimmte Daten enthalten, befinden.

box-in-box-modell


Die kleinen Boxen in der großen Box sind dabei nummeriert.
Die Reihenfolge, in der die Boxen in die große Box gelegt werden, ist also wichtig.
Eine solche Box (Variable) nennt man Liste oder Array.

Ein Array, also eine spezielle Variable, muss also immer dann erstellt werden, wenn eine Liste von Zahlen, Zeichen oder Wörtern in einer bestimmten Reihenfolge gespeichert werden sollen, z.B. die Produkte auf einer Einkaufsliste:


box-modell-einkaufsliste


  • Jedes Array hat einen eindeutigen Namen, zum Beispiel „Einkaufsliste“. Das bedeutet, dass es kein weiteres Array geben darf, dass den denselben Namen hat. Der Name soll darüber Auskunft geben, welche Daten in der Liste gespeichert sind.
  • Jedes Element des Arrays besitzt denselben Datentyp. Bei der „Einkaufsliste“ handelt es sich um eine Liste von Wörtern, also Zeichenketten.
  • Die Elemente der Arrays sind durchnummeriert. Dabei wird bei 0 zum Zählen begonnen. Das Wort „Eis“ befindet sich an der 0. Stelle des Arrays „Einkaufsliste“. Das Wort „Schokolade“ befindet sich an der 5. Stelle des Arrays.


einkaufsliste


  • Über die Nummer (Position im Array) kann auf jedes einzelne Element im Array zugegriffen werden. So kann beispielsweise der Wert des Listeneintrags mit der Nummer 3 abgefragt, verändert oder gelöscht werden.
  • Es können auch neue Elemente zur Liste hinzugefügt werden.

Befehle

Für die Programmierung des BBC micro:bit stehen die folgenden Befehle in der Kategorie Fortgeschritten > Arrays zur Verfügung:

Befehlskategorie Arrays

Neues Array erstellen

Um ein neues Array zu erstellen, muss zuerst eine neue Variable angelegt werden. Das ist die große Box, die nun weitere kleine Boxen enthalten soll.
An dieser Stelle ist es wichtig, ob du eine Liste von Zahlen oder Wörtern (also Zeichenfolgen, Strings) anlegen möchtest.
Auch eine Liste von Bildsymbolen ist möglich.

Merke dir: In einem Array können mehrere Elemente, die denselben Datentyp haben gespeichert werden.

Um eine Liste von Wörtern anzulegen, gehst du so vor:

1. Erstelle eine neue Variable:

Array bzw. Variable erzeugen

2. Gib der Variablen einen Namen:

Variable benennen

3. Ändere die Elemente der Liste:

Array Elemente ändern

4. Ändere die Anzal der Elemente in der Liste:

Klicke auf +, um Elemente zur Liste hinzuzufügen.
Klicke auf -, um Elemente von der Liste zu löschen.

Anzahl der Elemente im Array ändern


Auf ein Element im Array zugreifen

So kannst du auf ein Element im Array an einer bestimmten Stelle zugreifen:

Das folgende Programm gibt das Element, das sich an der 4. Stelle im Array befindet, aus.
Wenn Knopf A gedrückt wird, dann wird das Wort „Apfel“ als Laufschrift am LED-Display angezeigt.
Achte darauf, dass die Nummerierung bei 0 startet.

input.onButtonPressed(Button.A, function () {
    basic.showString("" + (Einkaufsliste[3]))
})
let Einkaufsliste: string[] = []
Einkaufsliste = [
"Eis",
"Milch",
"Brot",
"Apfel",
"Karotten",
"Schokolade"
]

Zum Programm: https://makecode.microbit.org/_Vcoft6Ae1ChD


Das funktioniert auch mit Bildsymbolen:

input.onButtonPressed(Button.A, function () {
    Bilderbuch[1].showImage(0)
})
let Bilderbuch: Image[] = []
Bilderbuch = [images.iconImage(IconNames.Heart), images.iconImage(IconNames.Asleep), images.iconImage(IconNames.Yes)]

Zum Programm: https://makecode.microbit.org/_LmJ6kidTK4VV


Und so funktioniert das auch mit Zahlen:

input.onButtonPressed(Button.A, function () {
    basic.showNumber(zahlenliste[4])
})
let zahlenliste: number[] = []
zahlenliste = [
123,
25,
42,
194,
76
]

Zum Programm: https://makecode.microbit.org/_eex4w4Cqdh6C

Beispielprogramm – Wer erledigt den Einkauf?

Manchmal wird eine Entscheidungshilfe benötigt, zum Beispiel in der Frage, welche Person den Einkauf erledigt.
In einem Array können die Namen aller Personen, die zur Erledigung des Einkaufs in Frage kommen, gespeichert werden.

Um zufällig eine Person auszuwählen, wird eine Zufallszahl zwischen 0 und 3 berechnet und diese in der Variable Zufallsposition gespeichert.
Das Element an der zufällig ermittelten Position im Array wird abschließend am LED-Display des micro:bit ausgegeben.

Welche Person wird wohl ausgewählt werden?

let Personen = [
"Mary",
"Max",
"Anna",
"Daniel"
]
let Zufallsposition = randint(0, 3)
basic.showString("" + (Personen[Zufallsposition]))

Zum Programm: https://makecode.microbit.org/_R36XXRDWHKi7

Beispielprogramm - C-Dur-Tonleiter

Mithilfe eines Arrays können auch alle Töne der C-Dur-Tonleiter abgespeichert werden.
Durch das Drücken der Taste A wird dann zufällig ein Ton aus der Tonleiter abgespielt.

Mithilfe einer Zufallszahl zwischen 0 und 7 wird eine zufällige Position im Array ausgewählt.

input.onButtonPressed(Button.A, function () {
    music.playTone(Tonleiter[randint(0, 7)], music.beat(BeatFraction.Whole))
})
let Tonleiter: number[] = []
Tonleiter = [
262,
294,
330,
349,
392,
440,
494,
523
]

Zum Programm: https://makecode.microbit.org/_EAA8my2uE826


Beispielprogramm - Lotto-Zahlen

Bei "Lotto 6 aus 45" werden bei einer Ziehung 6 verschiedene Zahlen zufällig ermittelt.

Du kannst dir das so vorstellen:
In einem Korb befinden sich 45 Kugeln, die mit den Zahlen 1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18,19,20, 21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,36,37,38,39,40, 41,42,43,44 oder 45 beschriftet sind.

Es wird 6 mal hintereinander eine Kugel aus dem Korb gezogen.
Eine gezogene Kugel wird nicht mehr in den Korb zurückgeleget.
Das bedeudet, dass jede Zahl nur einmal gezogen werden kann.


Der BBC micro:bit kann dir dabei helfen, 6 Zahlen für das nächste Lotto-Spiel zu ermitteln.
Das folgende Programm zeigt eine mögliche Lösung.

1. Zuerst wird ein Array erstellt, das alle Zahlen von 1 bis 45 enthält.
2. Wird Knopf A gedrückt, dann wird zufällig ein Element im Array ausgewählt, angezeigt und sogleich aus dem Array gelöscht.
3. Das Array hat nun eine andere Länge.
4. Wird Knopf B gedrückt, dann wird die ermittelte Lottozahl erneut angezeigt.
5. Um insgesamt 6 Zahlen für das Lotto-Spiel zu ermitteln, müssen diese Schritte wiederholbar sein.
6. Nachdem alle 6 Zahlen ermittelt wurden, wird ein Bildsymbol angezeigt.

Hinweis: Das Array im hier gezeigten Programm enthält (zur besseren Übersicht) nur 10 anstatt 45 Elemente!

input.onButtonPressed(Button.A, function () {
    if (anzahl < 6) {
        zufallsposition = randint(0, zahlenliste.length - 1)
        lottozahl = zahlenliste.removeAt(zufallsposition)
        basic.showNumber(lottozahl)
        anzahl += 1
    } else {
        basic.showIcon(IconNames.Yes)
    }
})
input.onButtonPressed(Button.B, function () {
    basic.showNumber(lottozahl)
})
let lottozahl = 0
let zufallsposition = 0
let zahlenliste: number[] = []
let anzahl = 0
anzahl = 0
zahlenliste = [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
]

Zum Programm: https://makecode.microbit.org/_V0KWmaMyEDKs

Übung

Versuche, die Biber-der-Informatik-Aufgabe "Vegetarische Schnitzeljagd" zu lösen.
Du findest die Aufgabe unter folgendem Link auf Seite 45:

http://www.ocg.at/sites/ocg.at/files/Biberheft_2016_ohne_neu.pdf