10 Minuten Coding
Entdecken Sie die praxisorientierten, einfachen Lektionen. Für eine Übung benötigen Sie nicht mehr als 10 Minuten.
Lektion 1: Erste Schritte in Python
Übung 1: Arbeiten mit der Shell
LehrerinformationIn dieser ersten Übung in Lektion 1 lernen Sie die Shell der Programmiersprache TI-Python anhand mehrerer Beispiele kennen
Lernziele :
- Verwendung des TI-Python
- Entdeckung der mathematischen Funktionen in Python
- Unterscheidung zwischen dem Programmeditor und der Konsole (Shell)
- Verwendung einer Programmieranweisung in der Konsole
Schritt 1
- Starten Sie ein neues Dokument und fügen Sie die Seite « >Add Python » hinzu.
- Wählen Sie aus dem Submenü « Shell ».
Hinweis für Lehrkräfte : Die Verwendung der App Python setzt ein OS der Version 5.2.0 oder höher voraus.
Schritt 2
Die Shell ist die eigentliche Oberfläche von Python. Hier können einfache Berechnungen durchgeführt werden, aber man ruft von hier auch Funktionen oder Programme auf. Man kann auch kleine Programme schreiben. Die Gesamtheit aller Einträge in der Shell bildet die History. Man kann mit den Pfeiltasten in der History ältere Einträge auswählen und sie an die aktuelle Stelle kopieren. Im « Menu » bei « Tools » gibt es auch die Möglichkeit, die History der Shell zu löschen (« Clear History ») oder die Shell auch neu zu starten (« Reinitialize Shell ») .
Schritt 3
Ein paar grundlegende Bemerkungen zu Berechnungen
- Die normale Division / liefert eine Dezimalzahl.
- Mit // erhält man den ganzzahligen Teil des Bruches.
- Mit % erhält man den Rest des Bruches.
- Die Potenz x n wird geschrieben als x ** n. Aber man erhält sie auch über die Taste l und ebenso gilt das auch für x 2 .
Schritt 4
- Für den logischen Vergleich « ist gleich » schreibt man « == ».
- Für « ungleich » schreibt man « != ».
- Variablennamen fangen grundsätzlich mit einem kleinen oder großen Buchstaben an, dem eine Zeichenkette aus großen und kleinen Buchstaben und Ziffern folgen kann.
- Die Zahl π wird geschrieben als pi. Ihre Verwendung setzt aber den Import des Mathematik-Moduls voraus.
Schritt 5
Für die Verwendung bestimmter Funktionen müssen die entsprechenden Module geladen werden. Man findet sie unter « menu ».. Als Beispiel ist das Mathematik-Modul dargestellt.
Schritt 6
Zeichenketten (strings)
- Zeichenketten werden mit Hochkommas oder Anführungszeichen eingefasst.
- Die Länge einer Zeichenkette erhält man über len(a) aus dem Menü « Built-ins … List »
- Der Befehl a[k] liefert das k+1 ste Element der Zeichenkette, da die Zählung mit 0 beginnt.
- Zeichenketten können durch einfache Addition aneinander gehängt werden.
Schritt 7
Ein kleiner Tipp
Wertzuweisungen an mehrere Variablen können in einer Zeile erfolgen, wenn man die Variablen und ihre Werte durch Kommas trennt.
Schritt 8
Verwendung von Programmieranweisungen in der Shell
Es ist in Python möglich, kleine Programme in der Shell zu schreiben und ausführen zu lassen. Auf dem Bildschirm rechts ist als Beispiel eine for-Schleife dargestellt, die Sie im Menü unter „Built-ins“ und dann „Ctl“ finden.
for index in range (size) . . block
Wir werden in einer späteren Lektion auf die Schleifen zurückkommen.
Übung 2: Datentypen
LehrerinformationDiese zweite Übung vemittelt die Verwendung der unterschiedlichen Datentypen in Python.
Lernziele :
- Kennenlernen der unterschiedlichen Datentypen in Python
- Formatieren der Daten
Schritt 1
Daten und Variablen
Über « Menu … Built-ins … Type » erhält man die Anweisungen für die verschiedenen Datentypen.
Schritt 2
- Int() schneidet den ganzzahligen Teil einer Zahl ab. Auch Terme sind innerhalb der Klammern erlaubt.
- Float() wandelt eine Zahl in eine Fließkommazahl um.
- Round() rundet auf den ganzzahligen Teil.
- Round(a,n) rundet auf die n. Stelle hinter dem Punkt.
- Str() wandelt eine Zahl in einen String um.
- Int(), float() und round() machen aus einer als String vorliegenden Zahl des passenden Typs eine « richtige » Zahl.
Schritt 3
Mit der Anweisung « type() » lässt sich der Typ einer Variablen bestimmen.
Schritt 4
Formatierungen
Es gibt noch ein paar präzise Formatierungsanweisungen für die Darstellung von Strings, die der Anweisung format() aus dem Menü I/O vorangestellt werden müssen :
Beispielzahl : x = 1234.567890
a. ‘{ :g}’.format(x) Umwandlung in das Grundformat mit 2 Stellen hinter dem Komma
b. ‘{ :.3f}’.format(x) Darstellung mit 3 Nachkommastellen
c. ‘{ :.3e}’.format(x) wissenschaftliche Darstellung
d. ‘{0 :20.3f}’.format(x) oder
e. ‘{0 :>20.3f}’.format(x) rechtsbündig bei einer Stringlänge 20
f. ‘{0 :< />format(x) linksbündig
g. ‘{0 :^20.3f}’.format(x) zentriert
Step 5
Try the following:
x = 7
y = 3x
print(x, y)What do you get when you run this code?
Welcome to the world of computer programming! A ‘Syntax Error’ is an error in the text of the code. The English teacher calls it a grammatical error. ‘3x’ is not allowed in Python even though TI-Nspire allows it. It must be 3*x.
Step 6
Reported as a ‘syntax error’ and runtime errors are detected by the computer. The third kind of error is in the head of the programmer, e.g., entering an incorrect expression (like misuse of order of operations) or logical structure (like using ‘and’ where ‘or’ is required).
Example: 5+3/7+1 vs. (5+3)/(7+1) (order of operations). Both are evaluated properly but give different results. What did the programmer intend?
Step 7
-
To improve the appearance of the output, add a ‘message’ (such as x=) to each of the values:
print(“x=”,x,” y=”,y,” z=”,z)
There are some spaces in front of y= and z= inside the quotes.
Spaces are ignored by the interpreter but if they are inside quotes they will be printed as written.
Be very careful when entering this statement: the positions of the commas and the quotes is crucial. If any symbol is in the wrong position, you will see a ‘Syntax Error’ message when you press ctrl+R. You will have to find and correct the error, which is usually near or right above the cursor.
Übung 3: Funktionen in Python
LehrerinformationIn dieser dritten Übung in Lektion 1 erstellen Sie mit dem Programmeditor Funktionen und führen sie in der Shell aus.
Lernziele:
- Notation von Funktionen in Python
- Erstellen einer Funktion
Schritt 1
Funktionen in Python
In der Shell lässt sich mit den folgenden zwei Befehlen der Wert von y schnell berechnen :
Möchte man jedoch y für andere Werte von x berechnen, so muss man diese zwei Befehle wieder neu eingeben.
Mit einer Funktion hingegen kann man sich diese Arbeit erheblich vereinfachen.
Schritt 2
Eine Funktion kann als eine Folge von Anweisungen betrachtet werden, die eine bestimmte Aufgabe unter Verwendung eines oder mehrerer Argumente ausführen. Sie stellt also einen Algorithmus dar. Sie erhält stets einen Namen.
- Beim Start von Python ist nun „New“ anstelle von „Shell“ zu wählen. Man ist dann im Programmiermodus.
- Dann muss das Programm benannt werden (hier: „funk1“).
- Die Programmierung einer Funktion beginnt immer über das Menü „Built-ins … Functions … def function(x)“. Die Funktion erhält einen Namen, gefolgt von ihren Argumenten. Diese Zeile endet mit dem Symbol:
Schritt 3
- Die beiden Punkte in der nächsten Zeile markieren den Beginn des Anweisungsblocks, der die Funktion definiert. Alle diese Anweisungen werden eingerückt, d.h. in Bezug auf die erste Zeile automatisch nach rechts um 2 Stellen verschoben und dadurch als zusammenhängender Anweisungsblock kenntlich gemacht
- Die Funktion gibt über den Befehl return (aus „Built-ins … Functions“) das Ergebnis (Wert einer oder mehrerer Variablen) zurück. Das Ergebnis kann auch aus einer Liste von Ergebnissen oder einer Zeichenfolge bestehen.
- Die Einrückung ist wichtig. Alles, was nach def () eingerückt wird, wird als Block ausgeführt. Die Einrückung darf während des Blockierens nicht variieren, die Anzahl der Leerzeichen muss unbedingt gleich bleiben!
Schritt 4
Hinweis für Lehrkräfte : Eine Funktion ermöglicht es, das untersuchte Problem in Unterprobleme zu unterteilen und so die Wiederholung von Anweisungen zu vermeiden. Einmal definiert, kann sie während der Ausführung des Programms so oft wie nötig "aufgerufen" werden. Eine Funktion kann auch keine Argumente haben. Sie kann auch in einem anderen Programm aufgerufen werden: Es reicht aus, sie in eine Anweisung einzufügen, indem der Name und die Werte der Argumente eingegeben werden.
Schritt 5
Zurück zum Anfangsbeispiel
- Nachdem Sie einen Namen vergeben haben, können Sie die Funktion endgültig definieren und den Anweisungsblock schreiben. Der Editor rückt dabei automatisch ein, wenn Sie durch Í eine neue Zeile beginnen. Rechenzeichen werden rot hervorgehoben.
- Mit dem Befehl return wird die Funktion abgeschlossen.
Schritt 6
- Sie sollten sich angewöhnen, das Programm vor dem ersten Lauf auf Syntaxfehler zu überprüfen und abzuspeichern. Dazu dient der Menüpunkt « Run … Check Syntax & Save ») mit dem Shortcut Ctrl+B
- Dann kann man das Programm durch « Run … Run » bzw. Ctrl+R starten..
Schritt 7
- Python wechselt in die Shell und macht dazu ein neues Fenster auf.
- Drückt man die Taste h , so erhält man eine Liste der im Programm verwendeten Funktionen. Man kann die passende Funktion durch Í in die Shell kopieren.
- Dann muss nur noch das Argument eingefügt werden. Mit Í wird die Berechnung ausgeführt.
Step 8
-
Fixing the error: There are several convert functions built into Python. They are found on menu > Built-ins > Type.
They are int(), float(), str() and complex().
Step 9
-
To convert the string x to a number, use
x=float(x)
or
x=int(x)
just before the print statement. Try both and see the difference.
We chose float() in this example. Why?
Anwendung: Die verschiedenen Arten von Daten
LehrerinformationIn einigen Programmen werden die Konzepte aus den Übungen von Lektion 1 wie z.B. Funktionen und Listen angewendet
Lernziele
- Entwurf eines Umrechners von Temperaturen
- Erstellen eines passenden Programmes
Schritt 1
Temperaturen
In angelsächsischen Ländern wird bei der Temperaturmessung vielfach die Masseinheit Fahrenheit (°F) verwendet. Gesucht ist nun eine Funktion, die die Umwandlung von oF in oC und umgekehrt durchführt : oC ↔oF
Gibt es eine Temperatur, die in beiden Masssystemen gleich ist ?
Man erinnere sich : t(oF)=9/5×t(oC)+32
In guter Näherung kann man dafür setzen : t(oF)=t(oC)×1.8+32
Schritt 2
Praktische Durchführung :
- Starten Sie Python und legen Sie mit « New » ein neues Programm mit dem Namen « temperatur » an.
- Importieren Sie das Modul « math » aus der Liste der Module im Menü durch « from math import* » (wird später benötigt).
- Schreiben Sie eine erste Funktion, mit der von Celsius c in Fahrenheit F umgerechnet werden kann.
Schritt 4
- Es fehlt noch die Umwandlung von Fahrenheit nach Celsius. Über « Tools … Go to Python Editor » gelangt man wieder in den Programmiermodus oder man wechselt einfach in das entsprechende Fenster.
- Fügen Sie die abgebildeten Programmzeilen hinzu. Beachten Sie dabei die Einrückungen ; die zweite Funktion muss wieder ganz links beginnen.
Schritt 6
Gibt es eine Temperatur, die in oF und oC die gleiche Masszahl hat ?
- Zunächst einmal soll ein Duplikat des Skriptes erzeugt werden. Dazu gehen Sie wieder in den Programmeditor.
- Wählen Sie den Menüpunkt « Actions … Create Copy ».
Schritt 7
- Im Fenster wird auch gleich ein Vorschlag für die Kopie gemacht : « temperatur1 ».
- Nach der Bestätigung befinden Sie sich wieder im Editor, jetzt aber für das duplizierte Programm « temperatur1 ».
Schritt 8
Das Programm muss nun noch ergänzt werden. Um festzustellen, bei welcher Temperatur oF = oC ist, kann man z.B. beide Werte schrittweise berechnen lassen. Dazu eignet sich ein Intervall von -60 … 20 Temperaturgraden, in dem die Berechnungen in 10er Schritten erfolgen : :
- Zunächst werden c(f) und f(c ) berechnet und auf 2 Stellen hinter dem Komma gerundet durch round(var,2).
- Diese Berechnungen werden in einer Schleife durchgeführt : « Built-ins … Ctl … for i in range(start,stop,step) « .
- Das Ergebnis wird in einer Zeile mit dem Befehl print() aus « Built-ins … I/O » ausgegeben.
- Übung 1
- Übung 2
- Übung 3
- Anwendung
Lektion 2: Bedingte Anweisung und Schleifen
Übung 1: Die bedingte Anweisung
LehrerinformationIn der ersten Übung der Lektion 2 lernen Sie die Schreibweise und Anwendung einer bedingten Anweisung kennen.
Lernziele
- Form und Verwendung einer bedingten Anweisung
- Verwendung in einer Funktion
Schritt 1
In einem Programm ist es üblich, seine Ausführung gemäß Bedingungen zu steuern, die von den verschiedenen Variablen abhängen. Eine Bedingung ist eine Aussage, die entweder wahr oder falsch sein kann. Zum Beispiel: a = b oder a≥b aber auch n ist gerade sind Bedingungen, die anhand der diesen Variablen zugewiesenen Werte getestet werden. Je nachdem, ob die Bedingung wahr („true“) oder falsch („false“) ist, wird die Anweisung A oder die Anweisung B durchgeführt. Man spricht daher von einer bedingten Anweisung.
Schritt 2
Beispiel
Eine Autovermietung bietet ihren Kunden folgenden Vertrag an: Eine Grundgebühr von 66 € plus 0,25 € pro Kilometer für jeden km, der über 70 km hinaus gefahren wird.
Ihre Aufgabe ist es, eine Funktion zu schreiben, die die Kosten C des Vertrags basierend auf der zurückgelegten Strecke X berechnet.
Schritt 3
Implementierung
Aus dem Menü gelangt man über „Built-ins“ zum Submenü „Control“. Hier findet man u.a. die verschiedenen Formen der bedingten Anweisung.
In Python gibt es keine Anweisung, die das Ende der bedingten Anweisung angibt. Es ist die Einrückung nach rechts um 2 Stellen, die den Anweisungsblock markiert.
elif ist die Kurzschreibweise von else if.
Schritt 4
Nun zum eigentlichen Programm
- Legen Sie ein neues Programm mit dem Namen « auto » an.
- Definieren Sie eine Funktion c(x).
- Fügen Sie dann aus dem Menü « Control » ein « if .. else .. « .
- Beachten Sie : den Abschluss der Zeilen mit if und else bildet stets ein Doppelpunkt !
Schritt 5
- So sollte das fertige Programm aussehen.
- Das Zeichen < und andere erhält man über die Tastatur
Schritt 7
Stückweise definierte Funktionen
Eine Funktion sei stückweise definiert durch :
Übung 2: Die for - Schleife
LehrerinformationIn dieser zweiten Übung lernen Sie, wie man einen Prozess oder eine Gruppe von Befehlen wiederholen kann, indem man eine for-Schleife verwendet.
Lernziele :
- Syntax der for-Schleife
- Anwendung der for-Schleife in einfachen Beispielen
Schritt 1
- for index in range(size) zählt von 0 bis size-1, also genau sizemal, mit der Schrittweite 1
- for index in range(start,stop) bewirkt einen Schleifendurchlauf von start bis stop-1 mit der Schrittweite 1
- for index in range(start,stop,step) bewirkt einen Schleifen-durchlauf von start bis step-1 mit der Schrittweite step.
- For index in list bewirkt, dass die Zählvariable nacheinander alle Listenwerte annimmt.
- Es gibt keinen Befehl, der das Ende der Schleife anzeigt. Die zur Schleife gehörenden Befehle werden durch die Einrückung um 2 Stellen nach rechts zusammen gehalten.
- Die Schleifenzählung beginnt stets bei 0.
Schritt 2
- Erstellen Sie ein neues Programm « schleife ».
- Durch b = [ ] wird eine leere Liste angelegt.
- Fügen Sie die for - Schleife ein.
- Der Befehl .append( ) bewirkt, dass an eine vorhandene Liste ein Element angehängt wird. Durch b.append(i**2) wird also eine Liste der Quadratzahlen erzeugt, denn für jedes i wird i² an das Ende der Liste angefügt.
- Die Zählvariable i läuft dabei von 0 bis 4, also bis size-1.
- .append() findet man im Menü « Built-ins … List ».
Schritt 3
Schritt 4
Eine Anwendung
Es soll die Anzahl der Streichhölzer pro Zeile in der unten abgebildeten Figur bestimmt werden
Die erste Reihe sei n0 und wird aus 3 Streichhölzern gebildet. Für die zweite Reihe n1 benötigt man 7 Streichhölzer, für die dritte Reihe n2 benötigt man dann 11 Streichhölzer.
Reihe n0
Reihe n1
Reihe n2
Schritt 5
Wie viele Streichhölzer benötigt man für die 4. Reihe ?
Wie viele für die 100. Reihe ?
Schreiben Sie ein Programm !
Step 6
Finish the function by providing the return statement
return area
found on menu > Built-ins > Function.
As in mathematics, functions have arguments and ‘produce’ a value. The return statement is needed to ‘send’ the value back to the main program where it can be used.
Important: Move the insertion cursor back to the beginning of a new line using del or shift+tab. You can also skip one or more lines for clarity.
Step 7
-
Now it’s time to write the main program using just the statements:
input() (3 times for the three sides)
print() (to print the area)Before going to the next step, try writing them yourself.
Step 8
-
The three input() statements request the lengths of the three sides, convert each length to a number, and store the values in three variables. We use x, y, and z.
x = float(input(“Enter first side: “))
The other two are similar.
The print() statement prints the value of the heron function with the three variables as arguments:
print(“Area = “ , heron(x,y,z))
Übung 3: Die while-Schleife
LehrerinformationIn dieser dritten Übung lernen Sie, wie man einen Prozess oder eine Gruppe von Befehlen wiederholen kann, indem man eine while - Schleife verwendet.
Lernziele :
- Syntax der while - Schleife
- Anwendung der while – Schleife in einfachen Beispielen
Schritt 1
In einem Programm ist es manchmal sinnvoll, eine oder mehrere Anweisungen zu wiederholen, ohne dass man die Anzahl der Wiederholungen kennt, da sie z.B. vom Wert einer Variablen abhängen kann. Dazu verwendet man die unbegrenzte while-Schleife. Die Schleife wird mehrmals durchlaufen, bis eine Bedingung nicht mehr erfüllt ist. Solange diese Bedingung erfüllt ist, wird die Schleife fortgesetzt. Also umgangssprachlich
Solange die Bedingung erfüllt ist, tue folgendes ……
Schritt 2
In Python :
while Bedingung :
Anweisungen
Es gibt keinen Befehl, der das Ende der Schleife anzeigt. Die zur Schleife gehörenden Befehle werden wieder durch die Einrückung um 2 Stellen nach rechts zusammen gehalten.
Schritt 3
Ein einfaches Beispiel Für die Folge cn+1 = 0,8 cnmit c0= 3,4 ist der kleinste Index n gesucht, so dass cn < 1. |
n ←0 c ←3.4 Solange wie c ≥ 1 n ←n+1 c ←0.8c Ende
|
Schritt 4
- Legen Sie ein neues Programm « twhile » an.
- Die Aufgabe wird ein wenig erweitert, denn die Funktion erfordert zwei Eingaben : c0 und die jetzt variable Grenze g statt der festen Grenze 1.
- Startwert ist n=0. Bei jedem Schleifendurchlauf wird n um 1 vergrößert, solange bis die Bedingung nicht mehr erfüllt ist.
- Das nebenstehende Bild zeigt das Programm, das folgende Bild rechts oben das Ergebnis eines Durchlaufs
Schritt 5
Eine Anwendung : Der springende Ball
Ein Ball wird aus einer Höhe von 1,20 m fallen gelassen. Er springt wieder hoch und erreicht dabei genau 60% seiner ursprünglichen Höhe.
Wie oft springt der Ball, bis die Sprunghöhe unter 1 cm bleibt ?
Schritt 6
Das Programm :
h ← 120
n ← 0
Solange wie h ≥ 1h ← 0.6 x h
n ← n+1
Ende
Schritt 7
- Legen Sie ein neues Programm « SPRUNG » an.
- Benennen Sie die Funktion als s() (also ohne Variable !).
- Schreiben Sie das abgebildete Programm
- Lassen Sie es mit « Run » laufen. Es entsteht das untere Bild.
- Man kann das Programm auch noch mit einem Text ergänzen, etwa in der Art
return(« Anzahl der Sprünge : « ,N)
der dann mit angezeigt wird.
Nur zur Überlegung :
Wie viele Sprünge macht der Ball, bis er zur Ruhe kommt ? Kann man das überhaupt berechnen ?Step 8
-
Run the program and enter four values. Does your output resemble this?
Summary: Python functions can be used many times during a program.
Displaying output in a pleasing format can be tricky. Our print statement is:
print(‘midpoint = ( ‘, midX, ’, ‘, midY, ’)’ )
with extra spacing to see where the quotes and commas belong.
Remember to save your project.
Anwendung: Schleifen und Tests
LehrerinformationFür diese Anwendung von Lektion 2 werden die in den bisherigen Lektionen vorgestellten Schleifen für Beispiele aus der Stochastik angewendet..
Lernziele :
- Anwendung der while – und for – Schleife im Bereich Stochastik
Schritt 1
In dieser Anwendung wird ein Programm vorgestellt, das Folgendes ermöglicht:
- Simulation eines Würfels durch eine Wurffunktion
- Diese Funktion wird dann in einem anderen Programm verwendet, um die Anzahl der Würfe zu bestimmen, die erforderlich sind, um beim Würfeln von 2 idealen Würfeln die Summe 12 zu erhalten.
- Für den einzelnen Würfel sollen dann die absoluten Häufigkeiten für das Auftreten einer Zahl ermittelt werden, um sie mit den Wahrscheinlichkeiten vergleichen zu können.
Schritt 2
Die Simulation des Würfelwurfes
- Um mit Zufallszahlen arbeiten zu können, muss das Zufallsmodul geladen werden, bevor die Funktion definiert wird.
- Erstellen Sie ein neues Programm „ wurf“.
- Das Zufallsmodul kann aus dem Menü unter „Random“ hinzugefügt werden.
- Definieren Sie die Funktion wurf(), um eine ganzzahlige Zufallszahl zwischen 1 und 6 zu erhalten.
Schritt 3
- „Würfeln“ Sie nun, indem Sie die Funktion in der Shell wiederholt durch } aufrufen.
Schritt 4
Anzahl der erforderlichen Versuche.
Zwei ideale 6-seitige Würfel werden geworfen und die beiden erzielten Ergebnisse addiert. Zusätzlich wird die Anzahl n der Würfe ermittelt, die erforderlich ist, bis sich die Summe von 12 ergibt.
- Es bietet sich die Wiederverwendung der vorherigen Funktion wurf() an.
- Die Variable s gibt die Summe der Würfe und n die Anzahl der Würfe an, die vor Erreichen von 12 erforderlich sind. Beide werden auf 0 initialisiert.
- In Python wird das Symbol „≠“ durch „! =“ dargestellt.
- Vervollständigen Sie das vorherige Programm entsprechend und achten Sie darauf, die Einrückung zu berücksichtigen. Führen Sie es dann aus.
Schritt 5
- Die erste Zahl gibt die Anzahl der Würfe an, die erforderlich sind, um die von der zweiten Zahl angezeigte Summe 12 zu erreichen.
Schritt 6
Wie oft erscheinen die Zahlen beim Würfelwurf?
Das vorige Beispiel hat deutlich gemacht, dass die Anzahl der Versuche schwankt, die erforderlich sind, um eine 12 zu erhalten. Macht man nun eine sehr große Anzahl von Würfen, so sollte sich eine Gleichverteilung bei den einzelnen gewürfelten Zahlen einstellen.
Beim Skript werden Listen verwendet, die den Code erheblich verkürzen.
Schritt 7
- Erstellen Sie ein neues Programm “wurf2“
- Es werden n Würfe durchgeführt.
- Das Ergebnis eines Wurfs wird in der Liste l gespeichert, die zuvor mit der Anweisung l = [] leer initialisiert wurde.
- Liste f enthält die Zahlen auf dem Würfel.
- Liste fl enthält dann die absoluten Häufigkeiten. Auch diese Liste wird als zunächst leere Liste fl=[] angelegt.
- Die erste for – Schleife erstellt eine Würfelliste der Länge n.
- Die zweite for – Schleife zählt dann, wie oft die einzelnen Zahlen aus der Liste f in der Wurfliste l vorkommen.
Schritt 8
- Lassen Sie das Programm für mehrere Werte von n laufen.
- Ergibt sich eine Gleichverteilung ?
Step 9
-
Summary: The order of the statements in the final program is important but the order in which they are entered into the program does not matter. This is the power of a text editor. This program and all the others in this unit are examples of the ‘sequence’ structure of the language, which processes statements from top to bottom.
Comments, extra spaces, and blank lines in the program are ignored when you run the program. ‘import’ statements bring in additional functions from separate modules that are included in the TI-Nspire Python programming language.
Step 10
-
Question 1: The International Space Station is 254 miles above the surface of the earth. How far is it to the horizon for the crew?
Question 2: If you are standing on the beach at the edge of the water looking out over the ocean, how far away is the horizon?
Hint: Enter the height of your eyes above the ground (in feet).
- Übung 1
- Übung 2
- Übung 3
- Anwendung
Lektion 3: Beispielprogramme
Übung 1: Nullstellenbestimmung
LehrerinformationIhre bisherigen Kenntnisse in Algorithmen und der Sprache Python verwenden Sie in dieser ersten Übung von Lektion 3, um
- eine Lösung einer Gleichung f (x) = 0 zu bestimmen
- ein Optimierungsproblem zu lösen.
Lernziele :
- Arbeiten mit einer Funktion in Python
- Einsatz der while - Schleife
Schritt 1
Nullstellenbestimmung durch Intervallhalbierung
Wir betrachten den Graphen der im Intervall [-2,3] durch
f (x) = x² - 7x + 5
definierten Funktion f .
In Python soll nun ein Skript erstellt werden, mit dem eine Nullstelle berechnet wird. Dazu wird das folgende Verfahren verwendet:
- Das Intervall [a,b] = [-2,3] wird halbiert: .
- Ist das Vorzeichen von f(a) ungleich dem von f(m), so liegt die Nullstelle im Intervall [a,m], andernfalls in [m,b].
- Das Intervall, das die Nullstelle enthält, wird nun wieder geteilt.
- Nun werden wieder die Vorzeichen bestimmt und ein neues Intervall ausgesucht.
- Das wird dann wieder geteilt, usw.
- Der Algorithmus läuft, solange die Intervalllänge eine bestimmte Grenze dx nicht Unterschreitet: (b-a)>dx
Schritt 2
Ein erstes Programm
- Schreiben Sie das nebenstehende Programm.
Schritt 3
Als Ergebnis werden die Grenzen des Intervalls angegeben, das die Nullstelle enthält..
Schritt 4
Andere Lösungen
- Anstelle der Genauigkeit dx kann man auch die Anzahl n der Iterationen angeben (Bilder rechts).
Schritt 6
2. Das Programm kann auch rekursiv formuliert werden (Bild rechts). Zu Rekursionen später mehr.
Step 7
-
The if : (when the number is even)
block (the top one)
becomes:
num = num // 2
// (two division signs) is integer division (no decimal and truncates to just the whole number). If you use / you will see a decimal point even if the number is an integer. Just use two / signs (the ÷ key).
Step 8
-
The else: (when the number is odd)
block is:
num = 3 * num + 1
Step 9
-
After the if..else: statement block, backspace to the beginning of a line (erase the indent characters) and write the print statement:
print(num)
Step 10
-
Running the program:
Press ctrl+R to run the program. Enter a positive integer. An answer appears.
Press ctrl+R again and this time enter the last answer.
Repeat running the program, each time entering the previous answer.
Next you will add a loop to the program so that the process runs repeatedly by itself instead of having to run the program over and over…
Step 11
-
Place your cursor right below the input statement and above the if statement as shown in this image. (Do not type: ‘<<< cursor here’)
Step 12
-
On this blank line add the while statement found on
menu > Built-ins > Control.
You will see
while BooleanExpr:
blockpasted into your program.
Step 13
-
Erase the entire line that says ‘block’.
Select the entire if structure and print statement using shift+down arrow. Press tab to indent all these lines two spaces to become the while block.
Step 14
-
Now write the condition by replacing BooleanExpression.
The Collatz Conjecture states that all sequences will eventually become 1.
As long as the number is greater than 1, continue processing; so write:
while num > 1 :
Be sure to leave the colon (:) at the end of this line.
Step 15
-
Run the program. Enter 20 as the number. Follow the logic of the program: Odd numbers get larger and even numbers get smaller.
20 is even à 10
10 is even à 5
5 is odd à 16
16 is even à 8
and so on…
… and the program ends when the number reaches 1.Note that it only took one line of code to create a loop!
Can you find a number that causes the program to NEVER end? Try a large number. Notice how fast the numbers fly by! When the program ends you can scroll upward through the Shell history to examine the numbers.
Übung 2: Stochastik - Simulation
LehrerinformationIn dieser Übung soll gezeigt werden, wie man mit der
for – Schleife eine einzelne Anweisung oder eine Gruppe von Anweisungen wiederholen kann.
Lernziele :
- Anwendung einer Funktion
- Verwendung der for – Schleife in einfachen Beispielen.
Schritt 1
Ein erstes Beispiel
Ein undurchsichtiger Beutel enthält sechs rote und vier grüne Kugeln. Wir ziehen zufällig eine Kugel aus dem Beutel, notieren ihre Farbe und geben sie wieder zurück.
Programmieren Sie eine Funktion fa(), die dieses Experiment mit Zufallsvariablen simuliert.Schritt 2
- Starten Sie ein neues Programm "farbe".
- Da Sie mit Zufallszahlen arbeiten, muss die Bibliothek "random" aus dem Menü geladen werden.
- Geben Sie das nebenstehende Programm in den Editor ein und achten Sie dabei auf die Einrückung.
Schritt 3
- Welche Bedeutung hat dabei die Variable x?
- Führen Sie das Programm mehrmals aus, indem Sie die Farbfunktion fa() aufrufen.
Schritt 4
Hinweis für Lehrkräfte: Dieses Skript kann so bearbeitet werden, dass es auf eine beliebige Anzahl von Kugeln angewendet wird. In diesem Fall können wir die Funktion Farbe fdefinieren als farbe(n,r), wobei n die Anzahl der Kugeln insgesamt und r die Anzahl der roten Kugeln ist.
Ein weiteres Beispiel: eine Meinungsumfrage
Am Ende einer neuen Ausstellung wird auf Wunsch des Künstlers eine Umfrage durchgeführt. Diese Umfrage in einer Großstadt zeigt, dass zwei Drittel derjenigen, die die Show gesehen haben, sie mochten. Der Agent des Künstlers glaubt, dass die gesamte Bevölkerung in der gleichen Stimmung ist. Er bestellte eine Umfrage bei einem Institut, um dies zu überprüfen.
Schritt 5
Die Simulation – das Programm
- Für die statistische Erhebung muss das Institut eine Funktion erstellen, die die Reaktion auf die Situation simuliert.
- Die Ausstellung wird mit einer Wahrscheinlichkeit von p = 2/3 positiv empfunden.
- Die Ausstellung wird mit einer Wahrscheinlichkeit von p = 1/3 negativ empfunden.
- Starten Sie ein neues Programm „simum“
- Darin ist die Funktion frage() enthalten. Testen Sie diese Funktion!
Schritt 6
- Sie können die Ausführung mit der VAR-Taste und dann mit dem Aufwärtspfeil wiederholen (dies kann schneller sein als die Eingabe des Funktionsnamens).
Schritt 7
Simulation einer Stichprobe der Größe n
Das Institut möchte Stichproben variabler Größe simulieren.
Im aktuellen Programm muss daher eine Beispielfunktion probe(n) erstellt werden, mit der man diese Simulation durchführen kann.
- Erstellen Sie dazu eine leere Liste l.
- Füllen Sie diese Liste mit Hilfe der Funktion frage() und einer for-Schleife.
Schritt 9
Hinweis für Lehrkräfte: In Python können Sie eine Funktion verwenden, um die Elemente einer durch eine for - Schleife inkrementierten Liste zu berechnen.
Für ein Zeichen, dass in einer Menge mit der Wahrscheinlichkeit p vorkommt, gilt:
für und liegt die relative Häufigkerit innerhalb einer Stichprobe in 95% aller Fälle im Intervall um den Erwartungswert p.
Validierung der Probe
Das Institut möchte bestimmen, ob der Prozentsatz der Befürworter der Ausstellung zur 95% -Umgebung von p = 2/3 gehört.
- Dazu muss die Funktion probe(n) so verändert werden, dass die relative Häufigkeit des Auftretens von 1 ausgegeben wird, indem man die Summe aller Elemente bildet und durch die Länge der Liste dividiert..
- Anschließend wird in einer weiteren Funktion bestimmt, ob diese relative Häufigkeit in der 95% Umgebung liegt. Da te Tests durchgeführt werden, ist noch ein Zähler nf für den Erfolg nötig.
Übung 3: Iteration und Rekursion
LehrerinformationIn dieser dritten Übung von Lektion 3 verwenden Sie Funktionen, um sowohl eine iterative als auch eine rekursive Programmierung durchzuführen.
Lernziele :
- Anwendung einer Funktion
- Kennenlernen und Anwenden der iterativen und der rekursiven Programmierung
Schritt 1
Berechnung des ggT durch Iteration
Um den größten gemeinsamen Teiler zweier Zahlen (ggT) mit a > b zu berechnen, wird hier der Euklid-Algorithmus verwendet, der schnell zum Ergebnis führt:
- Bei der Division a/b verbleibt ein Rest r < b.
- Man setzt nuna = b und b = r .
- Die Division a/b wird nun wiederholt.
- Der Prozess endet, wenn r = 0 ist.
- Der ggT ist dann der vorherige Rest.
- Beim oben abgebildeten Beispiel ist ggT(96,81) = 3.
Schritt 2
Das Programm
- Erstellen Sie ein neues Programm „ggt1“.
- Definieren Sie die Funktion ggt(a,b).
- „!=“ steht für „≠“ und „%“ für die Bestimmung des Restes bei der euklidischen Division.
- a,b=b,r ersetzt die Anweisungen a=b und b=r.
Schritt 3
- Testen Sie das Programm mit verschiedenen Beispielen.
Schritt 4
Rekursive Programmierung
Ein Algorithmus wird als rekursiv bezeichnet, wenn er sich irgendwann selbst aufruft.
Rekursion kann in einem Algorithmus viele Vorteile haben. Sie kann Probleme lösen, die normalerweise durch die Verwendung einfacher Schleifen u.U. unlösbar sind. Sie kann einen Algorithmus aber auch lesbarer und kürzer machen, ermöglicht aber vor allem in bestimmten Fällen einen kolossalen Zeitgewinn, wie dies z.B. bei den Sortieralgorithmen der Fall ist.Schritt 5
Ein erstes Beispiel für eine Rekursion
- Erstellen Sie ein neues Programm „reku“.
- Machen Sie sich klar, an welcher Stelle f(a,b) von sich selbst aufgerufen wird!
- Überlegen Sie die Rolle der if – Anweisung und was passieren würde ohne diese Anweisung!
Schritt 7
Rekursive Bestimmung des ggT
- Die beiden Bilder zeigen die rekursive Programmversion für den ggT sowie eine Berechnung.
Schritt 8
- Hier wie bei jeder Rekursion ganz wichtig : es muss eine Abbruchbedingung angegeben werden, die auch sicher im Programmablauf erreicht wird, da sonst das Programm ewig läuft (d.h. bis die Kapazität des Rechners erschöpft ist).
Step 9
-
Change each 2 in the program to 0.5.
What happens?
Try other numbers.
When do the numbers grow and when do they shrink?
How about negative numbers?
Would it make sense to try 0 or 1 instead of 2?
Now try this: Change num = num * 2 to num *= 2
This shortcut operation does the same thing and works for many other mathematical operators.
Anwendung: Primzahltest
LehrerinformationIn dieser Anwendung von Lektion 3 verwenden Sie die in den vorherigen Lektionen erworbenen Konzepte, um Algorithmen zu programmieren, mit denen Sie Ihr Wissen über Zahlen und insbesondere Primzahlen verfeinern können
Lernziele :
- Anwendung von Tests und Schleifen in einem Python-Programm über Primzahlen
Schritt 1
Eine Primzahl hat als Teiler nur die 1 und sich selbst.
Zum Beispiel :
- 1 ist keine Primzahl, da sie nur einen Teiler (sich selbst) hat.
- 7 ist eine Primzahl mit den Teilern 1 und 7.
- 8 ist keine Primzahl, denn sie hat die 4 Teiler 2,4,8 und 1
Die ersten Primzahlen sind : 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, …
Es gibt unendlich viele Primzahlen
Schritt 2
Schritt 3
Das Programm
- Legen Sie ein neues Programm « primz » an.
- Das Modul « math » muss vorab geladen werden.
- Das Programm enthält eine Funktion prim(n), die den Test auf Primzahl durchführt. Die zu testende Zahl n wird dabei schrittweise euklidisch von 2 bis durch k dividiert.
- Ist r = 0 (keine Primzahl), so ist prim(n) = 0, andernfalls 1.
Schritt 4
- Im Hauptteil des Programmes werden die zu testenden Zahlen N erzeugt, und die Anzahl der Primzahlen np gezählt, bis die Grenze 2020 erreicht ist.
- Es dauert dann eine Weile, bis das Ergebnis dargestellt wird.
- Die Rechenzeit lässt sich verkürzen, indem man die geraden Zahlen bei der Primzahlbestimmung überspringt.
Step 6
-
Use the if..elif..else structure found on
menu > Built-ins > Control.Remember, it works like this:
if <this is true>:
<do this>
elif <this is true>: (stands for ‘else if…’)
<do this>
(there may be more elifs in here)
else:
<do this> (when none of the others are true)Caution: Remember to use == when writing a condition, not =. Using the wrong symbol will result in a syntax error. if x==5:, not if x=5:.
Using the ctrl+= menu can help.
Step 7
-
Here is a peek at the if..elif..else structure but some information has been omitted.
The if and each elif has a condition to be met and a block to be processed when the condition is true. else: has no condition and its block will be processed when none of the others are true.
counter+=1 is shorthand for counter = counter + 1.Hint: Recall that A % B gives the remainder when A is divided by B.
Step 8
-
A sample run of the program might look like the image to the right.
If your numbers go by too fast, use a sleep() function at the bottom to slow things down.
sleep() is in the time module so be sure to include:
from time import sleep
What is the first number replaced by ‘FizzBuzz’?
- Übung 1
- Übung 2
- Übung 3
- Anwendung
Lektion 4: Verwendung des Moduls ti_plotlib
Übung 1: Eine erste Grafik
LehrerinformationIn dieser ersten Übung in Lektion 4 wird gezeigt, wie man Anweisungen zum Erstellen von Grafiken in Python schreibt und verwendet. Außerdem wird gezeigt, wie man eine Grafik zeichnet und die Anzeige konfiguriert.
Lernziele :
- Entdeckung des Moduls ti_plotlib.
- Darstellung eines Punktes und einer Strecke.
- Einstellungen einer Grafik.
Schritt 1
Das Modul ti_plotlib
Um eine Grafik darstellen zu können, muss das Programm in der Lage sein, grafische Anweisungen zu verstehen. Diese Grafikanweisungen finden sich im Modul ti_plotlib. Es muss deshalb wie alle Module am Anfang des Programmes eingefügt werden.
Ein neues Programm mit dem Namen U4SB1 wird angelegt, dem das Modul ti-plotlib hinzugefügt wird. Dazu muss man im Menü 7: ti_plotlib… wählen und dann 1: ti_plotlib als plt importieren.
In diesem ersten Teil soll ein Programm geschrieben werden, das einen Punkt anzeigt, dessen Koordinaten bekannt sind. Anschließend wird das Programm ergänzt, so dass der Punkt eine andere Farbe bekommt und in einem Achsenkreuz dargestellt wird. Die Achsen werden beschriftet und eine Überschrift wird eingefügt.
Schritt 2
Zuerst wird eine Funktion mit den Koordinaten eines Punktes als Argument definiert und dieser Punkt wird angezeigt.
- Mit der Anweisung plt.cls (), die man im Modul ti_plotlib im Menü SetUp findet (1 cls ()), wird der Bildschirm „gereinigt“.
- Um den Punkt zu zeichnen, wählen man die Anweisung plot(x,y,“mark“) im Menü Draw des ti-plotlib-Moduls.
- Jetzt kann die gewünschte Markierung ausgewählt werden (hier ein kleiner Kreis).
Lehrertipp: Die Darstellung eines Punktes in Form eines Pixels sollte gewählt werden, wenn eine große Anzahl von Punkten dargestellt werden soll.
Schritt 3
Durch den abschließenden Befehl plt.show_plot() aus dem SetUp von ti_plotlib wird der Punkt gezeichnet :
- Mit dem Menü Starten sollte zunächst das Programm auf Fehler überprüft und gespeichert werden, bevor man das Programm startet. Dann erhält man durch Drücken von die Funktion punkt(), die man mit bestätigen muss.
- Anschließend kann man die Koordinaten eines Punktes eingeben. Dabei erfolgt ein Wechsel von der Shell in den Grafikmodus. Der dargestellte Punkt wurde durch punkt(2,3) erzeugt.
- Um einen neuen Punkt zu zeichnen, muss man den Grafik-Bildschirm durch Drücken von verlassen. Mit oder Steuerkreuz kann man dann einen neuen Punkt wie oben beschrieben eingeben.
- Der Punkt punkt(10,10) ist nicht mehr sichtbar, da er außerhalb des Darstellungsbereiches liegt.
Lehrertipp: Wenn man ein Programm mit den Grafikfunktionen schreibt, sollte man die Parameter des Grafikfensters angeben und möglicherweise ein Koordinatensystem, ein Raster, einen Achsennamen usw. anzeigen lassen.
Schritt 4
2 : Einstellungen
Es ist sinnvoll, dass man den Befehl plt.cls() in die Definition der Funktion übernimmt, um einen « sauberen » Grafikbildschirm zu bekommen.
Lehrertipp: Um eine Zeile auszuschneiden, zu kopieren oder einzufügen, verwendet man Anweisungen aus dem Menü 3 Bearbeiten.
In das Programm sollten aus dem SetUp die folgenden Befehle übernommen werden :
- Die Fenstergrenzen : Xmin = -10 ; Xmax = 10 ; Ymin = -10 und Ymax = 10
(window).
- Die Art des Rasters (grid) kann man selbst bestimmen.
- Die Koordinatenachsen (axes).
- Die Farbe des Punktes (Menü Draw, dann color(r,g,b)).
Lehrertipp: Die Farbe eines Punktes oder einer Linie muss im Code r, g, b (rot, grün, blau) angegeben werden, wobei jeder Parameter einen Wert aus dem Intervall [0; 255] annehmen kann. Die Farben sind auf 8 Bits oder 28 = 256 Möglichkeiten codiert, wobei die 0 mitgezählt wird, was einem Fehlen der Komponente r oder g oder b entspricht.
Es ist auch möglich, das Raster in Farbe zu zeichnen, indem man die Rasteranweisung plt.grid(xscl, yscl, "style", (r, g, b)) verwendet.
Schritt 5
Mit P(3/-1) sollte sich das nebenstehende Bild ergeben.
Nun können die Achsen noch benannt werden. Dazu muss der Befehl plt.labels eingefügt werden. Die Achsenbeschriftungen erfolgen für die y-Achse linksbündig und für die x-Achse rechtsbündig in der jeweils angegebenen Zeile.
Das sieht nicht immer glücklich aus, da sich z.B. auch Überschneidungen ergeben können. Hier muss man ev. etwas experimentieren.
Dann kann man mit plt.title der Grafik noch einen Titel geben, der standardmäßig zentriert dargestellt wird.
Schritt 6
Erweiterung : Man kann das Programm ergänzen, indem man eine Funktion schreibt, mit der eine Strecke grafisch dargestellt werden kann. Die wesentlichen Anweisungen sind im Bild rechts dargestellt. Natürlich können noch Achsen, Raster, usw. hinzu gefügt werden.
Mit dem Befehln plt.pen, auf den über das Menü Draw zugegriffen werden kann, kann man das Aussehen der Strecke bestimmen.
Um die Strecke zu zeichnen, muss man bei strecke() anwählen und dann die Werte eingeben – im Beispiel (-4,3,3,-4).
Lehrertipp: Im Editor kann man auch einen Kommentar angeben. Dieser wird grau geschrieben und mit einem vorangestellten #, was bedeutet, dass diese Anweisung nicht ausgeführt wird.
Das Zeichen # kann über eingefügt werden.
Übung 2: Den Grafen einer Funktion erstellen
LehrerinformationIn dieser zweiten Lektion der Lektion 4 wird gezeigt, wie man eine Funktion mit Hilfe der Python-Bibliothek ti_plotlib grafisch darstellen kann.
Lernziele :
- Den Grafen einer Funktion darstellen.
- Verwendung einer for-Schleife.
- Einrichten der grafischen Darstellung.
Schritt 1
Der Graph der Funktion wird punktweise erstellt für n x-Werte in einem
Intervall [a ; b]. Es werden Befehle aus dem Modul ti_plotlib verwendet.
Das Programm, das erstellt wird, wird sehr allgemein gehalten sein, so dass es für andere Beispiele ebenfalls verwendet werden kann.
Lehrertipp : Wer mit dem Konzept der For-Schleife nicht vertraut ist, kann sich in den Lektionen 1 bis 3 informieren.
- Erstellen eines neuen Programmes U4SB2.
- Importieren des Moduls ti_plotlib aus dem Menü.
- Definieren der Funktion 𝑔:𝑥⟼𝑥2−3𝑥+4.
Schritt 2
Lehrertipp : Die Liste der x-Werte lx wird mit einer For-Schleife erzeugt. Man muss den Befehl dazu ausschreiben, da er sonst falsch platziert wird.
Die Liste der y-Werte ly wird auf gleiche Weise im Anschluss erzeugt
Nun kann das Programm geschrieben werden. Dazu gehören auch die üblichen Anweisungen :
- Säubern des Bildschirmes : plt.cls().
- Einstellen der Window-Parameter :
plt.window(xmin, xmax, ymin, ymax).
- Einschalten der Koordinatenachsen : plt.axes(« on »).
- Bezeichnung der Koordinatenachsen : plt.labels(« x », « y »).
- Farbe der Grafik : plt.color(255,0,0)
- Festlegen des Grafikstils : plt.plot(lx,ly, « + »).
- Zeichnen der Grafik : plt.show_plot().
Alle Befehle gehören zum Modul ti_plotlib. Die Befehle zur Einstellung der Grafik befinden sich im Menü SetUp, die zum Zeichnen im Menü Draw.
Bemerkung : Der Bereich für die Farben r, g, b geht von 0 bis 255. Die Einstellungen für die Farbe stehen immer direkt vor den Zeichenbefehlen.
Schritt 3
Bei der Programmausführung muss bei die Funktion graf() ausgewählt werden.
Die Zeichnung selbst erfolgt dann im Intervall [0 ;3] mit 25 untereinander geradlinig verbundenen Punkten (Polygonzug).
Lehrertipp : Sollen mehr Punkte berechnet werden, so sollte als Darstellung der Punkt anstelle des Plus verwendet werden..
Mögliche Erweiterungen :
- Zusätzlich ein Gitter anzeigen.
- Die Funktion ändern oder mehrere Funktionen darstellen.
- Veränderung der Anzahl der Punkte und die Auswirkung auf den Grafen.
Übung 3: Punktwolke und Regression
LehrerinformationIn dieser dritten Übung der Lektion 4 wird vermittelt, wie man grafisch eine Liste von Messpunkten darstellt und es wird ein mathematisches Modell vorgestellt, das sich dieser Punktwolke optimal anpasst.
Lernziele :
- Darstellung einer Punktwolke
- Verwendung einer geeigneten Regression.
- Verwendung von Listen in Python.
Schritt 1
Das Problem :
Um die Bevölkerung während eines Hochwassers mit praktischen Informationen zu versorgen, zeichnen die Behörden stündlich (t/h) ab Beginn des sinkenden Wasserspiegels den maximalen Wasserstand (h/cm) in Bezug auf einen Referenzpunkt auf. Die Daten sind in der nachstehenden Tabelle aufgeführt. Man möchte die Punktwolke mit Hilfe der ti_plotlib-Bibliothek darstellen und dann nach einem mathematischen Modell zur Extrapolation suchen, um den Verlauf des sinkenden Wasserstandes vorherzusagen.
t in h | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
h in cm | 130 | 127 | 123 | 118 | 116 | 111 | 105 | 103 | 101 | 95 | 86 | 80 | 71 |
Schritt 2
Das Programm :
- Ein neues Programm mit dem Namen U4SB3 anlegen.
- Das Modul ti_plotlib importieren.
- Messwerte in die Listen « lt » und « lh » eintragen. Lange Listen ragen dabei rechts aus dem Bildschirm heraus, bleiben aber editierbar.
- Die grafische Darstellung vorbereiten :
- Den Bildschirm löschen : plt.cls().
- Die Fenstereinstellungen xmin = -2 ; xmax = 20 ; ymin = -20 ; ymax = 200 durch plt.window(-2, 20, -20, 200) vornehmen.
- Koordinatenachsen hinzufügen : plt.axes().
- Die Messwerte als Punktwolke darstellen : plt.scatter().
Die Einstellungen unter 4) findet man im Menü SetUp, die Syntax zur Darstellung der Punktwolke unter 5) im Menü Draw.
Schritt 3
Lehrertipp : Die Liste der Zeiten kann auch durch eine For-Schleife erzeugt werden.
Das Programm sollte bei fehlerfreier Ausführung das nebenstehende Bild erzeugen..
Es sieht so aus, als würde sich der Verlauf durch eine lineare Funktion, die sich der Punktwolke anpasst, gut beschreiben lassen können. Das geeignete Modell dafür ist die lineare Regression, die sich in Python einfach durchführen lässt.
Schritt 4
Dazu wird die Zeile plt.lin_reg(lt,lh, « center »,11) in das Programm eingefügt. Die Regressionsgleichung wird dann mittig (center) in Zeile 11 auf dem Bildschirm eingefügt. Die Zeilenangabe ist optional, Zeile 11 ist die Voreinstellung.
Um den Zeitpunkt zu bestimmen, wo der Wasserstand wieder die Höhe des Referenzpunktes hat, muss dann lediglich die lineare Gleichung −4.64𝑥+132.90=0 gelöst werden (x = 28,6).
Schritt 5
Verbesserung der grafischen Darstellung
Das betrifft die farbliche Ausgestaltung. So könnte man z.B. die Achsen schwarz (plt.color(0,0,0)), die Punktwolke rot (plt.color(255,0,0)) und die Regression blau darstellen (plt.color(0,0,255)).
Man kann auch noch einen Titel und die Beschriftung der Achsen hinzufügen.
Lehrertipp : Um Überschneidungsprobleme bei der Anzeige zu vermeiden, sollten kurze Namen für die Achsenbeschriftungen gewählt werden.
Die Beschriftungen für die "t"- und "h"-Achse können mit der Beschriftungsanweisung ("x-label", "y-label", x, y) beliebig eingestellt werden, wobei x und y die Linie darstellen, auf der diese Beschriftungen geschrieben werden. Standardmäßig sind diese Linien 12 bzw. 2 für x bzw. y sowie links- bzw. rechtsbündig.
In ähnlicher Weise kann die Regressionsgleichung mit dem Befehl lin_reg(xlist, ylist, "disp", row) an der gewünschten Stelle angezeigt werden. Standardmäßig wird diese Gleichung in Zeile 11 angezeigt
Anwendung: Bewegungsablauf
LehrerinformationIn der Anwendung der Lektion 4 geht es darum, Daten aus der Photografie einer Bewegung zu gewinnen und unter Verwendung des Moduls ti_plotlib grafisch darzustellen.
Lernziele :
- Darstellung einer Punktwolke.
- Berechnung und Darstellung von Bewegungsvektoren eines durch Punkte modellierten Systems.
Schritt 1
Die Aufgabe : Die Bewegung eines Golfballes soll untersucht werden, der in regelmäßigen Abständen auf einem Photo abgebildet wurde. Dabei soll es um den zeitlichen Verlauf des Geschwindigkeitsvektors gehen. Die einzlnen Aufnahmen haben untereinander einen zeitlichen Abstand von 0,066 s und sind unten in einer Tabelle dargestellt.
Anmerkung: In Lektion 5 wird gezeigt, wie man mit dem Modul ti_system Messungen aus Rechnerlisten importieren kann.
t(s) | 0 | 0.066 | 0.132 | 0.198 | 0.264 | 0.33 | 0.396 | 0.462 | 0.528 | 0.594 | 0.66 |
x(m) | 0.01 | 0.25 | 0.57 | 0.91 | 1.22 | 1.54 | 1.87 | 2.16 | 2.49 | 2.81 | 3.15 |
y(m) | 0.015 | 0.34 | 0.681 | 1.01 | 1.297 | 1.559 | 1.768 | 1.95 | 2.08 | 2.158 | 2.193 |
Schritt 2
Das Programm :
1 : Eingabe der Messwerte und der Zeit.
- Das neue Programm erhält den Namen U4APP.
- Das Modul ti_plotlib wird importiert.
- Eingabe der Messwerte durch Auswertung des Photos.
2 : Bestimmung des Geschwindigkeitsvektors :
Der Geschwindigkeitsvektor vi im Intervall [ti ;ti+1] berechnet sich durch :
Für den letzten Messpunkt lässt sich der Vektor offenbar nicht berechnen.
Hinweis 1 : Zur besseren Lesbarkeit der grafischen Darstellung wird ein Skalierungsfaktor sk = 0.5 für den Geschwindigkeitsvektor verwendet.
Hinweis 2 : Der Befehl len(x) liefert die Anzahl der Elemente der Liste x.
Schritt 3
3 : Einstellungen der Grafik :
- plt.cls() löscht den Bildschirm.
- plt.title(« title ») gibt der Grafik einen Namen.
- plt.window(xmin, xmax, ymin, ymax) stellt das Grafikfenster ein.
- plt.grid(xscl, ysc, « type ») erzeugt ein Gitternetz mit dem Abstand 0.5.
- plt.color(255,0,255) stellt die Farbe Magenta dar.
- plt.scatter(x, y, « o ») stellt die Punktwolke der Messwerte dar.
- plt.color(0,0,0) lässt die Achsen in schwarz zeichnen.
- plt.pen(« medium », « solid ») stellt den Zeichenstift ein.
- plt.labels(« x(m) », « y(m) ») beschriftet die Achsen an den Standardstellen 12 rechts unten und 2 links oben.
4 : Die Vektoren werden durch eine For-Schleife mit n-1 Elementen dargestellt :
- plt.line(x0,y0,x1,y1, »arrow ») Länge und Endstil des Geschwindigkeitsvektors.
- plt.show() zur dauerhaften Darstellung der Grafik.
Schritt 4
Lässt man das Programm laufen, sollte sich eine Grafik wie nebenstehend ergeben.
Schritt 5
Das Bild ganz unten zeigt nur die y-Komponente des v-Vektors (bei sk=1 ; man beachte die nebenstehenden Änderungen in der Anweisung plt.line !). Man sieht sehr schön, dass sie zum Scheitelpunkt der Bahnkurve abnimmt.
Lehrertipp: Unter Bearbeiten steht eine Toolbox mit Kopier- und Einfügeanweisungen zur Verfügung, um die Bearbeitung eines Programmes zu erleichtern.
Bei komplexen Programmen hat man auch die Möglichkeit, ein Programm zu duplizieren. Man findet diese Möglichkeit unter Aktionen. Dort muss dann lediglich ein neuer Name für das duplizierte Programm vergeben werden.
- Übung 1
- Übung 2
- Übung 3
- Anwendung
Lektion 5: Anwenden von ti_system & ti_plotlib
Übung 1 : Arbeiten mit Listen
LehrerinformationIn dieser ersten Übung der Lektion 5 wird gezeigt, wie man mittels des Moduls ti_system Listen in Python importieren und auch aus Python exportieren kann.
Lernziele:- Importieren, exportieren und erstellen von Listen.
- Wiederholung der Grafikbefehle aus Lektion 4.
Schritt 1
Das Modul ti_system enthält Befehle zur Kommunikation mit dem grafischen Taschenrechner.
In dieser ersten Übung werden davon nur zwei verwendet :
var=recall_list(« name ») und store_list(« name »,var)
Die anderen Befehle werden in späteren Übungen verwendet.
Zuerst sollen im Taschenrechner zwei Listen erstellt und grafisch dargestellt werden.
Schritt 2
1 : Eingeben von Werten in den Taschenrechner
- Erstellen von zwei Listen xl und yl :
- Dazu wird eine neue Seite aus Lists & Spreadsheet eingefügt.
- Die Spalten werden in den Spaltenköpfen benannt.
- In xl wird über die abgebildete Anweisung die Folge der natürlichen Zahlen von 0 bis 12 erzeugt. Die Anweisung kann auch einfach mit der Tastatur geschrieben werden.
- Die Liste yl enthält die Werte der Funktion : 𝑥⟼−𝑥2/2+3𝑥+1
Dabei ist darauf zu achten, dass statt x die Bezeichnung der Listenspalte xl verwendet wird.
Schritt 3
- Grafische Darstellung
- Über die neue Seite Graphs gelangt man in ein Menü, in dem Streudiagramm ausgewählt werden muss.
- Für s1 muss dann die x- und y-Liste eingetragen werden. Hier hilft ein Druck auf da man dann die Listennamen bequem auswählen kann.
- Mit den Fenstereinstellungen xmin=-1xmax=8ymin=-1undymax=6er hält man das untere Bild.
Schritt 4
- Importieren der Werte in ein Python-Programm :
- Anlage eines neuen Programmes mit dem Namen U5SB1.
- Die Module ti_system und ti_plotlib importieren (Reihenfolge egal).
- Zwei leere Listenvariablen xx und yy erzeugen.
- Die leeren Listen xx und yy füllen mit den Inhalten von xl und yl. Dazu wird der Befehl var=recall_list(« name ») aus dem Modul ti_system verwendet. Der « name » ist der Listenname.
- Lässt man nun das Programm laufen, so kann man sich durch Drücken von oder direkter Eingabe des Listennamens den Inhalt der Listen xx und yy ansehen.
Lehrertipp : Die Erstellung von leeren Listen lx=[ ] und ly=[ ] ist nicht unbedingt erforderlich, da sie beim Abruf der Listen L1 und L2 erstellt werden. Es ist jedoch sinnvoll, die Gewohnheiten beizubehalten, die notwendig sind, wenn das ti_system-Modul nicht verwenden wird.
Schritt 5
- Grafische Darstellung
- Zunächst einmal muss die grafische Darstellung eingerichtet werden wie abgebildet.
- Dann kann man das Programm laufen lassen.
Schritt 6
- Exportieren von Werten aus einem Python-Programm
- Ein neues Programm mit dem Namen U5SB11 anlegen.
- ti_plotlib, ti_system und math importieren (Reihenfolge beliebig).
- Die Funktion data(a,b,h) programmieren.
- Es werden zwei leere Listen x und y angelegt, die später Werte aus dem Intervall [a ; b] enthalten, die mit der Schrittweite h erstellt werden
Lehrertipp: Durch die Erstellung von zwei leeren Listen wird vermieden, dass bei der Ausführung des Programmes ein Fehler gemeldet wird.
- Liste y enthält die Quadratwurzel der Werte aus Liste x.
- Die Listen werden nun mit einer For-Schleife gefüllt. Die append-Befehle bewirken, dass neue Elemente an die Liste angehängt werden. Die Listen haben also eine dynamische Länge.
- Die Listen werden mit dem Befehl store_list(« name »,var) in den Taschenrechner übertragen. var ist der Listenname im Programm, « name » die Nummer der Liste im Taschenrechner.
Schritt 7
Hinweis: Vorsicht mit der Einrückung, denn die store_list-Anweisungen müssen nicht in der Schleife stehen. Entweder mit zweimal oder den Einzuanweisungen aus dem Menü Bearbeiten lässt sich der Einzug verändern.
- Nun kann man das Programm laufen lassen. Scheinbar tut sich nichts.
- Erst wenn man Python verlässt kann man sich das Ergebnis bei Graphs ansehen.
Übung 2 : Modellierung
LehrerinformationIn dieser zweiten Übung der Lektion 5 wird gezeigt, wie man das Ergebnis einer Modellierung unter Verwendung des Moduls ti_system importiert.
Lernziele:
- Durchführung einer linearen Regression
- Importieren der Ergebnisse in ein Python-Programm.
Schritt 1
In dieser Lektion wird eine lineare Regression mit Daten durchgeführt, die zuvor in die Listen des Taschenrechners eingegeben wurden. Dann wird ein Programm geschrieben, um die Ergebnisse dieser Modellierung zu importieren, grafisch darzustellen, sie für eine Interpolation oder auch eine Extrapolation zu verwenden.
Die Aufgabe: An einem Tag erreicht der Stromverbrauch gegen 19:00 Uhr seinen Höhepunkt. Auf nationaler Ebene wurde am Mittwoch, den 15. Dezember 2019, um 19:02 Uhr ein Spitzenverbrauch von 96.350 Megawatt verzeichnet.
Nun soll ein lokales Kraftwerk und dessen nächste Umgebung betrachtet werden. An 10 Wochenenden hat man die Temperatur am Kraftwerk und die erzeugte Leistung gemessen. Die Messwerte sind in der Tabelle dargestellt. Eine Prognose für das nächste Wochenende soll daraus abgeleitet werden.
Schritt 2
°C | 11 | -5 | -8 | -6 | 9 | 14 | 4 | -1 | -12 | 3 |
MW | 3 | 5,7 | 6,6 | 6,3 | 3,4 | 2,7 | 4 | 5,1 | 7,1 | 4,6 |
Die Messwerte werden unter Lists & Spreadsheet in die zwei Listen t (Temperatur) und p (Leistung) eingetragen.
Im Menü unter Statistik und Statistische Brechnungen findet sich eine lineare Regression der Form 𝑦=𝑚𝑥+𝑏.
Schritt 3
Die Maske wird entsprechend dem nebenstehenden Bild ausgefüllt und die Regression in f1 gespeichert.
Die Abhängigkeit des Verbrauchs P von der Temperatur t lässt sich also beschreiben durch die lineare Funktion : P = − 0.18×𝑡+5.01 .
Unter Graphs lassen sich dann Daten und Regression gemeinsam darstellen.
Schritt 4
Verwendung der Modellierung in einem Python-Programm
- Anlegen eines neuen Programmes mit dem Namen U5SB2.
- Importieren der Module ti_system und ti_plotlib.
- Erzeugen zweier leerer Listen te = [ ] und po = [ ] .
- Füllen der Listen durch die Anweisung var=recall_list(« name ») aus dem Modul ti_system (s. Übung 5.1).
- Startet man nun das Programm, so kann man über die beiden Listen te und po aufrufen.
Schritt 5
- Zur grafischen Darstellung muss die Grafik wieder in der üblichen Weise eingerichtet werde.
Hinweis : Die Anweisung plt.auto_window(x_list, y_list) stellt die Fenstergrenzen automatisch nach den Extremwerten der Listen ein, funktioniert also ähnlich wie ZoomStat.
Lehrertipp : Die Anweisung lin_reg(xliste, yliste, « disp », row) beinhaltet die Möglichkeit einer zusätzlichen Angabe der Zeile, in der die Regressionsgleichung dargestellt werden soll. Im Beispiel ist es die 11. Zeile..
Schritt 6
Ergänzung : Vorhersage für den Verbrauch bei einer bestimmten Temperatur
Dazu wird eine kleine Funktion p(t) an das Programm angehängt. Durch die Anweisung eval_function(« f1 »,t) aus ti_system wird der Funktionswert der Funktion f1, also der Regressionsfunktion im Taschenrechner, für den Wert t bestimmt und in der Variablen pb gespeichert und anschließend angezeigt.
Man kann mit dem Programm einige Tests für verschiedene Temperaturen durchführen. So kann man die Gültigkeitsgrenzen des Modells festlegen, denn bei einer Umgebungstemperatur von 30°C müsste nach diesem Modell Energie ans Kraftwerk zurück geliefert werden …..
Übung 3 : Anzeigen und Zeiten
LehrerinformationIn dieser dritten Übung in Lektion 5 wird gezeigt, wie man die Anzeige- und "Timer"-Optionen im Modul ti_system, ti_plotlib und ti_time verwendet.
Lernziele:
- Verwendung dieser Befehle in einem Programm zusammen mit anderen Python-Befehlen..
Schritt 1
1 : Die Ausgabe – Befehle
In dieser Übung geht es um Textausgaben sowie verschiedene Befehle, die den Programmablauf steuern.
- Erstellen eines neuen Programmes mit Namen U5SB3.
- Die Module ti_system und ti_plotlib importieren.
- Den Befehl clear_history() einfügen.
- Nun das Programm aufrufen und ausführen. Man sollte ein Bild wie nebenstehend erhalten.
Der Befehl clear_history() löscht den kompletten Inhalt der Shell und setzt den Cursor oben in die erste Zeile des Bildschirms. Man erzeugt dadurch innerhalb eines Programmes einen Bildschirm, der von allen vorherigen Anzeigen frei ist.
Der Befehl lässt sich auch außerhalb eines Programmes in der Python-Shell ausführen und bewirkt ebenfalls ein « Säubern » des Bildschirmes. Alle bisherigen Eingaben sind nicht mehr verfügbar.
Hinweis : Für den Grafik-Bildschirm gilt dieser Befehl nicht !
Schritt 2
- Das Programm soll nun durch eine For-Schleife ergänzt werden, die den Befehl plt.text_at(row, « txt », « align ») aus dem Modul ti_plotlib enthält. Dier Befehl schreibt in der i. Zeile den angegebenen Text linksbündig, mittig oder rechtsbündig.
Hinweis : Man kann nicht in die 0. Zeile schreiben, da die Zeilenzählung mit 1 (oberste Zeile) beginnt.
So sieht die Ausgabe des Programmes nun aus. Es wird nur 4mal « Hallo » geschrieben, da die For-Schleife nur bis n-1 läuft.
Schritt 3
Das Programm soll nun noch um die Stringvariablen l, c, r ergänzt werden. Sie werden in einer Liste p (Position) zusammen gefasst. Der Listenindex beginnt mit 0 !
Bei der Ausführung des Programmes sollte das Wort in drei Zeilen verschoben dargestellt werden, denn der Schreibindex i des Wortes wird verschoben gemäß der Variablen in der p-Liste.
Ein Vorschlag zur Erweiterung: grafische Gedichte
Schritt 4
Die While-Schleife aus ti_system führt den nachfolgenden Befehl solange aus, bis die Taste gedrückt wird. Die für den Ablauf des Programmes unwichtige Anweisung k=0 ist notwendig, da sonst eine Fehlermeldung erfolgt, wenn zur While-Schleife keine Anweisung gehört.
Lehrertipp : Diese Befehlsfolge ist interessant, um den Schritt-für-Schritt-Ablauf eines Programmes zu beobachten, das z.B. eine Schleife enthält. Außerdem ist diese Form der While-Schleife sehr nützlich bei Programmen, die den Hub oder den Rover verwenden.
Ersetzt man die While-Schleife durch die Anweisung sleep(seconds), so pausiert das Programm für die angegebene Zeit. Allerdings muss dazu ein weiteres Modul time geladen werden.
Auf diese Weise wird das vorgeschlagene Wort im Abstand von 1 Sekunde an der Position angezeigt, die dem Wert der p[ i ] Liste entspricht.
Anwendung : Der freie Fall
LehrerinformationIn dieser Anwendung von Lektion 5 werden die in den Lektionen 4 und 5 vorgestellten Befehle verwendet, um eine Simulation zur Beschreibung einer Bewegung zu programmieren.
Lernziele:- Simulation einer Chronophotographie.
- Übertragen der errechneten Werte in Listen auf dem Taschenrechner.
Schritt 1
Mittels der Sprache Python soll ein physikalischer Vorgang simuliert werden. Es handelt sich dabei um den freien Fall :
- Das Programm beschreibt die Bewegung.
- Die grafische Darstellung der errechneten Werte soll in Form einer Chronophotografie erfolgen.
- Schließlich sollen die Werte in Listen exportiert werden..
Die Aufgabe : Ein Ball wird aus der Höhe h0 ohne Anfangsgeschwindigkeit fallen gelassen. Alle 60 ms wird der Ball photografiert.
Es soll ein Programm geschrieben werden, das diesen Vorgang simuliert. Die Ausgabe der Werte soll in einer Grafik erfolgen, die einer Chronophotografie ähnelt.Schritt 2
- Berechnung der Ballpositionen
Für den freien Fall aus einer Höhe h0 ohne Anfangsgeschwindigkeit gilt
mit y>0 und g = 9,81 m/s².
- Ein neues Programm mit dem Namen U5APP anlegen.
- Die Module ti_system und ti_plotlib einbinden.
- Den Bildschirm löschen.
- Eine Funktion fall(h) erstellen, die als Parameter die Fallhöhe h (=h0) enthält und die Position des Balles in Abhängigkeit von der Zeit berechnet.
- Drei Listen x, y und t anlegen.
- Die y-Werte werden im Abstand von jeweils 60 ms berechnet.
- Die Werte werden in Listen gespeichert, solange y>0 ist.
Verwendet wird eine For-Schleife. Die errechneten Höhen y werden auf 2 Stellen hinter dem Komma gerundet. Für die grafische Darstellung benötigt man noch die Liste der x-Werte, die nur aus Nullen besteht, da der Fall senkrecht nach unten erfolgt. Zum Schluss werden die Listen t und y exportiert in die Listen L1 und L2 des Taschenrechners.
Schritt 3
- Grafische Darstellung
Grafikeinstellungen :
- Grafikbildschirm löschen plt.cls().
- Raster mit dem Abstand 2 erzeugen plt.grid(xscl, yscl, type,(r,g,b)).
- Grafikfenster einstellen plt.window(xmin, xmax, ymin, ymax).
- Farbe festlegen (Magenta) plt.color(255,0,255).
- Die Punktwolke festlegen plt.plot(x-list, y-list, « mark »).
- Den Graphen anzeigen plt.show_plot().
Nun kann man das Programm laufen lasssen. Im Beispiel ist die Funktion fall() mit 8 (m Höhe) aufgerufen worden.
Es ergibt sich das nebenstehende Bild.
Lehrertipp :Man kann auch die Geschwindigkeiten des Balles berechnen und durch kleine Pfeile anzeigen lassen.
Schritt 4
- Anzeige der exportierten Daten
Dazu muss man Python verlassen und ein Streudiagramm s1 in Graphs anlegen, mit dem sich die Listen direkt darstellen lassen. Es ergibt sich nicht das Bild einer Chronophotografie, da hier yy = h (= y im Plot) in Abhängigkeit von tt (= x im Plot) dargestellt wird.
- Übung 1
- Übung 2
- Übung 3
- Anwendung
Lektion 6: Verwendung der Module ti_hub & ti_rover
Übung 1 : Die eingebauten Sensoren des Hub
LehrerinformationIn dieser ersten Übung von Lektion 6 wird gezeigt, wie das Modul ti_hub zur Steuerung der in den TI-InnovatorTM- Hub integrierten Geräte verwenden wird.
Lernziele:- Entdeckung des Moduls ti-hub.
- Erstellen eines Programmes, das die eingebauten Sensoren des TI-InnovatorsTM nutzt.
Schritt 1
In dieser Übung wird die ti_Innovator-Bibliothek verwendet, um Helligkeitsänderungen zu messen, so dass man einen Dämmerungsschalter simulieren kann oder um eine Messreihe bei Sonnenaufgang oder Dämmerung aufzuzeichnen.
Anschließend wird diese Bibliothek mit den bereits bekannten Modulen (ti_plotlib & ti_system) kombiniert, um die Messungen auch grafisch darzustellen.
Das Programm entspricht dem folgenden einfachen Algorithmus:
Schritt 2
Anlegen eines neuen Programmes mit dem Namen U6SB1.
Dieses Programm muss das Modul ti_hub enthalten. Dafür gibt es mehrere Möglichkeiten :
- Man wählt von vorneherein unter Typ das Hub Project. Dadurch werden mehrere Module bzw. auch nur einzelne Anweisungen aus diesen Modulen in das Programm mit eingebunden. Ob das immer ausreicht, ist fraglich. Allerdings kann man die Modul-Liste nachträglich verändern.
- Es ergibt sich das untere Bild.
- Oder man wählt – wie bisher – ein Programm ohne Vorauswahl. Das ist die Voreinstellung, wenn man ein neues Python-Programm anlegt.
- Allerdings muss dann das Modul hub extra geladen werden.
Schritt 3
Für das Programm wird der im TI-Innovator eingebaute Helligkeitssensor Brightness verwendet ebenso wie die eingebaute RGB-LED (Farbausgabe). Über das Menü ti-hub gelangt man zu diesen im Hub integrierten Geräten mit ihren entsprechenden Untermenüs, hier am Beispiel des Helligkeitssensors.
Schritt 4
Das Programm :
- Um Schwierigkeiten bei den Grafikbefehlen zu umgehen, wurde das Modul ti_plotlib komplett eingefügt (vergl. mit dem letzten Bild auf der ersten Seite).
- Nun kannn man den Bildschirm mit plt.cls() aus dem Modul ti_plotlib löschen.
- Dann wird die LED mit blauem Licht eingeschaltet.
- Anlegen einer Variablen lum0, die den Helligkeitswert enthalten wird. Mit dem Befehl brightns.measurement() wird eine Helligkeitsmessung ausgelöst und in lum0 gespeichert.
- Nun wird der Benutzer durch einen Text ( disp_at() ) aufgefordert, die Helligkeit zu ändern. Der Helligkeitssensor befindet sich an der unten abgebildeten Stelle.
Schritt 5
- Für diese Änderung hat er 3s Zeit. Dann läuft das Programm weiter.
- Anlegen einer neuen Variablen lum1 , in der der neue Helligkeitswert abgespeichert wird.
- Jetzt werden die Messungen miteinander verglichen. Je nachdem leuchtet die LED jetzt für 2s rot oder grün oder sie geht aus
Schritt 6
Eine mögliche Erweiterung:
Mit einem Programm soll während einer frei wählbaren Anzahl von Minuten im Abstand von 1 Minute die Helligkeit gemessen und in einer Liste abgespeichert werden.
Hinweis 1: Der Helligkeitssensor ist nicht in Lux geeicht. Das spielt in diesem Fall aber auch keine Rolle, da nur die Veränderung der Helligkeit erfasst werden soll, nicht der tatsächliche Messwert.
Hinweis 2: Will man die Veränderung der Helligkeit z.B. beim Sonnenuntergang messen, so darf während der Messung die Position des Sensors nicht verändert werden !
Schritt 7
Die Funktion bri(n) ermittelt während der Messzeit von n Minuten die Messwerte für die Helligkeit und speichert sie in der Liste h[ ]. Zugleich wird die Liste t[ ] der Messzeiten erzeugt.
Anschließend wird die Messung grafisch dargestellt und die Messwerte werden in die Listen tt und hh des Taschenrechners exportiert.
Übung 2 : Ein- und Ausgabegeräte
LehrerinformationIn der zweiten Übung der Lektion 6 wird gezeigt, wie man ein Ein- und Ausgabegerät am TI-InnovatorTM unter Zuhilfenahme des Moduls ti_hub verwendet.
Objectifs:- Entdecken des Moduls ti_hub.
- Schreiben eines Programmes, das einen « Grove »-Sensor verwendet.
Schritt 1
Als Beispiel für einen Sensor soll ein wichtiges Gerät dienen, das Potentiometer.
Ein Potentiometer ist ein veränderlicher Widerstand. Es besteht aus einer an beiden Seiten mit Kontakten versehenen kreisförmigen Widerstandsbahn, auf der ein drehbarer Kontakt schleift. Schließt man an die Kontakte der Schleifbahn eine Spannung an, so wird durch den Schleifkontakt eine Teilspannung eingestellt.
Potentiometer werden z.B. für die Lautstärkeregelung bei Verstärkern und Radios verwendet, da sie die variable Einstellung einer Spannung ermöglichen. Man kann sie auch als Winkelgeber verwenden, wenn man den eingestellten Widerstand in eine Drehbewegung umwandelt.
Im Beispielprogramm soll die durch den Schleifkontakt eingestellte Spannung gemessen und angezeigt werden.
Schritt 2
Anmerkung: Der Sinn dieser Lektion besteht nicht darin, den Sensor selbst zu studieren, sondern ihn in ein Python-Programm zu integrieren, um die Informationen zu erhalten, die er liefern soll. Das Programm, das erstellt wird, lässt sich also leicht auf jeden anderen Sensor übertragen.
Das Programm:
- Es wird ein neues Programm mit dem Namen U6SB2 als Hub Project angelegt.
- Danach sieht das Programm wie abgebildet aus.
- Das Modul ti_system sollte man etwas allgemeiner halten, indem man get_key löscht und durch * ersetzt.
- Säubern des Bildschirmes durch clear_history() aus dem Modul ti_system.
- Anlegen der Funktion poti().
- Einfügen des Potentiometers als externen Sensor an Port IN1.
Schritt 3
- Die Variable soll mes heißen.
- Ein Auswahlmenü stellt die möglichen Ports für den Input bereit.
- Es wird IN 1 gewählt. Die Variable mes ist damit mit dem Port IN 1 verbunden. Alle Aktionen laufen nun über mes.
Hinweis : Alle Sensoren (input devices) benötigen mindestens zwei Variablen :
- var1 = sensor(« port ») ordnet var1 einem Eingang port zu
- var2 = var1.measurement() löst die Messung aus und überträgt den Messwert in var2
Schritt 4
- Die Variable v nimmt nun die Messwerte auf, nachdem mes zur Durchführung einer Messung aufgefordert wurde..
- Nun kann man überprüfen, ob der Sensor funktioniert.
- Dazu muss der TI-InnovatorTM mit dem Taschenrechner verbunden werden. Der Sensor wird mit dem Port IN1 verbunden und die Achse des Potentiometers etwa in eine Mittenstellung gedreht.
- Aufrufen der Funktion poti( ).
- Man erhält ein Ergebnis ähnlich wie das abgebildete. Dabei handelt es sich nicht um eine Spannung, denn die Betriebsspannung des Potentiometers ist 3,3 V. Es müsste sich eine Spannung im Intervall 0 V bis 3,3 V einstellen.
Schritt 5
- Man muss noch die Auflösung des Analogwandlers berücksichtigen. Sie beträgt 14 Bit ; also erhält man die Spannung u durch
- Die Spannung wird auf 2 Stellen gerundet..
- Nun kann man die Spannung direkt ablesen.
Ein paar weiterführende Ideen :
- Das Potentiometer kann dazu verwendet werden, um einen Drehwinkel anzuzeigen. Der Zusammenhang
𝛼=𝑓(𝑢) kann dann auch grafisch veranschaulicht werden.
- Man kann auch einen Punkt auf und ab wandern lassen, ähnlich wie mit einem Joystick..
Übung 3 : Der Rover
LehrerinformationIn dieser dritten Übung der Lektion 6 soll gezeigt werden, wie man die Anweisungen aus dem Modul ti_rover in ein Programm einbindet.
Objectifs:- Entdeckung des Moduls ti_rover.
- Schreiben eines Programmes, das die Sensoren des Rovers mit Fahrbefehlen verknüpft.
- Verwendung einer While-Schleife.
Schritt 1
In dieser Lektion wird ein Programm erstellt, mit dem der ROVER 2m geradeaus fährt. Trifft er auf ein Hindernis, leuchtet die RGB-LED auf dem ROVER rot und der ROVER hält an. Solange er fährt, leuchtet die LED grün. Die Entfernung zum Hindernis wird mit dem Ultraschall-Entfernungssensor RANGER gemessen. Mit kann das Programm vorzeitig beendet werden. Ist die Fahrt beendet, so muss gedrückt werden und die LED leuchtet kurz blau auf :
Schritt 2
- Ein neues Programm mit dem Namen U6SB3 anlegen.
- Den Programm-Typ Rover Programmierung auswählen.
- Man erhält das nebenstehende Bild.
Schritt 3
- Mit clear_history() aus dem Menü ti_system den Bildschirm säubern.
- Der ROVER soll vorwärts fahren. Die zu fahrende Strecke ist in Einheiten zu 0,1m anzugeben. Somit weist rv.forward(20) dem Roboter eine Vorwärtsbewegung über eine Distanz von 2 m zu. Die Anweisung rv.forward( ) befindet sich im Menü, dann TI Rover und dann Rover fährt.
- Beim Starten der Bewegung leuchtet die LED auf dem ROVER grün. Die Anweisung dazu findet sich im Rover-Menü unter Ausgaben.
Schritt 4
- Für den Abbruch der Bewegung ist es sinnvoll, eine While-Schleife aus dem Modul ti_rover in das Programm einzufügen.
- Anlegen einer Variablen a, in der die Entfernungsmessung des RANGERs abgespeichert wird. Hinter der Zeichenfolge a= wird die Anweisungrv.ranger_measurement( ) aus dem Menü ti_rover und dann Eingaben eingefügt. Die Masseinheit für die Entfernung ist m.
- Mit einer If-Anweisung wird das weitere Verhalten gesteuert. Ist die Entfernung kleiner als 20cm, wird der ROVER angehalten und die LED leuchtet rot. Die Anweisung rv.stop( ) ist eine Fahr-Anweisung und befindet sich im Menü Rover fährt. Andernfalls leuchtet die LED grün und der ROVER fährt die in forward() eingestellte Strecke.
- Durch Drücken von kann das Programm vorzeitig beendet werden. Ohne Hindernis hält der ROVER nach 2m an. Dann sollte auf jeden Fall d gedrückt werden, um das Programm zu beenden.
- Die letzten Anweisungen :
- Den ROVER auf jeden Fall anhalten durch rv.stop().
- Die LED leuchtet für 1s blau.
- Die LED auf jeden Fall ausschalten, da sie sonst weiter leuchtet.
- Der Bildschirm wird gelöscht mit clear_history() (nicht mit abgebildet).
Anwendung : Polygone
LehrerinformationIn dieser Anwendung von Lektion 6 soll ein Programm erstellt werden, mit dem der ROVER während einer Fahrt Koordinaten von Punkten aufnimmt, um sie dann grafisch darzustellen. Genutzt werden regelmäßige Vielecke.
Lernziele:- Entwicklung eines Programmes, das die Elemente von ti_rover nutzt..
- Verwendung einer For-Schleife.
- Grafische Darstellung von Koordinatenpunkten.
Schritt 1
Zunächst muss dazu ein Programm geschrieben werden, mit dem der ROVER regelmäßige Vielecke abfährt. Die Koordinaten der Eckpunkte werden in Listen festgehalten, die die Grundlage sind, um eine Zeichnung mittels ti_plot zu erstellen. Zugleich werden die Koordinaten in Listen auf dem Taschenrechner gespeichert.
Schritt 2
Das Programm :
- Anlegen eines neuen Programmes mit dem Namen U6APP.
- Als Programmtypyp wird Rover programmieren verwendet.
Schritt 3
- Obwohl es nicht wirklich notwendig sind, sieht es besser aus, wenn man den Bildschirm löscht. Die Anweisung clear_history() befindet sich im Modul ti_system.
- Anlegen einer Funktion poly() mit dem Argument n, der Anzahl der Kanten, sowie l, der Länge einer Kante, in der voreingestellten Einheit von 1dm.
- Der Winkel, um den der ROVER sich an jeder Ecke des Polygons drehen muss, beträgt .
- Anlegen der Listen xx und yy für die Koordinaten der Eckpunkte.
Schritt 4
- Anlegen einer For-Schleife zur Erstellung des Polygons. Die darin enthaltenen Anweisungen werden n-mal ausgeführt.
Die folgenden Anweisungen befinden sich im Modul ti_rover.
- Geradeausfahrt um l dm.
- Pause von 2s.
- Linksdrehung um den Winkel a.
- Pause von 2s.
- Abspeichern der Koordinaten der Eckpunkte in xx und yy.
- Verbindung des ROVERs mit dem Taschenrechner aufheben.
- xx und yy in die Listen x und y exportieren.
Lehrertipp : Die Anweisungen rv.waypoint_x() und rv.waypoint_y() findet man im Menü I/O und dann 3 : Path im Modul ti_rover.
- Erstellen der Grafik wie bisher schon behandelt. Es ist auch eine grafische Darstellung außerhalb Pythons durch die Listen x und y möglich.
Schritt 5
Ergebnis :
Startet man das Programm und ruft man über die Funktion poly( ) mit den Argumenten poly(4, 2) auf, so erhält man die Eckpunkte eines Quadrates von 2 dm Seitenlänge. Es sollte sich ein Bild ähnlich wie rechts abgebildet ergeben. Durch Reibung während des Drehens kann die Figur zudem leicht verzerrt aussehen.
So sieht die Grafik bei einem Hexagon aus, wenn die Drehungen nicht so gut ausgeführt sind.
Schritt 6
Mit den in den Taschenrechner exportierten Listen lässt sich die nebenstehende Grafik erzeugen, deren Punkte man mit abtasten und die Koordinaten bestimmen kann.
Lehrertipp: Für diese Art von Übung sollte man nicht die Anweisungen rv.pathlist_x () und rv.pathlist_y () verwenden.
Tatsächlich zeichnet der Rechner beim Zeichnen einer Seite des Polygons die Koordinaten der Eckpunkte dieser Strecke auf. Die Koordinaten des letzten Punktes sind also die Koordinaten des ersten Punktes der nächsten Seite. Mit den Anweisungen rv.pathlist_x () und rv.pathlist_y () erhält man die Eckpunktkoordinaten also doppelt.
Hinweis: Das Format des Rasters sollte man abhängig von den Polygonen machen, die gezeichnet werden sollen. Hier wurden die Standardeinstellungen verwendet, um die Genauigkeit der ROVER-Spur zu beobachten.
Man sollte auch auf die Art der Oberfläche achten, auf der sich der Roboter bewegt. Diese sollte nicht zu viel Widerstand gegen Bewegung leisten oder im Gegenteil das Rutschen fördern. Es ist auch auf eine gute Beweglichkeit der Kugel zu achten – andernfalls ergibt sich halt ein Bild wie oben …
- Übung 1
- Übung 2
- Übung 3
- Anwendung
Lektion 7: micro:bit und Python
Übung 1: Das Display
LehrerinformationIn dieser Einheit wird gezeigt, wie man das Display des micro:bit auf verschiedene Weise ansteuern kann. Die Einheit hat zwei Teile:
- Teil 1: Alien.Begegnung
- Teil 2: Darstellung von Bildern
Lernziele:
- Ansteuern des Displays auf dem micro:bit durch die Befehle .show( ), .scroll( ) und .show(image)
- Steuern der Geschwindigkeit des Displays durch sleep(ms)
Schritt 1
Bevor man anfängt, sollte man überprüfen
- dass der TI-NspireTM CX II-T das OS 5.3 oder höher hat
- dass man die Übungen 1 – 6 der Programmierung in Python erfolgreich absolviert hat.
- dass das micro:bit mit dem TI-NspireTM CX II-T verbunden ist.
- dass das in der Anleitung zum micro:bit beschriebene SetUp einschließlich der Übertragung des dort beschriebenen Prorammes erfolgt ist: https://education.ti.com/en/teachers/microbit
Das SetUp muss nur einmal durchgeführt werden, allerdings sollte man sich über Updates informieren, um das micro:bit stets aktuell zu halten.
Schritt 2
Wenn alle Bedingungen erfüllt sind, sollte das micro:bit so aussehen, wenn es vom TI-NspireTM CX II-T mit Strom versorgt wird: Das Display auf dem micro:bit zeigt das TI-Logo, ein Icon des Bundesstaates Texas mit einem hellen Fleck in der Nähe von Dallas, der Heimat von Texas Instruments, Inc.
Schritt 3
Das micro:bit – Modul ist jetzt in der Python-Bibliothek installiert Drückt man im Python-Editor [menu] > Weitere Module, so sieht man, dass das BBC micro:bit unterhalb der TI-Module gelistet ist. Die Module werden alphabetisch nach ihrem Dateinamen aufgelistet, deshalb erscheint das BBC micro:bit nicht unter den B’s, sondern unter den m’s.
Schritt 4
Teil 1: Alien-Begegnung: Natürlich geht es los, wie bei jeder anderen ersten Programmiererfahrung, mit der Anzeige einer Meldung auf dem micro:bit-Display.
Starten Sie ein neues TI-Nspire-Dokument und wählen Sie Python > Neu, um ein neues Programm (leeres Programm) mit dem Namen "alien" hinzuzufügen. Verwenden Sie im Python-Editor [menu] > Weitere Module > BBC micro:bit, um die Importanweisung oben in den Menüpunkten auszuwählen:
from microbit import *
Tipp: Wenn jemals die Meldung 'micro:bit not connected' erscheint, trennen Sie einfach das micro:bit und stecken Sie es wieder ein (reset).
Schritt 5
Um eine Textnachricht auf dem micro:bit-Display anzuzeigen, verwenden Sie die Anweisung:
display.show(image or text)
Diese Anweisung finden Sie auf:
[menu] > More Modules > BBC micro:bit > Display > Methods
Die Anweisung wird als display.show(images or text) eingefügt, aber images or text ist nur ein Platzhalter, der durch etwas ersetzt werden muss. Ersetzen Sie es durch ihre Nachricht in Anführungszeichen:
“greetings, earthlings”
Wenn Sie dieses Programm ausführen, indem Sie [ctrl] [R] drücken, werden die Buchstaben Ihrer Nachricht einer nach dem anderen sehr schnell auf dem Display angezeigt. Die Kleinbuchstaben "e" erscheinen zwar zweimal, aber Sie können sie nicht unterscheiden.
Wenn Sie einen Fehler machen.... Gehen Sie zurück zur ersten Seite, um Ihr Programm zu bearbeiten, und führen Sie das Programm dann erneut aus. Haben Sie vergessen, den Text, den Sie anzeigen möchten, mit Anführungszeichen zu ergänzen?
Schritt 6
Eine bessere Methode zum Anzeigen von Meldungen ist:
display.scroll(“greetings, earthlings”)
die auch auf
[menu] > More Modules > BBC micro:bit > Display > Methods
zu finden ist.
Um die .scroll( )-Anweisung abzuschließen, können Sie die Zeichenfolge aus der .show-Anweisung kopieren/einfügen
Machen Sie die vorherige .show()-Anweisung zu einem Kommentar (#comment), indem Sie den Cursor in diese Zeile platzieren und drücken Sie dann [ctrl] [T]), um sie zu deaktivieren. Führen Sie das Programm dann erneut aus.
Ja, Sie können auch einfach. .show zu .scroll durch überschreiben ändern
Schritt 7
Die .scroll()-Methode bewirkt, dass die Nachricht wie ein Banner über das Display von rechts nach links scrollt (sich bewegt), was das Lesen erleichtert.
Sie können die Geschwindigkeit des Bildlaufs steuern, indem Sie den Delay= - Parameter hinzufügen:
display.scroll(“greetings, earthlings”, delay = 200)
der eine Verzögerung von 200 Millisekunden (0,2 Sekunden) beim Scrollen hinzufügt. Versuchen Sie es auch mit anderen Verzögerungswerten.
Schritt 8
Teil 2: Schlagendes Herz (Beating.Heart)
Drücken Sie [ctrl] [doc], um eine neue Seite dem Dokument hinzuzufügen, und wählen Sie Python hinzufügen > Neu , um ein neues Python-Programm zu erstellen. Im Beispiel heißt es ‘beat’.
Über [menu] > Weitere Module > BBC micro:bit fügen Sie nun hinzu:
from microbit import *
Schritt 9
Mit der Anweisung
display.show()
kann das Bild eines Herzens dargestellt werden. Diese Anweisung findet man unter:
[menu]>More Modules>BBC Micro:bit>Display>Methods
Den Platzhalter innerhalb der Klammern ersetzt man durch das Bild HEART aus [menu] > Weitere Module > BBC micro:bit > Display > Images > Set 1> Heart:
Image.HEART
Schritt 10
Lässt man nun das Programm laufen, indem man [ctrl] [R] drückt, so sieht man das nebenstehend abgebildete HEART-Icon auf der 5x5 LED-Matrix. Das Bild bleibt bestehen, solange es nicht durch etwas anderes ersetzt wird, selbst wenn das Programm beendet ist.
Schritt 11
Es gibt auch noch ein kleines Herz, das ebenfalls abgebildet werden soll:
display.show(Image.HEART_SMALL)
Hinweis: Man kann natürlich auch die erste display-Anweisung durch copy/paste einfügen und weiter editieren. Für _SMALL. benötigt man den Unterstrich und man muss Großbuchstaben verwenden.
Schritt 12
Führen Sie das Programm erneut aus. Es zeigt schnell das große Herz an und dann das kleine Herz, das nebenstehend abgebildet ist.
Schritt 13
Fügen Sie eine Schleife ein: Um die beiden Herzen dazu zu bringen, wiederholt zu blinken ("Schlagen"), schließen Sie die beiden Anzeigeanweisungen in eine Schleife ein. Vor den beiden Anzeigeanweisungen muss dabei die Anweisung eingefügt werden:
while get_key() != ”esc”:
Man findet sie unter
[menu] > Weitere Module > BBC micro:bit > Commands
Wichtig: Rücken Sie die beiden Anzeigeanweisungen so ein, dass sie den Schleifenkörper bilden. Das Programm kann nun jederzeit durch Drücken von [esc] angehalten werden.
Wichtiger Hinweis: Einrückungen sind in Python-Programmen von entscheidender Bedeutung, denn so idenfiziert Python Schleifenblöcke und If-Blöcke. Wenn die beiden Anzeigeanweisungen nicht mit der gleichen Anzahl von Leerzeichen eingerückt sind, wird ein Syntaxfehler angezeigt. Verwenden Sie die [Leerzeichen]- oder [Tabulatortaste], um die beiden Zeilen in gleicher Höhe einzurücken. Einzugsräume werden in diesem Editor als hellgraue Diamantsymbole (♦♦) angezeigt, um die korrekte Einrückung zu unterstützen.
Schritt 14
Führen Sie Ihr Programm noch einmal aus und beobachten Sie das schlagende Herz! Drücken Sie die [Esc]-Taste, um das Programm zu beenden.
Hinweis: Wenn Sie denken, dass Ihr Programm in einer Endlosschleife steckt, drücken und halten Sie die Taste [home/on] auf Ihrem TI-Nspire gedrückt, um das Programm zu "unterbrechen". Dies kann passieren, wenn Sie while aus dem Menü "Befehle" nicht ordnungsgemäß verwenden.
Schritt 15
Das Menü micro:bit Commands enthält einige nützliche Python-Befehle, die auch in anderen Menüs zu finden sind. Das micro:bit-Modul importiert diese Python-Befehle für Sie.
Darüber hinaus können Sie natürlich auch alle anderen Python-An weisungen verwenden, wenn sie zur Ausführung des Programmes notwendig sind.
Schritt 16
Um die schlagende Herzfrequenz zu steuern, fügen Sie zwei sleep()-Anweisungen hinzu, eine nach jeder Anzeigeanweisung :
sleep(1000)
bedeutet 1000 Millisekunden oder 1 Sekunde Verzögerung.
Die Anweisung findet man ebenfalls in [menu] > Weitere Module > BBC micro:bit > Commands
Hinweis: Beachten Sie die Einrückung!
Schritt 17
Erweiterung: Versuchen Sie 'Gesichtermachen'. Verwenden Sie eine ähnliche Programmstruktur wie "Beating Heart", aber verwenden Sie stattdessen die Gesichtsbilder in Set 1.
Übung 2: Tasten und Gesten
LehrerinformationIn dieser Lektion erfahren Sie, wie Sie die micro:bit-Tasten und -Gesten verwenden, um dann ein Programm schreiben, das einen Würfelwurf simuliert , dessen Werte in einer Liste gesammelt werden, die in ein Datendiagramm übertragen werden soll.
Diese Lektion besteht aus zwei Teilen:
- Teil 1: Untersuchen von Tasten und Gesten
- Teil 2: Verwenden einer Taste oder einer Geste zum Erzeugen von Daten
Lernziele:
- Lesen und verarbeiten Sie die Zustände der A- und B-Taste auf dem micro:bit
- Lernen Sie den Unterschied zwischen .was und .is kennen
- Übertragen von Daten mit Python zu TI-NspireTM CX II-T
- Untersuchen Sie die vom micro:bit gesammelten Daten
- Verwenden von Gesten zur Steuerung der Anzeige
Schritt 1
Das micro:bit verfügt über zwei Tasten mit den Bezeichnungen A und B auf jeder Seite des Displays. Das python micro:bit-Modul verfügt über zwei ähnliche Methoden zum Lesen der Tasten und zum Ausführen von Aufgaben basierend auf diesen Tasten. Zuerst testen Sie die Methoden und schreiben dann ein Programm, mit dem Sie Daten sammeln und an anderer Stelle im TI-NspireTM CX II-T analysieren können.
Es gibt auch einen 3-Achsen-Beschleunigungsmesser / Kompasschip auf der Rückseite des micro:bit und Methoden zur Interpretation von micro:bit-Bewegung und -Orientierung.
Schritt 2
Teil 1: Untersuchen von Schaltflächen und Gesten
Zunächst einmal sollte ein neues Dokument erzeugt werden; im Beispiel heißt es taster_gesten.
Über [menu] > Weitere Module > BBC micro:bit wird als erstes die import – Anweisung eingefügt:
from microbit import *
Schritt 3
Hinzufügen einer while-Schleife:
while get_key()! = ’esc’:
aus
[menu] > More Modules > BBC micro:bit > Commands.
So sehen die meisten Programme dieser Lektion aus.
Schritt 4
Um die Taste A zu testen, wird eine Verzweigung if eingeführt:
◆◆if button_a.was_pressed():
◆◆◆◆print("Taster A")
if ist eingerückt, um Teil der while-Schleife zu sein und print( ) wird noch mehr eingerückt, um Teil des if-Blocks zu sein. Denken Sie daran, dass die richtige Einrückung in Python sehr wichtig ist. Der falsche Einzug kann zu Syntaxfehlern oder einer fehlerhaften Ausführung des Codes führen. Beachten Sie die hellgrauen Diamantsymbole (◆◆), die diesen Einzug markieren.
if findet man in [menu] > Eingebaute > Control.
Die Bedingung button_a.was_pressed() findet man in
[menu] > Weitere Module> BBC micro:bit > Buttons and Logo Touch
print( ) ist im Menü [menu] > Eingebaute > I/O
Der Text „Taster A“ muss in die Klammern bei print( ) geschrieben werden.Hinweis: is_pressed() wird später behandelt.
Schritt 5
Nun kann das Programm getestet werden. Drücken Sie [ctrl] [R], um das Programm auszuführen. Es sieht so aus, als würde nichts passieren. Drücken und lösen Sie die Taste A am micro:bit. Auf dem Rechnerbildschirm wird "Taste A" angezeigt. Jedes Mal, wenn Sie die Schaltfläche drücken und lösen, wird der Text wie in diesem Bild angezeigt.
Drücken Sie [esc] und kehren Sie zum Python-Editor zurück.
Schritt 6
Fügen Sie eine weitere if-Anweisung hinzu, um Taste B mithilfe der Bedingung button_b.is pressed() zu überprüfen. Beachten Sie, dass "IS" sich von "WAS" unterscheidet.
Sie werden bald sehen, wie sie sich unterscheiden .
◆◆if button_b.is_pressed():
◆◆◆◆print("Taste B")
Tipp: Achten Sie auch hier auf die Einrückungen!
Schritt 7
Führen Sie das Programm erneut aus (drücken Sie [ctrl] [R]). Probieren Sie die beiden Tasten A und B aus.
Tippen Sie auf jede Taste und halten Sie jede Taste gedrückt. Sie sehen Taste B' wiederholt angezeigt, solange Taste B gedrückt gehalten wird, aber nicht Taste A'. Es gibt einen Unterschied zwischen .was_pressed() (ein Loslassen der Taste zum Zurücksetzen ist erforderlich) und .is_pressed() (es wird die überprüft, ob die Taste in dem Moment, in dem die Anweisung verarbeitet wird, gedrückt ist).
Hinweis: Wenn Sie schnell auf Taste B tippen, zeigt das Programm möglicherweise nicht Taste B an, da die Taste in dem Moment, in dem die if-Anweisung verarbeitet wird, noch nicht wieder losgelassen wurde.
Schritt 8
Einführung von Gesten. Der micro:bit verfügt über einen elektronischen Beschleunigungsmesser, der Beschleunigungskräfte in drei verschiedene Richtungen messen kann (ein 3-Achsen- oder 3D-Beschleunigungsmesser). Neben numerischen Werten für die Beschleunigung in jede Richtung (siehe Bild) bietet der micro:bit auch einfache, leicht verständliche "Gesten" wie "Face up" und "Face down", die auf diesen Richtungswerten basieren.
In dieser Lektion werden die Gesten untersucht und gezeigt, wie Sie sie bei der Programmierung Ihres TI-NspireTM CX II-T mit micro:bit verwenden können.
Schritt 9
Abrufen des Gestenwerts und Speichern in der Variablen g:
◆◆g = accelerometer.current_gesture()
Zunächst ◆◆g = schreiben (Einrückung beachten!)
Dann accelerometer.current_gesture() entnehmen aus
[menu] > Weitere Module > BBC micro:bit > Sensors > Gestures >
Dann soll noch der Wert von g dargestellt werden:
◆◆print(g)
Erinnerung: print( ) findet man in [menu] > Eingebaute > I/O
Beachten Sie, dass diese beiden Anweisungen so eingerückt werden, um Teil der while-Schleife zu sein, aber nicht Teil der if-Anweisung darüber. Denken Sie daran, dass die Einrückung jeder Zeile die Bedeutung bestimmt, also SEIEN SIE VORSICHTIG!
Schritt 10
Führen Sie das Programm aus und beobachten Sie, wie der Taschenrechner die verschiedenen Werte anzeigt, während Sie das micro:bit in der Luft bewegen. Drehen Sie micro:bit um, stellen Sie es auf jede Kante, schütteln, rasseln und rollen Sie es. Ein Teil eines Beispiellaufs ist in dieser Abbildung dargestellt.
Einige der verfügbaren Gesten sind: face up, face down, up, down, left, right, shake. Diese werden als Zeichenfolgenwerte zurückgegeben. Können Sie all diese Gesten auf Ihrem Bildschirm sehen?
Schritt 11
Deaktivieren Sie die letzten beiden Zeilen, indem Sie sie als Kommentar kennzeichnen ([ctrl][T]) und fügen Sie die beiden neuen Zeilen hin zu:
if accelerometer.was_gesture(“face down”):
◆◆print(“face down”)
Man findet die Anweisung zu den Gesten wieder in:
menu]>More Modules>BBC micro:bit>Sensors>Gestures.
Man kann die Anweisungen einfach schreiben, aber in der .was_gesture()-Methode muss der Text genau mit dem Menüpunkt übereinstimmen.
Wenn Sie dieses Programm ausführen, werden Sie die Änderung in der Ausgabe bemerken:
.current_gesture() druckt die Geste ständig.
.was_gesture() druckt nur, wenn sich die Geste ändert.
Schritt 12
Tasten und Gesten sind zwei Möglichkeiten, Eingaben vom micro:bit zu erhalten und Ergebnisse entweder auf dem TI-NspireTM CX II-T-Bildschirm oder dem micro:bit-Display zu erzielen... oder beides.
Im nächsten Teil dieser Lektion wird ein Programm erstellt, das mit dem micro:bit einige Daten für weitere Untersuchungen auf dem TI-NspireTM CX II-T erzeugt.
Schritt 13
Teil 2: Würfelwurf
Wenn Taste A gedrückt wird, soll eine zufällige ganze Zahl von 1 bis 6 erzeugt und einer Variablen zugewiesen werden. Sie können Taste A, aber auch Taste B oder eine Geste Ihrer Wahl verwenden.
Der Wert soll nur auf dem micro:bit angezeigt werden. Probieren Sie es selbst aus, bevor Sie sich den nächsten Schritt ansehen. Wir werden das aktuelle Programm verwenden und Code hinzufügen, um den Würfelwurf zu simulieren.
Wissen Sie, welche Zahl sich auf der Unterseite des abgebildeten Würfels befindet?
Schritt 14
Das Modul Zufallszahl aus [menu]>Zufallszahl muss hinter dem micro:bit-Modul eingefügt werden und daraus die Anweisung randint(1,6) an der hervorgehobenen Stelle:
from random import * und randint()
Die Anweisung ◆◆◆◆w = randint(1, 6) muss manuell ergänzt werden, wobei man wieder auf die Einrückung achten muss, da sie zum if-Block gehört.
Schritt 15
Jetzt muss noch durch
display.show(w)
der „gewürfelte“ Wert w auf dem micro:bit angezeigt werden.
Führen Sie das Programm erneut aus. Jedesmal wenn Sie die Taste A drücken, sehen Sie 'Taste A' auf dem Handheld-Bildschirm und die Zahl auf dem micro:bit-Display ändert sich... aber nicht jedes Mal, denn manchmal ist die Zufallszahl die gleiche wie beim letzten „Wurf“. Das ist in Ordnung.
Schritt 16
Sammeln von Daten: Auf Knopfdruck zu würfeln, ist zwar nett, aber für weitere Studien wäre es hilfreich, all diese Werte zu speichern, damit man die Daten interpretieren kann: Welche Zahl tritt am häufigsten auf? Was ist die durchschnittliche Zahl? Und so weiter...
Fügen Sie dem Programm Anweisungen hinzu, um:
- eine leere Liste zu erstellen
- einen Wert zu dieser Liste hinzuzufügen (.append)
- die Liste von Python im TI-Nspire CX II-System zur Analyse zu speichern
Jede dieser drei Aufgaben wird in Anweisungen übersetzt, die an speziellen Stellen im Programm platziert werden. Probieren Sie es selbst aus, bevor Sie mit dem nächsten Schritt fortfahren.
Schritt 17
Zunächst muss eine leere Liste erzeugt werden:
wuerfe = [ ]
Die Klammern finden sich auf der Tastatur und in [menu] > Eingebaute > Listen
Ein Wurf wird der Liste hinzugefügt durch:
wuerfe.append(w)
.append() findet man in [menu] > Eingebaute> Listen
Zuletzt wird die Liste in einer TI-nspire-Liste gepeichert:
store_list(“wurf”, wuerfe)
Die store_list – Funktion befindet sich in [menu] >BBC micro:bit >Commands
Hinweis: Die kommentierten und alle überflüssigen Zeilen wurden entfernt oder ausgeblendet, damit der gesamte Code auf einen Bildschirm passt.
Schritt 18
Wenn Sie das Programm jetzt ausführen, drücken Sie mehrmals die Taste A und zum Schluss [esc], um das Programm zu beenden. Ihr Python-Programm hat eine Liste namens "wuerfe" und jetzt hat Ihr TI-NspireTM CX II-T auch eine Liste namens "wuerfe". Dies sind zwei separate Listen.
Drücken Sie [ctrl]-[doc] oder [ctrl]-[I], um eine Data & Statistics-Seite hinzuzufügen. Man sieht eine Wolke aus verstreuten Punkten. Klicken Sie unten in der App auf die Meldung 'Klicken Sie hier, um eine Variable hinzuzufügen' und wählen Sie die Liste aus. Sehen Sie den Bildschirm rechts? Jeder Punkt repräsentiert einen Ihrer Würfelwürfe. Welche Informationen können Sie aus diesem Diagramm entnehmen? Können Sie das Diagramm in ein Histogramm ändern? Tipp: Überprüfen Sie das [Menü] der App.
Sie können dieses Programm auf verschiedene Arten ändern. Zum Beispiel: Zeigen Sie mit print() an, wie oft Sie gewürfelt haben.
Hinweis: Wie man leicht sieht, haben die Taste B und eine Geste keinen Einfluss auf den Würfel. Versuchen Sie, Ihren Code so zu ändern, dass ein Wurf nur dann erfolgt, wenn Sie das micro:bit "schütteln".
Und zuletzt: Denken Sie daran, Ihr Dokument zu speichern!
Schritt 19
Erweiterung:
- Rücken Sie die Anweisung store_list() ein, sodass die Liste jedesmal im TI-nspire gespeichert wird, wenn man die Taste A drückt.
Schritt 20
Führen Sie das Programm aus, indem Sie [ctrl] [R] auf der Shell drücken. Drücken Sie die Taste A auf dem micro:bit, um mit dem Würfeln zu beginnen und das Punktdiagramm wachsen zu sehen!
Das Diagramm zeigt zunächst "Keine numerischen Daten" an, da die Zählliste ja vom Programm geleert wurde, aber keine Angst: Drücken von Taste A beginnt mit dem Plotten der Daten.
Schritt 21
Anstatt bei jedem Tastendruck nur "Taste A" zu drucken, können Sie die gesamte Liste der Würfe drucken. Im Beispiel oben ist die entsprechende Anweisung eingesetzt.
Übung 3: Lichtmessungen
LehrerinformationIn dieser Lektion verwenden Sie den Lichtsensor auf dem micro:bit und speichern die Daten in einer TI-NspireTM-Liste zur weiteren Analyse.
Lernziele:
- Auslesen und Anzeigen des Lichtsensors auf dem micro:bit
- Daten mittels Python zum TI-NspireTM CX II-T übertragen
- Untersuchen der gewonnenen Daten vom micro:bit
Schritt 1
Der micro:bit kann die Umgebungslichtstärke über die Display-LEDs ablesen. Die Display-LEDs können also auch als Eingabegerät verwendet werden!
Schritt 2
Starten Sie ein neues Python-Programs in einem neuen Dokument. Dazu drücken Sie die [home] - Taste und wählen dann Neu > und Add Python >Neu…
Das Programm heißt licht..
Um die Werte zu überprüfen, die der Lichtsensor erkennen kann, schreiben Sie das folgende Kurzprogramm mit Hilfe der BBC micro:bit-Menüs:
from microbit import *
while get_key() != "esc":
◆◆hell = display.read_light_level()
◆◆print("Helligkeit =",hell)
Man findet var= .read_light_level() im [menu] > BBC micro:bit >Sensors ; hell ist der selbstgewählte Variablenname. Erinnerung: [menu] > More Modules > BBC micro:bit > Commands> while get_key() != "esc":
Denken Sie daran, die letzten beiden Anweisungen so einzurücken, dass sie der while-Schleifentext sind .
Schritt 3
Führen Sie das Programm aus und richten Sie das Display des micro:bit auf eine Lichtquelle. Es spielt keine Rolle, was auf dem Display angezeigt wird. Bewegen Sie das micro:bit in Richtung und weg vom Licht und beobachten Sie die sich ändernden Werte auf dem TI-NspireTM CX II-T-Bildschirm. Sie sollten Werte sehen, die zwischen 0 und 255 variieren.
Wie Sie wahrscheinlich erwarten, nimmt die Helligkeit mit wachsender Entfernung von der Lichtquelle ab. Jetzt fügen Sie dem Programm Code hinzu, um die Lichtpegeldaten zu sammeln und dann ein Streudiagramm von Helligkeit gegen die Zeit zu erstellen.
Drücken Sie [esc], um das Programm zu beenden und zum Editor zurückzukehren.
Schritt 4
Zunächst müssen zwei leere Listen am Programmanfang erstellt werden.:
zeit = [ ]
bel = [ ]
Die eckigen Klammern findet man auf der Tastatur oder in
[menu] > Eingebaute > Listen
Ebenfalls vor der Schleife muss noch der Startpunkt der Zeit festgelegt werden:
t = 0
Vermeiden Sie es, das Wort "time" als Variable zu verwenden, da es im Zeitmodul verwendet wird.
Schritt 5
Fügen Sie im Schleifentext nach der print-Anweisung eine Anweisung hinzu, um die Timervariable t zu erhöhen. Wir verwenden ein Zeitintervall von einer Sekunde zwischen den Lichtmessungen, also verwenden Sie:
◆◆t = t+1
Schritt 6
Ergänzen der Listen bel und zeit durch ihre aktuellen Werte durch die Anweisung .append():
◆◆times.append(t)
◆◆brights.append(bright)
.append( ) findet man in [menu] > Eingebaute > Listen
Schritt 7
Damit im Abstand von 1 s neue Werte ermittelt werden, muss die Programmausführung zwischendurch „schlafen“:
sleep(1000)
sleep( ) findet man in:
[menu] > BBC micro:bit > Commands
Denken Sie daran, dass sleep( ) bei der Verwendung von micro:bit Millisekunden für sein Argument verwendet 1000 ms = 1 s .
Schritt 8
Nach dem Schleifenkörper (kein Einrücken mehr! ), speichern Sie die beiden Python-Listen in zwei TI-NspireTM -Listen mit den gleichen Namen in beiden Umgebungen.
Beginnen Sie am Anfang einer neuen Zeile (kein Einzug!).
Finden Sie store_list() in [menu] > BBC micro:bit > Commands. Es braucht zwei Argumente: den "TI-NspireTM-Listennamen" in Anführungszeichen und den Python-Listennamen ohne Anführungszeichen. Folgen Sie den QuickInfo-Anweisungen.
In diesem Programm werden die Python-Listen in TI-NspireTM-Listen gespeichert, kurz bevor das Programm endet, wenn Sie also [esc] drücken, um die Schleife zu verlassen
Schritt 9
Führen Sie das Programm aus. Beginnen Sie mit dem micro:bit in der Nähe Ihrer Lichtquelle. Eine freiliegende Glühbirne oder eine Smartphone-Taschenlampe funktionieren gut. Bewegen Sie das micro:bit langsam aber stetig gleichmäßig vom Licht weg, bis die Helligkeit unter 10 liegt. Drücken Sie [esc], um das Programm zu beenden.
Wiederholen Sie den Vorgang, bis Sie das Gefühl haben, dass Sie "gute" Daten haben.
Tipp: Eine Smartphone-Taschenlampe funktioniert super!
Schritt 10
Wenn das Programm beendet ist, fügen Sie Ihrem Dokument eine Seite hinzu, indem Sie [ctrl] [doc]drücken. Wählen Sie "Daten & Statistiken hinzufügen".
Sie sehen eine Seite ähnlich diesem Bild. Eine Ihrer Listen wird mit den auf dem Bildschirm verstreuten Punkten angezeigt. Sie müssen nun die Darstellung organisieren...
Schritt 11
Klicken Sie unten auf dem Bildschirm auf die Eingabeaufforderung 'Klicken Sie hier, um eine Variable hinzuzufügen' und wählen Sie aus der Liste dieZeit aus. Dies ist die unabhängigeVariable.
Auf der linken Seite des Bildschirmes wählen Sie die Liste hell aus. Dies ist die abhängige Variable. Jetzt könnte Ihr Streudiagramm wie das nebenstehende Bild aussehen.
Möglicherweise müssen Sie das Programm mehrmals ausführen, um eine gute, glatte Darstellung wie die hier gezeigte zu erhalten. Möglicherweise müssen Sie auch das Anzeigefenster anpassen, wenn Sie andere Daten verwenden.
Anwendung: Wurf zweier Würfel
LehrerinformationIn dieser Anwendung wird ein Programm entwickelt, mit dem Daten unter Verwendung des micro:bit gesammelt werden. Während das Programm läuft, beobachtet man, wie ein Punktdiagramm auf dem geteilten Display des TI-NspireTM CX II-T wächst.
Lernziele:
- Schreiben eines Datenerfassungprogrammes für den micro:bit
- Erstellen eines dynamischen Data & Statistic-Diagrammes der gesammelten Daten
Schritt 1
Diese Anwendung beruht auf den letzten drei micro:bit-Übungen: Schreiben eines Programmes, das eine Geste wie "Shake" (oder einen Tastendruck) verwendet, um einige Daten zu sammeln, speichern der Liste als TI-NspireTM-Variable und...
Schritt 2
… dann die Einrichtung einer TI-NspireTM-Seite, so dass
- das Python-Programm auf dem einen Teil der Seite läuft (die Python Shell) und
- auf der anderen Seite sich ein Data- & Statistic-Plot aufbaut.
Schritt 3
Beginnen Sie Ihr micro:bit-Programm mit den üblichen Importen einschließlich des Zufallsmoduls und einer leeren Liste namens
summe = [ ]
Speichern Sie diese Liste sofort in einer TI-NspireTM-Variablen mit demselben Namen), die dann zunächst also auch leer ist:
store_list(“summe”, summe)
print( ) erteilt eine Anweisung an den Benutzer, bevor die Schleife beginnt. Es wird die "Shake"-Geste verwendet, um die Würfel zu würfeln.Schritt 4
Verwenden Sie in derWhile-Schleife diese Geste, um
- zwei Würfel zu werfen(es werden zwei zufällige ganze Zahlen erzeugt.)
- addieren Sie sie
- hängen Sie die Summe an die Summenlistean
- drucken Sie die beiden Würfelwerte, ihre Summe und die Wurfnummer (Anzahl der Würfe bisher) auf dem TI-NspireTM-Bildschirm. Hinweis:len(summe) ist die Anzahl der Listenelemente und damit die Wurfnummer
- anzeige beider Würfel-Werte auf dem micro:bit
- speichern der Liste in einer TI-Nspire-Variablen
Schritt 5
So sieht der Würfelwurf aus (alternativ kann auch ein Tastendruck verwendet werden):
◆◆if accelerometer.was_gesture("shake"):
◆◆◆◆
display.clear()
◆◆◆◆
w1 = randint(1,6)
◆◆◆◆
w2 = randint(1,6)
Achten Sie auf die Einrückungen.
Schritt 6
Bilden Sie die Summe s und fügen (append) Sie die Summe als neues letztes Element der Liste der Summen hinzu:
s = w1 + w2
summe.append(s)
Schritt 7
Zeigen Sie die beiden Würfe auf dem micro:bit-Display an. Denken Sie daran, dass die beiden Würfe möglicherweise den gleichen Wert haben; daher muss durch eine Pause sichergestellt werden, dass beide tatsächlich angezeigt werden.:
display.clear()
display.show(w1)
sleep(250)
display.clear()
display.show(w2)
sleep(250)
Eine andere Verzögerung der sleep()-Anweisung ist u.U. sinnvoll. Versuchen Sie jetzt, das Programm auszuführen und schütteln Sie das micro:bit. Auf dem micro:bit sollten nacheinander zwei Zahlen angezeigt werden.
Schritt 8
Mit einer einzigen print() - Anweisung können die einzelnen Würfelwerte, ihre Summe und die Wurfnummer auf dem TI-NspireTM-Bildschirm ausgegeben werden:
print (w1, "+", w2,"=",s,", ","Wuerfe: ", len(summe))
Man erhält die nebenstehende Abbildung.
Schritt 9
Nun muss noch die Python-Liste summe in einer TI-Nspire TM-Liste gleichen Namens abgespeichert werden:
◆◆◆◆store_list(“summe”, summe)
Jedes Mal, wenn gewürfelt wird, werden diese Listen aktualisiert, da die Anweisung am Ende des while-Blockes steht.
Schritt 10
Wenn Sie überzeugt sind, dass Ihr Programm ordnungsgemäß funktioniert, können Sie Ihr Python-Programm mit den TI-NspireTM-Plotfunktionen verbinden. Führen Sie Ihr Programm aus und generieren Sie etwa 50 Würfe. Drücken Sie [esc], um das Programm zu beenden.
In der Python Shell (also beim Prompt >>>) kann man durch Drücken von [ctrl] [doc] oder [ctrl] [I] eine Seite einfügen, in diesem Fall Data & Statistics. Man sollte ein Bild wie nebenstehend sehen mit über den Schirm verteilten Datenpunkten..
Schritt 11
Klicken Sie unten auf dem Bildschirm auf die Meldung 'Klicken Sie, um eine Variable hinzuzufügen' und wählen Sie die Listenvariable summe aus. Ihre verstreuten Datenpunkte sind nun entlang der x-Achse entsprechend ihrem Wert organisiert und das Fenster ist für die Daten entsprechend zugeschnitten. Dies ist ein Punktdiagramm.
Schritt 12
Mit ([ctrl] [nach links]) kommt man wieder zur Python Shell. Drückt man nun [ctrl] [4] , so erhält man einen geteilten Schirm mit der Python Shell links und dem Data&Statistics – Bild rechts.
Schritt 13
Die Shell wurde "neu initialisiert", sodass das Programm durch Drücken von [ctrl] [R] nicht erneut ausgeführt wird. Gehen Sie zurück zum Python-Editor und drücken Sie [ctrl] [R], um das Programm auszuführen. Es wird in der Shell mit halbem Bildschirm ausgeführt, wie hier gezeigt. Sie sehen zunächst "Keine numerischen Daten" auf der rechten Seite, da das Programm mit einer leeren Liste startet.
Wenn Sie nun Daten sammeln (schütteln Sie das micro:bit, um die Würfel zu werfen), werden Ihre Summenwerte als Punkte in der Data & Statistics-App auf der rechten Seite angezeigt.
Durch Drücken von [esc] wird das Programm beendet und Sie können viele andere 1-Variablen-Datenanalysen in der TI-NspireTM-Umgebung durchführen.
Wenn Sie [Strg] [R] erneut (jetzt in der Python-Shell) drücken, wird das Programm auch erneut ausgeführt.
Tipp: Um die Shell zu Beginn jedes Laufs zu löschen, fügen Sie zu Beginn Ihres Programms die Anweisung hinzu:
clear_history()
gefunden auf [menu] > Weitere Module > BBC micro:bit > Commands
Viel Spaß und denken Sie daran, Ihr Dokument zu speichern!
- Übung 1
- Übung 2
- Übung 3
- Anwendung