Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
gf1:programmieren5 [2023/05/10 09:13] marrocgf1:programmieren5 [2025/04/24 10:53] (aktuell) marroc
Zeile 1: Zeile 1:
-<hidden> 
 ===== Selektion oder 'if'-Entscheidungen ===== ===== Selektion oder 'if'-Entscheidungen =====
 +{{ :gf1:if_diagramm1.png?direct&600|}}
 +**Was ist eine Selektion?**
 +
 +In Python wird die Selektion mit den Anweisungen ''if'', ''elif'' und ''else'' verwendet, um Entscheidungen im Programm zu treffen.
 +Die **Anweisung if prüft eine Bedingung**, und wenn diese erfüllt ist, wird ein bestimmter Codeblock (Body) ausgeführt. Wenn die Bedingung nicht erfüllt ist, wird dieser Code-Block nicht ausgeführt. Es kann man mit ''elif'' weitere Bedingungen getestet werden, falls diese zweite Bedingung erfüllt ist, wird der Body-Codeblock von ''elif'' ausgeführt. Wenn keine der Bedingungen zutrifft, wird der Codeblock unter ''else'' ausgeführt.\\
 +Oft wird somit bei der Selektion ein Teil des Programms nicht oder zumindest nicht immer ausgeführt. 
  
 === Beispiel === === Beispiel ===
  
-Ein Beispiel zum Starten, hierbei ist zu bemerken, dass ein Beschleunigungssensor, um Neigungen und Bewegungen zu erfassen genutzt werden kann. {{ :planung:accelerator_classroom.png?nolink&200|}} + 
 +{{ :gf1:accelerator_classroom.png?direct&200|}} 
 +Ein Beispiel zum Starten, hierbei ist zu bemerken, dass ein Beschleunigungssensor, um Neigungen und Bewegungen zu erfassen genutzt werden kann.   
 + 
  
 <code python beschleunigung1.py> <code python beschleunigung1.py>
-#beschleunigung 1 
 from microbit import * from microbit import *
  
 #Akzelerometer (Beschleunigungssensor, um Gesten und Bewegungen zu erkennen) #Akzelerometer (Beschleunigungssensor, um Gesten und Bewegungen zu erkennen)
 + 
 while True: while True:
-    if accelerometer.was_gesture('left'): + if accelerometer.was_gesture('shake'): 
-        display.show(Image.CONFUSED) +    display.show(Image.CONFUSED) 
-        sleep(200+    sleep(3000
-    else: + else: display.show(Image.HAPPY) 
-        display.show(Image.HAPPY)+</code>
  
  
-</code> 
-{{ :planung:if_diagramm1.png?nolink&600|}} 
 In diesem kurzen Programm wird durch eine Endlosschleife immer wieder über den Akzelerometer überprüft, ob dieser nach links geneigt wurde. In diesem kurzen Programm wird durch eine Endlosschleife immer wieder über den Akzelerometer überprüft, ob dieser nach links geneigt wurde.
 Falls dies der Fall ist, wird ein "verwirrtes" Emoji angezeigt. Durch das ''if'', bzw. das wenn, kann eine Bedingung mit zwei oder mehr Ausgangsmöglichkeiten implementiert werden. \\  Falls dies der Fall ist, wird ein "verwirrtes" Emoji angezeigt. Durch das ''if'', bzw. das wenn, kann eine Bedingung mit zwei oder mehr Ausgangsmöglichkeiten implementiert werden. \\ 
Zeile 29: Zeile 35:
 Falls es nur ein ''if'' - ''else''-Selektion ist, dann wird es nur eine Verzweigung des Programms in 2 Programmäste geben, falls es ein ''if'' - ''elif'' -...- ''else'' -Selektion ist, dann in 3 oder mehr Teile. Falls es nur ein ''if'' - ''else''-Selektion ist, dann wird es nur eine Verzweigung des Programms in 2 Programmäste geben, falls es ein ''if'' - ''elif'' -...- ''else'' -Selektion ist, dann in 3 oder mehr Teile.
  
 +\\
  
-<WRAP center round todo 80%+<WRAP nicebox green
-**9. Programmieraufgabe**+**Aufgabe 11**{{ :gf1:ampel.jpg?direct&200|}} 
 +  - Schliessen Sie die Ampel so wie auf dem Bild an den Micro:bit an. Achten Sie darauf, dass die Masse (Erdung GRN) mit 0V verbunden ist. 
   - Untersuchen Sie das untenstehende unvollständige Programm. Was genau passiert? Beschreiben Sie kurz.   - 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" anzeigt. 
-  - 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. 
-</WRAP> 
-{{ :planung:if_verzweigung_2.png?nolink&250|}} 
  
-<code python beschleunigung2.py> 
- 
-while True: 
-    if button_a.was_pressed(): 
-        display.scroll('A') 
-        sleep(400) 
-        display.clear() 
-</code> 
- 
-<WRAP center round todo 80%> 
-**10. Programmieraufgabe** 
-  - 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 ''while''-Schleife verwendet werden.\\  
-Der Puls soll wie auf dem Foto abgebildet, {{ :planung:puls_messen.jpg?direct&200|https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Pulse_evaluation.JPG/330px-Pulse_evaluation.JPG}} am eigenen Handgelenk gefühlt werden. \\ Der Mico:bit wird auf den Tisch neben das Handgelenk gelegt und bei jedem Pulsschlag wird auf den Knopf A bzw. auf den Knopf B - für die zweite Person - gerückt. \\ Um die gleiche Zeitspanne (beispielsweise 15 Sekunden) als Messperiode zu haben, ist ein akustisches Start- und Stoppsignal (ein Beep) nötig. \\ Der jeweils gemessene Puls wird in einer Variablen gespeichert. Die beiden Nutzer sollen auch mit Texten und Symbolen durch die Messung geleitet werden. 
-</WRAP> 
- 
-Tipps: 
-  * Die Bedingung ''button_a.is_pressed()= True'' könnte für Person A für die Verzweigung nötig sein.  
-  * 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. 
-  * Das Menü Radio hilft für Teilaufgabe C. 
-  * {{ :planung:radio_classroom.png?direct&200|}}Um einen Zahlenwert einer Variable in ein Wort (string) umzuwandeln, kann str(Zahlenwert) verwendet werden. 
- 
-</WRAP> 
- 
-<WRAP center round todo 60%> 
-**Lernfragen**\\ 
-  - Wie kann erreicht werden, dass ein Teil eines Programms nur in bestimmten Fällen ausgeführt wird? 
-  - Warum ist das Verzweigen (Entscheiden) des Programms überhaupt nötig? 
-  - Worauf muss geachtet werden, wenn eine 'if'-Selektion verwendet wird? 
-  - Welches sind die wichtigsten Erkenntnisse der Programmieraufgaben 1 bis 10? Notieren Sie dies kurz! 
-</WRAP> 
- 
- 
- 
- 
- 
-===== Unendliche Schleifen und eine erste Selektion ===== 
-**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**, sowie die **For-Schleifen**. \\ 
-Im folgenden Beispiel benützen Sie die While-Schleife, um einen Block von Code eigentlich "unendlich" lange auszuführen.  
-<WRAP center round todo 100%> 
-**Aufgabe 10: Schleifen, Selektion und Eingaben:**\\ 
-[[+tab|https://python.microbit.org/v/3|Hier gehts wieder zum Online-Editor]] 
-  * Im folgenden Code-Beispiel wird ein Stück Code auf dem Microbit sozusagen "unendlich" lange immer wieder ausgeführt. Und zwar wird dabei immer ein "glückliches" Gesicht für 2 Sekunden über das Display ausgegeben, danach ein "trauriges" Gesicht und so weiter. 
-  * 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 (4 Abstände von der linken Seite entfernt) ist, wird sozusagen unendlich lange immer wieder ausgeführt.\\ 
 <code python> <code python>
-Microbit-Modul wird importiert+Imports go at the top
 from microbit import * from microbit import *
-  
-# Wiederhole unendlich lange 
-while True: 
-    display.show(Image.HAPPY) 
-    sleep(2000) 
-    display.show(Image.SAD) 
-    sleep(2000) 
-</code> 
-  * Wir wollen nun dieses Programm etwas verändern und zwar dahingehend, dass wir über die zwei Knöpfe (buttons) die Ausgabe steuern können. Dazu brauchen wir innerhalb der while-Schleife (while True) eine Selektion, die testet, ob der Knopf a oder der Knopf b gedrückt wurde.  
-  * 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():** herausfinden, ob der Knopf a gedrückt wurde. Das folgende Programm zeigt Ihnen den Anfang, erweitern Sie dieses entsprechend: 
  
-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.   
-<code python> 
-# Microbit-Modul wird importiert 
-from microbit import * 
-  
-# Wiederhole unendlich lange 
-while True: 
-    if button_a.is_pressed(): 
-        ... 
-</code> 
  
-  * **Programm auf dem eigenen Computer speichern:** Sobald Sie mit Ihrem Programm zufrieden sind, speichern Sie dieses in Ihrem Informatik-Ordner. Hierfür klicken Sie neben dem Save-Button auf die **drei Punkte** und dann auf **Save Python Script** und geben einen sinnvollen Dateinamen ein (z.B. Aufgabe_10_Gefuehlomat). Die Date wird dann automatisch in Ihrem Downloadordner gespeichert. Bewegen Sie diese anschliessend in Ihren eigenen Informatikordner! So gespeicherte Dateien lassen sich im Editor immer wieder öffnen, indem Sie einfach auf den **Open-Button** klicken. 
-  * Überlegen Sie sich, welche "Eigenschaft" von Algorithmen / Programmen bei diesem Algorithmus nun nicht eingehalten wird.  
-  * Wenn wir nun die Anzeige der Smileys nur noch über die Knöpfe steuern, sollten Sie den Befehl 'sleep(2000)' jeweils entfernen. Dieser hat hier keinen positiven Effekt mehr und verzögert nur die Interaktion mit dem Benütze / der Benützerin des Programmes. 
- 
-<WRAP center round important 60%> 
-Sie sollen Ihre neuen Erkenntnisse aus dieser Aufgabe (unendliche Schleife, Selektion und Eingabe durch Buttons) in Ihrem Cheatsheet in OneNote kurz einfügen und erörtern! 
-</WRAP> 
- 
-<accordion collapsed="true"> 
-<panel type="default" title="Mögliche Musterlösung einblenden"> 
-Lösung: 
-<code python> 
-# Microbit-Modul wird importiert 
-from microbit import * 
-  
-# Wiederhole unendlich lange 
 while True: while True:
-    if button_a.is_pressed(): +     
-        display.show(Image.HAPPY+    pin0.write_digital(1) 
-    if button_b.is_pressed(): +     
-        display.show(Image.SAD+    if button_a.was_pressed(): 
-</code+        pin0.write_digital(0) 
-</panel> +        pin1.write_digital(1) 
-</accordion>+         
 + </code>
  
-</WRAP>+  - Erweitern Sie das Programm so, dass beim Drücken von Knopf A die Ampel für einige Zeit auf Gelb und dann auf Grün wechselt und anschliessend wieder zurück auf Rot. 
 +  - Erweitern Sie das Programm nun weiter, so dass bei Grün ein kurzer Ton erzeugt wird und das Display "Go" anzeigt. 
 +  - Erweitern Sie das Programm, dass beim Drücken von Knopf B das gelbe Licht 10 mal blinkt. 
 +  - 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 und gleichzeitig alle drei Lichter blinken.
  
-<WRAP center round todo 100%> 
-**Aufgabe 11: Einen Schrittezähler programmieren und testen**\\ 
-[[+tab|https://python.microbit.org/v/3|Hier gehts wieder zum Online-Editor]]\\ 
-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 "schritte" wird zunächst der Wert 0 zugewiesen 
-  * Danach soll sich für immer wiederholen: 
-    * Wenn der Microbit geschüttelt wurde, wird die Vartiable "schritte" um 1 vergrössert 
-    * 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%%, da die Variable "schritte" mehr als nur 1 Stelle annehmen kann 
-    * Wenn der Knopf b gedrückt wurde, soll der Schrittezähler wieder bei 0 beginnen zu zählen (er wird zurückgesetzt) 
-{{:wiki:schrittezaehler.png?nolink&800|}} 
- 
-<WRAP center round tip 90%> 
-**Tipp:**\\ 
-Um herauszufinden, ob ein Schritt gemacht wurde, können wir am einfachten testen, ob der Microbit geschüttelt wurde. Dies geschieht über die Eingabe **accelerometer.was_gesture('shake')**, die jedesmal True ergibt, wenn wir den Microbit durchschütteln. Sie können also mit **if accelerometer.was_gesture('shake'):** überprüfen, ob der Microbit geschüttelt wurde.\\ 
-Damit das Programm nicht nur einmal durchläuft, sollten Sie hier wiederum eine "Endlosschleife" wie in der vorherigen Aufgabe einbauen. 
 </WRAP> </WRAP>
-  * 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! 
  
-<accordion collapsed="true"> 
-<panel type="default" title="Mögliche Musterlösung einblenden"> 
-Lösung: 
-<code python> 
-from microbit import * 
  
-schritte=0 +<accordion> 
-while True: +<panel title ="mögliche Lösungen">
-    if accelerometer.was_gesture('shake'): +
-        schritte = schritte+1 +
-    if button_a.is_pressed(): +
-        display.scroll(schritte) +
-    if button_b.is_pressed(): +
-        schritte = 0 +
-        display.scroll(schritte) +
-</code> +
-</panel> +
-</accordion+
- +
-</WRAP> +
- +
- +
-<WRAP center round todo 100%> +
-**Aufgabe 12: Accelerometer-Richtung**\\ +
-[[+tab|https://python.microbit.org/v/3|Hier gehts wieder zum Online-Editor]]\\ +
-Ziel dieser Übung ist es nochmals den Einsatz von Schleifen, Selektion, Eingaben und Variablen mit dem Microbit zu übern und zu testen. Erstellen Sie folgendes Programm: +
-  * Es soll sich für immer wiederholen: +
-    * 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 werden. +
-    * Wenn sich der Microbit nach rechts bewegt, soll der Pfeil für genau 1 Sekunde in Richtung rechts (Ost) zeigen  +
-    * Wenn sich der Microbit nach unten bewegt, soll der Pfeil für genau 1 Sekunde in Richtung rechts (Süd) zeigen +
-    * Wenn sich der Microbit nach links bewegt, soll der Pfeil für genau 1 Sekunde in Richtung rechts (West) zeigen +
- +
- +
-<WRAP center round tip 90%> +
-**Tipps:**\\ +
-  * Wenn Sie einen Pfeil anzeigen lassen wollen, können Sie den Befehl ''display.show()'' verwenden. In den Klammern müssen Sie das gewünschte "Bild" angeben. Dazu können Sie ''Image.'' schreiben und sich anschauen, was Ihnen alles vorgeschlagen wird. +
-  * Um das Display nach 1 Sekunde zurückzusetzen, können Sie den Befehl ''display.clear()'' verwenden. Den Befehl zum Warten haben Sie ja bereits kennengelernt. +
-</WRAP> +
-  * Testen Sie nun Ihr Programm:  +
-  * Zeichnen Sie für diesen Algorithmus ein Flowchart-Diagramm auf Papier oder in OneNote mit den korrekten Diagrammelementen! +
- +
-<WRAP center round important 60%> +
-Sie sollen Ihre neuen Erkenntnisse aus dieser Aufgabe (z.B. das Zurücksetzen des Bildschirms) in Ihrem Cheatsheet in OneNote kurz einfügen und erörtern! +
-</WRAP> +
- +
- +
-<accordion collapsed="true"+
-<panel type="default" title="Mögliche Musterlösung einblenden"> +
-Lösung:+
 <code python> <code python>
-# Microbit-Modul wird importiert 
-from microbit import * 
-  
-# Wiederhole unendlich lange 
-while True: 
-    if accelerometer.was_gesture("up"): 
-        display.show(Image.ARROW_N) 
-        sleep(1000) 
-        display.clear() 
-    if accelerometer.was_gesture("right"): 
-        display.show(Image.ARROW_E) 
-        sleep(1000) 
-        display.clear() 
-    if accelerometer.was_gesture("down"): 
-        display.show(Image.ARROW_S) 
-        sleep(1000) 
-        display.clear() 
-    if accelerometer.was_gesture("left"): 
-        display.show(Image.ARROW_W) 
-        sleep(1000) 
-        display.clear() 
-</code> 
-</panel> 
-</accordion> 
- 
-</WRAP> 
  
-===== Endliche Schleifen mit while und Bedingungen ===== 
-Sie haben sich vielleicht schon die Frage gestellt, ob es auch möglich ist, Schleifen endlich zu programmieren, sodass der Schleifenkörper nur eine endliche Anzahl von malen ausgeführt wird. Das ist grundsätzlich über zwei Wege in Python möglich: 
-  - Zum Einen kann man über den Schlüsselbegriff ''break'' das sofortige Beenden einer Schleife an einer bestimmten Position im Programm bewirken 
-  - Zum Anderen kann man im Schleifenkopf nach dem ''while'' eine sogenannte Schleifen-Bedingung einsetzen, die bei jedem Schleifendurchgang überprüft wird, und jedes mal entscheidet, ob der Schleifnkörper nochmals ausgeführt werden soll oder nicht 
-==== Schleifen beenden mit ''break'' ==== 
-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 ''music.set_tempo(bpm=anzahl)'' wird das Tempo der "Musik" auf den Wert der Varialble //anzahlBPM//, also auf 120 gesetzt. Danach wird die Note "C" abgespielt für einen Viertel Takt gespielt, danach für 3 Viertel des Taktes pausiert.\\ 
-Falls man nun das Programm beenden möchte, muss man die Knöpfe A und B gleichzeitig gedrückt halten. Das ''and'' in der Selektion überprüft, ob beide Knöpfe gedrückt wurden. Was soll in dieser Situation nun geschehen? Die Schleife soll beendet werden, sodass das Programm stoppt. Hier kommt der Schlüsselbegriff ''break'' zum Zuge. Dieser führt dazu, dass die Schleife unmittelbar unterbrochen wird. 
-<code> 
 # Imports go at the top # Imports go at the top
 from microbit import * from microbit import *
-import music+import music 
  
-# define variable anzahlBPM 
-anzahlBPM = 120 
  
-# Code in a 'while True:' loop repeats forever 
 while True: while True:
-    music.set_tempo(bpm=anzahlBPM+     
-    music.play(['C4:1', 'r:3']+    pin0.write_digital(1
-    if button_a.is_pressed() and button_b.is_pressed(): +     
-        break +    if button_a.was_pressed(): 
-</code> +        pin0.write_digital(0) 
-{{:wiki:algos_und_programmierung:flowchart_while_true_break.png?800&nolink|}}+        pin1.write_digital(1) 
 +        sleep(500) 
 +        pin0.write_digital(0) 
 +        pin1.write_digital(0) 
 +        pin2.write_digital(1) 
 +        sleep(2000) 
 +        speaker.off() 
 +        pin0.write_digital(0) 
 +        pin1.write_digital(0) 
 +        pin2.write_digital(0) 
 +        sleep(2000) 
 +    if button_b.was_pressed(): 
 +        pin0.write_digital(0) 
 +        counter=0 
 +        while(counter<10): 
 +            pin1.write_digital(1) 
 +            sleep(500) 
 +            pin1.write_digital(0) 
 +            sleep(500) 
 +            counter=counter+1
  
-<WRAP center round todo 100%> +         
-**Aufgabe 13: Ein Metronom programmieren mit variablen BPM**\\ +        
-Studieren Sie oben das Unterkapitel "Schleifen beenden mit break"+
-Kopieren Sie das obige Programm in den Editor. Sie sollen dieses nun so erweitern, dass man mit dem Knopfdruck auf B das Tempo  ''anzahlBPM'' um 10 Beats erhöhen kann und mit dem Knopfdruck auf A das Tempo um 10 Beats verringern kann. Weiterhin soll man über A und B gleichzeitig das Programm beenden können!\\ +
-Tipp: Über den Reset-Button auf der Rückseite des Microbit kann man das Programm immer wieder von vorne starten lassen.\\ +
-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 ''break'', mehrere Bedingungen Testen mit ''and'') in Ihrem Cheatsheet in OneNote kurz einfügen und erklären! 
-</WRAP> 
  
-<hidden> 
-<accordion collapsed="true"> 
-<panel type="default" title="Mögliche Musterlösung einblenden"> 
-Lösung: 
-<code python> 
-# Imports go at the top 
-from microbit import * 
-import music 
- 
-anzahlBPM = 120 
- 
-# Code in a 'while True:' loop repeats forever 
-while True: 
-    music.set_tempo(bpm=anzahlBPM) 
-    music.play(['C4:1', 'r:3']) 
-    if button_a.is_pressed(): 
-        anzahlBPM = anzahlBPM-10 
-    if button_b.is_pressed(): 
-        anzahlBPM = anzahlBPM+10 
-    if button_a.is_pressed() and button_b.is_pressed(): 
-        break 
 </code> </code>
 </panel> </panel>
 </accordion> </accordion>
-</hidden>+<hidden> 
 +<WRAP nicebox green> 
 +**Aufgabe 12** 
 +  - 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 60%> 
 +//Programm://\\  
 +Es soll den jeweiligen Pulsschlag pro Minute von zwei Personen nacheinander anzeigen, dazu soll eine ''while''-Schleife verwendet werden.\\  
 +Der Puls soll wie auf dem Foto abgebildet,  
 +{{ :gf1:puls_messen.jpg?direct&200|https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Pulse_evaluation.JPG/330px-Pulse_evaluation.JPG}}am eigenen Handgelenk gefühlt werden. \\ Der Mico:bit wird auf den Tisch neben das Handgelenk gelegt und bei jedem Pulsschlag wird auf den Knopf A bzw. auf den Knopf B - für die zweite Person - gerückt. \\ Um die gleiche Zeitspanne (beispielsweise 15 Sekunden) als Messperiode zu haben, ist ein akustisches Start- und Stoppsignal (ein Beep) nötig. \\ Der jeweils gemessene Puls wird in einer Variablen gespeichert. Die beiden Nutzer sollen auch mit Texten und Symbolen durch die Messung geleitet werden.
 </WRAP> </WRAP>
-==== 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 ''if'' in der Selektion) nach dem Begriff ''while'' eine Bedingung zum Ausführen des Schleifenkopfes angegeben werden. Diese Bedingung wird vor jedem Ausführen des Schleifenkörpers immer wieder erneut überprüft und entschieden, ob sich die Schleife weiterdreht oder beendet wird. Hierzu ein kleines Beispiel:\\ 
-<code> 
-# Import 
-from microbit import * 
  
-# Variable i wird auf 0 gesetzt +Tipps: 
-i=0 +  * Die Bedingung ''button_a.is_pressed()True'' könnte für Person A für die Verzweigung nötig sein.  
-# solange i kleiner als 10 ist +  * Die 2.Programmieraufgabe könnte helfen 
-while i<10: +  * Ein Zähler ist nötig. 
-    display.show(i) +  * Die gemessenen Pulsschläge sind mit einem geeigneten Faktor proportional auf eine Zeitspanne von 60 Sekunden zu rechnen. 
-    sleep(500) +  * Das Menü Radio hilft für Teilaufgabe C. 
-    i=i+1 # ganz wichtig: innerhalb des Schleifenkörpers muss i erhöht werden+  * {{ :gf1:radio_classroom.png?direct&200|}}Um einen Zahlenwert einer Variable in ein Wort (stringumzuwandeln, kann str(Zahlenwertverwendet werden.
  
-display.scroll("Programm Ende") 
-</code> 
- 
-{{:wiki:algos_und_programmierung:flowchart_while_endlich.png?nolink&800|}} 
- 
-<WRAP center round todo 100%> 
-**Aufgabe 14: **\\ 
-Ein Programm wurde geschrieben und sieht bei der Ausführung wie folgt aus: 
-{{youtube>I-4Rvg5KCmg}} 
- 
-  * Schreiben Sie dieses Programm, dabei sollte eine ''while''-Schleife verwendet werden. 
-<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. ''k'' kleiner als ein bestimmter Wert ist, können Sie das ''while True:'' durch ''while //Bedingung// :'' ersetzen. Natürlich müssen Sie hierfür die Variable k vor der Schleife definieren und ihr einen Wert zuweisen. Damit dann die Schleife nur endlich mal ausgeführt wird, muss der Wert dieser im Schleifenkörper entsprechend verändert werden.  
 </WRAP> </WRAP>
- +<accordion> 
-<WRAP center round important 60%> +<panel title="mögliche Lösung"> 
-Sie sollen Ihre neuen Erkenntnisse aus dieser Aufgabe (Schleifen mit Bedingung) in Ihrem Cheatsheet in OneNote kurz einfügen und erklären! +Aufgabe 10
-</WRAP> +
- +
-<hidden> +
-<accordion collapsed="true"+
-<panel type="default" title="Mögliche Musterlösung einblenden"> +
-Lösung:+
 <code python> <code python>
 +while True: 
 +     
 +    pin0.write_digital(1) 
 +     
 +    if button_a.was_pressed(): 
 +        pin0.write_digital(0) 
 +        pin1.write_digital(1) 
 +        sleep(500) 
 +        pin1.write_digital(0) 
 +        pin2.write_digital(1) 
 +        sleep(2000) 
 +        pin2.write_digital(0) 
 +    if button_b.was_pressed(): 
 +        pin0.write_digital(0) 
 +        counter=0 
 +        while(counter<10): 
 +            pin1.write_digital(1) 
 +            sleep(500) 
 +            pin1.write_digital(0) 
 +            sleep(500) 
 +            counter=counter+1
 </code> </code>
 </panel> </panel>
 </accordion> </accordion>
 +<WRAP nicebox green>
 +**Aufgabe 13 - Lernfragen**\\
 +Bearbeiten Sie die folgenden Lernfragen. 
 +  - Wie kann erreicht werden, dass ein Teil eines Programms nur in bestimmten Fällen ausgeführt wird?
 +  - Warum ist das Verzweigen (Entscheiden) des Programms überhaupt nötig?
 +  - Worauf muss geachtet werden, wenn eine 'if'-Selektion verwendet wird?
 +  - Welches sind die wichtigsten Erkenntnisse der Programmieraufgaben 1 bis 10? Notieren Sie dies kurz!
 +  - Formulieren Sie eine eigene Lernfrage
 +</WRAP>
 </hidden> </hidden>
-</WRAP> 
  
-====== Lernziele für dieses Unterkapitel ====== +[[gf1:lernziele|Lernziele]]
-Die folgenden Lernziele dienen der Prüfungsvorbereitung und beziehen sich nur auf das aktuelle Unterkapitel+
  
-  * Ich kann in meinen eigenen Worten erklären, was ein Algorithmus ist, kann Beispiele aus dem Alltag nennen und erklären 
-  * 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 des sequenziellen Ausführens eines Programmes (Algorithmus für den Computer), kann dies erklären 
-  * 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/Backrezept oder eines einfachen Programmes) erstellen 
-  * 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 überprüfen (wurde ein Knopf a oder b gedrückt?) 
-  * Ich kann in Python endliche Schleifen programmieren, die nur eine bestimmte Anzahl mal ausgeführt werden, um dann irgendwann zu stoppen 
-  * Ich kann Schleifen-Bedingungen einsetzen, um das Ausführen einer Schleife zu kontrollieren 
-  * Ich kann den Schlüsselbegriff //break// in Schleifen einsetzen, um diese an einem bestimmten Punkt zu beenden 
  
-====== Übungsaufgaben ====== 
-Die folgenden Übungsaufgaben dienen der Vertiefung und Erweiterung Ihrer bisher erlernten Kentnissen und Fähigkeiten in der Programmierung mit Python und dem BBC:Microbit. 
  
- 
- 
- 
-<WRAP center round todo 100%> 
-**Aufgabe 15: **\\ 
-a) Erstellen Sie ein Programm, das die Summe aller Zahlen von 1 bis 100 berechnet und ausgibt. Dazu sollen Sie zwei Variablen ''i'' und ''summe'' und eine Schleife einsetzen! Der Code beginnt dabei wie folgt:\\ 
-<code> 
-from microbit import * 
-i = 0 
-summe = 0 
-</code> 
-Speichern Sie Ihr Programm anschliessend!\\ 
-<accordion collapsed="true"> 
-<panel type="default" title="Mögliche Musterlösung einblenden"> 
-Lösung: 
-<code python> 
-from microbit import * 
-i = 0 
-summe = 0 
- 
-while i<=100: 
-    summe = summe+i 
-    i = i+1 
- 
-display.scroll("Die Summe 1 bis 100: ") 
-display.scroll(summe) 
-</code> 
-</panel> 
-</accordion> 
-b) Erstellen Sie ein weiteres Programm, das nicht die Summe sondern das Produkt der ersten 10 Zahlen (1 bis 10) berechnet und ausgibt. Dazu sollen Sie zwei Variablen ''i'' und ''produkt'' und eine Schleife einsetzen! \\ 
-Speichern Sie Ihr Programm anschliessend!\\ 
-<accordion collapsed="true"> 
-<panel type="default" title="Mögliche Musterlösung einblenden"> 
-Lösung: 
-<code python> 
-from microbit import * 
-i = 1 
-produkt = 1 
- 
-while i<=10: 
-    produkt = produkt*i 
-    i = i+1 
- 
-display.scroll("Das Produkt 1 bis 10: ") 
-display.scroll(produkt) 
-</code> 
-</panel> 
-</accordion> 
-c) Freiwillig (knifflig): Erstellen Sie ein Programm, das die zehnte [[+tab|https://de.wikipedia.org/wiki/Fibonacci-Folge|Fibonacci-Zahl]] berechnet und ausgibt. Berechnen Sie anschliessend das Programm! 
-<accordion collapsed="true"> 
-<panel type="default" title="Mögliche Musterlösung einblenden"> 
-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("Fibonacci 10 ist ") 
-display.scroll(fn) 
-</code> 
-</panel> 
-</accordion> 
-</WRAP> 
- 
-<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 ''display.scroll'' und ''display.show''? Wann würden Sie was einsetzen? 
-  - Was genau macht die Schleife ''while True:''? 
-  - Was macht die Schleife ''while i<100:''? 
-  - Wofür sind Variablen nützlich? Was ist der Unterschied zwischen ''dislpay.scroll("a")'' und ''dislpay.scroll(a)''? 
-  - Worauf muss geachtet werden, wenn eine sich endlich wiederholende ''while''-Schleife programmiert werden soll. 
-  - Wie lässt sich eine Schleife stoppen?  
-  - Was passiert, wenn auf das Einrücken in der ''while''-Schleife verzichtet wird? 
-  - Welche Eingabemöglichkeiten haben wir bisher kennengelernt? 
-</WRAP> 
-</hidden> 
  
  • gf1/programmieren5.1683702804.txt.gz
  • Zuletzt geändert: 2023/05/10 09:13
  • von marroc