Dem Zufall auf der Spur: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Wechseln zu: Navigation, Suche
(Erforderliche Programmierblöcke)
(20px|Icon Materialien)
 
(107 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
 
[[Datei:kopf_zahl.jpg|right|600px]]  
 
[[Datei:kopf_zahl.jpg|right|600px]]  
  
Maria behauptet: Wenn man eine Münze oft genug wirft, dann kommen immer gleich viele Kopf- und Zahl-Ergebnisse.
+
Maria behauptet: Wenn man eine Münze oft genug wirft, dann kommen immer gleich viele Kopf- und Zahlergebnisse.
  
Das würde bedeuten: Wirft man 100 mal - dann kommen in der Gesamtrechnung immer 50 Kopf- und 50 Zahl-Ergebnisse?
+
Das würde bedeuten: Wirft man 100-mal, dann kommen in der Gesamtrechnung immer 50 Kopf- und 50 Zahlergebnisse?
 
   
 
   
* Viele Überlegungen:
+
* Ist das exakt immer so?  
** Ist das exakt immer so?  
+
* Ist das meistens so?
** Ist das meistens so?
+
* Könnte es auch 10 zu 90 ausgehen?
** Könnte es auch 10 zu 90 ausgehen?
 
  
Am besten man testet einmal mit einigen Würfen einer Münze - versuche einmal 10 Würfe:
+
Am besten du testest einmal mit einigen Würfen einer Münze – versuche einmal 10 Würfe:
Lege dir eine Tabelle an, wo du die Ergebnisse einträgst.
+
Lege dir eine Tabelle an, in die du die Ergebnisse einträgst.
 
 
[[Datei:Tabelle zufall1.jpg|50%]]
 
  
 +
[[Datei:Tabelle zufall1.jpg|50%]]
  
 
== [[Datei:Icon_gluehbirne.png|20px|Icon]] Aufgabenstellung  ==
 
== [[Datei:Icon_gluehbirne.png|20px|Icon]] Aufgabenstellung  ==
  
Mit dem Micro:bit kannst du dies noch bequemer testen - du benützt statt dem Werfen der Münze den Zufallsgenerator des Micro:bit. Entwickle eine Programm mit dem man das Werfen der Münzen simulieren kann. Der Vorteil des Computers, sehr viele Würfel zu produzieren, sollte ebenfalls zum Tragen kommen.
+
Mit dem BBC micro:bit kannst du dies noch bequemer testen – du benützt den Zufallsgenerator des micro:bit. Entwickle ein Programm, mit dem man das Werfen der Münzen simulieren kann. Der Vorteil des Computers, sehr viele Würfe zu produzieren, sollte dabei ebenfalls zum Tragen kommen.
  
* Taste "A" sollte den Zufallsgenerator aufrufen: Dieser soll Kopf oder Zahl produzieren.
+
* Das Schütteln des micro:bit sollte den Zufallsgenerator aufrufen: Dieser soll Kopf oder Zahl produzieren.
* Taste "B" sollte die Anzahl der Zustände darstellen (Erweiterung)
+
* Taste A sollte die Anzahl der "Kopfwürfe" darstellen
* Taste "A+B" sollte die Gesamtanzahl der Versuche darstellen (Erweiterung)
+
* Taste B sollte die Anzahl der "Zahlwürfe" darstellen
 +
* Taste A+B sollten die Gesamtanzahl der Versuche darstellen
 
* Neustart mit "Reset"-Taste (Erweiterung)
 
* Neustart mit "Reset"-Taste (Erweiterung)
  
 
== [[Datei:icon_material.png|20px|Icon]] Materialien ==
 
== [[Datei:icon_material.png|20px|Icon]] Materialien ==
  
Du benötigst...
+
* 1 Münze
 
+
* 1 Blatt Papier
* eine Münze
+
* BBC micro:bit
* ein Blatt Papier
 
* einen Micro:bit
 
  
 
== [[Datei:icon_sanduhr.png|20px|Icon]] Zeitaufwand ==
 
== [[Datei:icon_sanduhr.png|20px|Icon]] Zeitaufwand ==
Zeile 42: Zeile 39:
  
 
[[Datei:SternGelb.png|30px|borderless]][[Datei:SternLeer.png|30px|borderless]][[Datei:SternLeer.png|30px|borderless]]
 
[[Datei:SternGelb.png|30px|borderless]][[Datei:SternLeer.png|30px|borderless]][[Datei:SternLeer.png|30px|borderless]]
 
  
 
== [[Datei:Icon_brain.png|20px|Icon]] Kompetenzen ==
 
== [[Datei:Icon_brain.png|20px|Icon]] Kompetenzen ==
  
 
[[Datei:IMG_5764_(1).png|right]]
 
[[Datei:IMG_5764_(1).png|right]]
Das solltest du bereits können ...
+
Du solltest bereits können:
* einen Prozentanteil schätzen können
+
* Einen Prozentanteil schätzen können (Mathematik)
* eine Wertetabelle anlegen und auswerten können
+
* Eine Wertetabelle anlegen und auswerten können (Mathematik)
 
+
* Programmbefehle zu Tastefunktionen A und B zuordnen können (Informatik)
  
Beim Programmieren lernst bzw. übst du ...
 
  
* die Verwendung von [[Variablen]]
+
Du lernst, ...
* [[Operatoren]] verwenden können
 
* den [[Zufallsgenerator]] nutzen können
 
* [[Bedingungen]] verwenden können
 
  
Bei dieser Aufgabe lernst du auch
+
* wie du [[Variablen]] verwenden kannst
* ein NEUES Programm zu lesen und es zu interpretieren.
+
* [[Operatoren]] zu verwenden
 +
* den [[Zufallsgenerator]] zu nutzen
 +
* [[Bedingungen]] zu verwenden
  
 
== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==
 
== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==
Zeile 71: Zeile 65:
  
 
=== Erforderliche Programmierblöcke ===
 
=== Erforderliche Programmierblöcke ===
Ziel:
+
==== Ziel ====
* Der Zufallsgenerator sollte 2 Zustände darstellen - dies bedeutet entweder Kopf oder Zahl.
+
* Der Zufallsgenerator sollte 2 Zustände darstellen: wahr oder falsch
* Der Zustand "wahr" soll gezählt werden ("wahr" bedeutet "Kopf")
+
* Diese Zustände entsprechen den 2 Möglichkeiten beim Münzwurf
* Ebenso soll die Gesamtanzahl der Versuche gezählt werden
+
* Es sollte jeweils die Anzahl der Treffer für "wahr" und für "falsch" gezählt werden.
  
Vereinbarung:
+
==== Vereinbarung ====
* "Wahr bedeutet Kopf" und "Falsch bedeutet Zahl"
+
* "'''W'''ahr bedeutet Kopf" und "Falsch bedeutet '''Z'''ahl"
  
[[Datei:kopf.png|200px ]][[Datei:zahl.png|right|200px ]]
+
[[Datei:kopf.png|200px ]] ... [[Datei:zahl.png|200px ]]
  
* Der Zufallsgenerator soll "wahr" oder "falsch" liefern <spoiler text="Block"> [[Datei:Zufall_w_f.png|border|Zwei mögliche Zustände (wahr und falsch)?]]</spoiler>
+
==== Blöcke ====
* Bedingungen bei "wahr" oder "falsch" <spoiler text="Block"> [[Datei:Wenndann.png|border]]</spoiler>
+
 
* Tastenereignis für A, B und A+B <spoiler text="Block"> [[Datei:Taste_a.png|border]]</spoiler>
+
* Anstelle des Münzwurfs sollte der Zufallsgenerator "wahr" oder "falsch" liefern
* Startereignis <spoiler text="Block"> [[Datei:Start_ereignis.png|border]]</spoiler>
+
* Der Zufallsgenerator sollte durch Schütteln des micro:bit aufgerufen werden
* Variable anlegen und initialisieren <spoiler text="Block"> [[Datei:var_init.png|border]]</spoiler>
+
* Je nach Bedingung "wahr" oder "falsch" sollten verschiedene Aktionen stattfinden <spoiler text="Block">
* Variable addiere <spoiler text="Block"> [[Datei:Anz_wuerfe.png|border]][[Datei:Anz_kopf.png|border]]</spoiler>
+
<pre id="pre01">
 +
input.onGesture(Gesture.Shake, function () {
 +
if (true) {
 +
 
 +
} else {
 +
 
 +
}
 +
})
 +
</pre>
 +
</spoiler>
 +
* Bestimmte Tastenereignisse für Taste A, B und A+B - müssen Daten anzeigen <spoiler text="Block">
 +
<pre id="pre02">
 +
input.onButtonPressed(Button.A, function () {
 +
})
 +
input.onButtonPressed(Button.AB, function () {
 +
 +
})
 +
input.onButtonPressed(Button.B, function () {
 +
 +
})
 +
</pre>
 +
</spoiler>
 +
* Daten müssen angezeigt werden <spoiler text="Block">
 +
<pre id="pre03">
 +
basic.showNumber(0)
 +
</pre>
 +
</spoiler>
 +
* Bei Programmstart durchzuführen <spoiler text="Block"> <pre id="pre01">
 +
basic.showNumber(0)
 +
</pre></spoiler>
 +
* Variablen müssen angelegt und initialisiert werden <spoiler text="Block"><pre id="pre03">
 +
let anzahl_kopf = 0
 +
let anzahl_zahl = 0
 +
</pre></spoiler>
 +
* Die Variablen müssen hochgezählt werden <spoiler text="Block"><pre id="pre03">
 +
anzahl_zahl += 1
 +
anzahl_kopf += 1
 +
</pre></spoiler>
 +
* Die Variablen müssen addiert werden <spoiler text="Block"><pre id="pre03">
 +
let varx = anzahl_zahl + 1
 +
 
 +
</pre></spoiler>
  
 
=== Eckpfeiler zur Umsetzung ===
 
=== Eckpfeiler zur Umsetzung ===
  
* Programmiere den Micro:bit den Zufallsgenerator so, dass durch Drücken der Taste A ein Wert "wahr" oder "falsch" ermittelt wird.
+
* Programmiere den micro:bit-Zufallsgenerator so, dass durch Schütteln ein Wert "wahr" oder "falsch" ermittelt wird (= Kopf oder Zahl)
 
+
* Wenn Taster "A" gedrückt wird, soll die Anzahl Kopfwürfe gezeigt werden
* Wenn Taster A Auslöser für eine Anzeige sein soll, benötigt man das Ereignis "Wenn Knopf A gedrückt!"
+
* Wenn Taster "B" gedrückt wird, soll die Anzahl Zahlwürfe gezeigt werden
* Dabei soll ein Zufallswert durch "Wähle zufälligen Wahr- und Falsch-Wert" aus dem Menü '''Mathematik''' ermitteln werden.
+
* Wenn Taster "A+B" gedrückt werden, soll die Summe der Würfe dargestellt werden
 +
* Zufallswerte erhält man aus dem Menü Mathematik "Wähle zufälligen Wahr- und Falsch-Wert"  
 
* Wird Wahr ermittelt, so soll der Buchstabe "K" für Kopf erscheinen, andernfalls "Z" für Zahl.
 
* Wird Wahr ermittelt, so soll der Buchstabe "K" für Kopf erscheinen, andernfalls "Z" für Zahl.
 
* Hier benötigt man die logische Verzweigung "Wenn ... dann ... sonst"
 
* Hier benötigt man die logische Verzweigung "Wenn ... dann ... sonst"
 
+
* Das System sollte über zwei Variablen protokollieren, wie oft Kopf und wie oft Zahl geworfen wurde
* Erweiterung durch Animation (Intro):
 
** Es kann ein Bild als Bedienhinweis zu Beginn dargestellt werden.
 
 
 
  
 
===[[Lösung_zufall|Schritt für Schritt zur Lösung]]===
 
===[[Lösung_zufall|Schritt für Schritt zur Lösung]]===
Zeile 107: Zeile 140:
  
 
===Allgemein===
 
===Allgemein===
* Stelle dein Ergebnis vor! Was kann dein Projekt?  
+
* Stelle dein Ergebnis vor! Was kann dein Produkt?  
 
* Was hat dir bei der Entwicklung deines Produkts gefallen?  
 
* Was hat dir bei der Entwicklung deines Produkts gefallen?  
* Welche Schwierigkeiten hast du gehabt? Wie konntest du diese lösen?
+
* Welche Schwierigkeiten hattest? Wie konntest du diese lösen?
 
* Erläutere, wie du dein Produkt programmiert hast!
 
* Erläutere, wie du dein Produkt programmiert hast!
* Was war bei dieser Aufgabenbearbeitung interessant für dich?
+
* Was war bei dieser Aufgabe interessant für dich?
  
 
===Projektspezifisch===
 
===Projektspezifisch===
Zeile 124: Zeile 157:
 
==[[Datei:icon_plus.png|20px|Icon]] Weiterentwicklung ==
 
==[[Datei:icon_plus.png|20px|Icon]] Weiterentwicklung ==
  
 +
* Schleife: Du kannst mit einer Schleife nicht nur jeweils einen Wurf produzieren, sondern gleich 100 oder gar 1000 Würfe
 +
* Das bedeutet: Wenn einmal geschüttelt wird, werden gleich 1000 Würfe simuliert
 +
* Nütze dabei den Vorteil des Computers &ndash; er kann sehr schnell rechnen
  
* Man sollte nun mitzählen können, wie oft wurde welcher Wert erzeugt - dadurch könnte man sich die Papierstrichliste sparen
+
=== Noch eine Erweiterungsaufgabe ===
** Lege eine Zählvariable an.
+
'''Analyse eines fremden Programmcodes:'''<br>
** Jedesmal, wenn beispielsweise Kopf "geworfen" wird, sollte diese Variable hochgezählt werden.
+
 
** Diese Variable könnte dann mit der Taste B angezeigt werden (Befehl: Zeige Nummer ...)
+
* Was stellt dieser Programmcode dar?
** So kannst du immer schnell feststellen, wie viele man Kopf geworfen wurde
+
<pre id=01">
 +
 
 +
input.onButtonPressed(Button.A, function () {
 +
    basic.showNumber(k)
 +
})
 +
input.onButtonPressed(Button.B, function () {
 +
    basic.showNumber(z)
 +
})
 +
let z = 0
 +
let k = 0
 +
basic.showArrow(ArrowNames.West)
 +
k = 0
 +
z = 0
 +
for (let index = 0; index < 10000; index++) {
 +
    if (Math.randomBoolean()) {
 +
        k += 1
 +
    } else {
 +
        z += 1
 +
    }
 +
}
 +
basic.showString("Fertig!")
 +
 
 +
 
 +
</pre>
  
Allerdings:
 
* Man muss mitzahlen, wie oft man die Taste A insgesamt gedrückt hat:
 
** Das wäre auch noch mit einer Variable zu zählen?
 
  
Erweiterung für Neugierige:
 
* Schleife: du kannst mit einer Schleife nicht nur einen Wurf produzieren, sondern gleich 100 oder gar 1000 Würfe produzieren.
 
  
'''Analyse eines fremden Programmcodes:'''<br>
+
Dieses Programm ist hier aufrufbar:
Die Frage an die ProfiprogrammiererIn:
+
[https://makecode.microbit.org/#pub:_U0cakeHKX2sF Link]
* Was stellt dieser Programmcode dar?
+
 
[[Datei:Bild 20180329 222942 1.png|800px]]
+
 
  
Das fremde Programm
+
<htmlet>makecode_embed</htmlet>
[https://makecode.microbit.org/#pub:_e579v6Jcv08u Link-Text]
 

Aktuelle Version vom 16. Mai 2022, 07:56 Uhr

Icon Den Zufall kann man vielleicht auch berechnen ...

Kopf zahl.jpg

Maria behauptet: Wenn man eine Münze oft genug wirft, dann kommen immer gleich viele Kopf- und Zahlergebnisse.

Das würde bedeuten: Wirft man 100-mal, dann kommen in der Gesamtrechnung immer 50 Kopf- und 50 Zahlergebnisse?

  • Ist das exakt immer so?
  • Ist das meistens so?
  • Könnte es auch 10 zu 90 ausgehen?

Am besten du testest einmal mit einigen Würfen einer Münze – versuche einmal 10 Würfe: Lege dir eine Tabelle an, in die du die Ergebnisse einträgst.

50%

Icon Aufgabenstellung

Mit dem BBC micro:bit kannst du dies noch bequemer testen – du benützt den Zufallsgenerator des micro:bit. Entwickle ein Programm, mit dem man das Werfen der Münzen simulieren kann. Der Vorteil des Computers, sehr viele Würfe zu produzieren, sollte dabei ebenfalls zum Tragen kommen.

  • Das Schütteln des micro:bit sollte den Zufallsgenerator aufrufen: Dieser soll Kopf oder Zahl produzieren.
  • Taste A sollte die Anzahl der "Kopfwürfe" darstellen
  • Taste B sollte die Anzahl der "Zahlwürfe" darstellen
  • Taste A+B sollten die Gesamtanzahl der Versuche darstellen
  • Neustart mit "Reset"-Taste (Erweiterung)

Icon Materialien

  • 1 Münze
  • 1 Blatt Papier
  • BBC micro:bit

Icon Zeitaufwand

  • 1 Unterrichtseinheit

Icon Schwierigkeitsgrad

borderlessborderlessborderless

Icon Kompetenzen

IMG 5764 (1).png

Du solltest bereits können:

  • Einen Prozentanteil schätzen können (Mathematik)
  • Eine Wertetabelle anlegen und auswerten können (Mathematik)
  • Programmbefehle zu Tastefunktionen A und B zuordnen können (Informatik)


Du lernst, ...

Icon Unterrichtsfächer

  • Mathematik
  • Informatik
  • Deutsch

Icon Tipps und Hilfestellungen

Erforderliche Programmierblöcke

Ziel

  • Der Zufallsgenerator sollte 2 Zustände darstellen: wahr oder falsch
  • Diese Zustände entsprechen den 2 Möglichkeiten beim Münzwurf
  • Es sollte jeweils die Anzahl der Treffer für "wahr" und für "falsch" gezählt werden.

Vereinbarung

  • "Wahr bedeutet Kopf" und "Falsch bedeutet Zahl"

Kopf.png ... Zahl.png

Blöcke

  • Anstelle des Münzwurfs sollte der Zufallsgenerator "wahr" oder "falsch" liefern
  • Der Zufallsgenerator sollte durch Schütteln des micro:bit aufgerufen werden
  • Je nach Bedingung "wahr" oder "falsch" sollten verschiedene Aktionen stattfinden Block
  • Bestimmte Tastenereignisse für Taste A, B und A+B - müssen Daten anzeigen Block
  • Daten müssen angezeigt werden Block
  • Bei Programmstart durchzuführen Block
  • Variablen müssen angelegt und initialisiert werden Block
  • Die Variablen müssen hochgezählt werden Block
  • Die Variablen müssen addiert werden Block


Eckpfeiler zur Umsetzung

  • Programmiere den micro:bit-Zufallsgenerator so, dass durch Schütteln ein Wert "wahr" oder "falsch" ermittelt wird (= Kopf oder Zahl)
  • Wenn Taster "A" gedrückt wird, soll die Anzahl Kopfwürfe gezeigt werden
  • Wenn Taster "B" gedrückt wird, soll die Anzahl Zahlwürfe gezeigt werden
  • Wenn Taster "A+B" gedrückt werden, soll die Summe der Würfe dargestellt werden
  • Zufallswerte erhält man aus dem Menü Mathematik "Wähle zufälligen Wahr- und Falsch-Wert"
  • Wird Wahr ermittelt, so soll der Buchstabe "K" für Kopf erscheinen, andernfalls "Z" für Zahl.
  • Hier benötigt man die logische Verzweigung "Wenn ... dann ... sonst"
  • Das System sollte über zwei Variablen protokollieren, wie oft Kopf und wie oft Zahl geworfen wurde

Schritt für Schritt zur Lösung

Hinweise zur Lösungsfindung und auch eine mögliche, komplette Lösung findest du auf der Lösungsseite zu diesem Beispiel

Icon Präsentation und Reflexion

Allgemein

  • Stelle dein Ergebnis vor! Was kann dein Produkt?
  • Was hat dir bei der Entwicklung deines Produkts gefallen?
  • Welche Schwierigkeiten hattest? Wie konntest du diese lösen?
  • Erläutere, wie du dein Produkt programmiert hast!
  • Was war bei dieser Aufgabe interessant für dich?

Projektspezifisch

  • Welche Regeln wurden für Kopf und Zahl festgelegt? Welche andere Regeln für "Kopf oder Zahl" gäbe es noch?
  • Welche Diskussionspunkte ergaben sich während des Spiels?
  • Wo wird im Alltag der Wirtschaft mit Zufallsgenerator gearbeitet?
  • Wo braucht man bei einem Computerspiel den Zufallsgenerator.
  • Wo war bei diesem Beispiel der Vorteil des Computers zu sehen, wo war er eher ein Nachteil?
  • Bei welcher Erweiterungsstufe war es am schwierigsten, einen Programmcode zu erstellen.

Icon Weiterentwicklung

  • Schleife: Du kannst mit einer Schleife nicht nur jeweils einen Wurf produzieren, sondern gleich 100 oder gar 1000 Würfe
  • Das bedeutet: Wenn einmal geschüttelt wird, werden gleich 1000 Würfe simuliert
  • Nütze dabei den Vorteil des Computers – er kann sehr schnell rechnen

Noch eine Erweiterungsaufgabe

Analyse eines fremden Programmcodes:

  • Was stellt dieser Programmcode dar?

input.onButtonPressed(Button.A, function () {
    basic.showNumber(k)
})
input.onButtonPressed(Button.B, function () {
    basic.showNumber(z)
})
let z = 0
let k = 0
basic.showArrow(ArrowNames.West)
k = 0
z = 0
for (let index = 0; index < 10000; index++) {
    if (Math.randomBoolean()) {
        k += 1
    } else {
        z += 1
    }
}
basic.showString("Fertig!")



Dieses Programm ist hier aufrufbar: Link