Benutzer-Werkzeuge

Webseiten-Werkzeuge


neuerlehrplan:klasse10:lineareprogrammeeinausgabe

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
neuerlehrplan:klasse10:lineareprogrammeeinausgabe [2025/08/24 10:47] – [Struktogramme] lutzneuerlehrplan:klasse10:lineareprogrammeeinausgabe [2025/08/24 21:10] (aktuell) lutz
Zeile 88: Zeile 88:
 =====Struktogramme===== =====Struktogramme=====
  
-**Struktogramme** sind eine Möglichkeit, Algorithmen ohne Programmiersprache darzustellen. Das folgende **[[https://studyflix.de/informatik/struktogramm-5715|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 [[https://structorizer.fisch.lu/|Struktorizer]] oder den [[https://ddi.education/struktog/|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.+**Struktogramme** sind eine Möglichkeit, Algorithmen ohne Programmiersprache darzustellen. Das folgende **[[https://studyflix.de/informatik/struktogramm-5715|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 [[https://structorizer.fisch.lu/|Struktorizer]] oder den [[https://ddi.education/struktog/|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. 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.
Zeile 95: Zeile 95:
  
 Die Struktogramme für unsere Programmbeispiele würden so aussehen: Die Struktogramme für unsere Programmbeispiele würden so aussehen:
 +
 +**Struktogramm für Beispiel 1**
 +
 +{{ :neuerlehrplan:klasse10:1_04_strukt01.png?direct&600 |}}
 +
 +**Struktogramm für Beispiel 2**
 +
 +{{ :neuerlehrplan:klasse10:1_04_strukt02.png?direct&600 |}}
 +
 +Beim Beispiel 2 wurden zwei Pythonbefehle zu einer Struktogrammanweisung zusammengefasst. Dies ist erlaubt, solange es übersichtlich bleibt.
 +
 +=====Fehler beim Programmieren=====
 +
 +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?
 +
 +<code python>
 +# Programm 1
 +name = input("Dein Name")
 +print("Du heißt" name)
 +</code>
 +
 +<code python>
 +# Programm 2
 +a = input("a = ")
 +b = input("b = ")
 +print("a + b =",a + b)
 +</code>
 +
 +<code python>
 +# Programm 3
 +a = input("a = ")
 +b = input("b = ")
 +print("a * b =",a * b)
 +</code>
 +
 +Beim Programmieren unterscheiden wir drei verschiedene Arten von Fehlern:
 +
 +  * Im Programm 1 tritt ein **syntaktischer Fehler** auf und das Programm wird gar nicht erst ausgeführt. Der Quelltext widerspricht der **Grammatik** der Programmiersprache Python.
 +  * Das Programm 2 wird zwar ausgeführt, aber liefert nicht das gewünschte Ergenis. Hier spricht man von einem **semantischen Fehler**, also einen Fehler in der **Programmlogik**.
 +  * Im dritten Fall wird das Programm während seiner Ausführung abgebrochen. Man spricht von einem **Laufzeitfehler**. Diese können z.B. (hier nicht) von falschen Eingaben ausgelöst werden.
 +
 +
 +=====Turtlegrafik in Jupyternotebooks=====
 +
 +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:**
 +
 +<code python>
 +# 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()
 +</code>
 +
 +
 +<WRAP center round download 60%>
 +Download der Datei IPythonturtle.py
 +{{ :neuerlehrplan:klasse10:ipythonturtle.zip |}}
 +</WRAP>
 +
 +
neuerlehrplan/klasse10/lineareprogrammeeinausgabe.1756025262.txt.gz · Zuletzt geändert: von lutz