CleverRaten Lösung

Aus microbit - Das Schulbuch
Version vom 9. April 2018, 16:52 Uhr von Harald.burgsteiner (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Tipps und Tricks == ; Beim Starten des Programms, was müssen wir alles festlegen? : Wir müssen alle Variablen auf einen passenden Startwert setzen. <s…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Tipps und Tricks

Beim Starten des Programms, was müssen wir alles festlegen?
Wir müssen alle Variablen auf einen passenden Startwert setzen. <spoiler>In unserer Beispielslösung haben wir drei Variablen: 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!
Nun können wir gleich 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.<spoiler>Der Startwert kann der gleiche bleiben, der Endwert ist um eins kleiner als die zuletzt geratene Zahl</spoiler>
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)?<spoiler>Diesmal bleibt der bisherige Endwert des Ratebereichs der gleiche und der Startwert wird neu, auf einer Wert um eins mehr als die zuletzt geratene Zahl, gesetzt.</spoiler>
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.
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.
Was muss man bei jedem Rateversuch alles machen?
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 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? <spoiler text="Lösung">Was passieren könnte, wenn das Programm startet</spoiler>
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: <spoiler text="Lösung">Was passieren könnte, wenn nach links geneigt wird</spoiler>
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: <spoiler text="Lösung">Was passieren könnte, wenn nach rechts geneigt wird</spoiler>
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: <spoiler text="Lösung">Was passieren könnte, wenn die Tasten A und B gleichzeitig gedrückt werden</spoiler>