Logische Operatoren

Logische Operatoren tippen #

»Unter einer Bedingung esse ich dieses Müsli: es darf weder Rosinen noch Nüsse enthalten!« »Das sind zwei Bedingungen!«

Mit UND, ODER und NICHT lassen sich alle Kombinationen von Bedingungen verknüpfen. Daher sind diese logischen Operatoren im Programmierer:innen-Alltag oft im Einsatz.

Die Beispiele zeigen die Auswertung verschiedener Bedingungen in einer Python-Konsole und in der JShell – sie sollten selbsterklärend sein. (In ein kleines Programm verpackt verwende ich das Beispiel in meinem Unterricht.)

UND #

>>> mit_rosinen = True
>>> mit_nüssen = False
>>> print('Im Müsli sind Nüsse und Rosinen:', mit_rosinen and mit_nüssen)
Im Müsli sind Nüsse und Rosinen: False
jshell> boolean mitRosinen = true
mitRosinen ==> true

jshell> boolean mitNüssen = false
mitNüssen ==> false

jshell> System.out.println("Im Müsli sind Nüsse und Rosinen: " + (mitRosinen && mitNüssen))
Im Müsli sind Nüsse und Rosinen: false

ODER #

>>> print('Im Müsli sind Nüsse oder Rosinen:', mit_rosinen or mit_nüssen)
Im Müsli sind Nüsse oder Rosinen: True
jshell> System.out.println("Im Müsli sind Nüsse oder Rosinen: " + (mitRosinen || mitNüssen))
Im Müsli sind Nüsse oder Rosinen: true

NICHT #

>>> print('Im Müsli sind keine Rosinen:', not mit_rosinen)
Im Müsli sind keine Rosinen: False
jshell> System.out.println("Im Müsli sind keine Rosinen: " + (!mitRosinen))
Im Müsli sind keine Rosinen: false

Unterschiede #

Die Unterschiede sind hier klein: Wo in Python and steht, steht in Java &&, or in Python ist || in Java und not in Python wird von ! in Java erledigt.

Fazit #

Diese grundlegenden logischen Verknüpfungen sind mehr oder weniger gleich umgesetzt. Der einzige Unterschied: wo in Java Symbole stehen (&&, || und !) reserviert Python Schlüsselwörter (and, or, not). Ist das eine besser als das andere?

Ich bin noch nicht lange Informatiklehrer. Zum Zeitpunkt, zu dem ich diesen Text schreibe, sind es noch nicht ganz drei Jahre. An meiner Schule führen wir seit zwei Jahren Schulungen für die neu angekommenenen Fünftklässler:innen durch – wie fahre ich einen Rechner hoch, wie schreibe ich eine E-Mail, wie logge ich mich in unsere Lernplattform ein, usw. Ich durfte diese Schulung einmal mit einer erfahrenen Kollegin zusammen durchführen, und war überrascht, wie liebevoll kleinschrittig sie manche Dinge erklärte: auf einer Tastatur erzeuge ich Großbuchstaben, indem ich… Das »@« kann ich eingeben, wenn ich zuerst diese Taste gedrückt halte, dann…

Nun unterrichte ich ältere Klassen (und das zu Beginn in Teilen online), und hatte Tippen nicht als (großes) Problem identifiziert. Nach meiner Erfahrung in der Schulung entdecke ich allerdings immer wieder Schüler:innen, die, vor die Aufgabe gestellt, einige Zeilen Programmcode abzutippen, verlegen am Rechner sitzen und auf verschlungenen Wegen versuchen, kryptische Zeichen wie geschweifte Klammern ({}) oder Pipes (|) zu erzeugen. Seit dieser Zeit unterrichte ich also auch die Kunst, geschweifte Klammern zu tippen.

Die bessere Lösung für logische Operatoren? Hängt also von der Zielgruppe ab: Ist Programmieren etwas, das ich täglich mache, weil ich es faszinierend finde, es in meinen Beruf verwende oder mich zu einem Beruf ausbilden lasse, in dem ich es brauche? Dass && »UND« bedeutet, fließt mir nach zwei Tagen aus den Fingern, und das eine ist so gut wie das andere. Oder ist Progammieren etwas, das ich lerne, weil mein Lehrer mir diese Hausaufgabe gegeben hat, während mein (nicht in mich!) verliebter Klassenkamerad gerade meinen Rechner heruntergefahren hat, und ich mich nicht traue, eine blöde Frage zu stellen? Dann ist es leichter, etwas zu tippen, das ich schon aus dem Englischunterricht kenne.

Auch wenn dieser Unterschied nur ein kleines Puzzleteil ist: wenn es um logische Operatoren geht, ist Python im Klassenzimmer die geeignetere Sprache.

Alternativen #

Anstatt die Verknüpfungsexperimente wie hier vorgestellt auf einer interaktiven Kommandozeile1 zu zeigen, lässt sich auch ein Mini-Programm schreiben. In Python ist das eine Datei, die wie die Versuche oben aussehen (nur ohne >>>), in Java müsste ein Gerüst mit main-Methode vorgegeben werden. In der Online-IDE lässt sich das Mini-Programm auch ohne diese umsetzen.


  1. Python-Installationen bringen eine solche typischerweise mit, und auf python.org lässt sich eine sogar online ausprobieren. Seit JDK 9 bringt Java die JShell mit: vgl. kofler.info↩︎