is-Logo

Programmierung
Sprachübersetzer - Fehlerbehandlung

S. Spolwig

[Home | Algorithmen]

Die Forderung:

Der Prozessor muss die Darstellung, in der ein Algorithmus ausgedrückt ist, "verstehen", damit er ihn ausführen kann.

Dabei können Fehler unterschiedlicher Art und auf verschiedenen Ebenen auftreten.

Syntaxfehler

Ein Programm ist dann syntaktisch fehlerfrei, wenn die in der Sprache festgelegten Symbole und Regeln richtig angewandt wurden.

program fehlertest.pas ;
begin
   writeln ('Alles ok');
end.
pogram fehlertest.pas ;
begin
  
writeln ('Alles ok');
>> Syntax error                  <==  ( end. fehlt)
 

 

Semantikfehler

Semantik ist die inhaltliche Bedeutung, die eine Sprache, ein Satz oder ein Wort hat. Die angewendete Sprache kann syntaktisch völlig fehlerfrei, aber semantisch falsch sein.
Beispiele:

  • Der Elefant fraß die Erdnuss.

  • Die Erdnuss fraß den Elefanten.

  • Farblose grüne Ideen schlafen wild.

In einem Algorithmus, der sicher völlig fehlerfrei ausgeführt würde, steht

Schreibe den Namen des 1. Monats im Jahr

Anders bei dieser Anweisung:

Schreibe den Namen des 13. Monats im Jahr

Wenn der Compiler Kenntnis über die Monate hat (z. B. durch einen entsprechenden Typ), würde eine Fehlermeldung kommen können (z. B. Bereichsüberschreitung), sonst käme Unsinn heraus.

Wenn das nicht so ist, dann würde folgender Fehler sicher lange unentdeckt bleiben:

Denke Dir eine Zahl zwischen 1 und 13 aus
Bezeichne diese Zahl mit N
...
Schreibe den Namen des N-ten Monats im Jahr

 

Logikfehler

Die Logik bezieht sich auf richtige Aussagen, Folgerungen, Algorithmen.

Neben Semantikfehlern gehören Logikfehlern zu denen, die am schwierigsten zu finden sind. Ein Programm würde klaglos bis in alle Ewigkeit den Algorithmus ausführen

Umfang := Radius * Pi

bis es jemandem auffiele, dass dabei falsche Ergebnisse herauskommen.

 

Prüfung der Korrektheit

Die Prüfung der Fehlerfreiheit von Programmen ist eines der schwierigsten Probleme der Informatik. Es gibt kein Programm, das sich selbst auf Fehlerfreiheit prüfen kann. Es bleiben daher im wesentlichen zwei Wege:

TESTEN BEWEISEN
mit sinnvollen Testdaten und Testverfahren

- Praxistest
- Schreibtischtest

anhand der Spezifikation und der  Dokumentation

dass alle zugelassenen Daten und möglichen Anweisungen richtig sind.

Das dürfte schon bei Programmen mittlerer Größe wegen des Aufwandes nicht mehr durchführbar sein.

-------------------
Literatur: Goldschlager/Lister: Informatik. Eine moderne Einführung. Carl Hanser Verlag.



 04. Oktober 2008   ©  Siegfried Spolwig

page_top