gf1:programmieren4

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:programmieren4 [2023/06/14 12:43] marrocgf1:programmieren4 [2025/04/24 10:37] (aktuell) marroc
Zeile 13: Zeile 13:
  
 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 ''display.scroll'' auch ''button_a.get_presses'' genutzt, jene gibt zurück, wie oft der Knopf a gedrückt wird. 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 ''display.scroll'' auch ''button_a.get_presses'' genutzt, jene gibt zurück, wie oft der Knopf a gedrückt wird.
- +<accordion> 
-:!: **Das <color #75B7F7>E</color><color #60C291>V</color><color #609D3D>A</color>-Prinzip ist hier klar erkennbar, die Eingabe ist das Drücken des Knopfes und die Ausgabe, das Anzeigen der Anzahl Knopfbetätigungen. +<panel title="Das EVA-Prinzip"> 
-**\\ +Das **<color #75B7F7>E</color><color #60C291>V</color><color #609D3D>A</color>**-Prinzip ist hier klar erkennbar, die Eingabe ist das Drücken des Knopfes und die Ausgabe, das Anzeigen der Anzahl Knopfbetätigungen. 
 +\\ 
 Das Programm ist sehr kurz und es fällt auf, dass es nur einen Durchlauf gibt. Durch ein erneutes Starten des Programms (die Stop- und Starttaste bei der Simulation oder dem Aus- und Einschalten des Micro:bits) kann ein weiteres Mal gezählt werden, wie oft A gedrückt wird. Das Programm ist sehr kurz und es fällt auf, dass es nur einen Durchlauf gibt. Durch ein erneutes Starten des Programms (die Stop- und Starttaste bei der Simulation oder dem Aus- und Einschalten des Micro:bits) kann ein weiteres Mal gezählt werden, wie oft A gedrückt wird.
 Das Programm kann natürlich auch wie folgt erweitert werden.  Das Programm kann natürlich auch wie folgt erweitert werden. 
 +\\
 +<WRAP nicebox grey>
 +**Erinnerung**: 
 +
 +== Das EVA-Prinzip ==
 +
 +Grundlage für einen Algorithmus ist das <color #75B7F7>E</color><color #60C291>V</color><color #609D3D>A</color>-Prinzip.
 +{{ eva.png?direct&400|}} \\ 
 +
 +**<color #75B7F7>E</color>** steht für **Eingabe**. Eingaben können über von Benutzern die Tasten, die Maus oder den Touchbildschirm direkt gemacht werden. Es können aber auch Eingaben über Sensoren oder andere Computersysteme erfolgen. Kurz kann eine Eingabe über Nutzerinteraktion, externe Informationen oder Sensoreingaben erfolgen.\\ 
 +
 +**<color #60C291>V</color>** steht für **Verarbeitung**. Die Eingaben werden verarbeitet, meist durchlaufen Sie ein Programm. Das Programm ist oft ein in Computersprache niedergeschriebener Algorithmus.\\ 
 +
 +**<color #609D3D>A</color>** für **Ausgabe**:  Die Ausgaben erfolgen über den Bildschirm, einen Drucker oder das Senden der Ausgabeinformation an ein anderes System. \\ 
 +</WRAP>
 +</panel>
 +</accordion>
  
 <code python countB.py> <code python countB.py>
Zeile 39: Zeile 57:
 </code> </code>
  
-Beim Programm oben wird die Programmzeilen dreimal wiederholenDer Code-Block ist viel länger. +Im obigen Programm werden drei Zeilen wiederholtUm dies effizienter zu programmieren, kann eine Schleife verwendet werden. Eine **Schleife** verhindert, dass Code-Blöcke mehrmals geschrieben werden müssenund verbessert die Lesbarkeit. \\ 
-Wie kann dieses Wiederholen besser programmiert werden, sodass das Programmieren effizient ist und das Programm ästhetisch und gut leserlich wirkt? Wie kann durch eine kleine Änderung im Programm erreicht werden, dass das Programm nicht dreimal hintereinander zähltsondern zwanzigmal?+Um das Programmieren zu kürzen aber das Programm nicht zu verändern, kann entweder die **while-Schleife** oder die **for-Schleife** verwendet werden. Wir lernen das Nutzen der **while-Schleife**denn diese Schleifenart benötigt keine Listen und ist daher einfacher zu verstehen ist.
  
-Neben den Variablen ist ein zweites wichtiges Programmierkonzept die Schleifen. Eine Schleife ist dann nötig, wenn ein Programmteil (Code-Block) sich mehrfach wiederholt. **Durch das Verwenden einer Schleife muss die Programmzeile nicht immer wiederholt im Programm notiert werden.** Somit ist dies genau das, was Programm 2 verbessern würde. 
- 
-Es gibt grundsätzlich zwei Schleifentypen: Die ''while''-Schleife und die ''for''-Schleife. Wir beschränken uns im ersten Jahr auf die ''while''-Schleife, da diese keine Listen benötigt. Listen und die ''for''-Schleife wird im zweiten Jahr behandelt. 
  
 +<WRAP nicebox grey>
 ===while-Schleife=== ===while-Schleife===
- +  <color #000000>Was ist eine Schleifen-**Bedingung**?</color>Jede Schleife hat eine **Bedingung** (eine "Schleifenfrage"), die entweder wahr (**True**) oder falsch (**False**) ist. Die Wiederholungen werden nur **so lange** ausgeführt, wie die **Bedingung erfüllt** ist, bzw. die Schleifenfrage mit Ja - Wahr- True beantworte werden kann. Sobald die Bedingung nicht mehr erfüllt ist (false), dann stoppt das Durchlaufen des Schleifenbodys und das Programm nach der Schleife wird weiter abgearbeitet. 
-Eine while-Schleife wird unter anderem dann verwendet, wenn: +  * <color #000000>Was wird wiederholt? Der **Body** </color>: Bei der Schleife wird der Body (die Programmzeile, die wiederholt wird) **eingerückt**, ansonsten erkennt Python nicht, was wiederholt werden soll. Auch ist am Ende der while-Zeile unbedingt ein **Doppelpunkt** nötig, um anzuzeigen, dass nun die sich wiederholenden Programmzeilen folgen.  
-  ...man nicht weiss, wie oft eine Wiederholung einiger Programmzeilen ausgeführt werden muss, man kennt somit die Anzahl der Wiederholungen nicht. +  * <color #000000>**Wann** sollte eine while-Schleife genutzt werden? </color>: Eine while-Schleife wird unter anderem dann verwendet, wenn: 
-  * .... die Anzahl Wiederholungen bekannt ist und eine **Zähl-Variable** vorhanden ist.  +    * ...man nicht weiss, wie oft eine Wiederholung einiger Programmzeilen ausgeführt werden muss und von einer Bedingung abhängt, die während der Ausführung überprüft wird.     
- +    * ...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, wie die **Bedingung erfüllt** ist, bzw. die Schleifenfrage mit Ja - Wahr- True beantworte werden kann. Sobald die Bedingung nicht mehr erfüllt ist (false), dann wird das Programm nach der Schleife weiter abgearbeitet und die Wiederholungen werden abgebrochen+    * ... die Schleife auf Benutzereingaben wartet, z.B. in einem Programm, das Benutzereingaben verarbeitet, bis eine bestimmte Eingabe erfolgt. Dies gilt auch, wenn die Schleife auf das Eintreten eines Ereignisses wartet (wie z.B. das Drücken einer Taste oder das Empfangen von Daten). 
- +    
-Bei der Schleife wird der Body (die Programmzeile, die wiederholt wird) **eingerückt**, ansonsten erkennt Python dies nicht. Auch ist am Ende der while-Zeile unbedingt ein **Doppelpunkt** nötig, um anzuzeigen, dass nun die sich wiederholenden Programmzeilen folgen. +</WRAP>
  
 {{:planung:while_schleife_diagramm2.png?direct&400 |}} {{:planung:while_schleife_diagramm2.png?direct&400 |}}
Zeile 72: Zeile 88:
  
 Hier ist ein Zähler nötig, denn dadurch kann die Anzahl Wiederholungen durch das Erhöhen in jedem Durchlauf (''zaehler = zaehler+1'')gezählt und somit auch festgelegt werden. Die while-Bedingung ist genau dreimal erfüllt. Hier ist ein Zähler nötig, denn dadurch kann die Anzahl Wiederholungen durch das Erhöhen in jedem Durchlauf (''zaehler = zaehler+1'')gezählt und somit auch festgelegt werden. Die while-Bedingung ist genau dreimal erfüllt.
- +<hidden> 
-<WRAP center round todo 100%>+<WRAP nicebox green>
 **Aufgabe 6**\\  **Aufgabe 6**\\ 
 Für diese Aufgabe orientieren Sie sich am Programm Rechner 1  (wie Aufgabe 5). Schreiben Sie ein Programm mit folgenden Eigenschaften: Für diese Aufgabe orientieren Sie sich am Programm Rechner 1  (wie Aufgabe 5). Schreiben Sie ein Programm mit folgenden Eigenschaften:
Zeile 79: Zeile 95:
   * Gleiches für den Variablenwert b.   * Gleiches für den Variablenwert b.
   * Danach soll das Produkt der beiden Werte angezeigt werden.   * Danach soll das Produkt der beiden Werte angezeigt werden.
 +
 <code python> <code python>
 from microbit import * from microbit import *
Zeile 97: Zeile 114:
 </WRAP> </WRAP>
  
-<WRAP center round todo 100%>+<WRAP nicebox green>
 **Aufgabe 7**\\  **Aufgabe 7**\\ 
 {{ :gf1:sound_icon_classroom.png?direct&200|}} {{ :gf1:sound_icon_classroom.png?direct&200|}}
 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.  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> </WRAP>
 +</hidden>
 === Die Endlosschleife === === Die Endlosschleife ===
-{{ :gf1:endlos_schleife_scratch.png?direct&200|}}+<hidden>{{ :gf1:endlos_schleife_scratch.png?direct&200|}}</hidden>
 Die ''while''-Schleife kann auch als endlose Schleife genutzt werden. (Erinnern Sie sich bei Scratch: "wiederhole fortlaufend" Die ''while''-Schleife kann auch als endlose Schleife genutzt werden. (Erinnern Sie sich bei Scratch: "wiederhole fortlaufend"
-Um diese Endlosschleife zu programmieren, kann <code> while (True=True): </code> oder vereinfacht <code> while True: </code> genutzt werden.+Um diese Endlosschleife zu programmieren, kann  
 +''while (True=True):''  oder vereinfacht ''while True: '' genutzt werden.
 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 ''while''-Schleife. 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 ''while''-Schleife.
-<WRAP center round todo 100%>+<hidden> 
 +<WRAP nicebox green>
 **Aufgabe 8**\\  **Aufgabe 8**\\ 
 Verändern Sie das Programm 3 so, dass es eine Endlosschleife enthält und nicht nach 3 Wiederholungen stoppt. Verändern Sie das Programm 3 so, dass es eine Endlosschleife enthält und nicht nach 3 Wiederholungen stoppt.
 </WRAP> </WRAP>
- +</hidden> 
-<WRAP center round todo 100%>+<WRAP nicebox green>
 **Aufgabe 9**\\  **Aufgabe 9**\\ 
 Ein Programm wurde geschrieben und sieht bei der Ausführung wie folgt aus: Ein Programm wurde geschrieben und sieht bei der Ausführung wie folgt aus:
Zeile 121: Zeile 140:
  
 </WRAP> </WRAP>
-<WRAP center round todo 100%>+<WRAP nicebox green>
 **Aufgabe 10**\\  **Aufgabe 10**\\ 
   - Lassen Sie den Micro:bit ein zufriedenes Smiley anzeigen. Hier hilft Ihnen das Menü Display. {{ :gf1:display_classroom.png?direct&200|}}   - Lassen Sie den Micro:bit ein zufriedenes Smiley anzeigen. Hier hilft Ihnen das Menü Display. {{ :gf1:display_classroom.png?direct&200|}}
   - Verändern Sie Ihr kleines Programm so, dass zuerst das Smiley und danach ein anderes Symbol leuchtet, dabei sollten die LEDs nicht alle mit der selben Leuchtkraft leuchten und zwischen den beiden Elementen sollte es eine kurze Pause geben!    - Verändern Sie Ihr kleines Programm so, dass zuerst das Smiley und danach ein anderes Symbol leuchtet, dabei sollten die LEDs nicht alle mit der selben Leuchtkraft leuchten und zwischen den beiden Elementen sollte es eine kurze Pause geben! 
   - Nutzen Sie nun eine ''while True'' Schleife, um immer zwischen dem Smiley und dem zweiten Symbol abzuwechseln, dabei sollte die Stärke der LED-Leuchtkraft des Smileys soll langsam zunehmen und dann löschen.   - Nutzen Sie nun eine ''while True'' Schleife, um immer zwischen dem Smiley und dem zweiten Symbol abzuwechseln, dabei sollte die Stärke der LED-Leuchtkraft des Smileys soll langsam zunehmen und dann löschen.
-</WRAP> 
  
 +</WRAP>
  
 +<hidden>
 <WRAP nicebox blue> <WRAP nicebox blue>
 **Lernfragen**\\   **Lernfragen**\\  
Zeile 138: Zeile 158:
   - Was passiert, wenn auf das Einrücken in der ''while''-Schleife verzichtet wird?   - Was passiert, wenn auf das Einrücken in der ''while''-Schleife verzichtet wird?
 </WRAP> </WRAP>
- +</hidden> 
-[[gf1:programmieren5|Selektion oder 'if'-Entscheidungen]]+[[gf1:programmieren5|weiter]]
 ---- ----
 +
 <accordion> <accordion>
 <panel title="mögliche Lösungen"> <panel title="mögliche Lösungen">
 +<hidden>
 Aufgabe 6 Aufgabe 6
 <code python> <code python>
- from microbit import *+from microbit import *
 from math import * from math import *
    
Zeile 195: Zeile 217:
     zaehler=zaehler+1     zaehler=zaehler+1
 </code> </code>
 +
  
 Aufgabe 7 Aufgabe 7
 <code python> <code python>
 from microbit import * from microbit import *
 +import music 
 + 
 zaehler=20 #ein Zähler ist nötig, um eine Bedingung, ein Stop-Kriterium zu definieren zaehler=20 #ein Zähler ist nötig, um eine Bedingung, ein Stop-Kriterium zu definieren
 while (zaehler>0): while (zaehler>0):
Zeile 207: Zeile 231:
     zaehler=zaehler-knopfdruck #hier wird vom aktuellen Wert der Knopfdruckwert abgezogen wird.     zaehler=zaehler-knopfdruck #hier wird vom aktuellen Wert der Knopfdruckwert abgezogen wird.
     display.scroll(zaehler)     display.scroll(zaehler)
-    +music.play(music.BA_DING)
 </code> </code>
 Aufgabe 8 Aufgabe 8
Zeile 220: Zeile 244:
     display.scroll(knopfdruck)     display.scroll(knopfdruck)
 </code> </code>
 +</hidden>
 Aufgabe 9 Aufgabe 9
 <code python> <code python>
  • gf1/programmieren4.1686739398.txt.gz
  • Zuletzt geändert: 2023/06/14 12:43
  • von marroc