CleverRaten Lösung: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Wechseln zu: Navigation, Suche
(Tipps und Tricks)
Zeile 3: Zeile 3:
 
: Wir müssen alle [[Variablen]] auf einen passenden Startwert setzen. <spoiler>In unserer Beispielslösung haben wir drei Variablen&#58; die Variable "von" (Start des aktuellen Ratebereichs) wird auf 1 gesetzt, die Variable "bis" (Ende des aktuellen Ratebereichs) wird auf 100 gesetzt und die "Anzahl Versuche" wird auf 0 gesetzt.</spoiler>
 
: Wir müssen alle [[Variablen]] auf einen passenden Startwert setzen. <spoiler>In unserer Beispielslösung haben wir drei Variablen&#58; die Variable "von" (Start des aktuellen Ratebereichs) wird auf 1 gesetzt, die Variable "bis" (Ende des aktuellen Ratebereichs) wird auf 100 gesetzt und die "Anzahl Versuche" wird auf 0 gesetzt.</spoiler>
 
: Außerdem könnten wir einen Begrüßungstext oder ein Symbol ausgeben, damit man weiß, dass das Programm läuft. Überlege dir, wie dein eigener Startbildschirm aussehen soll!
 
: Außerdem könnten wir einen Begrüßungstext oder ein Symbol ausgeben, damit man weiß, dass das Programm läuft. Überlege dir, wie dein eigener Startbildschirm aussehen soll!
: Nun können wir gleich unseren ersten Rateversuch starten!
+
: Außderdem können wir sofort unseren ersten Rateversuch starten!
  
 
; Was soll passieren, wenn der micro&#58;bit nach links geneigt wird?
 
; Was soll passieren, wenn der micro&#58;bit nach links geneigt wird?
 
: Zur Erinnerung: die gesuchte Zahl ist damit '''kleiner''' als die zuletzt geratene.
 
: Zur Erinnerung: die gesuchte Zahl ist damit '''kleiner''' als die zuletzt geratene.
 
: Wir wissen auch, dass es ''nicht'' die geratene Zahl sein kann.
 
: Wir wissen auch, dass es ''nicht'' die geratene Zahl sein kann.
: Somit können wir unseren Ratebereich neu eingrenzen. <spoiler>Der Startwert kann der gleiche bleiben, der Endwert ist um eins kleiner als die zuletzt geratene Zahl</spoiler>
+
: Somit können wir unseren Ratebereich neu eingrenzen. <spoiler>Der Startwert des Ratebereichs kann der gleiche bleiben, der Endwert ist um eins kleiner als die zuletzt geratene Zahl</spoiler>
 
: Und wir starten unseren nächsten Rateversuch!
 
: Und wir starten unseren nächsten Rateversuch!
  
Zeile 17: Zeile 17:
  
 
; Warum ist es sinnvoll eine [[Funktionen|Funktion]] zu verwenden?
 
; Warum ist es sinnvoll eine [[Funktionen|Funktion]] zu verwenden?
: Beobachte, dass wir nun schon bei drei verschiedenen Ereignissen (beim Start, nach links neigen, nach rechts neigen) immer das gleiche machen müssen&#58; einmal raten im Bereich "von"-"bis".
+
: Beobachte, dass wir nun schon bei drei verschiedenen Ereignissen (beim Start, nach links neigen, nach rechts neigen) immer das gleiche machen müssen&#58; einmal Raten im Bereich "von"-"bis".
: Nun könnte man einfach an allen drei Stellen jeweils den gleichen Programmcode hinschreiben.
+
: Nun könnte man einfach an allen drei Stellen jeweils den gleichen Programmcode hinschreiben. <spoiler>Zum Beispiel: zähle bei der Anzahl der Versuche eins dazu, berechne neue Ratezahl und gib sie aus.</spoiler>
 
: Eleganter ist es, statt dessen eine Funktion zu definieren, die an diesen drei Stellen aufgerufen wird.
 
: Eleganter ist es, statt dessen eine Funktion zu definieren, die an diesen drei Stellen aufgerufen wird.
: Das hat die Vorteile, dass das Programm kürzer und übersichtlicher wird, man weniger schreiben muss und dass, wenn man einen Fehler sucht oder etwas ändern möchte, dies nur an einer machen muss und nicht an drei Stellen.
+
: Das hat die Vorteile, dass das Programm kürzer und übersichtlicher wird, man weniger schreiben muss und dass, wenn man einen Fehler sucht oder etwas ändern möchte, dies nur an einer und nicht an drei Stellen machen muss.
  
; Was muss man bei jedem Rateversuch alles machen?
+
; Was muss man bei jedem Rateversuch alles machen? Was könnte in so einer Funktion stehen?
 
: Die Anzahl der Versuche um eins erhöhen.
 
: Die Anzahl der Versuche um eins erhöhen.
: Die Zahl innerhalb des Bereiches "von"-"bis" berechnen, die wir als nächsten Rateversuch ausgeben wollen. <spoiler>Verwenden wir doch einfach des arithmetischen Mittelwert des Ratebereichs: zahl = (von + bis) / 2</spoiler>
+
: Die Zahl innerhalb des Bereiches "von"-"bis" berechnen, die wir als nächsten Rateversuch ausgeben wollen. <spoiler>Verwenden wir doch einfach den arithmetischen Mittelwert des Ratebereichs: zahl = (von + bis) / 2</spoiler>
 
: Die Zahl ausgeben. Fertig.
 
: Die Zahl ausgeben. Fertig.
  

Version vom 10. April 2018, 11:34 Uhr

Tipps und Tricks

Beim Starten des Programms, was müssen wir alles festlegen?
Wir müssen alle Variablen auf einen passenden Startwert setzen. Hinweis
Außerdem könnten wir einen Begrüßungstext oder ein Symbol ausgeben, damit man weiß, dass das Programm läuft. Überlege dir, wie dein eigener Startbildschirm aussehen soll!
Außderdem können wir sofort unseren ersten Rateversuch starten!
Was soll passieren, wenn der micro:bit nach links geneigt wird?
Zur Erinnerung: die gesuchte Zahl ist damit kleiner als die zuletzt geratene.
Wir wissen auch, dass es nicht die geratene Zahl sein kann.
Somit können wir unseren Ratebereich neu eingrenzen. Hinweis
Und wir starten unseren nächsten Rateversuch!
Was soll passieren, wenn der micro:bit nach rechts geneigt wird?
Eigentlich fast das gleiche wie beim nach links Neigen.
Was wissen wir (rechts bedeutet, die gesuchte Zahl ist größer als die zuletzt geratene)? Hinweis
Und wir starten unseren nächsten Rateversuch!
Warum ist es sinnvoll eine Funktion zu verwenden?
Beobachte, dass wir nun schon bei drei verschiedenen Ereignissen (beim Start, nach links neigen, nach rechts neigen) immer das gleiche machen müssen: einmal Raten im Bereich "von"-"bis".
Nun könnte man einfach an allen drei Stellen jeweils den gleichen Programmcode hinschreiben. Hinweis
Eleganter ist es, statt dessen eine Funktion zu definieren, die an diesen drei Stellen aufgerufen wird.
Das hat die Vorteile, dass das Programm kürzer und übersichtlicher wird, man weniger schreiben muss und dass, wenn man einen Fehler sucht oder etwas ändern möchte, dies nur an einer und nicht an drei Stellen machen muss.
Was muss man bei jedem Rateversuch alles machen? Was könnte in so einer Funktion stehen?
Die Anzahl der Versuche um eins erhöhen.
Die Zahl innerhalb des Bereiches "von"-"bis" berechnen, die wir als nächsten Rateversuch ausgeben wollen. Hinweis
Die Zahl ausgeben. Fertig.
Was machen wir, wenn die Tasten A und B gleichzeitig gedrückt werden?
Wir verkünden, dass wir die Zahl erraten haben und wie viele Versuche notwendig waren.

Komplettlösungen

Beim Starten des Programms, was müssen wir alles festlegen?
Eine mögliche Lösung für den Start? Lösung
Wenn der micro:bit nach links geneigt wird?
Es wird der "linke Teil" des bisherigen Ratebereichs als neuer Ratebereich verwendet.
Die Funktion "rateZahl" wird aufgerufen.
Das kann zum Beispiel so aussehen: Lösung
Wenn der micro:bit nach rechts geneigt wird?
Es wird der "rechte Teil" des bisherigen Ratebereichs als neuer Ratebereich verwendet.
Die Funktion "rateZahl" wird aufgerufen.
Das kann zum Beispiel so aussehen: Lösung
Wenn die Tasten A und B gleichzeitig gedrückt werden, soll die Anzahl der Versuche ausgegeben werden.
Der Programmteil könnte inklusive Abschlusstext zum Beispiel so aussehen: Lösung
Was muss die zentrale Funktion alles machen, die die neue Zahl innerhalb des aktuellen Bereichs berechnet?
Wir raten einmal, das heißt, die Anzahl der Versuche muss um eins erhöht werden.
Die neue Zahl wird aus den aktuellen Bereichsgrenzen berechnet.
Die berechnete Zahl wird ausgegeben.
Der Programmteil könnte nun zum Beispiel so aussehen: Lösung