Die Beispiele aus diesem Abschnitt können in einem Jupyternotebook nachvollzogen werden. Es muss zusammen mit den Bilddateien vorher entpackt werden.
Danach kann man das Notebook zusammen mit den Bildern z.B. bei https://jupyter.org/try → JupyterLab hochladen und öffnen. Leider lassen sich die Beispiele mit IPythonturtle nur in Umgebungen ausführen, in denen das pip-Paket ipycanvas installiert ist.
Zur Ausgabe wird in Python die Funktion print() verwendet.
Syntax:
print(ausdruck1, ausdruck2, ...)
Die Ausdrücke können Zeichenketten, Zahlen, Variablen, Rechnungen und Funktionen sein. Sie werden ausgewertet und als Zeichenkette ausgegeben.
Beispiele:
print("Hallo Welt!") #gibt die Zeichenkette "Hallo Welt!" aus x = 5 print("x=",x) # gibt die Zeichenkette "x=" und den Wert von x aus a = 10 b = 15 print(a," + ",b," = ",a+b) # gibt den Werte von a und b und von a+b aus
Zur Eingabe wird in Python die Funktion input() verwendet.
Syntax:
eingabe = input()
Die Funktion input() hält das Programm an und erwartet eine Tastatureingabe. Nachdem die Eingabe mit <ENTER> abgeschlossen ist, wird die Zeichenkette an die Variable eingabe
übergeben und kann weiterverarbeitet werden.
Beispiele:
eingabe=int(input()) # Die eingegebene Zeichenkette wird in eine ganze Zahl umgewandelt. eingabe=float(input("x=")) # Die eingegebene Zeichenkette wird in eine ganze Zahl umgewandelt. Vor der Eingabe steht x=.
Aufgabe
Teste die Beispiele!
In Klasse 7 hast du das EVA-Prinzip (Eingabe-Verarbeitung-Ausgabe) kennengelernt, nach dem Infomatiksysteme funktionieren. Wir wollen im folgenden einfache Pythonprogramme schreiben, die nach diesem Prinzip funktionieren.
Beispiel 1
Im folgenden Programm werden zwei Zahlen a und b mit der Funktion input()
eingegeben (Eingabe). Anschließend wird der Variablen s die Summe der Zahlen a und b zugewiesen (Verarbeitung). Zum Schluss wird die Summe mit der print()
-Anweisung ausgegeben (Ausgabe).
# Beispiel 1 a = int(input("a = ")) b = int(input("b = ")) s = a + b print("Summe:", s)
Beispiel 2
Im Beispiel 2 wird das Beispiel 1 vereinfacht. Es gibt jetzt keine Extraanweisung zur Verarbeitung mehr. Die Summe wird jetzt direkt in der print()
-Anweisung berechnet.
# Beispiel 1 a = int(input("a = ")) b = int(input("b = ")) print("Summe:", a + b)
Aufgabe
Teste die Beispiele!
Struktogramme sind eine Möglichkeit, Algorithmen ohne Programmiersprache darzustellen. Das folgende Video gibt dir einen Überblick. Der Nachteil von Struktogrammen ist, dass sie im Vergleich zu einem Programm recht umständlich aufzuschreiben sind. Aber es gibt auch Tools wie zum Beispiel das Programm Struktorizer oder den Online Struktogramm Editor der TU Dresden, die uns die Arbeit erleichtern. Struktogramme haben aber den Vorteil, dass man mit Ihnen die Algorithmen unabhängig von einer bestimmten Programmiersprache formulieren kann. Um unsere einfachen linearen Programme im Struktogramm darzustellen benötigen wir lediglich Einzelanweisungen, die zu einer einzigen Sequenz (Folge von anweisungen) zusammengefasst werden. Die anderen Struktogrammelemente aus dem Video lernen wir später kennen.
Einzelanweisungen werden als Rechteck dargestellt. Wenn es sich um eine Eingabeanweisung handelt kann man das durch E: oder Eingabe: kennzeichnen, wenn es sich um eine Ausgabeanweisung handelt kann man das durch A: oder Ausgabe: kennzeichnen.
In Struktogrammen bin ich nicht an strenge Befehle gebunden, denn sie werden ja nicht ausgeführt. sie dienen lediglich als Übersicht für mich selbst.
Die Struktogramme für unsere Programmbeispiele würden so aussehen:
Struktogramm für Beispiel 1
Struktogramm für Beispiel 2
Beim Beispiel 2 wurden zwei Pythonbefehle zu einer Struktogrammanweisung zusammengefasst. Dies ist erlaubt, solange es übersichtlich bleibt.
Keiner ist perfekt und auch ein Programmierer macht Fehler. Man kann aber viel aus Fehlern lernen.
Aufgabe
Die drei folgenden Programme sind fehlerhaft. Finde die Fehler und versuche sie zu korrigieren! Was ist der Unterschied?
# Programm 1 name = input("Dein Name") print("Du heißt" name)
# Programm 2 a = input("a = ") b = input("b = ") print("a + b =",a + b)
# Programm 3 a = input("a = ") b = input("b = ") print("a * b =",a * b)
Beim Programmieren unterscheiden wir drei verschiedene Arten von Fehlern:
Damit unsere Pythonprogramme nich so langweilig werden wollen wir das Programmieren auch mit der Python-Turtlegrafik üben. Man kann sich bei der Turtlegrafik eine kleine Schildkröte vorstellen die einen Stift hat, mit dem sie Zeichnungen erstellen kann. Eigentlich gibt es in Python eine Turtle-Bibliothek, welche aber in Jupyternotebooks nicht perfekt funktioniert. Deshalb verwenden wir in unseren Pythonprogrammen eine Turtlebibliothek (IPythonturtle.py) verwenden, die mit Hilfe von ChatGPT auf Basis der Bibliothek IPCanvas erstellt wurde und innerhalb von Jupyternotebooks funktioniert.
Um die Turtle zu verwenden, muss sich die Datei IPythonturtle.py im selben Ordner befinden. Weiterhin muss das Paket ipycanvas installiert und in Jupyter aktiviert werden. Um die Bibliothek (Siehe später!) einzubinden, muss am Anfang dess Pythonprogramms der Befehl
from IPythonturtle import IPythonturtle
stehen. Danach kann man mit
t = IPythonturtle()
eine neue Turtle erzeugen. Die Turtle versteht die folgenden Befehle:
forward(distance)
– Bewegt die Turtle um distance
Pixel in Blickrichtung.backward(distance)
– Bewegt die Turtle rückwärts um distance
Pixel.left(angle)
– Dreht die Turtle um angle
Grad nach links.right(angle)
– Dreht die Turtle um angle
Grad nach rechts.goto(x, y)
– Bewegt die Turtle zu den Koordinaten (x, y).home()
– Bewegt die Turtle zurück in die Mitte der Zeichenfläche und setzt die Richtung auf 0°.circle(radius)
– Zeichnet einen Kreis mit dem angegebenen Radius.penup()
– Hebt den Stift an – Bewegungen hinterlassen keine Spuren.pendown()
– Setzt den Stift – Bewegungen werden gezeichnet.pencolor(color)
– Setzt die Stiftfarbe (z. B. 'red', '#00FF00').width(w)
– Setzt die Linienstärke.clear()
– Löscht die Zeichenfläche und setzt die Turtle zurück.speed(value)
– Setzt die Zeichen-Geschwindigkeit. Werte: 'normal', 'slow', 'slowest' oder Zahl in ms.fillcolor(color)
– Setzt die Füllfarbe für begin_fill / end_fill.begin_fill()
– Startet eine Füllung; alle Bewegungen werden gesammelt.end_fill()
– Schließt das aktuelle Polygon und füllt es mit der Füllfarbe.Ein Beispiel:
# Turtlebibliothek einbinden from IPythonturtle import IPythonturtle # Turtle erzeugen, Geschwindigkeit, Vordergund- und Hintegrundfarbe setzen t = IPythonturtle() t.speed("normal") t.pencolor("blue") t.fillcolor("lightblue") # Füllen beginnen t.begin_fill() # Quadrat zeichnen t.forward(100) t.right(90) t.forward(100) t.right(90) t.forward(100) t.right(90) t.forward(100) t.right(90) # Füllen beenden t.end_fill()
Download der Datei IPythonturtle.py ipythonturtle.zip