~~NOTOC~~ ====== Informatik: Algorithmen und Programme (1AFGsK und 1CFP) ====== ===== 1. Doppellektion (ca. 14. bzw. 15. Februar 2022) ===== * Vorstellung und Organisatorisches (Prüfung, Hausaufgaben: vermutlich meist ein Computerprogramm als Abgabe - eventuell wird man damit bereits in der Doppellektion fertig; eventuelle Nacharbeit, falls es zu schnell war; Fragen? Fragen! auch gerne per Email) * Setze eine Bookmark auf die aktuelle Seite! - Materialien zum Kurs werden hier bereitgestellt. * [[lehrkraefte:snr:informatik:bruehl-2022:algorithmen|Algorithmen und erste Schritte in Python (und Tigerjython)]] ===== 2. Doppellektion (ca. 21. bzw. 22. Februar 2022) ===== * [[lehrkraefte:snr:informatik:bruehl-2022:ein-und-ausgabe-variablen|Ein- und Ausgabe, Variablen]] ===== 3. Doppellektion (ca. 28. Februar bzw. 08. März 2022) ===== (01. März 2022 entfällt) (Erster Besuch am Dienstag, 08. März) * [[lehrkraefte:snr:informatik:bruehl-2022:variablen-2|Variablen sinnvoll einsetzen und erste Schritte mit dem Roboter]] ===== 4. Doppellektion (07. bzw. 15. März 2022) ===== 14. März entfällt * [[lehrkraefte:snr:informatik:bruehl-2022:auswahl|if-then-else-Selektion]] ===== 5. Doppellektion (ca. 21. bzw. 22. März 2022) ===== (Zweiter Besuch am Dienstag, 22. März) * [[lehrkraefte:snr:informatik:bruehl-2022:funktionen|Funktionen]] ===== 6. Doppellektion (ca. 28. bzw. 29. März 2022) ===== * [[lehrkraefte:snr:informatik:bruehl-2022#organisatorisches_zur_pruefung|Organisatorisches zur Prüfung und Hinweise zur Vorbereitung]] * [[lehrkraefte:snr:informatik:bruehl-2022#lernziele|Lernziele oder was bei der Prüfung abgefragt wird]] * [[lehrkraefte:snr:informatik:bruehl-2022:aaaa|Test des Prüfungsformats]] * Fragen? * [[lehrkraefte:snr:informatik:bruehl-2022:schleifen|Schleifen]] ===== Lösungen der Test-Prüfung ===== from gturtle import * makeTurtle() n = 5 repeat n: forward(50) right(360/n) x = input("Gib eine Zahl ein!") print("Das Quadrat von") print(x) print("ist") print(x*x) ===== 7. Doppellektion (ca. 04. bzw. 05. April 2022) ===== * Prüfung (gute 45 Minuten) * Feedback * Erste Begegnung mit Rekursion (Animation, Pflanze - Sierpinski-Dreieck), siehe Programme in den folgenden Ausklapp-Boxen. from gturtle import * def ast0(s): forward(s) backward(s) def ast1(s): forward(s) left(winkel) ast0(s/2) right(winkel) ast0(s/2) right(winkel) ast0(s/2) left(winkel) backward(s) def ast2(s): forward(s) left(winkel) ast1(s/2) right(winkel) ast1(s/2) right(winkel) ast1(s/2) left(winkel) backward(s) winkel = 25 # Nette andere Winkel: 120, 60, 90 makeTurtle() backward(300) ast2(300) from gturtle import * def ast(t, s): if t == 0: forward(s) backward(s) else: forward(s) left(winkel) ast(t - 1, s/2) right(winkel) ast(t - 1, s/2) right(winkel) ast(t - 1, s/2) left(winkel) backward(s) makeTurtle() hideTurtle() backward(300) enableRepaint(False) winkel = 0 while winkel <= 120: clear() ast(9, 300) repaint() winkel = winkel + 1 delay(50) ===== Organisatorisches zur Prüfung ===== Die Prüfung wird 45 Minuten dauern und findet im [[https://www.deutschlandfunknova.de/beitrag/bei-open-book-klausuren-sind-hilfsmittel-erlaubt-ueber-fairness-und-wie-sie-das-lernen-veraendern|"Open book"]]-Format statt. Dies bedeutet: * Kommunikation mit anderen Personen ist verboten; insbesondere darf weder Teams noch Email noch Whatsapp o.ä. verwendet werden, Handys sind auszuschalten. * Ihr dürft das Internet verwenden und insbesondere alle Webseiten, die ich erstellt habe. * Ihr dürft alle Dokumente auf eurem Rechner verwenden, insbesondere Python-Programme. * Ihr dürft auch Spickzettel, Blätter und andere schriftliche Unterlagen mitbringen. Die einzige erlaubte Kommunikation ist: Wenn in einer Aufgabenstellung etwas unklar ist, dürft ihr mich fragen. Damit ich überprüfen kann, dass ihr nicht unerlaubt kommuniziert, lasst ihr während der Klausur das Windows-Programm **schrittaufzeichnung** laufen, das bei jedem Maus-Klick und Fensterwechsel einen Screenshot abspeichert. Diese Screenshots werden in eine Zip-Datei gespeichert, die am Ende der Klausur abzugeben ist. Wichtig: In diesem Programm bitte bei Einstellungen so einstellen, dass die letzten 999 Screenshots gespeichert weden. **Bei Betrugsversuch (in der Regel unerlaubte Kommunikation) gibt es die Note 1.0, was die Promotion massiv erschweren dürfte.** Wir machen am 28. bzw. 29. März einen Testlauf. ==== Hinweise zur Vorbereitung ==== * Zu jeder Doppellektion gibt es eine Web-Seite. Am Ende dieser Seite findet ihr Lösungsvorschläge zu den Aufgaben. * Wenn ihr ein Programm nicht versteht, geht es im Einzelschrittverfahren durch! * Schreibt euch wichtige Sachen auf Papier oder in ein Dokument auf eurem Computer, also als klassischen oder elektronischen Spickzettel. * Ihr dürft ganze Python-Programme etc. auf eurem Computer verwenden. Oft geht es schneller, ein bestehendes Programm anzupassen oder Copy+Paste zu verwenden, als alles neu zu schreiben. * Wenn ihr wollt, könnt ihr euch einige wenige Seiten ausdrucken, ABER: * Das exzessive Ausdrucken von Unterlagen halte ich nicht für sinnvoll: Weder ist Copy-Paste beim Programmieren möglich noch könnt ihr per "digitaler Suchfunktion" nach einem Begriff suchen. Überdies sind alle nicht verwendeten Unterlagen umweltschädliche Papierverschwendung. ===== Lernziele ===== Du kennst die folgenden Begriffe und kannst sie erklären (und, wenn sinnvoll, voneinander unterscheiden): * Algorithmus * Flussdiagramm * Computer-Programm * Programmiersprache * Python * IDE, d. h. Integrated development environment, Integrierte Entwicklungsumgebung * Tigerjython * Variable (Name und Wert - was der Typ ist, müsst ihr nicht wissen) * ''repeat''-Schleife * ''if''-''else''-Selektion * Funktion (Funktionsdefinition, Funktionsaufruf, Parameter = Übergabewert) * ''while''-Schleife Du kannst Python-Programme schreiben, die * [[lehrkraefte:snr:informatik:bruehl-2022:algorithmen#erste_schritte_in_tigerjython|Zeichnungen mit der Turtle erstellen]] (auch Farbwechsel, Stiftdicke, auch ''repeat''). * [[lehrkraefte:snr:informatik:bruehl-2022:ein-und-ausgabe-variablen|mit Variablen (deren Wert zahlen sind) rechnen, Eingabe und Ausgabe]] (''input'', ''print''). * [[lehrkraefte:snr:informatik:bruehl-2022:variablen-2|Variablen sinnvoll einsetzen]] (Roboterwissen wird nicht abgefragt). * ''if''-''else''-[[lehrkraefte:snr:informatik:bruehl-2022:auswahl|Selektion verwenden]] (etwa [[lehrkraefte:snr:informatik:bruehl-2022:auswahl#aufgabe_5_quiz|Quiz]]). * [[lehrkraefte:snr:informatik:bruehl-2022:funktionen|Funktionen (ohne oder mit einem Parameter) definieren und sinnvoll verwenden.]] (Die Definition von Funktionen mit Rückgabewert wurde nicht besprochen und wird deshalb nicht verlangt) * [[lehrkraefte:snr:informatik:bruehl-2022:schleifen|''while''-Schleifen verwenden.]] Ausserdem: * Du kannst fehlerhafte Programme korrigieren, vgl. eine Frage in [[lehrkraefte:snr:informatik:bruehl-2022:algorithmen:quiz|diesem Quiz]] * Du kannst Flussdiagramme in Python-Programme verwandeln. (wie z. B. in [[lehrkraefte:snr:informatik:bruehl-2022:variablen-2#aufgabe_2_algorithmus_bzw_flussdiagramm_in_python-programm_uebersetzen|dieser Aufgabe]]; das Flussdiagramm, das wir in der Aufgabe zuvor erstellt haben findest du unter [[lehrkraefte:snr:informatik:bruehl-2022:variablen-2#loesungsvorschlaege|Lösungsvorschläge]]. Die Schwierigkeit wird in etwa auf dem Niveau der einfachen bis mittelschwierigen Aufgaben aus den Lektionen sein.