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:informatik:bruehl-2022:algorithmen [2022/02/19 15:00] – [Einige Lösungen] Olaf Schnürerlehrkraefte:snr:informatik:bruehl-2022:algorithmen [2022/04/10 13:28] (current) – [Algorithmen und erste Schritte in Tigerjython] Olaf Schnürer
Line 1: Line 1:
 +~~NOTOC~~
 +
 +====== Algorithmen und erste Schritte in Python (und Tigerjython) ======
 +
 +<WRAP center round todo>
 +Einzel- oder Partnerarbeit:
 +Bearbeite die Aufgabe **Haus vom Nikolaus** auf dem {{ :lehrkraefte:snr:informatik:bruehl-2022:aufgabe-haus-vom-nikolaus.pdf |Arbeitsblatt (pdf)}}.
 +</WRAP>
 +
 +===== Algorithmen =====
 +<WRAP center round info 100%>
 +Der Begriff **Algorithmus** meint einfach eine Folge von Anweisungen, also eine Handlungsvorschrift.
 +</WRAP>
 +
 +
 +<WRAP center round box 100%>
 +Die Anweisungsfolge zum Zeichnen des Hauses vom Nikolaus ist ein Beispiel eines Algorithmus.
 +
 +Überlege dir weitere Beispiele, bevor du 
 +<hidden hier klickst: Weitere Beispiele:>  
 +  * 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]]?
 +</hidden>
 +</WRAP>
 +
 +==== Flussdiagramm ====
 +
 +<WRAP center round box 100%>
 +Algorithmen kann man durch sogenannte **Flussdiagramme** veranschaulichen:
 +
 +{{:lehrkraefte:snr:informatik:bruehl-2022:kuchen-flowchart-mit-funktion.png?400|}}
 +</WRAP>
 +
 +
 +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.
 +
 +<WRAP center round box 100%>
 +{{:lehrkraefte:snr:informatik:bruehl-2022:advance-organizer-plus-flowchart.png?1400|}}
 +</WRAP>
 +
 +
 +
 +===== 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)) <del>bzw. genauer deren Variante Tigerjython kennen</del>.
 +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. 
 +
 +<WRAP center round todo>
 +  * Installiere Tigerjython von [[https://www.tigerjython.ch/de|hier]].
 +  * Öffne Tigerjython.
 +</WRAP>
 +
 +Ich gebe erste Erklärungen: Editor (kopieren wie üblich), abspeichern.
 +
 +<WRAP center round todo>
 +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:
 +<code python>
 +from gturtle import *
 +makeTurtle()
 +</code>
 +
 +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.)
 +</WRAP>
 +
 +  * 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.
 +
 +<WRAP center round todo>
 +{{ :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.
 +</WRAP>
 +
 +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]].
 +
 +<WRAP center round todo>
 +**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
 +</WRAP>
 +
 +===== Lösungsvorschläge =====
 +
 +<hidden Python-Programm zum Haus des Nikolaus> 
 +<code python>
 +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)
 +</code>
 +</hidden>
 +
 +===== Link zur Kursseite =====
 +
 +[[lehrkraefte:snr:informatik:bruehl-2022:|Zur Kursseite]]