Strukturierung – Fehler in Algorithmen und Programmen
Jeder macht Fehler
In der Erkundung hast du ein relativ schwieriges Problem gelöst. Falls dir das nicht auf Anhieb gelungen ist, dann ist das kein Grund zur Sorge. Fehler gehören zum Programmieren dazu. Deshalb schauen wir uns auf dieser Seite an, welche Fehlertypen häufig auftreten. Nur wenn du weißt, welche wann auftreten können, bist du in der Lage, sie zu korrigieren oder gar zu verhindern.
Aufgabe 1
Bei der Suche nach geeigneten Ideen für das Blätter-Such-Problem hat Schüler A. das hier notiert:
Kleeblatt suchen: SOLANGE nicht auf einem Kleeblatt, mache Folgendes: WENN vor einem Baum, dann den Baum / die Baumreihe umlaufen einen Schritt weitergehen das Kleeblatt aufheben
Erkläre anhand konkreter Situationen, warum diese Idee das Problem nicht löst.
Spiele diese Idee einmal mit den folgenden drei Beispielwelten durch:
Aufgabe 2
Schülerin B. hat den folgenden Algorithmus (als Struktogramm) entwickelt. Ihre Lehrerin ist jedoch nicht überzeugt. Schreibe an B. eine kurze Erklärung, was sie falsch gemacht hat.
Aufgabe 3
(a) Das folgende Programm von Schüler C. ist nicht richtig. Findest du den Fehler direkt? Probiere auf jeden Fall aus, was passiert, wenn du das Programm mit Python Kara ausführst. Interpretiere das Ergebnis.
while not kara.onLeaf():
if kara.treeFront()
kara.turnLeft()
kara.move()
kara.turnRight()
kara.move()
while kara.treeRight():
kara.move()
kara.turnRight()
kara.move()
kara.turnLeft()
else:
kara.move()
kara.removeLeaf()
(b) Das folgende Programm von Schülerin D. ist nicht richtig. Findest du den Fehler direkt? Probiere auf jeden Fall aus, was passiert, wenn du das Programm mit Python Kara ausführst. Interpretiere das Ergebnis.
while not kara.onLeaf():
if kara.treeFront():
kara.turnLeft()
kara.move()
kara.turnRight()
kara.move()
while kara.treeRight():
kara.move()
kara.turnRight()
kara.move()
kara.turnLeft()
else:
kara.move()
kara.removeLeaf()
Fehler vergleichen
Aufgabe 4
(a) Fehler können in den unterschiedlichen Schritten des Problemlösens auftreten. Gehe die Fehler der Schüler:innen A. bis D. durch und ordne sie einem Schritt des algorithmischen Problemlösens zu.
(b) Man kann die aufgetretenen Fehler in zwei Klassen einteilen: Auf der einen Seite gibt es Syntaxfehler – das sind Fehler, bei denen die Regeln der Programmiersprache nicht beachtet wurden. Dem gegenüber stehen Logische Fehler – Fehler, bei denen die Ablauflogik nicht richtig ist und deshalb das Programm nicht funktionieren wird. Ordne die Fehler von A. bis D. diesen beiden Fehlertypen zu.
(c) Ordne zu: In welchen Schritten der Problemlösung können Syntaxfehler auftreten? In welchen können logische Fehler auftreten?
(d) Recherchiere: Was versteht man außerhalb der Informatik unter der Syntax einer Sprache? Was wäre ein Syntaxfehler im Deutschen? Erkläre, warum der Begriff innerhalb der Informatik passend gewählt ist.
(e) Eventuell hast du in vorherigen Abschnitten schon typische/häufige Fehler im Umgang mit Anweisungen, Fallunterscheidungen und Wiederholungen gesammelt. Falls nicht, mache das jetzt. Gehe deine Sammlung durch und markiere, welche Fehler Syntaxfehler sind und wo es sich um logische Fehler handelt.
Das Wichtigste notieren
Aufgabe 5
Notiere dir, welche beiden Fehlertypen wir unterscheiden und wo sie auftreten können. Du kannst dafür den unteren Abschnitt des Wissensspeichers nutzen.