~~NOTOC~~ ====== Algorithmen und erste Schritte in Python (und Tigerjython) ====== Einzel- oder Partnerarbeit: Bearbeite die Aufgabe **Haus vom Nikolaus** auf dem {{ :lehrkraefte:snr:informatik:bruehl-2022:aufgabe-haus-vom-nikolaus.pdf |Arbeitsblatt (pdf)}}. ===== Algorithmen ===== Der Begriff **Algorithmus** meint einfach eine Folge von Anweisungen, also eine Handlungsvorschrift. Die Anweisungsfolge zum Zeichnen des Hauses vom Nikolaus ist ein Beispiel eines Algorithmus. Überlege dir weitere Beispiele, bevor du * Rezepte: Wie kocht man Spaghetti mit Tomatensosse? Wie bäckt man einen Schokoladenkuchen? * Bastelanleitungen: Wie baut man einen Schrank? Wie strickt man einen Pullover? Wie näht man ein Kleid? * Wegbeschreibungen: Wie geht es hier zum Bahnhof? * Behandlungsanweisungen: Wie operiert man einen Bänderriss im Knie? * Problemlösungen: Wie löst man Rubiks [[https://de.wikipedia.org/wiki/Zauberw%C3%BCrfel|Zauberwürfel]]? ==== Flussdiagramm ==== Algorithmen kann man durch sogenannte **Flussdiagramme** veranschaulichen: {{:lehrkraefte:snr:informatik:bruehl-2022:kuchen-flowchart-mit-funktion.png?400|}} In der Informatik meint man mit Algorithmen Handlungsanweisungen, die man einem Computer beibringen kann. Der Name //Algorithmus// kommt übrigens von dem persischen Gelehrten [[https://de.wikipedia.org/wiki/Al-Chwarizmi|Al-Chwarizmi]], der um 800 in Bagdad gelehrt hat. ===== Grober Überblick über die Themen bis Ostern ===== Das Diagramm links illustriert grob, womit wir uns beschäftigen: Wir wollen lernen, wie man mit der Programmiersprache Python Computer-Programme schreibt und so dem Computer beibringt, Algorithmen auszuführen. In den nächsten Lektionen werden wir die farbig hinterlegten Konstrollstrukturen in Python kennenlernen: In unserem Kuchenback-Programm sind die entsprechenden Strukturen farbig markiert und vermitteln so hoffentlich einen ersten Eindruck. {{:lehrkraefte:snr:informatik:bruehl-2022:advance-organizer-plus-flowchart.png?1400|}} ===== Erste Schritte in Tigerjython ===== Wir lernen die Programmiersprache [[https://de.wikipedia.org/wiki/Python_(Programmiersprache)|Python]]((oder genauer einen Dialekt davon, nämlich Jython, erweitert um die ''repeat''-Struktur, wenn ich es recht verstehe)) bzw. genauer deren Variante Tigerjython kennen. Programmieren schreiben wir in der IDE **Tigerjython**. Eine IDE ist ein Editor mit Zusatzfunktionen, etwa zum Starten des Programms oder zum Debuggen, d. h. zur Fehlersuche. IDE bedeutet Integrated Development Environment, also Integrierte Entwicklungsumgebung. * Installiere Tigerjython von [[https://www.tigerjython.ch/de|hier]]. * Öffne Tigerjython. Ich gebe erste Erklärungen: Editor (kopieren wie üblich), abspeichern. Nimm deine Lösung der Haus-vom-Nikolaus-Aufgabe. Übersetze deine Befehle der Reihe nach wie folgt in Python und schreibe sie in den Editor (jeder neue Befehl kommt in eine neue Zeile, ohne Leerzeichen am Zeilenbeginn): * Der Befehl ''Gehe 100 Meter vorwärts.'' wird zu ''forward(100)'' (und analog für andere Längenangaben). Achtung: Statt 141,1 muss man 141.1 schreiben, also Punkt statt Komma. * Der Befehl ''Drehe dich um 90 Grad nach rechts.'' wird zu ''right(90)'' (und analog für andere Winkel). * Der Befehl ''Drehe dich um 135 Grad nach links.'' wird zu ''left(135)'' (und analog für andere Winkel). Schreibe die folgenden beiden Zeilen ganz am Anfang in deinen Editor: from gturtle import * makeTurtle() Lass das Programm laufen (Button mit dem grünen Dreieck). Sobald es fehlerfrei läuft, speichere es unter einem geeigneten Namen ab. (Erläuterungen zur Fehlersuche gebe ich gleich.) * Wähle vernünftige Fensteranordnung auf Bildschirm: Etwa Tigerjython-Editor rechte Bildschirmhälfte, wenn das Zeichenfenster links aufgeht. * Ihr dürft euch gerne gegenseitig helfen. Mein Tipp: **Selbst tippen bzw. Maus verwenden** - dann lernt man deutlich mehr, als wenn jemand anderes alles erledigt. * Erklärung, wie man ein Programm schrittweise ablaufen lassen kann. {{ :lehrkraefte:snr:informatik:bruehl-2022:turtle-befehle-per-nikolaus.py |Hier}} ist ein relativ langes Python-Programm verlinkt. Öffne es in deinem Editor (per Copy-and-Paste oder per Abspeichern auf deinem Rechner und dann Datei -> Öffnen im Menü des Editors). Lass das Programm (schrittweise) laufen und lerne so die folgenden neuen Befehle kennen: * ''penWidth(10)'' * ''setPenColor("red")'' * ''hideTurtle()'' und ''showTurtle()'' und ''speed(2000)'' * ''penUp()'' und ''penDown()'' * ''backward(100)'' * ''home()'' * ''dot(10)'' und ''openDot(20)'' * die ''repeat''-Struktur zum Wiederholen Du darfst gerne Herumspielen: Teile des Programms löschen, Zahlen verändern etc.! So lernt man viel! Zum leichteren Erinnern von Befehlen wie ''makeTurtle'', ''penWidth'', ''setPenColor'', ''hideTurtle'' etc.: Die Befehle starten stets mit einem Kleinbuchstaben und jedes "neue Wort" beginnt dann mit einem Grossbuchstaben. Freiwillig: Wenn jemand eigenständig mehr Turtle-Befehle lernen will: [[https://programmierkonzepte.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=turtle/turtledoc.html|Dokumentation Turtle-Grafik in einem Tutorial]]. **Hausaufgabe (die eventuell schon während der Lektion erledigt werden kann)** Schreibe ein Programm, das eine **schöne** Zeichnung deiner Wahl erstellt. Das Programm muss die folgenden Bedingungen erfüllen: * Mindestens zwei verschiedene Farben werden verwendet (''setPenColor(...)''). * Mindestens zwei verschiedene Strichbreiten werden verwendet (''penWidth(...)''). * Der Zeichenstift wird mindestens einmal angehoben - die Zeichnung kann also nicht ohne Absetzen gezeichnet werden (''penUp()'' und ''penDown''). * Gerne sehe ich es, wenn mindestens eine ''repeat''-Struktur verwendet wird. * Das Programm unterscheidet sich deutlich von deinem Haus-vom-Nikolaus-Programm und von dem obigen Beispielprogramm. Du darfst aber dein Haus-vom-Nikolaus-Programm ausbauen (Wolken, Bäume, Segelboot, ...). * Hoffentlich selbstverständlich: Das Programm ist nicht aus dem Internet kopiert. Abgabe bis **spätestens Sonntagabend 23:59 Uhr** vor der nächsten Doppellektion über den folgenden Link: * [[https://bldsg-my.sharepoint.com/:f:/g/personal/olaf_schnuerer_ksbg_ch/EvX4Uvg1qLdJtcm2uyFcrWEBbH4sULzkcsaL6BRI85WfEg|Klasse 1AFGsK]] * [[https://bldsg-my.sharepoint.com/:f:/g/personal/olaf_schnuerer_ksbg_ch/EhrKL4Us3QBKnXoIchxICBIBNGk-5uoamJ2X9wK8cViSjA|Klasse 1CFP]] Falls jemand eine Zeichenidee benötigt: * irgendeine "Kinderzeichnung" - mit dickem Stift kann man auch leicht gefüllte Flächen zeichnen * irgendeine abstrakte Zeichnung, beispielsweise [[https://de.wikipedia.org/wiki/Piet_Mondrian#/media/Datei:Piet_Mondriaan,_1921_-_Composition_en_rouge,_jaune,_bleu_et_noir.jpg|Bild von Mondrian]] * Drahtmodell eines Würfels * [[https://de.wikipedia.org/wiki/Koch-Kurve|Koch-Kurve]] * eine der Aufgaben am Ende [[https://programmierkonzepte.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=turtle/farben.inc.php|dieser Seite]] oder von einer anderen Seite dieses Tutorials ===== Lösungsvorschläge ===== from gturtle import * makeTurtle() right(90) forward(50) left(90) forward(100) right(45) forward(70.7) right(90) forward(70.7) right(135) forward(100) left(135) forward(141.4) left(135) forward(100) left(135) forward(141.4) left(135) forward(150) left(90) ===== Link zur Kursseite ===== [[lehrkraefte:snr:informatik:bruehl-2022:|Zur Kursseite]]