Kann mit jemand ein Beispiel für einen syntaktischen - und semantischen Fehler zeigen (BlueJ, Java)?
2 Antworten
Die Syntax beschreibt den "Satzbau", also wie (in welcher Form, nach welcher Struktur) verschiedene Komponenten (Zeichen) zusammen benutzt werden können. Auf Syntaxfehler weist dich der Compiler hin.
Beispiel:
for (boolean b = "Hello World") [+]
Die Semantik meint die Bedeutung dieser syntaktischen Ausdrücke. Ein semantischer Fehler wäre es also, wenn ein Code-Teil nicht das tut, was er tun soll. Darauf weist dich der Compiler nicht hin.
Beispiel:
int sum(int a, int b) { return a - b; }
Syntaktischer Fehler:
System.out.Println("Hello World");
Umgangssprachlich:
Du hast es nicht korrekt hingeschrieben.
Auf syntaktische Fehler macht Dich direkt der Compiler aufmerksam.
Semantische Fehler: Beispiele im Code sind schwierig. Eine Beschreibung eines semantischen Fehlers wäre:
Ein Programm nimmt Divident und Divisor per Benutzereingabe entgegen und soll dann die Division durchführen und das Ergebnis ausrechnen. Bei Eingabe von 0 als Divisor stürzt das Programm aber ab.
Die Lösung hier ist natürlich, dass vergessen wurde, zu validieren, dass der Divisor nicht 0 sein darf (Division durch 0 nicht erlaubt).
Umgangssprachlich:
Du hast es zwar syntaktisch korrekt hingeschrieben, aber der Code tut nicht das, was Du denkst, was er tun soll.
Auf semantische Fehler kann Dich der Compiler nicht direkt aufmerksam machen, weil er die Bedeutung dessen, was Du willst, nicht erfassen kann.
Ein semantischer Fehler wäre, wenn man davon ausgeht, dass folgende Funktion bei Eingabe positiver Werte auch immer eine positive Zahl liefert:
public int add(int v1, int v2)
{
return v1 + v2;
}
Geht das vielleicht, dass du mir nur ein kleines Beispiel für einen semantischen Fehler machen kannst?