Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| planung:microbitpython [2023/05/09 22:08] – marroc | planung:microbitpython [2023/05/10 08:32] (aktuell) – alte Version wiederhergestellt (2023/01/01 21:20) marroc | ||
|---|---|---|---|
| Zeile 14: | Zeile 14: | ||
| - Multiplizieren Sie die Zahl mit 100. | - Multiplizieren Sie die Zahl mit 100. | ||
| - Halbieren Sie das Resultat. | - Halbieren Sie das Resultat. | ||
| - | - Wenn Sie bereits Geburtstag hatten, addieren Sie das aktuelle Jahr und subtrahieren 2100. (Falls das Geburtsdatum vor dem Jahr 2000 ist, so wäre dies nicht 2100 sondern 2000) | + | - Wenn Sie bereits Geburtstag hatten, addieren Sie das aktuelle Jahr und subtrahieren 2100. |
| - | - Wenn Sie noch nicht Geburtstag hatten, addieren Sie das aktuelle Jahr und subtrahieren 2101. (Falls das Geburtsdatum vor dem Jahr 2000 ist, so wäre dies 2001 und nicht 2001) | + | - Wenn Sie noch nicht Geburtstag hatten, addieren Sie das aktuelle Jahr und subtrahieren 2101. |
| - Subtrahieren Sie die letzten beiden Zahlen Ihres Jahrganges (z.B. bei 1991 subtrahieren Sie 91). | - Subtrahieren Sie die letzten beiden Zahlen Ihres Jahrganges (z.B. bei 1991 subtrahieren Sie 91). | ||
| - Ihre Zahl sollte dreistellig sein. Die erste Ziffer besteht aus der Zahl, welche Sie sich am Anfang gemerkt haben, die letzten beiden Ziffern sind Ihr Alter in Jahren. Verblüffend, | - Ihre Zahl sollte dreistellig sein. Die erste Ziffer besteht aus der Zahl, welche Sie sich am Anfang gemerkt haben, die letzten beiden Ziffern sind Ihr Alter in Jahren. Verblüffend, | ||
| Zeile 48: | Zeile 48: | ||
| **<color # | **<color # | ||
| - | **<color # | + | **<color # |
| **<color # | **<color # | ||
| Zeile 173: | Zeile 173: | ||
| * Schliessen Sie den Microbit per USB-Kabel an Ihrem Computer an. | * Schliessen Sie den Microbit per USB-Kabel an Ihrem Computer an. | ||
| - | * Öffnen Sie **https:// | + | * Öffnen Sie **https:// |
| * Ein Erklärungsvideo finden Sie [[https:// | * Ein Erklärungsvideo finden Sie [[https:// | ||
| * Grundsätzlich kann auch ein anderer Browser ihrer Wahl genutzt werden, dann muss über ein Download und ein manuelles " | * Grundsätzlich kann auch ein anderer Browser ihrer Wahl genutzt werden, dann muss über ein Download und ein manuelles " | ||
| Zeile 191: | Zeile 191: | ||
| <code python> | <code python> | ||
| - | kiste = 100 | + | Kiste = 100 |
| </ | </ | ||
| Der Wert wird einer Variablen durch das Gleichsetzen zugewiesen. Eine Zuweisung eines Werts an die Variable ist, wie wenn man einen Gegenstand in die Kiste legt. \\ | Der Wert wird einer Variablen durch das Gleichsetzen zugewiesen. Eine Zuweisung eines Werts an die Variable ist, wie wenn man einen Gegenstand in die Kiste legt. \\ | ||
| - | :!: <color # | + | :!: <color # |
| - | Im Beispiel ist eine Variable mit dem Namen //kiste// erstellt worden und in dieser Variablen wird der Wert //100// gespeichert. Jedes Mal, wenn nun die Variable //kiste// im Programm aufgerufen wird, ersetzt das Programm //kiste// durch //100//. | + | Im Beispiel ist eine Variable mit dem Namen //Kiste// erstellt worden und in dieser Variablen wird der Wert //100// gespeichert. Jedes Mal, wenn nun die Variable //Kiste// im Programm aufgerufen wird, ersetzt das Programm //Kiste// durch //100//. |
| \\ | \\ | ||
| == Beispiel == | == Beispiel == | ||
| <code python> | <code python> | ||
| - | kiste = 100 | + | Kiste = 100 |
| - | kiste = 50 | + | Kiste = 50 |
| - | kiste = 50 + kiste | + | Kiste = 50 + Kiste |
| </ | </ | ||
| - | Im obigen Beispiel eines kurzen Programms, welches von oben links zeilenweise nach unten rechts durchlaufen wird, werden der Variablen | + | Im obigen Beispiel eines kurzen Programms, welches von oben links zeilenweise nach unten rechts durchlaufen wird, werden der Variablen |
| - | * Zuerst wird der Variablen | + | * Zuerst wird der Variablen |
| - | * Dann wird die Variable | + | * Dann wird die Variable |
| - | * Die Variable | + | * Die Variable |
| Wer beim Arbeiten mit dem Micro:bit Variablen verwendet möchte, kann dies auf ganz verschiedene Arten tun. | Wer beim Arbeiten mit dem Micro:bit Variablen verwendet möchte, kann dies auf ganz verschiedene Arten tun. | ||
| Beispielsweise kann das folgende Programm ähnlich wie das Kisten-Beispiel für den Micro:bit programmiert werden: | Beispielsweise kann das folgende Programm ähnlich wie das Kisten-Beispiel für den Micro:bit programmiert werden: | ||
| - | <code python | + | <code python |
| from microbit import * | from microbit import * | ||
| - | kiste=2 | + | Kiste=2 |
| - | kiste=kiste * 3 | + | Kiste=Kiste * 3 |
| - | display.scroll(' | + | display.scroll(' |
| - | display.show(kiste) | + | display.show(Kiste) |
| </ | </ | ||
| - | In diesem Beispiel ist die Variable | + | In diesem Beispiel ist die Variable |
| + | |||
| + | // | ||
| <WRAP center round todo 80%> | <WRAP center round todo 80%> | ||
| Zeile 228: | Zeile 230: | ||
| - Studieren Sie das kurze Programm unten. Diskutieren Sie zu zweit, was hier programmiert wurde. Halten Sie dies kurz schriftlich fest. | - Studieren Sie das kurze Programm unten. Diskutieren Sie zu zweit, was hier programmiert wurde. Halten Sie dies kurz schriftlich fest. | ||
| - Schliessen Sie den Micro:bit an, kopieren Sie das Programm in Ihren Editor (mico:bit classroom). Senden Sie dies dann an den Micro:bit und überprüfen Sie so die angestellten Vermutungen und Überlegungen von Aufgabe 1. | - Schliessen Sie den Micro:bit an, kopieren Sie das Programm in Ihren Editor (mico:bit classroom). Senden Sie dies dann an den Micro:bit und überprüfen Sie so die angestellten Vermutungen und Überlegungen von Aufgabe 1. | ||
| - | - Identifizieren Sie alle Variablen und Variablenwerte dieses Programms und markieren Sie diese, indem Sie den Code in ein Textdokument kopieren und kommentieren. :!: Kommentare können mit einem # direkt im Programm notiert werden. | + | - Identifizieren Sie alle Variablen und Variablenwerte dieses Programms und markieren Sie diese, indem Sie den Code in ein Textdokument kopieren und kommentieren. |
| - | - Erweitern bzw. verändern Sie den Rechner1 so, dass auch andere Operationen (Grundoperationen) durchgeführt werden. | + | |
| </ | </ | ||
| Zeile 251: | Zeile 252: | ||
| === Importieren von Python-Modulen === | === Importieren von Python-Modulen === | ||
| Sicher haben Sie sich auch schon gefragt, warum die beiden Zeile '' | Sicher haben Sie sich auch schon gefragt, warum die beiden Zeile '' | ||
| - | In Python gibt es vordefinierte Bibliotheken (eine Sammlung von Dateien, sogenannten Modulen), die von jedem Programmierer genutzt werden kann, es muss somit keine Erweiterung installiert werden, die benötigten " | + | In Python gibt es vordefinierte Bibliotheken (eine Sammlung von Dateien, sogenannten Modulen), die von jedem Programmierer genutzt werden kann, es muss somit keine Erweiterung installiert werden, die benötigten " |
| Grundsätzlich können für die ersten Schritte mit dem Micro:bit die folgenden (oder ähnliche) Importbefehle nützlich sein: | Grundsätzlich können für die ersten Schritte mit dem Micro:bit die folgenden (oder ähnliche) Importbefehle nützlich sein: | ||
| ^ Befehl ^ Bedeutung ^ | ^ Befehl ^ Bedeutung ^ | ||
| | '' | | '' | ||
| | '' | | '' | ||
| - | | '' | + | | '' |
| |'' | |'' | ||
| - | |||
| <WRAP center round todo 80%> | <WRAP center round todo 80%> | ||
| - | **Aufgabe 8**\\ | + | **2. Programmieraufgabe**\\ |
| - | - Versuchen Sie nun das Rechenbeispiel aus Aufgabe 1, das Sie im Kopf ausgerechnet haben, vom Microbit ausführen zu lassen. Nutzen | + | - Gegeben ist das untenstehende Programm. Schliessen |
| - | [[+tab|https:// | + | - Verändern Sie das Programm so, dass mit dem Satz des Pythagoras die Hypotenuse c mithilfe der beiden Katheten a und b berechnet werden kann. Dabei sollen |
| - | <WRAP center round info 60%> | + | - Schreiben |
| - | **Tipp:** Den Operator für die Addition (+) haben Sie mittlerweile schon kennengelernt. | + | - Beantworten |
| + | - Wo sind die Variablen? | ||
| + | - Wo liegt der Fehler? | ||
| + | - Was passiert, wenn das Import fehlt? | ||
| + | - Erweitern | ||
| </ | </ | ||
| - | <code python> | + | <code python |
| - | #Rechenbeispiel aus Aufgabe 1 | + | #Aufgabe 1, Mathematische Formeln |
| from microbit import * | from microbit import * | ||
| + | from math import * | ||
| - | #Wählen Sie eine Zahl zwischen 1 und 9. | + | #Variablen definieren |
| - | a = 7 | + | a=3 |
| + | b=5 | ||
| - | #Verdoppeln Sie die Zahl in der Variablen b | + | #Display.scroll dient zum Anzeigen |
| - | b = a*2 | + | display.scroll(' |
| + | display.scroll(a) | ||
| + | display.scroll(' | ||
| + | display.scroll(b) | ||
| + | display.scroll(' | ||
| + | display.scroll(a+b) | ||
| + | </ | ||
| - | # Addieren | + | <WRAP center round todo 80%> |
| + | **3.Programmieraufgabe**\\ | ||
| + | Was genau macht das untenstehende Programm? Schreiben | ||
| + | </ | ||
| + | <code python Programm1.py> | ||
| + | #Programm 1 | ||
| + | from microbit import * | ||
| - | # Multiplizieren Sie die Zahl mit 100 in d | + | display.scroll(' |
| - | + | sleep(3000) | |
| - | + | knopfdruck=button_a.get_presses() | |
| - | # Halbieren Sie das Resultat in e | + | display.scroll(knopfdruck) |
| - | + | ||
| - | # Wenn Sie bereits Geburtstag hatten, addieren Sie das aktuelle Jahr und subtrahieren 2100 in f | + | |
| - | # Wenn Sie noch nicht Geburtstag hatten, addieren Sie das aktuelle Jahr und subtrahieren 2101 in f | + | |
| - | + | ||
| - | + | ||
| - | # Subtrahieren Sie die letzten beiden Zahlen Ihres Jahrganges | + | |
| - | + | ||
| - | # Geben Sie nun das Resultat aus! | + | |
| - | + | ||
| - | </ | + | |
| - | - Überprüfen Sie Ihren Algorithmus, | + | |
| - | - Verändern Sie nun Ihr Programm so, dass vom Ergebnis nur noch das Alter in Jahren ausgegeben wird. Im folgenden Code müssen Sie hierfür die Punkte " | + | |
| - | < | + | |
| - | display.scroll("Ihr Alter in Jahren ist: ") | + | |
| - | display.show(...) | + | |
| </ | </ | ||
| + | 8-O | ||
| + | ---- | ||
| - | <WRAP center round important 60%> | ||
| - | Fügen Sie die kennengelernten arithmetischen Operatoren in Ihrem Cheatsheet in der vorgesehenen Tabelle hinzu.\\ | ||
| - | Fügen Sie ebenfalls den neu kennengelernten Befehl für die Ausgabe von Texten und Werten im Cheatsheet hinzu. Erklären Sie dabei ganz kurz den Unterschied zwischen den Befehlen <color # | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | <WRAP center round todo 80%> | ||
| - | **Aufgabe 9**\\ | ||
| - | [[+tab|https:// | ||
| - | - Gegeben ist das untenstehende Programm. Schliessen Sie den Micro:bit an, laden Sie das Programm auf den Micro:bit und führen Sie das Programm aus. Was genau wurde programmiert? | ||
| - | - Verändern Sie das Programm so, dass mit dem Satz des Pythagoras die Hypotenuse c mithilfe der beiden Katheten a und b berechnet werden kann. Dabei sollen nach wie vor die Variablen und ihre Werte, sowie das Ergebnis mit dem Variablennamen c dargestellt werden. Optional kann auch noch ' | ||
| - | - Schreiben Sie ein neues Programm, welches das Volumen einer [[+tab|https:// | ||
| - | - Beantworten Sie die drei Lernfragen schriftlich in Ihr OneNote: | ||
| - | - Wo sind die Variablen? | ||
| - | - Was passiert, wenn das Import fehlt? | ||
| - | - Erweitern Sie diesen Rechner mit weiteren Funktionalitäten und schreiben Sie dazu ein kurzes passendes Programm. | ||
| - | <WRAP center round info 60%> | ||
| - | **Tipp:** Einige Operatoren (+, -, *, /) haben Sie mittlerweile schon kennengelernt. [[+tab|https:// | ||
| - | </ | ||
| - | |||
| - | <WRAP center round important 60%> | ||
| - | Fügen Sie die kennengelernten Operatoren in Ihrem Cheatsheet in der vorgesehenen Tabelle fest.\\ | ||
| - | </ | ||
| < | < | ||
| Zeile 341: | Zeile 323: | ||
| display.scroll(' | display.scroll(' | ||
| display.scroll(b) | display.scroll(b) | ||
| - | display.scroll(' | + | display.scroll(' |
| display.scroll(' | display.scroll(' | ||
| - | display.scroll(sqrt(a**2+b**2)) | + | display.scroll(sqrt(a^2+b^2)) |
| </ | </ | ||
| </ | </ | ||
| </ | </ | ||
| - | </ | + | ===== Teil 2 Display und die while-Schleife===== |
| - | + | {{ : | |
| - | <code python | + | == Beispiel: == |
| - | #Beispiele von mathematischen Formeln | + | <code python |
| + | #Programm 1 | ||
| from microbit import * | from microbit import * | ||
| - | from math import * | ||
| - | #Variablen definieren und einen Wert zuweisen | + | display.scroll(' |
| - | a=3 | + | sleep(3000) #3000ms Zeit,in welcher der Benutzer den Knopf A einige Male drücken muss. |
| - | b=5 | + | knopfdruck=button_a.get_presses() #Es wirdgezählt, |
| - | + | display.scroll(knopfdruck) #Es wird die Anzahl Betätigungen angezeigt. | |
| - | # | + | |
| - | display.scroll(' | + | |
| - | display.scroll(a) | + | |
| - | display.scroll(' | + | |
| - | display.scroll(b) | + | |
| - | display.scroll(' | + | |
| - | display.scroll(a+b) | + | |
| </ | </ | ||
| - | ===== Unendliche Schleifen und eine erste Selektion ===== | + | Durch dieses kleine Programm 1 wird gezählt, wie oft der Knopf A gedrückt in 3000ms gedrückt wird. Es wird neben der vordefinierten Methode '' |
| - | **Schleifen** sind sogenannte Wiederholungen von Code-Blöcken. Dabei geht es darum, einen Block von Befehlen mehrmals zu wiederholen. Es gibt dabei die sogenannten **While-Schleifen**, | + | |
| - | Im folgenden Beispiel benützen Sie die While-Schleife, | + | |
| - | <WRAP center round todo 100%> | + | |
| - | **Aufgabe 10: Schleifen, Selektion und Eingaben: | + | |
| - | [[+tab|https:// | + | |
| - | * Im folgenden Code-Beispiel | + | |
| - | * Kopieren Sie den folgenden Code und führen Sie diesen auf dem MicroBit aus! | + | |
| - | * Überlegen Sie sich, was die folgenden Code-Elemente bewirken: | + | |
| - | * "while True:" | + | |
| - | * sleep(2000) | + | |
| - | * Image.HAPPY & Image.SAD | + | |
| - | Beachten Sie: "while True:" beginnt eine sogenannte Schleife. Alles was nach diesem Code eingerückt | + | :!: **Das <color # |
| - | <code python> | + | **\\ |
| - | # Microbit-Modul wird importiert | + | Das Programm ist sehr kurz und es fällt auf, dass es nur einen Durchlauf gibt. Durch ein erneutes Starten des Programms |
| + | Das Programm kann natürlich auch wie folgt erweitert werden. | ||
| + | == Beispiel: == | ||
| + | <code python | ||
| + | #Programm 2 | ||
| from microbit import * | from microbit import * | ||
| - | |||
| - | # Wiederhole unendlich lange | ||
| - | while True: | ||
| - | display.show(Image.HAPPY) | ||
| - | sleep(2000) | ||
| - | display.show(Image.SAD) | ||
| - | sleep(2000) | ||
| - | </ | ||
| - | * Wir wollen nun dieses Programm etwas verändern und zwar dahingehend, | ||
| - | * Falls a gedrückt wurde, soll ein glückliches Smiley erscheinen, | ||
| - | * Falls b gedrückt wurde, soll ein trauriges Smiley erscheinen. | ||
| - | Dabei können wir über die Selektion **if button_a.is_pressed(): | ||
| - | Beachten Sie, dass alle Befehle, die auf **if button_a.is_pressed():** eingerückt folgt, nur dann geschieht, wenn der Knopf A gedrückt wurde. | + | display.scroll(' |
| - | <code python> | + | sleep(3000) |
| - | # Microbit-Modul wird importiert | + | knopfdruck=button_a.get_presses() |
| - | from microbit import * | + | display.scroll(knopfdruck) |
| - | + | sleep(2000) | |
| - | # Wiederhole unendlich lange | + | display.scroll(' |
| - | while True: | + | sleep(3000) |
| - | | + | knopfdruck=button_a.get_presses() |
| - | ... | + | display.scroll(knopfdruck) |
| + | sleep(2000) | ||
| + | display.scroll(' | ||
| + | sleep(3000) | ||
| + | knopfdruck=button_a.get_presses() | ||
| + | display.scroll(knopfdruck) | ||
| </ | </ | ||
| - | * **Programm | + | Beim Programm |
| - | * Überlegen Sie sich, welche " | + | Wie kann dieses Wiederholen besser programmiert werden, sodass das Programmieren effizient ist und das Programm ästhetisch |
| - | * Wenn wir nun die Anzeige der Smileys nur noch über die Knöpfe steuern, sollten Sie den Befehl ' | + | |
| - | <WRAP center round important 60%> | + | Neben den Variablen ist ein zweites wichtiges Programmierkonzept die Schleifen. Eine Schleife ist dann nötig, wenn ein Programmteil |
| - | Sie sollen Ihre neuen Erkenntnisse aus dieser Aufgabe | + | |
| - | </ | + | Es gibt grundsätzlich zwei Schleifentypen: |
| + | |||
| + | ===while-Schleife=== | ||
| + | {{: | ||
| + | Eine while-Schleife wird unter anderem dann verwendet, wenn: | ||
| + | * ...man nicht weiss, wie oft eine Wiederholung einiger Programmzeilen ausgeführt werden muss, man kennt somit die Anzahl der Wiederholungen nicht. | ||
| + | * .... die Anzahl Wiederholungen bekannt ist und eine **Zähl-Variable** vorhanden ist. | ||
| - | < | + | Jede Schleife hat eine **Bedingung** (eine "Schleifenfrage"), die entweder wahr (**True**) oder falsch (**False**) ist. Die Wiederholungen werden nur **so lange** ausgeführt, |
| - | <panel type=" | + | |
| - | Lösung: | + | Bei der Schleife wird der Body (die Programmzeile, |
| - | <code python> | + | === Beispiel: === |
| - | # Microbit-Modul wird importiert | + | {{ :planung: |
| + | <code python | ||
| + | #Programm 3 | ||
| from microbit import * | from microbit import * | ||
| - | |||
| - | # Wiederhole unendlich lange | ||
| - | while True: | ||
| - | if button_a.is_pressed(): | ||
| - | display.show(Image.HAPPY) | ||
| - | if button_b.is_pressed(): | ||
| - | display.show(Image.SAD) | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | </WRAP> | + | zaehler=1 #ein Zähler ist nötig, um eine Bedingung, ein Stop-Kriterium zu definieren |
| + | while (zaehler< | ||
| + | display.scroll(' | ||
| + | sleep(3000) | ||
| + | knopfdruck=button_a.get_presses() | ||
| + | display.scroll(knopfdruck) | ||
| + | zaehler=zaehler+1 #Der Zähler muss um eins erhöht werden! | ||
| + | </code> | ||
| - | <WRAP center round todo 100%> | ||
| - | **Aufgabe 11: Einen Schrittezähler programmieren und testen**\\ | ||
| - | [[+tab|https:// | ||
| - | Ziel dieser Übung ist es mit Hilfe von Schleifen, Selektion, Eingaben und Variablen einen einfachen Schrittezähler mit dem Microbit zu programmieren und zu testen. Erstellen Sie folgendes Programm: | ||
| - | * Einee Variable " | ||
| - | * Danach soll sich für immer wiederholen: | ||
| - | * Wenn der Microbit geschüttelt wurde, wird die Vartiable " | ||
| - | * Wenn der Knopf a gedrückt wurde, sollen die Anzahl Schritte auf dem Display gezeigt werden | ||
| - | * Verwenden Sie dafür die Funktion %%display.scroll%% anstatt %%display.show%%, | ||
| - | * Wenn der Knopf b gedrückt wurde, soll der Schrittezähler wieder bei 0 beginnen zu zählen (er wird zurückgesetzt) | ||
| - | {{: | ||
| - | <WRAP center round tip 90%> | ||
| - | **Tipp:**\\ | ||
| - | Um herauszufinden, | ||
| - | Damit das Programm nicht nur einmal durchläuft, | ||
| - | </ | ||
| - | * Testen Sie nun Ihr Programm: | ||
| - | * Lösen Sie den Microbit vom USB-Kabel | ||
| - | * Verbinden Sie das Batteriefach mit dem Microbit, so dass dieser weiterhin Strom hat und das Programm startet | ||
| - | * Befestigen Sie den Microbit mit dem Batteriefach an Ihrem Schuh (an Fussgelenk). Seien Sie bitte vorsichtig | ||
| - | * Gehen Sie einige Schritte und testen Sie, wie gut der Schrittezähler funktioniert. Verwenden Sie ebenfalls Treppen, um das Programm zu testen! | ||
| - | * Sobald Sie fertig sind und Ihr Programm auch erfolgreich getestet haben, speichern Sie dieses wiederum als Datei (Aufgabe_11_Schrittezaehler) in Ihrem Informatik-Ordner! | ||
| - | < | ||
| - | <panel type=" | ||
| - | Lösung: | ||
| - | <code python> | ||
| - | from microbit import * | ||
| - | schritte=0 | + | Hier ist ein Zähler nötig, denn dadurch kann die Anzahl Wiederholungen durch das Erhöhen in jedem Durchlauf |
| - | while True: | + | |
| - | if accelerometer.was_gesture('shake'): | + | |
| - | schritte | + | |
| - | if button_a.is_pressed(): | + | |
| - | display.scroll(schritte) | + | |
| - | if button_b.is_pressed(): | + | |
| - | schritte = 0 | + | |
| - | display.scroll(schritte) | + | |
| - | </ | + | |
| - | </ | + | |
| - | </ | + | |
| + | <WRAP center round todo 80%> | ||
| + | **4. Programmieraufgabe**\\ | ||
| + | Für diese Aufgabe orientieren Sie sich am Programm Rechner 1 von weiter oben (1.Programmieraufgabe). Schreiben Sie ein Programm mit folgenden Eigenschaften: | ||
| + | * Der Variablenwert von a soll durch die Anzahl Bedienungen des Knopfs A bestimmbar sein. Dieser Wert soll per Scroll angezeigt werden. | ||
| + | * Gleiches für den Variablenwert b. | ||
| + | * Danach soll das Produkt der beiden Werte angezeigt werden. | ||
| </ | </ | ||
| + | <WRAP center round todo 80%> | ||
| + | **5. Programmieraufgabe**\\ | ||
| + | {{ : | ||
| + | Verändern Sie das Programm 3 so, dass der Knopfdruckwert von Startwert 20 subtrahiert wird, bei jedem Durchlauf der Wiederholung dann von diesem Zwischenresultat weiter subtrahiert wird. Wenn durch diese Subtraktion 0 erreicht wird, soll ein Ton abgespielt. | ||
| + | </ | ||
| - | <WRAP center round todo 100%> | + | === Die Endlosschleife === |
| - | **Aufgabe 12: Accelerometer-Richtung**\\ | + | {{ :planung:endlos_schleife_scratch.png? |
| - | [[+tab|https:// | + | Die '' |
| - | Ziel dieser Übung ist es nochmals den Einsatz von Schleifen, Selektion, Eingaben und Variablen mit dem Microbit zu übern und zu testen. Erstellen | + | Um diese Endlosschleife zu programmieren, kann < |
| - | * Es soll sich für immer wiederholen: | + | Diese Schleife wird während immer ausgeführt, solange das Programm ausgeführt wird. Es gibt somit keine Stopp-Bedingung. Diese spezielle Schleifenart wird oft verwendet, um eine Methode immer überprüfen zu lassen, ob ein Knopf gedrückt oder ein Sensor aktiviert wird oder ähnlich. Dies ist die grosse Stärke einer '' |
| - | * Wenn der Miicrobit nach oben bewegt wird (accelerometer.was_gesture("up")), soll für eine Sekunde ein Pfeil nach oben (Nord) auf dem Microbit angezeigt | + | <WRAP center round todo 80%> |
| - | * Wenn sich der Microbit nach rechts bewegt, soll der Pfeil für genau 1 Sekunde in Richtung rechts (Ost) zeigen | + | **6. Programmieraufgabe**\\ |
| - | * Wenn sich der Microbit nach unten bewegt, soll der Pfeil für genau 1 Sekunde in Richtung rechts (Süd) zeigen | + | Verändern Sie das Programm 3 so, dass es eine Endlosschleife enthält und nicht nach 3 Wiederholungen stoppt. |
| - | * Wenn sich der Microbit nach links bewegt, soll der Pfeil für genau 1 Sekunde in Richtung rechts (West) zeigen | + | </ |
| + | <WRAP center round todo 80%> | ||
| + | **7. Programmieraufgabe**\\ | ||
| + | Ein Programm wurde geschrieben und sieht bei der Ausführung wie folgt aus: | ||
| + | {{youtube> | ||
| + | |||
| + | Schreiben Sie dieses Programm, dabei sollte eine '' | ||
| - | <WRAP center round tip 90%> | ||
| - | **Tipps: | ||
| - | * Wenn Sie einen Pfeil anzeigen lassen wollen, können Sie den Befehl '' | ||
| - | * Um das Display nach 1 Sekunde zurückzusetzen, | ||
| </ | </ | ||
| - | | + | <WRAP center round todo 80%> |
| - | | + | **8. Programmieraufgabe**\\ |
| + | - Lassen | ||
| + | | ||
| + | - Nutzen Sie nun eine '' | ||
| + | </ | ||
| - | <WRAP center round important 60%> | + | <WRAP center round todo 80%> |
| - | Sie sollen Ihre neuen Erkenntnisse aus dieser Aufgabe (z.B. das Zurücksetzen des Bildschirms) | + | **Lernfragen**\\ |
| + | Beantworten | ||
| + | - Was ist der Unterschied zwischen '' | ||
| + | - Was genau macht die Schleife '' | ||
| + | - Warum sind Variablen nötig? | ||
| + | - Worauf muss geachtet werden, wenn eine sich endlich wiederholende '' | ||
| + | - Was passiert, wenn auf das Einrücken | ||
| </ | </ | ||
| - | < | + | ---- |
| - | < | + | < |
| - | Lösung: | + | <panel title=" |
| - | <code python> | + | |
| - | # Microbit-Modul wird importiert | + | |
| from microbit import * | from microbit import * | ||
| - | + | import music | |
| - | # Wiederhole unendlich lange | + | |
| - | while True: | + | startwert=20 |
| - | if accelerometer.was_gesture(" | + | zaehler=1 |
| - | display.show(Image.ARROW_N) | + | while (startwert >0): |
| - | sleep(1000) | + | display.scroll('Press A') |
| - | | + | sleep(3000) |
| - | | + | |
| - | display.show(Image.ARROW_E) | + | |
| - | sleep(1000) | + | display.scroll(startwert) |
| - | display.clear() | + | |
| - | | + | music.play(music.BA_DING) |
| - | | + | |
| - | | + | |
| - | | + | |
| - | if accelerometer.was_gesture(" | + | |
| - | display.show(Image.ARROW_W) | + | |
| - | sleep(1000) | + | |
| - | display.clear() | + | |
| - | </ | + | |
| - | </ | + | |
| - | </ | + | |
| - | </ | ||
| - | ===== Endliche Schleifen mit while und Bedingungen ===== | ||
| - | Sie haben sich vielleicht schon die Frage gestellt, ob es auch möglich ist, Schleifen endlich zu programmieren, | ||
| - | - Zum Einen kann man über den Schlüsselbegriff '' | ||
| - | - Zum Anderen kann man im Schleifenkopf nach dem '' | ||
| - | ==== Schleifen beenden mit '' | ||
| - | Hierzu studieren wir einmal das folgende kleine Programm. Kopieren Sie dieses in den Editor und laufen Sie es auf dem Microbit laufen. Ihnen fällt vielleicht auf, dass es sich um eine Art Metronom handelt, das 120 mal Pro Minute einen Ton ausgibt.\\ | ||
| - | Über den Befehl '' | ||
| - | Falls man nun das Programm beenden möchte, muss man die Knöpfe A und B gleichzeitig gedrückt halten. Das '' | ||
| - | < | ||
| - | # Imports go at the top | ||
| from microbit import * | from microbit import * | ||
| - | import music | ||
| - | # define variable anzahlBPM | ||
| - | anzahlBPM = 120 | ||
| - | # Code in a 'while True:' loop repeats forever | ||
| - | while True: | ||
| - | music.set_tempo(bpm=anzahlBPM) | ||
| - | music.play([' | ||
| - | if button_a.is_pressed() and button_b.is_pressed(): | ||
| - | break | ||
| - | </ | ||
| - | {{: | ||
| - | <WRAP center round todo 100%> | + | number = 0 |
| - | **Aufgabe 13: Ein Metronom programmieren mit variablen BPM**\\ | + | while number |
| - | Studieren Sie oben das Unterkapitel " | + | |
| - | Kopieren Sie das obige Programm in den Editor. Sie sollen dieses nun so erweitern, dass man mit dem Knopfdruck auf B das Tempo | + | |
| - | Tipp: Über den Reset-Button auf der Rückseite des Microbit kann man das Programm immer wieder von vorne starten lassen.\\ | + | display.scroll('stop') |
| - | Speichern Sie das Programm anschliessend wieder in Ihrem Informatik-Ordner auf Ihrem Computer als Datei! | + | |
| - | <WRAP center round important 60%> | ||
| - | Sie sollen Ihre neuen Erkenntnisse aus dieser Aufgabe (Schleifen beenden durch '' | ||
| - | </ | ||
| - | < | ||
| - | < | ||
| - | <panel type=" | ||
| - | Lösung: | ||
| - | <code python> | ||
| - | # Imports go at the top | ||
| from microbit import * | from microbit import * | ||
| - | import music | ||
| - | anzahlBPM = 120 | ||
| - | # Code in a 'while True:' loop repeats forever | ||
| while True: | while True: | ||
| - | | + | |
| - | | + | |
| - | if button_a.is_pressed(): | + | display.show(Image('00300:' |
| - | | + | '03630:' |
| - | if button_b.is_pressed(): | + | '36963:' |
| - | anzahlBPM = anzahlBPM+10 | + | ' |
| - | | + | ' |
| - | break | + | |
| </ | </ | ||
| + | |||
| + | |||
| </ | </ | ||
| </ | </ | ||
| - | </ | ||
| - | </ | ||
| - | ==== Schleifen mit Schleifen-Bedingung ==== | ||
| - | Es ist möglich, eine while-Schleife nur genau solange ausführen zu lassen, wie eine bestimmte Bedingung eintrifft. Hierfür kann (ähnlcih wie nach dem '' | ||
| - | < | ||
| - | # Import | ||
| - | from microbit import * | ||
| - | # Variable i wird auf 0 gesetzt | ||
| - | i=0 | ||
| - | # solange i kleiner als 10 ist | ||
| - | while i<10: | ||
| - | display.show(i) | ||
| - | sleep(500) | ||
| - | i=i+1 # ganz wichtig: innerhalb des Schleifenkörpers muss i erhöht werden | ||
| - | display.scroll(" | ||
| - | </ | ||
| - | {{: | + | ===== Teil 3, Knöpfe, Sensoren und ' |
| - | <WRAP center round todo 100%> | + | === Beispiel === |
| - | **Aufgabe 14: **\\ | + | |
| - | Ein Programm wurde geschrieben und sieht bei der Ausführung wie folgt aus: | + | |
| - | {{youtube> | + | |
| - | * Schreiben Sie dieses Programm, dabei sollte eine '' | + | Ein Beispiel zum Starten, hierbei ist zu bemerken, dass ein Beschleunigungssensor, um Neigungen und Bewegungen zu erfassen genutzt werden kann. {{ :planung:accelerator_classroom.png? |
| - | <WRAP center round info 90%> | + | |
| - | **Tipp:** Wenn Sie wollen, dass die While-Schleife nicht unendlich lange läuft, sondern nur, solange eine bestimmte Variable, z.B. '' | + | |
| - | </ | + | |
| - | <WRAP center round important 60%> | + | <code python beschleunigung1.py> |
| - | Sie sollen Ihre neuen Erkenntnisse aus dieser Aufgabe | + | # |
| - | </ | + | from microbit import * |
| + | |||
| + | # | ||
| + | |||
| + | while True: | ||
| + | if accelerometer.was_gesture(' | ||
| + | display.show(Image.CONFUSED) | ||
| + | sleep(200) | ||
| + | else: | ||
| + | display.show(Image.HAPPY) | ||
| - | < | ||
| - | < | ||
| - | <panel type=" | ||
| - | Lösung: | ||
| - | <code python> | ||
| </ | </ | ||
| - | </ | + | {{ : |
| - | </ | + | In diesem kurzen Programm wird durch eine Endlosschleife immer wieder über den Akzelerometer überprüft, |
| - | </ | + | Falls dies der Fall ist, wird ein " |
| - | </ | + | |
| - | ====== Lernziele für dieses Unterkapitel ====== | + | **Dadurch verzweig |
| - | Die folgenden Lernziele dienen der Prüfungsvorbereitung und beziehen | + | |
| - | * Ich kann in meinen eigenen Worten erklären, was ein Algorithmus | + | Falls es nur ein '' |
| - | * Ich kann anhand eines einfachen Algorithmus die wichtigsten Eigenschaften von diesem erklären (z.B: Kockrezept oder Faltanleitung): | + | |
| - | * Eindeutigkeit | + | |
| - | * Ausführbarkeit | + | |
| - | * Terminierung | + | |
| - | * Determiniertheit | + | |
| - | * Determinismus | + | |
| - | * Ich verstehe das Prinzip | + | |
| - | * Ich kann ein Aktivitätsdiagramm (Flowchart) zu einem Algorithmus erfolgreich lesen und verstehe die Schritte | + | |
| - | * Ich kann ein Aktivitätsdiagramm zu einem einfachen Ablauf (z.B. ein Koch/ | + | |
| - | * Ich kann das Prinzip von EVA (Eingabe, Verarbeitung und Ausgabe) bei Programmen erläutern | + | |
| - | * Ich kann in Python Werte und Texte im Display des Microbits ausgeben | + | |
| - | * Ich kann in einem Programm Variablen definieren, einsetzen und ausgeben mit dem Microbit | + | |
| - | * Ich weiss, wie gültige Variablen genannt werden müssen | + | |
| - | * Ich kenne die folgenden Operatoren und weiss, wie ich sie mit Python einsetzen kann: | + | |
| - | * Addition | + | |
| - | * Subtraktion | + | |
| - | * Multiplikation | + | |
| - | * Division | + | |
| - | * Exponentiation (Hoch rechnen) | + | |
| - | * Wurzel | + | |
| - | * Ich kann die vorgestellten Python-Module (microbit und math) in einem Programm importieren und erläutern wofür diese notwendig sind | + | |
| - | * Ich kann den Import-Befehl von Modulen in einem Python-Programm erläutern | + | |
| - | * Ich kann in Python eine Endlosschleife einsetzen (programmieren) | + | |
| - | * Ich kann in Python eine einfache Selektion (if ...) einsetzen | + | |
| - | * Ich kann in die Knöpfe (Eingaben) des Microbits in einer Selektion | + | |
| - | * Ich kann in Python endliche Schleifen programmieren, | + | |
| - | * Ich kann Schleifen-Bedingungen einsetzen, um das Ausführen einer Schleife zu kontrollieren | + | |
| - | * Ich kann den Schlüsselbegriff // | + | |
| - | ====== Übungsaufgaben ====== | ||
| - | Die folgenden Übungsaufgaben dienen der Vertiefung und Erweiterung Ihrer bisher erlernten Kentnissen und Fähigkeiten in der Programmierung mit Python und dem BBC: | ||
| + | <WRAP center round todo 80%> | ||
| + | **9. Programmieraufgabe** | ||
| + | - Untersuchen Sie das untenstehende unvollständige Programm. Was genau passiert? Beschreiben Sie kurz. | ||
| + | - Erweitern Sie das Programm so, dass beim Drücken von Knopf B ein kurzer Ton erzeugt wird und das Display "Bitte Knopf A drücken" | ||
| + | - Verändern Sie das Programm weiter, sodass wenn beide Knöpfe gleichzeitig gedrückt werden, ein Symbol Ihrer Wahl angezeigt wird und eine Folge von absteigenden Tönen erzeugt wird. | ||
| + | - Erweitern Sie das Programm weiter, dass wenn der Micro:bit mit dem Logo nach unten gehalten wird, die aktuelle Raumtemperatur gemessen wird und diese auf dem Display auch per scroll angezeigt wird, gefolgt von einer kleinen Pause von einer Sekunde. | ||
| + | </ | ||
| + | {{ : | ||
| + | <code python beschleunigung2.py> | ||
| - | + | while True: | |
| - | <WRAP center round todo 100%> | + | if button_a.was_pressed(): |
| - | **Aufgabe 15: **\\ | + | |
| - | a) Erstellen Sie ein Programm, das die Summe aller Zahlen von 1 bis 100 berechnet und ausgibt. Dazu sollen Sie zwei Variablen | + | |
| - | < | + | |
| - | from microbit import * | + | |
| - | i = 0 | + | |
| - | summe = 0 | + | |
| </ | </ | ||
| - | Speichern Sie Ihr Programm anschliessend!\\ | ||
| - | < | ||
| - | <panel type=" | ||
| - | Lösung: | ||
| - | <code python> | ||
| - | from microbit import * | ||
| - | i = 0 | ||
| - | summe = 0 | ||
| - | while i<=100: | + | <WRAP center round todo 80%> |
| - | summe = summe+i | + | **10. Programmieraufgabe** |
| - | i = i+1 | + | - Zeichnen Sie das Aktivitätsdiagramm des unten beschriebenen Programms, diskutieren Sie zu zweit. |
| + | - Schreiben Sie das Programm, welches die beiden Pulse misst. | ||
| + | - Ergänzen Sie das Programm, sodass die Werte von einem Micro:bit zum anderen gesendet werden! | ||
| + | <WRAP center round box 100%> | ||
| + | //Programm://\\ | ||
| + | Es soll den jeweiligen Pulsschlag pro Minute von zwei Personen nacheinander anzeigen, dazu soll eine '' | ||
| + | Der Puls soll wie auf dem Foto abgebildet, {{ : | ||
| + | </ | ||
| - | display.scroll(" | + | Tipps: |
| - | display.scroll(summe) | + | * Die Bedingung '' |
| - | </ | + | * Die 2.Programmieraufgabe könnte helfen |
| - | </ | + | * Ein Zähler ist nötig. |
| - | </ | + | * Die gemessenen Pulsschläge sind mit einem geeigneten Faktor proportional auf eine Zeitspanne von 60 Sekunden zu rechnen. |
| - | b) Erstellen Sie ein weiteres Programm, das nicht die Summe sondern das Produkt der ersten 10 Zahlen | + | * Das Menü Radio hilft für Teilaufgabe C. |
| - | Speichern Sie Ihr Programm anschliessend!\\ | + | * {{ : |
| - | < | + | |
| - | <panel type=" | + | |
| - | Lösung: | + | |
| - | <code python> | + | |
| - | from microbit import * | + | |
| - | i = 1 | + | |
| - | produkt = 1 | + | |
| - | while i<=10: | + | </WRAP> |
| - | produkt = produkt*i | + | |
| - | i = i+1 | + | |
| - | display.scroll(" | + | <WRAP center round todo 60%> |
| - | display.scroll(produkt) | + | **Lernfragen**\\ |
| - | </code> | + | - Wie kann erreicht werden, dass ein Teil eines Programms nur in bestimmten Fällen ausgeführt wird? |
| - | </ | + | - Warum ist das Verzweigen |
| - | </ | + | - Worauf muss geachtet werden, wenn eine ' |
| - | c) Freiwillig | + | |
| - | < | + | |
| - | <panel type=" | + | |
| - | Lösung: | + | |
| - | <code python> | + | |
| - | from microbit import * | + | |
| - | f0 = 1 | + | |
| - | f1 = 1 | + | |
| - | fn = 2 | + | |
| - | i=3 | + | |
| - | # wir beginnen bei 3, weil die ersten 2 Zahlen schon da sind (1,1, ...) | + | |
| - | while i<=10: | + | |
| - | fn=f0+f1 | + | |
| - | f0=f1 | + | |
| - | f1=fn | + | |
| - | i=i+1 | + | |
| - | display.scroll(" | + | |
| - | display.scroll(fn) | + | |
| - | </ | + | |
| - | </ | + | |
| - | </ | + | |
| </ | </ | ||
| - | <WRAP center round todo 100%> | ||
| - | **Aufgabe 16**\\ | ||
| - | Beantworten Sie die drei Lernfragen: | ||
| - | - Welche Ausgabemöglichkeiten haben wir beim Microbit bisher kennengelernt? | ||
| - | - Was ist der Unterschied zwischen '' | ||
| - | - Was genau macht die Schleife '' | ||
| - | - Was macht die Schleife '' | ||
| - | - Wofür sind Variablen nützlich? Was ist der Unterschied zwischen '' | ||
| - | - Worauf muss geachtet werden, wenn eine sich endlich wiederholende '' | ||
| - | - Wie lässt sich eine Schleife stoppen? | ||
| - | - Was passiert, wenn auf das Einrücken in der '' | ||
| - | - Welche Eingabemöglichkeiten haben wir bisher kennengelernt? | ||
| - | </ | ||