lehrkraefte:snr:altes-material

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:snr:altes-material [2022/03/05 09:16]
Olaf Schnürer [Ideen]
lehrkraefte:snr:altes-material [2023/01/17 09:25] (current)
Olaf Schnürer
Line 1: Line 1:
 +
 +Animation: Federpendel - Sinus - Kreisbewegung: 1:50 und 4:36 in https://www.youtube.com/watch?v=GqkND_7Kcc8
 +
 +Fadenpendel - Kreisbewegung: https://www.youtube.com/watch?v=BrQhXh9jcOk
 +
 +Beides in einem (etwas seltsam präsentiert): https://www.youtube.com/watch?v=JSBw-JyFgZk
 +
 +https://en.wikipedia.org/wiki/Simple_harmonic_motion#/media/File:Simple_Harmonic_Motion_Orbit.gif
 +
 +evtl. auch https://www.mathsisfun.com/algebra/trig-sin-cos-tan-graphs.html
 +
 +harmonische Schwingung zum Ausprobieren verschiedener Parameter: https://www.geogebra.org/classic/gmvkg3uc
 +
 +
 +
 +===== Ideensammlung =====
 +
 +
 +
 +
 +
 +
 +Eventuell bisschen allgemeines erklären: Sprache (Python), Programm, Interpreter (heisst ebenfalls Python).
 +
 +Ideen: Erst mit Python-Shell (auch REPL (= read-eval-print loop, vgl. https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) genannt, also Python im interaktiven Modus).
 +
 +Python-Shell meist zum Ausprobieren kleiner Sachen.
 +
 +Python ist eine Programmiersprache. Die App "Python", die wir heruntergeladen haben, dient dazu, Python-Programme Schritt für Schritt in eine dem Computer verständliche Maschinensprache zu übersetzen. Solche Übersetzungsprogramme nennt man [[https://de.wikipedia.org/wiki/Interpreter|Interpreter]] (to interprete = dolmetschen). Deswegen sollte man diese App eigentlich als "Python-Interpreter" bezeichnen.((Im gängigen Sprachgebrauch der Informatik verwendet man denselben Namen für eine Programmiersprache wie für jeden ihrer Interpreter (oder [[https://en.wikipedia.org/wiki/Compiler|Compiler]]).))
 +
 +Mehrere Möglichkeiten, eine solche zu öffnen:
 +  * Öffne App "Command Prompt" (= "Eingabaufforderung", "cmd"), gib dort ''python''+''Enter'' ein.
 +  * Öffne die Python-Shell in VS-Code: Zwei Möglichkeiten
 +    - per ''F1'', suche nach "Python: Start REPL" und klicke dies an.
 +    - öffne das Terminal in VS-Code (über das Menü View->Terminal oder den dort angegebenen Hotkey) und gib dort ''python''+''Enter'' ein.
 +  * Öffne App "Python 3.10"
 +
 +print("Hello World")
 +
 +<nowiki>
 +Arithmetische Ausdrücke - Rechnen mit Zahlen: ''+'',  ''-'', ''*'', ''/'', ''//'', ''%'', ''**''
 +
 +Aufgabe: Was bedeuten ''//'', ''%'', ''**''
 +
 +2 hoch 100 
 +
 +(Wurzel?): import math, math.sqrt(3)
 +
 +oder 
 +
 +from math import *
 +
 +sqrt(3)
 +
 +oder
 +
 +3**0.5
 +
 +Strings und Rechnen mit Strings: ''+'' und ''\n''
 +
 +" als Begrenzungszeichen?
 +
 +Zahl mal String.
 +
 +Beispiele: 
 +  * print(n* "Informatik ist mein Lieblingsfach.")
 +  * dasselbe mit Leerzeichen, mit ''\n''
 +  * oder print(10 * "eat, sleep, bike, repeat!")
 +
 +  * Mops
 +  * 
 +  * print(10*"+"+"\n")
 +  * print(10*(10*"+"+"\n"))
 +
 +  * print(2+3)
 +  * print("2+3")
 +
 +
 +
 +
 +wo?: Datentypen und Variablen
 +
 +Zuweisung
 +  * x = 2+5
 +  * s = "hallo"
 +  * type(s)
 +
 +  * unterscheide ''x = "2+5"'' und ''x=2+5''. Erkläre, dass Zuweisung auswertet.
 +
 +  * erkläre: x = x + 5
 +  * Initialisierung notwendig.
 +
 +
 +  * gedicht = 'Ein Mops kam in die Küche, und stahl dem Koch ein Ei. Da nahm der Koch die Kelle, und schlug den Mops zu Brei\n\n Da kamen viele Möpse und gruben ihm ein Grab und setzen ihm ein\' Grabstein, worauf geschrieben stand:\n\n'
 +  * print(10 * gedicht)
 +
 +Erkläre, was Python-Shell ausgibt.
 +
 +exit() oder ''Ctrl+D'' zum Verlassen der REPL
 +
 +Erkläre, wie man das in einem Programm macht.
 +Nun brauche ''print(...)''.
 +
 +''input'': Liefert **stets** einen String. Muss umwandeln ("cast-en").
 +
 +Aufgabe: Lies Namen ein, begrüsse namentlich.
 +
 +Aufgabe: Lies zwei Zahlen ein, gib Summe und Produkt aus.
 +
 +Aufgabe: Gib "Schachfeld" variabler Grösse aus (möglichst kurzes Programm!)
 +
 +
 +''print'' mit mehreren Argumenten? ohne Argument = neue Zeile?
 +
 +f-strings: 
 +
 +Aufgaben 1 - 5 auf https://www.w3schools.com/python/python_variables_exercises.asp
 +
 +</nowiki>
 +==== Derselbe Code als pdf (eventuell für handschriftliche Eintragungen bzw. Markierungen nützlich) ====
 +
 +{{:lehrkraefte:snr:informatik:glf22:python:chaos-game.py.pdf |obiges Python-Programm als pdf}}
 +
 +===== Chaos-Spiel als Flussdiagramm (= flow chart) =====
 +
 +Ich zeichne zugehöriges [[https://de.wikipedia.org/wiki/Programmablaufplan|Flussdiagramm]] (an Tafel oder per Drawboard). Eventuell erste Erklärungen zu [[https://de.wikipedia.org/wiki/Kontrollstruktur|Kontrollstrukturen]], hier vor allem Schleife, Entscheidung (= Verzweigung).
 +
 +===== Erster Versuch Koordinatengrafik mit Python =====
 +
 +====== Koordinatengrafik mit Python ======
 +
 +<WRAP center round todo>
 +Speichere die folgende Grafik-Bibliothek unter dem Namen ''kantigrafik.py'' in deinem Python-Verzeichnis ab (Anklicken mit rechter Maustaste).
 +
 +Neue Version vom 01.12.2022:  (HABE DAS FILE IM MEDIAMANAGER DURCH NEUE VERSION ÜBERSCHRIEBEN ... also eventuell kleine Änderungen nötig.)
 +
 +{{ :lehrkraefte:snr:mathematik:klasse-2:2022-23:kantigrafik.py |}}
 +</WRAP>
 +
 +<WRAP center round todo>
 +Versuche anhand des folgenden Programms die wesentlichen Funktionen der Bibliothek ''kantigrafik'' zu verstehen:
 +
 +{{ :lehrkraefte:snr:mathematik:klasse-2:2022-23:demo-kantigrafik.py |}}
 +</WRAP>
 +
 +<WRAP center round todo>
 +(1) Ergänze das **unten stehende** Python-Programm so, dass ein rechtwinkliges Dreieck gezeichnet wird, dessen Katheten parallel zu den Koordinatenachsen sind und Länge ''a'' und ''b'' haben. 
 +
 +Eine Skizze auf einem Blatt Papier mag helfen.
 +
 +<hidden Hinweis:>
 +Nimm als Eckpunkte des Dreiecks den Ursprung $(0,0)$ und den Punkt $(a,0)$ und als dritten Punkt ... (bitte selbst überlegen, etwa per Skizze). </hidden>
 +
 +----
 +
 +(2) Zeichne zusätzlich den Umkreis dieses rechtwinkligen Dreiecks.
 +
 +Beachte: Ändert man die Werte der Variablen ''a'' und ''b'', so muss sich die Zeichnung entsprechend ändern.
 +
 +<hidden Hinweis:>
 +Denke an einen griechischen Mathematiker, dessen Namen mit T beginnt.
 +</hidden>
 +
 +<code python rechtwinkliges-dreieck-mit-umkreis.py>
 +from kantigrafik import *
 +zeichenfenster(-4, -4, 8, 6, 100, "Rechtwinkliges Dreieck mit Umkreis")
 +a = 4
 +b = 3
 +
 +# Hier deinen Code ergänzen!
 +
 +zeige()
 +warte_auf_klick()
 +</code>
 +</WRAP>
 +
 +===== Die Befehle der Bibliothek ''kantigrafik'' =====
 +
 +<WRAP center round info>
 +Die wichtigsten Befehle der Bibliothek ''kantigrafik'' an Beispielen erläutert:
 +  * ''zeichenfenster(-3, -2, 8, 5, 100)'': Öffnet ein Zeichenfenster mit einem (unsichtbaren Koordinatensystem), dessen $x$-Koordinaten von -3 bis 8 gehen und dessen $y$-Koordinaten von -2 bis 5 gehen. Der Punkt $(-3,-2)$ ist also der Punkt ganz links unten und der Punkt $(8,5)$ ist der Punkt ganz rechts oben. Die Zahl 100 legt fest, dass eine Einheit des Koordinatensystems auf dem Bildschirm 100 Pixel lang sein soll.
 +  * ''linie(3, 7, 1, -2)'': Zeichnet eine Linie vom Punkt $(3,7)$ zum Punkt $(1, -2)$.
 +  * ''kreis(5, 2, 7)'': Zeichnet einen Kreis mit Mittelpunkt $(5,2)$ und Radius $7$.
 +  * ''punkt(3, -2)'': Zeichnet einen Punkt an der Stelle $(3, -2)$.
 +  * ''raster()'': Zeichnet das "Koordinatenraster" ein.
 +  * ''x_achse()'': Zeichnet die $x$-Achse ein.
 +  * ''y_achse()'': Zeichnet die $y$-Achse ein.
 +  * ''schreibe(3, -2, "Kantigrafik-Demo", 0.5)'': Schreibt den angegebenen Text in der Grösse 0.5 (in Einheiten) mit "linker unterer Ecke" am Punkt (3, -2).
 +  * ''grad_cos(45)'': Berechnet den Cosinus des (in Grad angegebenen) Winkels $45^\circ$.
 +  * ''grad_sin(45)'': Analog für Sinus.
 +  * ''grad_tan(45)'': Analog für Tangens.
 +  * ''farbe(ROT)'': Setzt die Farbe auf rot. Andere vordefinierte Farben sind ''GRUEN'', ''BLAU'', ''GELB'', ''MAGENTA'', ''CYAN'', ''WEISS'', ''SCHWARZ'', ''GRAU''. Weitere Farben bekommt man mit Funktionsaufrufen wie ''farbe(224, 114, 213)'' unter Verwendung des RGB-Farbmodells (RGB steht für Red-Green-Blue; verwende etwa den RGB Color Calculator auf https://www.w3schools.com/colors/colors_rgb.asp).
 +  * ''zeige()'': Mit diesem Befehl wird alles bisher Gezeichnete sichtbar. (Die vorigen Zeichenbefehle zeichnen in Wirklichkeit "im Hintergrund". Erst mit dem Funktionsaufruf ''zeige()'' wird alles angezeigt.) 
 +<WRAP center round important>
 +Zum Anzeigen des bereits Gezeichneten muss man den Befehl ''zeige()'' verwenden.
 +</WRAP>
 +  * ''pause(1.5)'': Pausiert 1.5 Sekunden.
 +  * ''speichere("zeichnung.jpeg")'': Speichert den Inhalt des Zeichenfensters in der Datei "zeichnung.jpeg".
 +  * ''warte_auf_klick()'': Lässt das Zeichenfenster so lange offen, bis der Benutzer hineinklickt oder Escape drückt oder es schliesst oder die Taste "q" drückt. Dieser Befehl steht üblicherweise ganz am Ende des Programms (und nirgendwo sonst).
 +</WRAP>
 +
 +
 +====== Link zur Kursseite ======
 +
 +Link zur Seite [[lehrkraefte:snr:mathematik:klasse-2:2022-23|Zur Kursseite]]
 +
 +====== Template für Brühl ======
 +
 +[[lehrkraefte:snr:informatik:bruehl-2022:template|lehrkraefte:snr:informatik:bruehl-2022:template]]
 +
 +====== Videolektion, Sicherung der Doku-Wiki-Page ======
 +
 +[[lehrkraefte:snr:mathematik:videolektion-sicherung|lehrkraefte:snr:mathematik:videolektion-sicherung]]
 +====== Gutes Zeug, das ich für Brühl erstellt hatte (jedoch "too advanced/optimistic") ======
 +
 +  * [[lehrkraefte:snr:informatik:bruehl-2022:funktionen-ausfuehrliche-version|Funktionen ausführlich]]
 +
 +  * [[lehrkraefte:snr:informatik:bruehl-2022:schleifen-erster-versuch|Schleifen erster Versuch]] 
 +
 ====== Ideen ====== ====== Ideen ======
 +
 +  * WIEDER PER Problem, dann FLUSSDIAGRAMM? DANN (gemeinsam?) PROGRAMMIEREN???
 +  * Rasenmäh-Roboter? Als Simulation sicher gut, sonst kostet es viel Zeit...
 +  * Turtle: zeichnet was nettes und erhöht Stiftdicke jeweils um Eins, jedoch wird sie zurückgesetzt, falls grösser als 10...; oder dann jeweils um 1 verkleinert! oszillierend; oder Farbe verändern
 +  * Zwei Schildkröten? je nachdem, welche Farbe am Boden, wird etwas gemacht...
 +  * if keyPressed ...: Turtle-Fernsteuerung mit Tastatur!  Zeichenprogramm. getKeyCode oder so... ferngesteuerte Turtle; Cursortasten für Bewegung, r und g und b für Farbwechsel, ESC für Abbruch - dann sollte wohl ''while'' verwenden. Werte der Tasten einfach angeben (bzw. Mini-Programm)! Andere Taste: Piepston.
 +  * Billard
  
   * Spass mit Robotern; Sensoren?   * Spass mit Robotern; Sensoren?
Line 104: Line 330:
   * Ich kann den Roboter in Betrieb nehmen und kenne grundlegende Befehle zur Steuerung des Roboters.     * Ich kann den Roboter in Betrieb nehmen und kenne grundlegende Befehle zur Steuerung des Roboters.  
 </hidden> </hidden>
 +
 +=== Alter Anfang if-Selektion ===
 +
 +
 +Oft sollen gewisse Programmteile nur unter gewissen Bedingungen ausgeführt werden. 
 +
 +In unserem
 +[[lehrkraefte:snr:informatik:bruehl-2022:algorithmen#grober_ueberblick_ueber_die_themen_bis_ostern|Kuchenback-Flussdiagramm]]
 +wird im grünen Bereich abgefragt, ob der Kuchen schmeckt: Abhängig von der Antwort geht es weiter im Flussdiagramm.
 +
 +Das geht in Python durch ''if''-Selektion.
 +
 +===== Aufgabe 5, Funktionen ohne Parameter und mit Rückgabewert definieren =====
 +
 +<WRAP center round todo 100%>
 +**Einzelarbeit, ca. 5 Minuten**
 +
 +Der folgende Code definiert eine Funktion ''richtung()''. Er gibt die aktuelle Ausrichtung der Schildkröte in Grad an.
 +<code python>
 +from gturtle import *
 +
 +# In der folgenden Zeile beginnt die Definition der Funktion
 +def richtung():
 +    w = heading()
 +    while r < 0:
 +        w = w + 360
 +    while r >= 360:
 +        w = w - 360
 +    return w
 +    
 +# In der folgenden Zeile beginnt das Hauptprogramm
 +makeTurtle()
 +repeat 10:
 +    print(richtung())
 +    right(100)
 +</code>
 +
 +Besser?
 +<code python>
 +import datetime
 +
 +def zeitInMinuten():
 +    jetzt = datetime.datetime.now()
 +    minute = jetzt.minute
 +    return minute
 +
 +print(zeitInMinuten())
 +</code>
 +</WRAP>
 +
 +===== Aufgabe 5, Funktionen ohne Parameter und mit Rückgabewert definieren =====
 +
 +<WRAP center round todo 100%>
 +**Einzelarbeit, ca. 5 Minuten**
 +
 +Der folgende Code definiert eine Funktion ''spielfeld()''. Das Schlüsselwort ''return'' macht den rechts davon stehenden Ausdruck zum Rückgabewert.
 +
 +Beachte: 
 +  * Mit ''+'' werden zwei Strings (= Texte, deren Beginn und Ende mit Anführungszeichen markiert sind) "hintereinandergehängt".
 +  * Die Zeichenkombination "\n" bedeutet "new line": Bei der Ausgabe findet an dieser Stelle ein Zeilenumbruch statt.
 +<code python>
 +# In der folgenden Zeile beginnt die Definition der Funktion
 +def spielfeld():
 +    s1 = "+-+-+-+\n"
 +    s2 = "| | | |\n"
 +    s3 = "+-+-+-+\n"
 +    s4 = "| | | |\n"
 +    s5 = "+-+-+-+\n"
 +    s6 = "| | | |\n"
 +    s7 = "+-+-+-+\n"
 +
 +    return s1 + s2 + s3 + s4 + s5 + s6 + s7
 +
 +# In der folgenden Zeile beginnt das Hauptprogramm
 +b = spielfeld()
 +print(spielfeld())
 +</code>
 +Schreibe eine Funktion, die den Anfangsbuchstaben deines Vornamens als "Bild aus Buchstaben" zurückgibt. 
 +
 +<hidden Für die Experten: Man kann die Funktion ''spielfeld()'' auch etwas kürzer definieren. Bitte ausklappen!>
 +<code python>
 +# In der folgenden Zeile beginnt die Definition der Funktion
 +def brett():
 +    s = 3 * "+-" + "+\n"
 +    t = 3 * "| " + "|\n"
 +    return 3 * (s + t) + s
 +
 +# In der folgenden Zeile beginnt das Hauptprogramm
 +b = brett()
 +print(brett())
 +</code>
 +</hidden>
 +</WRAP>
 +
 +
 +====== Erster Versuch: Polynomdivision ======
 +
 +[[lehrkraefte:snr:altes-material:polynomdivision|Polynomdivision]]
 +
 +====== Erster Versuch: Funktionen ======
 +
 +[[lehrkraefte:snr:altes-material:funktionen|Funktionen]]
 +
 +====== Ausgelagert: Polynomdivision ======
 +
 +[[lehrkraefte:snr:altes-material:polynomdivision-ausgelagertes|Polynomdivision ausgelagertes]]
 +
  
  • lehrkraefte/snr/altes-material.1646468201.txt.gz
  • Last modified: 2022/03/05 09:16
  • by Olaf Schnürer