Lexikalische Fehler

Werbung
Informatik-Lexikon
Fehler beim Programmieren
Es gibt beim Programmieren fünf Arten von Fehlern:
Lexikalische Fehler
Ein lexikalischer Fehler liegt dann vor, wenn Sie bei der Eingabe von Java-Befehlen einen
Rechtschreibfehler machen, z.B. wenn Sie statt "while" das Wort "uwail" eingeben, weil Sie
keine Ahnung von Englisch haben. Oder wenn Sie statt "vor()" den Befehl "Vor()" eingeben.
Java unterscheidet ganz streng zwischen Klein- und Großschreibung.
Syntaktische Fehler
Ein syntaktischer Fehler ist so etwas wie ein Grammatikfehler. Alle Worte sind zwar
geschrieben zwar richtig, dennoch Satzbau ist der falsch.
Semantische Fehler
Das ist jetzt schon etwas komplizierter zu erklären. Wenn Sie in einer Programmiersprache
eine Variable verwenden und haben diese Variable vorher gar nicht deklariert, dann ist das ein
semantischer Fehler. Lexikalisch und syntaktisch ist alles korrekt - aber die Variable existiert
noch gar nicht. Denken Sie einfach an den deutschen Satz "Die Katze wird von der
Tischdecke gefressen". Lexikalisch ist hier alles richtig, syntaktisch ebenfalls - aber
Tischdecken können keine Katzen fressen.
Laufzeitfehler
Sie haben ein Programm geschrieben, keine Tippfehler gemacht, die Syntax ist in Ordnung,
und alle Variablen sind korrekt deklariert - das Programm ist also frei von lexikalischen,
syntaktischen und semantischen Fehlern, es wird daher problemlos kompiliert. Der Compiler
kann nämlich nur die ersten drei Typen von Fehlern erkennen und melden. In Ihrem
Programm kommt folgende Zeile vor:
x = y / z;
Die Variable y soll durch die Variable z dividiert werden, und das Ergebnis soll der Variablen
x zugewiesen werden. Das Programm funktioniert einwandfrei, bis eines Tages der Benutzer
des Programm für z den Wert 0 eingibt. Da man nicht durch 0 dividieren kann, stürzt das
Programm ab und meldet einen Laufzeitfehler.
Ein typischer Laufzeitfehler aus der Hamster-Programmierung: Wenn der Hamster ein Korn
aufnehmen soll, aber kein Korn auf dem Feld liegt. Ein anderer Laufzeitfehler, der typisch ist
für den Hamstersimulator: Der Hamster soll vorwärts gehen, steht aber vor einer Mauer.
Logische Fehler
Laufzeitfehler werden zwar nicht vom Compiler entdeckt, fallen aber auf, wenn das
Programm abstürzt. Logische Fehler führen meistens nicht zu einem Programmabsturz,
sondern nur zu völlig falschen Ergebnissen. Ein ganz einfacher Fall: Sie sollen ein Programm
schreiben, dass den Hamster dreimal vorwärts gehen lässt, damit er dann ein Korn aufnimmt.
In dem Territorium liegen auf allen Feldern, mit denen der Hamster in Berührung kommt,
mindestens drei Körner. Sie tippen folgende Zeilen ein:
vor();
vor();
nimm();
Das Programm enthält weder lexikalische, syntaktische oder semantische Fehler noch einen
Laufzeitfehler. Trotzdem tut das Programm nicht das, was es eigentlich soll, weil Sie einen
simplen logischen Fehler eingebaut habe: Der Hamster geht nicht dreimal vor, sondern nur
zweimal. Gut - das war ein ziemlich blödes Beispiel. Normalerweise entdeckt man logische
Fehler nicht so schnell, sondern muss ziemlich lange suchen, bis einem nach vielen
erfolglosen Versuchen plötzlich die Erleuchtung kommt, warum das Programm nicht
funktioniert.
Ein anderes Beispiel: Sie wollen einen Programmteil schreiben, der die Zahlen 1 bis 10
addiert und tippen jetzt
summe = 0;
for (int i = 1; i <= 10; i++)
summe = summe + i;
Das Programm gibt aber nicht wie erwartet die Zahl 55 aus, sondern 66. Sie hätten nämlich
nicht i <= 10 schreiben dürfen, sondern stattdessen i < 10, was ja nicht dasselbe ist.
Herunterladen