Stadt land fluss loesung: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen
Maria.grandl (Diskussion | Beiträge)
Maria.grandl (Diskussion | Beiträge)
 
(39 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Grundsätzliche Überlegungen ==
== Schritt für Schritt ==
Sind vielleicht '''vor''' den Tipps und Tricks noch sinnvoll. Das könnten zB Fragen sein, die zum Nachdenken in bestimmte Richtungen anregen. Oder auch noch Verweise auf andere Teile unseres WIKIs, in dem zB [[Alternativen|Abfragen]] erklärt sind. Oder nochmal das Konzept von [[Variablen]] erklärt wird.


== Tipps und Tricks ==
* Öffne den micro:bit Block-Editor, um ein Programm für den BBC micro:bit zu schreiben: https://makecode.microbit.org/
; Beim Starten des Programms, was müssen wir alles festlegen?[[Datei:Morgenritual - Start.png|border|right|300px|Unser Startbildschirm]]
: Wir sollten alle [[Variablen]] auf einen passenden Startwert setzen. <spoiler>In unserer Beispielslösung haben wir vier Variablen, die wir alle auf '''0''' setzen. Das sind die Zähler für Lea und Jakob und "Merker" (Hilfsvariablen), ob wir gerade für Jakob oder für Lea zählen. Beide haben zu Beginn Null Bewegungen und wir zählen für keinen der beiden, erst ab einem Tastendruck.</spoiler>
: Außerdem könnten wir ein Startbild zeigen, damit man weiß, dass das Programm läuft. Überlege dir, wie dein eigener Startbildschirm aussehen soll!


; Was soll passieren, wenn zB die Taste A gedrückt wird?
* Am LED-Display des micro:bit soll ein zufälliger Buchstabe des Alphabets angezeigt werden.  
: Zur Erinnerung: Jakob will ja, dass bei A für ihn gezählt wird!
: Zur Sicherheit müssen wir aufpassen, ob nicht gerade für Lea gezählt wird. Dafür brauchen wir den Merker für gerade für Lea gezählt wird.
: OK, wir zählen nicht für Lea. Nun kann das Drücken von A zwei Bedeutungen haben. Weißt du welche? <spoiler>Wenn das Zählen noch nicht läuft, soll gestartet werden. Wenn wir schon zählen, soll gestoppt werden.</spoiler>
: Wenn wir schon für Jakob zählen, hören wir damit auf und merken uns das.
: Wenn nicht, merken wir uns, dass ab jetzt für Jakob gezählt wird!
: (Beim Drücken von B passiert eigentlich das gleiche. Es sind nur die Rollen vertauscht. Formuliere es richtig um?)


; Wenn nun geputzt wird, und der Micro&#58;bit merkt, dass er dabei geschüttelt wird ...
::* Erstelle ein [[Array]] mit dem Namen ''Alphabet'', welches beim Start des Programmes mit allen Buchstaben des Alphabets gefüllt werden soll. „Schwierige“ Buchstaben wie Q, X oder Y müssen nicht in die Liste aufgenommen werden. [[Datei:icon_paket.png|10px]] <spoiler text="Programmierblöcke">[[Datei:screen_1.png|300px|Icon]]</spoiler>
: Was müssen wir prüfen, '''bevor''' wir einen Putzzähler erhöhen können? <spoiler>Richtig: für wen wir eigentlich zählen, muss mit einer [[Alternativen|Abfrage]] unterschieden werden</spoiler>
: Wenn wir für Jakob zählen, erhöhen wir seinen Zähler um eins.
: Sonst, wenn wir für Lea zählen, erhöhen wir ihren Zähler.
: Und falls wir für niemanden zählen erhöhen wir gar nichts ... :)


; Wenn die Tasten A und B gleichzeitig gedrückt werden, soll ja angezeigt werden, wer gewonnen hat. Was müssen wir dazu (der Reihe nach) wissen?
::* Überlege dir, bei welchem [[Ereignis]] ein neuer Buchstabe angezeigt werden soll. Das kann beispielsweise beim Drücken der Taste A oder durch Schütteln des micro:bit erfolgen. Du benötigst dafür einen Befehl aus der Befehlskategorie „Eingabe“ und möglicherweise auch einen (oder mehrere) Befehl(e) aus der Befehlskategorie "Logik": [[Datei:icon_paket.png|10px]] <spoiler text="Programmierblöcke">[[Datei:screen_2.png|300px|Icon]]</spoiler>
: Ist überhaupt schon etwas gezählt worden? Für beide? Wie können wir das überprüfen?
::: Wenn das [[Ereignis]] eingetreten ist, dann (und nur dann) sollen die nächsten Befehle ausgeführt werden. (siehe [[Bedingte Anweisung]])
: Wenn ja, hat Jakob mehr geputzt als Lea? Dann haben wir einen Gewinner und wir sollten das Ergebnis verkünden!
 
: Sonst, hat vielleicht Lea mehr geputzt als Jakob? Auch hier haben wir eine Gewinnerin!
 
: Sonst? Ja, was könnte noch sein? <spoiler>Beide haben gleich viel geputzt: unentschieden!</spoiler>
::* Erstelle eine [[Variable]] mit dem Namen ''Zufallszahl''. [[Datei:icon_paket.png|10px]] <spoiler text="Programmierblöcke">[[Datei:screen_3.png|300px|Icon]]</spoiler>
: Wenn das Ergebnis gezeigt wurde, könnte es sein, dass die beiden vielleicht nochmal probieren wollen. Was müssen wir dafür noch berücksichtigen? <spoiler>Dass alle Variablen, wie beim Programmstart wieder zurückgesetzt werden, sonst würde einfach bei der bisherigen Anzahl von Schrubbungen weitergezählt werden! Außerdem könnten wir auch wieder unsere Startgrafik anzeigen</spoiler>
 
 
::* Wie viele Elemente (Buchstaben) beinhaltet das erstellte [[Array]]? Merke dir die Anzahl!
 
 
::* Generiere eine ganzzahlige Zufallszahl zwischen 0 und der im vorigen Schritt ermittelten Zahl. Verwende dazu den folgenden Befehl aus der Befehlskategorie „Mathematik“: [[Datei:icon_paket.png|10px]] <spoiler text="Programmierblöcke">[[Datei:screen_4.png|300px|Icon]]</spoiler>
 
::* Ändere den Wert der [[Variable]] ''Zufallszahl'' auf die berechnete Zahl.
 
 
::* Erstelle eine [[Variable]] ''Zufallsbuchstabe.''
 
 
::* Wähle nun das Element an der (zufällig) generierten Position (=Wert der Variable ''Zufallszahl'') im [[Array]] aus.
::: Du brauchst diesen Befehl:[[Datei:icon_paket.png|10px]]<spoiler text="Programmierblöcke">[[Datei:screen_5.png|300px|Icon]]</spoiler>
::: Hilfe zum Befehl: [[Datei:icon_hilfe.png|10px]] <spoiler text="Hilfe">[[Datei:Screen_5_hilfe_2.PNG|200px]]</spoiler>  
 
 
::* Setze den Wert der [[Variable]] ''Zufallsbuchstabe'' auf den zufällig ausgewählten Buchstaben. [[Datei:icon_hilfe.png|10px]] <spoiler text="Hilfe">[[Datei:Screen_5_hilfe_2.PNG|200px]]</spoiler>
 
 
::* Der Buchstabe soll am LED-Display für eine bestimmte Zeit angezeigt werden. [[Datei:icon_paket.png|10px]]<spoiler text="Programmierblöcke">[[Datei:screen_6.png|300px|Icon]]</spoiler>


== Flussdiagramm ==
== Flussdiagramm ==
Zeile 34: Zeile 41:
[[Datei:Stadt_land_fluss_flussdiagramm.png |center|200px|Flussdiagramm]]
[[Datei:Stadt_land_fluss_flussdiagramm.png |center|200px|Flussdiagramm]]


== Komplettlösungen ==
== Lösung ==
; Beim Starten des Programms, was müssen wir alles festlegen?
Beachte, dass hier nur ein möglicher Lösungsweg angegeben wird!
: Eine mögliche Lösung für den Start? <spoiler text="Lösung">[[Datei:Morgenritual - Beim Start.png|border|350px|Was passieren könnte, wenn das Programm startet]]</spoiler>
 
; Wenn die Taste A gedrückt wird, können verschiedene Dinge passieren, je nachdem was das Programm gerade macht!
* Am LED-Display des micro:bit soll ein zufälliger Buchstabe des Alphabets angezeigt werden.
: Wenn wir auch einige Sicherheitsabfragen einbauen, kann eine Lösung so aussehen: <spoiler text="Lösung">[[Datei:Morgenritual - A gedrückt.png|border|500px|Was passieren könnte, wenn A gedrückt wird]]</spoiler>
 
; Wenn die Taste B gedrückt wird, sollte etwas ähnliches geschehen wie beim Drücken von A, nur mit vertauschten Rollen!
::* Erstelle ein [[Array]] mit dem Namen ''Alphabet'', welches beim Start des Programmes mit allen Buchstaben des Alphabets gefüllt werden soll. „Schwierige“ Buchstaben wie Q, X oder Y müssen nicht in die Liste aufgenommen werden.
: Das sieht zB so aus: <spoiler text="Lösung">[[Datei:Morgenritual - B gedrückt.png|border|500px|Was passieren könnte, wenn B gedrückt wird]]</spoiler>
:::[[Datei:icon_eye.png|10px]] <spoiler text="Lösung">[[Datei:solution_1.png|300px]]</spoiler>
; Wenn nun ein Schrubben (Schütteln) erkannt wird ...
 
: ... teilen wir das wie folgt richtig zu: <spoiler text="Lösung">[[Datei:Morgenritual - Wenn geschüttelt.png|border|500px|Was passieren könnte, wenn das Programm startet]]</spoiler>
::* Überlege dir, bei welchem [[Ereignis]] ein neuer Buchstabe angezeigt werden soll. Das kann beispielsweise beim Drücken der Taste A oder durch Schütteln des micro:bit erfolgen. Du benötigst dafür einen Befehl aus der Befehlskategorie „Eingabe“ und möglicherweise auch einen (oder mehrere) Befehl(e) aus der Befehlskategorie "Logik". Wenn das [[Ereignis]] eingetreten ist, dann (und nur dann) sollen die nächsten Befehle ausgeführt werden. (siehe [[Bedingte Anweisung]])
; Wenn die Tasten A und B gleichzeitig gedrückt werden, soll ja angezeigt werden, wer gewonnen hat. Was müssen wir dazu (der Reihe nach) wissen?
:::[[Datei:icon_eye.png|10px]] <spoiler text="Lösung">[[Datei:solution_2.png|300px]]</spoiler>
: Der Programmteil könnte zB so aussehen: <spoiler text="Lösung">[[Datei:Morgenritual - AB gedrückt.png|border|800px|Was passieren könnte, wenn die Tasten A und B gleichzeitig gedrückt werden]]</spoiler>
 
::* Erstelle eine [[Variable]] mit dem Namen ''Zufallszahl''.
:::[[Datei:icon_eye.png|10px]] <spoiler text="Lösung">[[Datei:solution_3.png|300px]]</spoiler>
 
 
::* Wie viele Elemente (Buchstaben) beinhaltet das erstellte [[Array]]? Merke dir die Anzahl!
 
 
::* Generiere eine ganzzahlige [[Zufallszahl]] zwischen 0 und der im vorigen Schritt ermittelten Zahl. Verwende dazu den folgenden Befehl aus der Befehlskategorie „Mathematik“.
:::[[Datei:icon_eye.png|10px]] <spoiler text="Lösung">[[Datei:solution_4.png|300px]]</spoiler>
 
::* Ändere den Wert der [[Variable]] ''Zufallszahl'' auf die berechnete Zahl.
:::[[Datei:icon_eye.png|10px]] <spoiler text="Lösung">[[Datei:solution_5.png|300px]]</spoiler>
 
::* Erstelle eine [[Variable]] ''Zufallsbuchstabe.''
:::[[Datei:icon_eye.png|10px]] <spoiler text="Lösung">[[Datei:solution_6.png|300px]]</spoiler>
 
::* Wähle nun das Element an der (zufällig) generierten Position (=Wert der Variable ''Zufallszahl'') im [[Array]] aus.  
:::[[Datei:icon_eye.png|10px]] <spoiler text="Lösung">[[Datei:solution_7.png|300px]]</spoiler>
 
 
::* Setze den Wert der [[Variable]] ''Zufallsbuchstabe'' auf den zufällig ausgewählten Buchstaben.
:::[[Datei:icon_eye.png|10px]] <spoiler text="Lösung">[[Datei:solution_8.png|300px]]</spoiler>
 
 
::* Der Buchstabe soll am LED-Display für eine bestimmte Zeit angezeigt werden.
:::[[Datei:icon_eye.png|10px]] <spoiler text="Lösung">[[Datei:solution_9.png|300px]]</spoiler>

Aktuelle Version vom 15. Mai 2018, 19:38 Uhr

Schritt für Schritt

  • Am LED-Display des micro:bit soll ein zufälliger Buchstabe des Alphabets angezeigt werden.
  • Erstelle ein Array mit dem Namen Alphabet, welches beim Start des Programmes mit allen Buchstaben des Alphabets gefüllt werden soll. „Schwierige“ Buchstaben wie Q, X oder Y müssen nicht in die Liste aufgenommen werden. <spoiler text="Programmierblöcke">Icon</spoiler>
  • Überlege dir, bei welchem Ereignis ein neuer Buchstabe angezeigt werden soll. Das kann beispielsweise beim Drücken der Taste A oder durch Schütteln des micro:bit erfolgen. Du benötigst dafür einen Befehl aus der Befehlskategorie „Eingabe“ und möglicherweise auch einen (oder mehrere) Befehl(e) aus der Befehlskategorie "Logik": <spoiler text="Programmierblöcke">Icon</spoiler>
Wenn das Ereignis eingetreten ist, dann (und nur dann) sollen die nächsten Befehle ausgeführt werden. (siehe Bedingte Anweisung)


  • Erstelle eine Variable mit dem Namen Zufallszahl. <spoiler text="Programmierblöcke">Icon</spoiler>


  • Wie viele Elemente (Buchstaben) beinhaltet das erstellte Array? Merke dir die Anzahl!


  • Generiere eine ganzzahlige Zufallszahl zwischen 0 und der im vorigen Schritt ermittelten Zahl. Verwende dazu den folgenden Befehl aus der Befehlskategorie „Mathematik“: <spoiler text="Programmierblöcke">Icon</spoiler>
  • Ändere den Wert der Variable Zufallszahl auf die berechnete Zahl.


  • Erstelle eine Variable Zufallsbuchstabe.


  • Wähle nun das Element an der (zufällig) generierten Position (=Wert der Variable Zufallszahl) im Array aus.
Du brauchst diesen Befehl:<spoiler text="Programmierblöcke">Icon</spoiler>
Hilfe zum Befehl: <spoiler text="Hilfe"></spoiler>


  • Setze den Wert der Variable Zufallsbuchstabe auf den zufällig ausgewählten Buchstaben. <spoiler text="Hilfe"></spoiler>


  • Der Buchstabe soll am LED-Display für eine bestimmte Zeit angezeigt werden. <spoiler text="Programmierblöcke">Icon</spoiler>

Flussdiagramm

Das folgende Flussdiagramm bringt die oben beschriebenen Schritte auf den Punkt:

Flussdiagramm
Flussdiagramm

Lösung

Beachte, dass hier nur ein möglicher Lösungsweg angegeben wird!

  • Am LED-Display des micro:bit soll ein zufälliger Buchstabe des Alphabets angezeigt werden.
  • Erstelle ein Array mit dem Namen Alphabet, welches beim Start des Programmes mit allen Buchstaben des Alphabets gefüllt werden soll. „Schwierige“ Buchstaben wie Q, X oder Y müssen nicht in die Liste aufgenommen werden.
<spoiler text="Lösung"></spoiler>
  • Überlege dir, bei welchem Ereignis ein neuer Buchstabe angezeigt werden soll. Das kann beispielsweise beim Drücken der Taste A oder durch Schütteln des micro:bit erfolgen. Du benötigst dafür einen Befehl aus der Befehlskategorie „Eingabe“ und möglicherweise auch einen (oder mehrere) Befehl(e) aus der Befehlskategorie "Logik". Wenn das Ereignis eingetreten ist, dann (und nur dann) sollen die nächsten Befehle ausgeführt werden. (siehe Bedingte Anweisung)
<spoiler text="Lösung"></spoiler>
  • Erstelle eine Variable mit dem Namen Zufallszahl.
<spoiler text="Lösung"></spoiler>


  • Wie viele Elemente (Buchstaben) beinhaltet das erstellte Array? Merke dir die Anzahl!


  • Generiere eine ganzzahlige Zufallszahl zwischen 0 und der im vorigen Schritt ermittelten Zahl. Verwende dazu den folgenden Befehl aus der Befehlskategorie „Mathematik“.
<spoiler text="Lösung"></spoiler>
  • Ändere den Wert der Variable Zufallszahl auf die berechnete Zahl.
<spoiler text="Lösung"></spoiler>
  • Erstelle eine Variable Zufallsbuchstabe.
<spoiler text="Lösung"></spoiler>
  • Wähle nun das Element an der (zufällig) generierten Position (=Wert der Variable Zufallszahl) im Array aus.
<spoiler text="Lösung"></spoiler>


  • Setze den Wert der Variable Zufallsbuchstabe auf den zufällig ausgewählten Buchstaben.
<spoiler text="Lösung"></spoiler>


  • Der Buchstabe soll am LED-Display für eine bestimmte Zeit angezeigt werden.
<spoiler text="Lösung"></spoiler>