i

Fachkonzept – Fehler in Algorithmen und Programmen

Jeder macht Fehler

Algorithmisches Problemlösen ist eine anspruchsvolle Tätigkeit. Es ist ganz natürlich, wenn du dabei Fehler machst. Das kommt selbst bei Profis immer wieder vor.

Im Folgenden sollen einige Fehlerquellen kurz beleuchtet werden.

Fehler bei der Ideensuche

Häufig kommt es bereits bei der Ideensuche zu Fehlern. Man glaubt, die entscheidende Idee gefunden zu haben, hat aber etwas Wichtiges übersehen.

Bei der folgenden Idee wurde leider übersehen, dass sie das Problem nur in bestimmten Spezialfällen löst.

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

Hier wurde nicht berücksichtigt, dass hinter einer Baumreihe sofort wieder eine weitere Baumreihe folgen kann, oder, dass das Kleeblatt direkt hinter einer Baumreihe liegt.

Das Programm funktioniert zwar in diesem Beispiel ...

Kara sucht ein Kleeblatt – Beispiel 1

... aber nicht in diesem Beispiel ...

Kara sucht ein Kleeblatt – Beispiel 2

... und auch nicht in diesem Beispiel:

Kara sucht ein Kleeblatt – Beispiel 3

Fehler bei der Ablaufmodellierung

Bei der Ablaufmodellierung mit Struktogrammen muss man darauf achten, die Bausteine korrekt zusammenzusetzen.

Im folgenden Struktogramm hat sich ein Fehler eingeschlichen:

Struktogramm mit Fehlern

Das Kleeblatt darf erst ganz am Ende, also außerhalb der SOLANGE-Anweisung (Wiederholungsanweisung), aufgehoben werden. Im vorliegenden Struktogramm würde Kara in jedem Durchlauf der Schleife versuchen, ein Kleeblatt aufzuheben, was ihr dann aber nicht gelingt.

Fehler bei der Beschreibung in einer Programmiersprache

Bei der Übersetzung eines korrekten Algorithmus in ein lauffähiges Programm kann es zu weiteren Fehlern kommen.

So kann man z.B. den Doppelpunkt in der if-Anweisung vergessen.

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()

Das Kara-Ausführsystem meldet dann folgenden Fehler:

Fehlermeldung

Oder, eine Anweisung ist nicht korrekt eingerückt.

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()

In diesem Fall meldet das Kara-Ausführsystem den folgenden Fehler:

Fehlermeldung

Fehlertypen

Grob unterscheiden lassen sich die folgenden beiden Fehlertypen:

Logische Fehler sind Fehler in Algorithmen, bei denen die Ablauflogik nicht korrekt festgelegt ist.

Syntaxfehler sind Fehler in Programmen, bei denen die Vorgaben der Programmiersprache nicht beachtet sind.

Syntaxfehler werden in der Regel durch Fehlermedungen vom Ausführsystem angezeigt. Die Schwierigkeit besteht meist nur darin, die Fehlermeldungen zu verstehen.

Schwieriger ist es, logische Fehler zu finden. Hier hilft es oft, den Algorithmus – für verschiedene Problemsituationen – Schritt für Schritt selbst auszuführen.

Suche

v
6.1.4.7
www.inf-schule.de/imperative-programmierung/kara/algorithmen/konzept_fehler
www.inf-schule.de/6.1.4.7
www.inf-schule.de/@/page/Sx727Z5raa6a4NTo

Rückmeldung geben