lehrkraefte:snr:informatik:bruehl-2022

Informatik: Algorithmen und Programme (1AFGsK und 1CFP)

  • 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.

(01. März 2022 entfällt)

(Erster Besuch am Dienstag, 08. März)

14. März entfällt

(Zweiter Besuch am Dienstag, 22. März)

$n$-Eck-Aufgabe

$n$-Eck-Aufgabe

from gturtle import *
makeTurtle()
n = 5
 
repeat n:
    forward(50)
    right(360/n)

Berechne-Quadrat-von-Eingabe-Aufgabe

Berechne-Quadrat-von-Eingabe-Aufgabe

x = input("Gib eine Zahl ein!")
print("Das Quadrat von")
print(x)
print("ist")
print(x*x)
  • Prüfung (gute 45 Minuten)
  • Feedback
  • Erste Begegnung mit Rekursion (Animation, Pflanze - Sierpinski-Dreieck), siehe Programme in den folgenden Ausklapp-Boxen.

Schrittweise Hinführung zur Rekursion: Zuerst ast0, dann ast1, ast2

Schrittweise Hinführung zur Rekursion: Zuerst ast0, dann ast1, ast2

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)

… und nun rekursiv (also ast(X,s) statt astX(s)) … und dann gleich animiert

… und nun rekursiv (also ast(X,s) statt astX(s)) … und dann gleich animiert

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)

Die Prüfung wird 45 Minuten dauern und findet im "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.

  • 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.

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

Ausserdem:

  • Du kannst fehlerhafte Programme korrigieren, vgl. eine Frage in diesem Quiz
  • Du kannst Flussdiagramme in Python-Programme verwandeln. (wie z. B. in dieser Aufgabe; das Flussdiagramm, das wir in der Aufgabe zuvor erstellt haben findest du unter Lösungsvorschläge.

Die Schwierigkeit wird in etwa auf dem Niveau der einfachen bis mittelschwierigen Aufgaben aus den Lektionen sein.

  • lehrkraefte/snr/informatik/bruehl-2022.txt
  • Last modified: 2022/04/10 15:27
  • by Olaf Schnürer