Informatik

Logische Ausdrücke

Die Schaltjahrregel war umständlich, weil du drei verschachtelte Fälle brauchtest. Mit logischen Operatoren verknüpfst du mehrere Bedingungen zu einer einzigen.

Wahrheitswerte sind Werte

Eine Bedingung ist nichts Besonderes – sie ist ein Ausdruck vom Typ boolean. Man kann sie in einer Variablen speichern.

alter >= 18 ist ein Ausdruck, der zu true oder false ausgewertet wird – genau wie 3 + 4 zu 7 ausgewertet wird.

Deshalb schreibt man nicht if (volljaehrig == true). Das ist zwar richtig, aber überflüssig: if (volljaehrig) sagt dasselbe.

Und, oder, nicht

Aus dem Unterricht kennst du vielleicht schon die Logikgatter UND, ODER und NICHT. In Java heißen sie so:

Operator Name wahr, wenn …
&& UND (Konjunktion) beide Bedingungen wahr sind
|| ODER (Disjunktion) mindestens eine Bedingung wahr ist
! NICHT (Negation) die Bedingung falsch ist

Das ODER in der Informatik ist immer ein einschließendes Oder: „a oder b oder beides“.

Wahrheitstafel

Fülle die Tabelle auf Papier aus, bevor du sie mit dem Programm überprüfst.

a b a && b a || b !a
falsch falsch ? ? ?
falsch wahr ? ? ?
wahr falsch ? ? ?
wahr wahr ? ? ?
Auflösung
a b a && b a || b !a
falsch falsch falsch falsch wahr
falsch wahr falsch wahr wahr
wahr falsch falsch wahr falsch
wahr wahr wahr wahr falsch

Und vor Oder

Wie bei Punkt vor Strich gibt es auch hier eine Rangfolge:

  1. ! (Negation)
  2. && (Und)
  3. || (Oder)

Also bindet a || b && c wie a || (b && c).

Setze im Zweifel Klammern. Sie kosten nichts und machen die Absicht eindeutig – auch für den Menschen, der deinen Code später liest.

Ein Informatiker geht donnerstags ins Kino oder joggen – aber nur, wenn er nicht krank ist.

a) Formuliere die Bedingung mit &&, || und !.

b) An welcher Stelle brauchst du Klammern? Was ginge sonst schief?

Auflösung

a) (kino || joggen) && !krank

b) Ohne Klammern würde kino || joggen && !krank als kino || (joggen && !krank) gelesen. Dann ginge er auch krank ins Kino – die Bedingung „nicht krank“ würde sich nur auf das Joggen beziehen.

Die Schaltjahrregel in einer Zeile

Prüfe die Bedingung an den vier Testfällen 2024, 1900, 2000 und 2023 durch – auf Papier, indem du die Teilbedingungen einzeln auswertest. Erst danach ausprobieren.

Beurteile anschließend: Ist diese Fassung besser als die verschachtelte aus der letzten Lektion? Begründe.

Auflösung
Jahr % 4 == 0 % 100 != 0 linker Teil % 400 == 0 gesamt
2024 wahr wahr wahr falsch wahr
1900 wahr falsch falsch falsch falsch
2000 wahr falsch falsch wahr wahr
2023 falsch wahr falsch falsch falsch

Zur Beurteilung lässt sich beides vertreten:

  • Für die kurze Fassung: Die Regel steht an einer Stelle, die Variable schaltjahr benennt genau das, worum es geht, und die Verzweigung darunter ist trivial.
  • Für die verschachtelte Fassung: Sie bildet die drei Ausnahmeregeln so ab, wie sie sprachlich formuliert sind, und ist beim ersten Lesen leichter zu verstehen.

Solche Abwägungen zu begründen ist genau das, was der Kompetenzbereich Argumentieren meint.

Ein Bereich, zwei Bedingungen

Ein häufiger Fehler: Man will prüfen, ob eine Zahl zwischen 1 und 6 liegt, und schreibt 1 <= wurf <= 6.

Probiere es aus. Was meldet die IDE? Erkläre, warum die Schreibweise aus dem Matheunterricht hier nicht funktioniert.

Auflösung

Die IDE meldet einen Fehler. Java wertet von links nach rechts aus:

  1. 1 <= wurf ergibt einen Wahrheitswert, hier true.
  2. Dann müsste true <= 6 ausgewertet werden – und ein Wahrheitswert lässt sich nicht mit einer Zahl vergleichen.

Richtig ist:

if (wurf >= 1 && wurf <= 6) {

Aufgabe: Eintrittspreis

Ein Museum verlangt:

  • freier Eintritt für Kinder unter 6 und für Personen ab 65
  • ermäßigt (5 €) für alle unter 18 sowie für Personen mit Schülerausweis
  • sonst 12 €

Schreibe ein Programm, das Alter und Schülerausweis abfragt und den Preis ausgibt.

Formuliere die Bedingungen mit logischen Operatoren.

Tipp: Reihenfolge

Prüfe zuerst den freien Eintritt, dann die Ermäßigung, dann den vollen Preis. Sonst bekämen die Unter-Sechsjährigen den ermäßigten Tarif, weil sie ja auch unter 18 sind.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Zusatzaufgabe

Zeige mit einer Wahrheitstafel, dass die beiden folgenden Ausdrücke für alle Belegungen dasselbe Ergebnis liefern:

  • !(a && b)
  • !a || !b

Diese Regel heißt Gesetz von De Morgan. Formuliere sie in Worten und überlege, wofür sie beim Programmieren nützlich sein könnte.


Selbsttest

Logische Ausdrücke

Teilbare URL erstellen

Abschnitte auswählen