Logikfehler vs Syntaxfehler
Kurzüberblick / Definition¶
In der Programmierung unterscheidet man zwischen:
- Syntaxfehlern → Verstoß gegen die Sprachregeln
- Logikfehlern → Fehler in der fachlichen oder algorithmischen Umsetzung
Core-Erklärung¶
Grundprinzip¶
Fehler lassen sich danach unterscheiden, wann sie auftreten und wie sie sich auswirken:
| Fehlerart | Code korrekt? | Programm läuft? | Ergebnis korrekt? |
|---|---|---|---|
| Syntaxfehler | ❌ Nein | ❌ Nein | ❌ Nein |
| Logikfehler | ✅ Ja | ✅ Ja | ❌ Nein |
1. Syntaxfehler (Compile-Time Error)¶
Ein Syntaxfehler entsteht, wenn der Code gegen die Regeln der Programmiersprache verstößt.
➡️ Der Compiler kann den Code nicht übersetzen
Beispiel¶
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!" // fehlende Klammer
}
}
Typische Ursachen:
- Fehlende oder falsche Klammern
- Fehlende Semikolons
- Tippfehler bei Schlüsselwörtern (
publc,clas) - Falsche Methodensignaturen
➡️ Fehler wird sofort vom Compiler gemeldet
2. Logikfehler (Semantischer Fehler)¶
Ein Logikfehler bedeutet:
- Der Code ist syntaktisch korrekt
- Die Umsetzung der Aufgabe ist falsch
➡️ Das Programm läuft, aber das Ergebnis ist falsch
Beispiel¶
public class Main {
public static void main(String[] args) {
int a = 5;
int b = 10;
int sum = a - b; // falsche Operation
System.out.println("Summe: " + sum);
}
}
Praxisbeispiele (Realistisch)¶
1. Authentifizierung (sehr häufig in Prüfungen)¶
Logikfehler¶
if (username == "admin") {
System.out.println("Login erfolgreich");
}
Problem:
==vergleicht Referenzen, nicht Inhalte- Korrekt wäre:
if (username.equals("admin")) {
System.out.println("Login erfolgreich");
}
2. Rabattberechnung¶
double price = 100;
double discount = 0.2;
double finalPrice = price + discount; // falsche Formel
➡️ Richtige Logik:
double finalPrice = price * (1 - discount);
3. Schleifenfehler (Off-by-One)¶
for (int i = 0; i <= 10; i++) {
System.out.println(i);
}
➡️ Gibt 11 Werte aus (0–10)
4. Bedingungen (Grenzwerte)¶
if (age > 18) {
System.out.println("Erwachsen");
}
➡️ Problem: 18-Jährige werden ausgeschlossen
➡️ Korrekt:
if (age >= 18) {
System.out.println("Erwachsen");
}
Vergleich: Syntax vs Logikfehler¶
| Kriterium | Syntaxfehler | Logikfehler |
|---|---|---|
| Zeitpunkt | Beim Kompilieren | Während der Ausführung |
| Programmstart möglich | ❌ Nein | ✅ Ja |
| Fehlermeldung | ✅ Direkt | ❌ Oft keine |
| Ursache | Sprachregel verletzt | Denk-/Fachfehler |
| Schwierigkeit | Niedrig | Mittel bis hoch |
Debugging & Fehlersuche¶
Syntaxfehler¶
- Werden vom Compiler/IDE angezeigt
- Meist direkt korrigierbar
Logikfehler¶
Erfordern systematische Analyse:
- Schrittweises Durchgehen (Debugger)
- Zwischenausgaben (
print) - Testfälle (Unit Tests)
- Grenzwerte prüfen (Edge Cases)
Erweiterung: Laufzeitfehler (Runtime Error)¶
Ein Laufzeitfehler tritt während der Ausführung auf und führt meist zum Abbruch.
int x = 10 / 0;
➡️ Beispiel: Division durch 0 → Exception
Typische Denkfehler¶
- „Kein Compilerfehler = Code ist korrekt“
- Verwechslung von
=und== - Falsche Annahmen über Bedingungen
- Unzureichendes Testen
Exam-Relevanz¶
- Unterschied zwischen Syntax- und Logikfehler erklären
- Beispiele korrekt zuordnen
- Typische Logikfehler erkennen (if, Schleifen, Operatoren)
- Rolle des Compilers verstehen
Fazit¶
- Syntaxfehler stoppen das Programm vor dem Start
- Logikfehler sind subtil und gefährlich
- Gute Entwickler erkennen Logikfehler durch Tests und sauberes Denken
Merksatz¶
Syntaxfehler verhindern die Ausführung.
Logikfehler verfälschen das Ergebnis.