Dies ist eine alte Version des Dokuments!
Erste Schritte in der Programmierung mit Python
Ein Algorithmus - was ist das?
Drei Aufgaben zum Einsteigen:
Bearbeiten Sie die verschiedenen Aufgaben:
Aufgabe A
Führen Sie die folgende Rechenanleitung durch … ohne Taschenrechner;-)
- Wählen Sie eine Zahl zwischen 1 und 9.
- Verdoppeln Sie die Zahl.
- Addieren Sie 2.
- Multiplizieren Sie die Zahl mit 100.
- 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 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)
- 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, nicht?
Aufgabe B
- Folgen Sie der Faltanleitung und falten Sie! Blätter sind bei der Lehrperson vorhanden!
- Öffnen Sie ein Worddokument oder eine OneNote-Seite und notieren Sie den Ablauf des Faltens ganz genau. Vergleichen Sie Ihren Text mit einem Text einer bzw. eines Lernenden. Was fällt auf? Wo hat Ihr Text Lücken und Schwächen? Was ist schwierig, am Verfassen dieses Textes und warum?
Aufgabe C
Im Film ist ein Muffinsrezept und was dieses mit Algorithmen zu tun hat, kurz erklärt. Schauen Sie sich das Video an, machen Sie sich Notizen, (auch das abgebildete Diagramm!)
Aufgabe D
Beantworten Sie anschliessend folgende Fragen:
- Was haben die Aufgaben gemeinsam?
- Finden sich überall Algorithmen?
- Warum bzw. warum nicht? Was genau ist der Algorithmus, den ersten beiden Aufgaben?
Was ist ein Algorithmus?
Das EVA-Prinzip
Grundlage für einen Algorithmus ist das EVA-Prinzip.
E 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.
V steht für Verarbeitung. Die Eingaben werden verarbeitet, meist durchlaufen Sie ein Programm. Das Programm ist oft ein in Computersprache niedergeschriebener Algorithmus.
A für Ausgabe: Die Ausgaben erfolgen über den Bildschirm, einen Drucker oder das Senden der Ausgabeinformation an ein anderes System.
In diesem Kontext sollte nun eine Definition und die Eigenschaften eines Algorithmus folgen.
Definition:
Ein Algorithmus ist eine Folge von Schritten oder Anweisungen, mit der eine Aufgabe ausgeführt oder ein Problem gelöst wird. Oft enthält ein Algorithmus sich wiederholende Schritte, Entscheidungen zwischen zwei Schritten oder nach geordneten Schritten, oder auch Schritte, die sich auf den Algorithmus beziehen oder Teilaufgaben erledigen bzw. Teilprobleme lösen. (Quelle: Programmieren ganz einfach, Die Basics für Einsteiger Schritt für Schritt, dk-Verlag, Deutsche Ausgabe 2020 München)
Eigenschaften eines Algorithmus
Damit Algorithmen befolgt (oder auch programmiert) werden können, müssen sie die folgenden Eigenschaften aufweisen:
Eindeutigkeit. Ein Algorithmus darf keine widersprüchliche Beschreibung haben. Diese muss eindeutig sein. Im Muffinsrezept müssen die Mengenangaben genau (nummerisch, in Gramm o.ä.) sein. Dies ist eine Schwierigkeit bei der Faltaufgabe. Der Text muss eindeutig sein.
Ausführbarkeit. Es darf im Algorithmus nie eine Stelle geben, die nicht ausführbar ist (durchlaufen werden kann). Der nächste Backschritt-, Faltschritt oder Rechenschritt muss klar definiert und „bearbeitbar“ (also ausführbar) sein.
Terminierung. Der Algorithmus muss ein Ende haben. Es darf lange dauern, aber es muss endlich sein, da sonst eine vollständige Bearbeitung (ein vollständiges Durchlaufen der Arbeitsanweisungen nicht möglich ist.)
Determiniertheit(Bedingtheit). Dies bedeutet in unserem Zusammenhang, dass ein Algorithmus bei gleichen Voraussetzungen stets das gleiche Ergebnis liefern muss. Er kann somit nicht einfach mit der gleichen Eingabe zwei verschiedene Ergebnisse ausgeben. Die Faltanleitung muss immer (mehr oder weniger genau) das gleiche Faltergebnis liefern.
Determinismus (Bestimmtheit). Es muss zu jedem Zeitpunkt während der Ausführung des Algorithmus nur eine Möglichkeit bestehen, den Algorithmus fortzusetzen. Als Leser bzw. ausführende Person (oder auch eine Maschine) eines Algorithmus darf man somit nie vor einer Wahl stehen.
Aufgabe E Diskutieren Sie anhand dieser Definition zu zweit, ob die folgenden Aussagen wahr oder falsch sind.
- Aussage: „Algorithmen sind allgegenwärtig, sogar beim Wählen des Waschprogramms der Waschmaschine.“
- Aussage: „Ein Algorithmus sagt uns genau, wie wir etwas in welcher Reihenfolge ausführen sollen. Der Algorithmus ist so klar, dass wir nie selber entscheiden müssen.“
- Aussage: „Für viele Herausforderungen oder Probleme könnte ein guter und passender Algorithmus die Lösung sein.“
Aufgabe F
Untersuchen Sie die drei Beispiele (Aufgabe A bis C), wie sie die oben aufgelisteten Eigenschaften erfüllt werden oder wo nicht.
Aufgabe G
Gegeben ist das folgende Diagramm (ein sogenanntes Aktivitätsdiagramm). Eine Spielfigur steht beim Pfeilsymbol im Labyrinth (Startposition).
- Auf welchem Weg verlässt die Figur das Labyrinth, wenn Sie diesen Algorithmus nutzt? (Papierversionen des Labyrinths liegen bereit). Arbeiten Sie zu zweit.
- Wie muss das Labyrinth oder die Startposition oder beides verändert werden, damit dieser Algorithmus nicht mehr zum Ausgang führt? Hierbei darf der Ausgang des Labyrinths nicht aufgehoben werden, was die triviale Antwort auf die Frage wäre.
Aufgabe H
Erstellen Sie ein Aktivitätsdiagramm für die Aufgabe A). Eine Übersicht der Elemente finden Sie auf dem Spickzettel.
Spickzettel
Zusatzaufgabe I
- Zwei bekannte Algorithmen sind der PageRank-Algorithmus oder der Dijkstra-Algorithmus. Informieren Sie sich, welche Aufgaben diese Algorithmen übernehmen bzw. welche Probleme diese lösen.
- Was haben Algorithmen mit personalisierter Werbung oder Chatbots zu tun? Erklären Sie!
Python - die oft genutzte Programmiersprache
Im Grundlagenfach Informatik werden Sie die zwei Programmiersprachen Python und die JavaScript kennenlernen. Als Erinnerung, HTML ist keine Programmiersprache.
Python zeichnet sich durch die Einfachheit und Lesbarkeit, sowie der vielseitigen Anwendung in vielen Berufsfeldern, bei Forschern gleichwohl wie bei (Software-) Entwicklern.
Nice to know
Der niederländische Entwickler Guido van Rossum hat 1989 die Programmiersprache Python entwickelt, um eine Lernumgebung für Programmiersprachen mit einfacher Syntax und Lesbarkeit zu haben. Die durch diese Sprache geschulten Programmier-Kompetenzen sollten gleichzeitig auf andere Sprachen übertragen werden können.
Guido van Rossum war ein Fan der britischen Komikertruppe Monty Python, daher der Name „Python“, weit weg von der gleichnamigen Schlage…
Weitere Informationen hier.
Micro:bit - Ein kleiner Computer
Um erste Erfahrungen mit der Programmiersprache Python zu machen, gibt es viele Möglichkeiten.
Wir werden dies mithilfe des Micro:bits (BBC micro:bits) tun. Dies ist eine Art Minicomputer, ein so genannter Einplatinencomputer, welcher 2015 von BBC (British Broadcasting Corporation) entwickelt wurde, um die Werkzeuge für eine bessere Schulbildung im Bereich der Informationstechnik bereitzustellen. Der Micro:bit kann über verschiedener Entwicklungsumgebungen programmiert werden.
Die Hardware
Sie halten einen Micro:bit in den Händen, doch was genau ist dieses kleine Ding und was kann es alles?
Hier eine Übersicht der Hardwarekomponenten.
Auftrag: Micro:bit kennenlernen Finden Sie auf Ihrem Microbit die einige der unten aufgelisteten Komponenten und informieren Sie sich HIER über Funktionen, Eigenschaften und Besonderheiten des Micro:bits.
- Prozessor
- Lautsprecher, Mikrophon
- Beschleunigungssensor
- LEDs (vorne und hinten)
- Logo
- Pins (inklusive Masse)
- Weitere Hardwarekomponenten…
Weitere technische Details dazu unter Hardwareinformationen
Micro:bit mit dem Computer verbinden
Mit dem Micro:bit kann mit verschiedenen Editoren gearbetiet werden. Wir werden mit dem Micro:bit Classroom Editor arbeiten, denn hier gibt es eine ziemlich nütliche API*, die Verbindung zum Microbit funktioniert gut und der Editor ist einfach zu bedienen.
* API heisst Application Programming Interface und ist eine Sammlung von Befehlen, Funktionen, vieles mehr, die zum Programmieren verwendet werden können.
Bevor wir mit dem Programmieren eines Microbits starten können ist eine Verbindung zwischen dem Computer und dem Micro:bit nötig. Im folgenden Auftrag ist beschrieben, wie dies gemacht werden soll.
Der Micro:bit-Classroom-Editor
https://classroom.microbit.org/ entweder über den Chrome- oder den Edge-Browser nutzen!
Auftrag: Micro:bit anschliessen
- Schliessen Sie den Microbit per USB-Kabel an Ihrem Computer an.
- Öffnen Sie https://classroom.microbit.org/ entweder über den Chrome- oder den Edge-Browser, um den Microbit direkt über den Browser ansteuern zu können. Flashing (direktes Übertragen der Programmzeilen) auf den Micro:bit ist mit diesen Browsern möglich. Weitere Informationen zum Editor:
- Grundsätzlich kann auch ein anderer Browser ihrer Wahl genutzt werden, dann muss über ein Download und ein manuelles „Drag-and-Drop“ auf den Micro:bit (wie das Kopieren einer heruntergeladenen Datei von Ihrem Computer auf einen USB-Speicherstick) genutzt werden.
Die folgenden Aufgaben sind der Schwierigkeit nach chronologisch geordnet, die Pflichtaufgaben und die Zusatzaufgaben sind jeweils als solche markiert. Die Aufgaben sollten so durchgearbeitet werden, dass auch die Lernfragen dazu umfassend beantwortet werden können. Ihre Lösungen zu den Aufgaben sollten Sie auch immer herunterladen und in einem dazu vorgesehenen Ordner speichern, um so nichts an Arbeit zu verlieren. Die kleinen Theorieblöcke bei den Aufgaben sollten jeweils aufmerksam durchlesen und während des Aufgabenlösens verarbeitet werden.
Teil 1, Scrollen von Text und Bild
Ziele dieses Teils ist es, erste Erfahrungen im Programmieren in Python gemeinsam mit dem wichtigen Grundwissen zu den elementaren Programmierkonzepten zu machen. Es geht somit darum, nicht nur „auszuprobieren“, sondern die genannten Konzepte zu erkennen und selbst auch in einfacheren Beispielen zu verwenden.
Programmierkonzept - Variablen
Variablen haben in der Programmierung grosse Nützlichkeit, doch was genau ist eine Variable und wie kann diese genau verwendet werden?
Eine Variable ist wie ein Behälter, in dem Daten gespeichert werden können. Man kann sich eine Kiste vorstellen, in der etwas aufbewahrt werden kann und der Wert der Variable wäre somit der aufbewahrte Inhalt der Kiste.
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.
Dies ist sehr unterschiedlich zur Mathematik. Das
= ist nicht ein ist gleich sondern eher ein Wert einer Variablen zuweisen.
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
kiste = 100 kiste = 50 kiste = 50 + kiste
Im obigen Beispiel eines kurzen Programms, welches von oben links zeilenweise nach unten rechts durchlaufen wird, werden der Variablen kiste verschiedene Werte zugewiesen:
- Zuerst wird der Variablen kiste den Wert 100 zugewiesen,
- Dann wird die Variable kiste auf 50 gesetzt, der Wert 100 wird überschrieben und geht somit verloren.
- Die Variable kiste wird um 50 erhöht. Das ist so zu lesen, dass der neue Wert kiste gleich 50 plus dem alten Wert von kiste ist.
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:
- kiste.py
from microbit import * kiste=2 kiste=kiste * 3 display.scroll('KISTE=') display.show(kiste)
In diesem Beispiel ist die Variable kiste zuerst auf 2 gesetzt, dieser Wert wird aber direkt in der nächsten Zeile verdreifacht und anschliessend auch angezeigt.
1. Programmieraufgabe:
- 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.
- 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.
- Erweitern bzw. verändern Sie den Rechner1 so, dass auch andere Operationen (Grundoperationen) durchgeführt werden.
- Rechner1.py
#Rechner 1 from microbit import * from math import * #Variablen definieren und einen Wert zuweisen a=3 b=5 #Display.scroll dient zum Anzeigen von Werten oder Text display.scroll('a=') display.scroll(a) display.scroll('b=') display.scroll(b) display.scroll('a+b') display.scroll(a+b)
Importieren von Python-Modulen
Sicher haben Sie sich auch schon gefragt, warum die beiden Zeile microbit import * und math import * nötig sind oder was genau import * bedeutet.
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 „Befehls- und Begriffspakete“ können durch die Zeile from microbit import … dazu geladen werden. Dadurch können die Funktionen, Methoden, vordefinierte Werte und andere Definitionen dieses Moduls zum Programmieren genutzt werden.
Grundsätzlich können für die ersten Schritte mit dem Micro:bit die folgenden (oder ähnliche) Importbefehle nützlich sein:
| Befehl | Bedeutung |
|---|---|
import * | Importiert alle Python-Module, nicht spezifisch auf das Problem zugeschnittenes Laden von Modulen (Bausteinen). Das * bedeutet, alle Module. |
from microbit import * | Importiert alle Microbit-Module, nicht spezifisch auf das Problem zugeschnittenes Laden von Modulen |
from math import * | Importiert alle math-Module, hier die https://docs.python.org/3/library/math.html | Auflistung der Befehle und Funktionen. |
from microbit import display | Hier wird nur spezifisch das display-Modul und nicht die gesamte Micro:bit-Bibliothek (micro:bit-library) geladen. |
Aufgabe 8
- Versuchen Sie nun das Rechenbeispiel aus Aufgabe 1, das Sie im Kopf ausgerechnet haben, vom Microbit ausführen zu lassen. Nutzen Sie den folgenden Ausgangscode und erweitern Sie diesen nach jedem Kommentar mit dem korrekten Befehl:
https://python.microbit.org/v/3|Hier gehts wieder zum Online-Editor
Tipp: Den Operator für die Addition (+) haben Sie mittlerweile schon kennengelernt. https://www.python-kurs.eu/operatoren.php|Hier finden Sie eine Auflistung der restlichen arithmetischen Operatoren, die Sie für die Berechnungen benötigen.
#Rechenbeispiel aus Aufgabe 1 from microbit import * #Wählen Sie eine Zahl zwischen 1 und 9. a = 7 #Verdoppeln Sie die Zahl in der Variablen b b = a*2 # Addieren Sie 2 in der Variablen c # Multiplizieren Sie die Zahl mit 100 in d # Halbieren Sie das Resultat in e # 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 (z.B. bei 1991 subtrahieren Sie 91) in g # Geben Sie nun das Resultat aus!
- Überprüfen Sie Ihren Algorithmus, indem Sie diesen ausführen!
- 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 „…“ durch eine entsprechende Berechnung ersetzen
display.scroll("Ihr Alter in Jahren ist: ")
display.show(...)
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 display.scroll und display.show.
Aufgabe 9
https://python.microbit.org/v/3|Hier gehts wieder zum Online-Editor
- 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 'Pythagoras' als Scroll angezeigt werden.
- Schreiben Sie ein neues Programm, welches das Volumen einer https://www.mathe-lexikon.at/geometrie/geometrische-koerper/kugel/volumen.html|Kugel berechnet, dabei sollte der Radius als Variable festgelegt werden.
- 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.
Tipp: Einige Operatoren (+, -, *, /) haben Sie mittlerweile schon kennengelernt. https://www.python-kurs.eu/operatoren.php|Hier finden Sie eine Auflistung der restlichen arithmetischen Operatoren, die Sie für die Berechnungen benötigen.
Fügen Sie die kennengelernten Operatoren in Ihrem Cheatsheet in der vorgesehenen Tabelle fest.
mögliche Lösungen
## Aufgabe 1a) Lösung from microbit import * from math import * #Variablen definieren und einen Wert zuweisen a=3 b=5 #Display.scroll dient zum Anzeigen der Funktionen display.scroll('a=') display.scroll(a) display.scroll('b=') display.scroll(b) display.scroll('sqrt(a**2+b**2') display.scroll('c=') display.scroll(sqrt(a**2+b**2))
- Rechner2.py
#Beispiele von mathematischen Formeln from microbit import * from math import * #Variablen definieren und einen Wert zuweisen a=3 b=5 #Display.scroll dient zum Anzeigen der Funktionen display.scroll('a=') display.scroll(a) display.scroll('b=') display.scroll(b) display.scroll('a+b') display.scroll(a+b)
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.
Aufgabe 10: Schleifen, Selektion und Eingaben:
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.
# Microbit-Modul wird importiert 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, 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.
# Microbit-Modul wird importiert from microbit import * # Wiederhole unendlich lange while True: if button_a.is_pressed(): ...
- 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.
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!
Mögliche Musterlösung einblenden
Lösung:
# Microbit-Modul wird importiert 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)
Aufgabe 11: Einen Schrittezähler programmieren und testen
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)
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.
- 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!
Mögliche Musterlösung einblenden
Lösung:
from microbit import * schritte=0 while True: 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)
Aufgabe 12: Accelerometer-Richtung
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
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 SieImage.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.
- Testen Sie nun Ihr Programm:
- Zeichnen Sie für diesen Algorithmus ein Flowchart-Diagramm auf Papier oder in OneNote mit den korrekten Diagrammelementen!
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!
Mögliche Musterlösung einblenden
Lösung:
# 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()
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
breakdas sofortige Beenden einer Schleife an einer bestimmten Position im Programm bewirken - Zum Anderen kann man im Schleifenkopf nach dem
whileeine 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.
# Imports go at the top
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(['C4:1', 'r:3'])
if button_a.is_pressed() and button_b.is_pressed():
break
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!
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!
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:
# 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("Programm Ende")
Aufgabe 14:
Ein Programm wurde geschrieben und sieht bei der Ausführung wie folgt aus:
- Schreiben Sie dieses Programm, dabei sollte eine
while-Schleife verwendet werden.
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.
Sie sollen Ihre neuen Erkenntnisse aus dieser Aufgabe (Schleifen mit Bedingung) in Ihrem Cheatsheet in OneNote kurz einfügen und erklären!
Lernziele für dieses Unterkapitel
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.
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:
from microbit import * i = 0 summe = 0
Speichern Sie Ihr Programm anschliessend!
Mögliche Musterlösung einblenden
Lösung:
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)
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!
Mögliche Musterlösung einblenden
Lösung:
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)
c) Freiwillig (knifflig): Erstellen Sie ein Programm, das die zehnte https://de.wikipedia.org/wiki/Fibonacci-Folge|Fibonacci-Zahl berechnet und ausgibt. Berechnen Sie anschliessend das Programm!
Mögliche Musterlösung einblenden
Lösung:
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)
Aufgabe 16
Beantworten Sie die drei Lernfragen:
- Welche Ausgabemöglichkeiten haben wir beim Microbit bisher kennengelernt?
- Was ist der Unterschied zwischen
display.scrollunddisplay.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“)unddislpay.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?




