Vergleiche & Wertzuweisungen
Informatik · Gymnasium · Klassen 8–12 · PRIMM-Methode
🎯 Worum geht's? Klasse 10–13 · 1 Unterrichtsstunde
Nach dieser Seite kannst du …
- Vergleiche und logische Ausdrücke (und, oder, nicht) auswerten
- vorhersagen, welcher Zweig einer Bedingung ausgeführt wird
- den Programmablauf mit Bedingungen Schritt für Schritt nachvollziehen
Vorwissen: Variablen und Wertzuweisungen
📝 Aufgaben
Jede Aufgabe hat fünf Schritte: Predict › Run › Investigate › Modify › Make. Wähle eine Aufgabe aus – oder nutze oben die Leiste „Aufgaben: 1, 2, 3 …“.
📖 Themenübersicht
| Operator | Bedeutung | Beispiel | Ergebnis |
|---|---|---|---|
| == | gleich | 5 == 5 | true |
| != | ungleich | 3 != 4 | true |
| < | kleiner als | 2 < 7 | true |
| > | größer als | 9 > 9 | false |
| <= | kleiner gleich | 4 <= 4 | true |
| >= | größer gleich | 6 >= 7 | false |
| && | UND | true && false | false |
| || | ODER | true || false | true |
| ! | NICHT | !true | false |
| += | addiere zu | x += 3 | x = x + 3 |
| -= | subtrahiere von | x -= 2 | x = x − 2 |
| *= | multipliziere | x *= 4 | x = x × 4 |
| /= | dividiere | x /= 2 | x = x ÷ 2 |
| %= | Modulo | x %= 3 | x = x mod 3 |
| ++ | Inkrement | x++ | x = x + 1 |
| -- | Dekrement | x-- | x = x − 1 |
🏅 Zuletzt verdiente Badges
Gegeben: int a = 5; int b = 8; int c = 5;
💡 Merke
Vergleichsoperatoren liefern immertrue oder false.
== prüft Gleichheit, = ist die Zuweisung.
Was ergibt a == c?
Was ergibt a != b?
Was ergibt b <= a?
Gegeben: int x = 10; int y = 3; int z = 10;
| Ausdruck | Ergebnis (true/false) |
|---|---|
| x == z | |
| x != y | |
| y > x | |
| y <= 3 | |
| x >= z | |
| x % y == 1 |
% liefert den Rest der Division: Was ist 10 % 3?Was ist der Unterschied zwischen = und
==?
Welchen Datentyp hat das Ergebnis eines Vergleichs?
Schreibe einen Ausdruck, der true ergibt, wenn
n eine gerade Zahl ist (Hinweis: Nutze den Modulo-Operator.).
Implementiere istInBereich: gibt true zurück,
wenn x zwischen min und max liegt (inklusive).
x muss zwei Bedingungen gleichzeitig erfüllen: mindestens min und höchstens max.
Gegeben: boolean p = true; boolean q = false;
💡 Wahrheitstafel
&& (UND): beide müssen true sein ·
|| (ODER): mindestens eine muss true sein ·
! (NICHT): kehrt den Wert um
Was ergibt p && q?
Was ergibt p || q?
Was ergibt !p || q?
Gegeben: int a = 4; int b = 9; int c = 4;
| Ausdruck | Ergebnis |
|---|---|
| a == c && b > a | |
| a > b || c == a | |
| !(a == b) | |
| a != c || b < 5 | |
| !(b > 10) && a < b | |
| a % 2 == 0 && b % 2 == 0 |
!, dann && und ||.Was ist Short-Circuit-Evaluation bei
&&?
Wann ist A || B false?
Modifiziere die Bedingung so, dass sie prüft, ob x
nicht zwischen 10 und 20 liegt.
! um.
Implementiere genauEiner: gibt true zurück, wenn
genau einer der beiden booleschen Werte true ist (XOR).
Gegeben: int x = 10;
💡 Kurzform
x += 3 ist dasselbe wie x = x + 3.
Der Wert auf der rechten Seite wird mit dem aktuellen Wert verknüpft.
Was ist der Wert von x nach
x += 5?
Nach x += 5 (x=15): Was ist x nach x *= 2?
Verfolge den Wert von x nach jeder
Zeile. Start: x = 20
| Anweisung | x danach |
|---|---|
| int x = 20; | |
| x -= 5; | |
| x *= 3; | |
| x /= 5; | |
| x %= 4; | |
| x++; | |
| x--; |
/ rechnet ganzzahlig, % liefert den Rest.Was ist der Unterschied zwischen i++ und
++i?
Was ergibt
int a = 5; int b = a++; – was steht in b?
Überführe alle langen Schreibweisen in Kurzformen (+=, -=, …).
x = x + 7 lässt sich kürzer schreiben – welcher Operator steht dann vor dem =?
Implementiere tausche: Tausche die Werte von a und b
mithilfe einer temporären Variablen. Gib ein int-Array zurück mit [neuem a, neuem b].
Gegeben: int x = 6; int y = 4;
💡 Auswertungsreihenfolge
Wie in der Mathematik gilt: Klammern zuerst, dann *, /, %, dann +, –. Vergleiche werden zuletzt ausgewertet.Was ergibt x * 2 + y - 1?
Was ergibt
x % y == 2 && y > 3?
Gegeben: int a=3; int b=7; int c=2;
Trage den Wert des vollständigen Ausdrucks ein.
| Ausdruck | Wert |
|---|---|
| a + b * c | |
| (a + b) * c | |
| b / a + c | |
| b % a * c | |
| a * b - c * a | |
| b > a + c && c < a |
7 / 3 ganzzahlig.Was ergibt 7 / 2 in Java (beide int)?
Welchen Wert hat -7 % 3 in
Java?
Füge Klammern hinzu, sodass der Ausdruck 18 ergibt (nicht 14).
b * 3.
Welche Rechnung muss zuerst passieren, damit 18 herauskommt?
Implementiere mittelwert: Berechne den Durchschnitt dreier int-Werte
als double.
Aufruf: klassifiziere(7) – Was gibt die Methode zurück?
Welchen String gibt klassifiziere(n) zurück?
| Aufruf | Rückgabe |
|---|---|
| klassifiziere(-3) | |
| klassifiziere(0) | |
| klassifiziere(15) | |
| klassifiziere(-1) |
Was passiert, wenn mehrere if-Bedingungen
nacheinander stehen (ohne else if)?
Wann wird der else-Block
ausgeführt?
Ergänze eine weitere Verzweigung: Wenn n > 100,
soll "sehr groß" zurückgegeben werden.
n > 100 erst nach n > 0, wird es nie erreicht.
Implementiere notenText: Gibt für eine Note (1–6) den Text zurück
(1→"sehr gut", 2→"gut", 3→"befriedigend", 4→"ausreichend", 5→"mangelhaft", 6→"ungenügend",
sonst→"ungültig").
if/else if oder switch. Vergiss den
Default-Fall nicht!Aufruf: rechne(8, 3)
Ermittle die Belegung aller Variablen für den Aufruf
rechne(8, 3).
| Zeile / Anweisung | a | b | erg | Bedingung |
|---|---|---|---|---|
| Start | – | – | ||
| int erg = a + b; | 8 | 3 | – | |
| if (a > b) | 8 | 3 | 11 | |
| erg += a % b; | 8 | 3 | – | |
| if (erg % 2 != 0) | 8 | 3 | 13 | |
| erg++; | 8 | 3 | – | |
| return erg; | 8 | 3 | – |
erg nach jeder Änderung. Was ist 8 % 3?Was gibt rechne(3, 8) zurück?
Was gibt rechne(5, 5)
zurück?
Erweitere rechne: Wenn das Ergebnis negativ ist, gib 0 zurück.
return eine Bedingung, die erg korrigiert, wenn es kleiner als 0 ist.
Implementiere fizzbuzz: Gibt für ein n
"FizzBuzz" (durch 15 teilbar), "Fizz" (durch 3),
"Buzz" (durch 5) oder die Zahl als String zurück.
s nach int x=7; String s=(x%2==0)?"gerade":"ungerade";?(85>=90)?"A":(85>=80)?"B":(85>=70)?"C":"D" zurück?Eingabe: int a=10, b=3; – berechne die Ergebnisse der ternären Ausdrücke.
| Ausdruck | Ergebnis |
|---|---|
(a > b) ? a : b |
|
(a < b) ? a : b |
|
(a % 2 == 0) ? "gerade" : "ungerade" |
|
(b > 0) ? (a / b) : 0 |
Bedingung ? Wert-wenn-wahr : Wert-wenn-falsch – werte zuerst die Bedingung aus. 10 / 3 rechnet ganzzahlig.Welchen Vorteil hat der ternäre Operator gegenüber if/else?
Welchen Typ hat (x > 0) ? 1 : 0.5?
Schreibe if/else zu einem ternären Ausdruck um. Das Ergebnis soll identisch sein.
String ergebnis = Bedingung ? … : …; – die beiden Texte stammen aus den if/else-Zweigen.Implementiere eine Methode String ampelText(int rot, int gelb, int gruen), die genau einen der drei Parameter als 1 erhält und den passenden Text zurückgibt: "Stopp", "Achtung" oder "Fahrt frei" – mit verschachtelten ternären Ausdrücken.
wochentag(6) aus?wochentag(9) aus?Bestimme die Ausgabe für jeden Aufruf.
| Aufruf | Ausgabe |
|---|---|
wochentag(1) | |
wochentag(3) | |
wochentag(7) | |
wochentag(8) |
case, zu dem der Wert passt. Mehrere case-Marken hintereinander führen zum selben return; alles andere landet bei default.Was passiert, wenn man break in einem case weglässt?
Welche Typen darf der Ausdruck in einem klassischen switch haben?
Ergänze den switch um einen Fall für 0: er soll "kein Wochentag" zurückgeben, und default soll "ungueltig" zurückgeben.
default eine neue case-Marke mit eigenem return.Implementiere eine Methode String jahreszeit(int monat), die für 1–12 die passende Jahreszeit zurückgibt: Winter (12,1,2), Frühling (3,4,5), Sommer (6,7,8), Herbst (9,10,11). Ungültige Monate → "ungueltig".
case-Marken zusammen; ungültige Monate landen bei default.a.equals(b) zurück?a == b zurück?Eingabe: String a = "Apfel"; String b = "Birne";
| Ausdruck | Ergebnis |
|---|---|
a.equals(b) | |
a.equalsIgnoreCase("APFEL") | |
a.compareTo(b) (positiv/negativ/null) | |
a.length() |
equals vergleicht genau, equalsIgnoreCase ohne Groß-/Kleinschreibung. compareTo ist negativ, wenn der erste String alphabetisch vorne steht. length() zählt die Zeichen.Warum liefert == bei Strings oft false, obwohl der Inhalt gleich ist?
Wann ist str1 == str2 für zwei Strings trotzdem true?
Der Code enthält einen typischen Fehler beim String-Vergleich. Korrigiere ihn.
==, sondern mit einer Methode.Schreibe boolean istAnagramm(String a, String b): zwei Strings sind Anagramme, wenn sie dieselben Zeichen in beliebiger Reihenfolge enthalten (Groß-/Kleinschreibung ignorieren). Z.B. "listen" und "silent" → true.
r, x und y nach der Zuweisung?y++ nicht ausgeführt?Berechne Schritt für Schritt. Eingabe: int x=5, y=0;
| Teilausdruck | Wert | x danach | y danach |
|---|---|---|---|
(x > 3) |
5 | 0 | |
(++x > 5) |
0 | ||
(x>3)&&(++x>5) |
6 | 0 | |
Wird y++==0 ausgewertet? (ja/nein) |
6 | ||
Gesamtergebnis r |
6 | 0 |
++x erhöht x sofort. Steht das Ergebnis von || schon fest, wird die rechte Seite übersprungen.Wann wertet && den rechten Operanden nicht aus?
Welche Operatoren erzwingen in Java immer die Auswertung beider Seiten?
Der Code enthält eine NullPointerException-Falle. Nutze Kurzschlussauswertung, um den Crash zu verhindern.
null muss vor name.length() stehen – mit && verbunden.Schreibe boolean istGueltigeEingabe(String s, int min, int max): gibt true zurück, wenn s nicht null, nicht leer ist, und der Integer-Wert von s im Bereich [min, max] liegt. Nutze Kurzschlussauswertung, um Fehler zu vermeiden.
s null oder leer ist (dann false), danach mit Integer.parseInt umwandeln und mit min und max vergleichen.🏅 Deine Badges
Verdiente Badges leuchten auf.
📊 Statistik
↺ Zurücksetzen
Alle gespeicherten Daten werden gelöscht.
📄 Arbeitsblatt erstellen
Wähle aus, welche Bereiche auf das Arbeitsblatt kommen. Es enthält dann alle … Aufgaben dieser Seite aus diesen Bereichen – mit Kästchen zum Ankreuzen, leeren Tabellen und Platz zum Schreiben, ohne Lösungen und Tipps.