Lernpfad:Einführung in Processing/14: Unterschied zwischen den Versionen
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{NNavigation}} | {{NNameAnzeigen}}{{NNavigation}} | ||
{{Tldr:Start|Was du in diesem Schritt lernst|Icon=Icon Chalk board.png}} | |||
* ''Logische Verknüpfungen'' | |||
{{Tldr:End}} | |||
In {{Pfad|11|bedingten Anweisungen}} und {{Pfad|13|bedingten Schleifen}} kontrolliert eine ''Bedingung'', welche Befehle als Nächstes ausgeführt werden. ''Bedingungen'' in {{Java}} sind Ausdrücke, die entweder ''wahr'' (<code>true</code>) oder ''falsch'' (<code>false</code>). <code>true</code> und <code>false</code> nennt man ''Wahrheitswerte''. Sie werden in {{Java}} mit dem Schlüsselwort <code>boolean</code> gekennzeichnet. | In {{Pfad|11|bedingten Anweisungen}} und {{Pfad|13|bedingten Schleifen}} kontrolliert eine ''Bedingung'', welche Befehle als Nächstes ausgeführt werden. ''Bedingungen'' in {{Java}} sind Ausdrücke, die entweder ''wahr'' (<code>true</code>) oder ''falsch'' (<code>false</code>). <code>true</code> und <code>false</code> nennt man ''Wahrheitswerte''. Sie werden in {{Java}} mit dem Schlüsselwort <code>boolean</code> gekennzeichnet. | ||
Zeile 6: | Zeile 11: | ||
<pre> | <pre> | ||
wenn es heute nicht | wenn es heute nicht regnet | ||
wenn es windig ist | wenn es windig ist | ||
gehen wir Drachen steigen lassen | gehen wir Drachen steigen lassen | ||
Zeile 24: | Zeile 29: | ||
|+ Logische Operatoren | |+ Logische Operatoren | ||
|- | |- | ||
! Art !! Syntax !! | ! Art !! Syntax !! Beispiel || Beschreibung | ||
|- | |- | ||
| UND || <code>&&</code> || <code>i%2 == 0 && i < 100</code> || Ist ''wahr'', wenn die Ausdrücke links und rechts ''wahr'' sind. | | UND || <code>&&</code> || <code>i%2 == 0 && i < 100</code> || Ist ''wahr'', wenn die Ausdrücke links und rechts ''wahr'' sind. | ||
Zeile 39: | Zeile 44: | ||
{{Aufgabe:Start}} | {{Aufgabe:Start}} | ||
# Analysiere die folgenden Programmzeilen und gib eine Vermutung ab, ob das Ergebnis <code>true</code> oder <code>false</code> ist. Probiere ''erst dann'' die Zeilen (einzeln) in {{Processing}} aus. | # Analysiere die folgenden Programmzeilen und gib eine Vermutung ab, ob das Ergebnis <code>true</code> oder <code>false</code> ist. Probiere ''erst dann'' die Zeilen (einzeln) in {{Processing}} aus. | ||
## <code>println(width < 4000 || height < 100);</code> | |||
## <code>println(width < 4000 && height < 100);</code> | |||
## <code>println(width < 4000 && height < 4000);</code> | |||
## <code>println(width > 500 && height < 4000);</code> | |||
## <code>println(width == height || width != height);</code> | |||
## <code>println(width-height == height-width);</code> | |||
{{Aufgabe:End}} | {{Aufgabe:End}} | ||
Zeile 63: | Zeile 74: | ||
# Übernimm das Programm oben in {{Processing}} und probier es aus. Du siehst zwei Linien und einen fliegenden Ball. Verwende '''genau eine''' ''bedingte Anweisung'', um den Ball ''zwischen den Linien'' rot werden zu lassen. | # Übernimm das Programm oben in {{Processing}} und probier es aus. Du siehst zwei Linien und einen fliegenden Ball. Verwende '''genau eine''' ''bedingte Anweisung'', um den Ball ''zwischen den Linien'' rot werden zu lassen. | ||
#: {{P5js|https://editor.p5js.org/Ngb/full/IGsyhY2zQ|height=100}} | |||
# Ändere das Programm so ab, dass der Ball ''außerhalb'' des Bereichs rot wird (und innen weiß bleibt). | # Ändere das Programm so ab, dass der Ball ''außerhalb'' des Bereichs rot wird (und innen weiß bleibt). | ||
{{Aufgabe:End}} | {{Aufgabe:End}} | ||
{{Lösung:Start|Lösung zu Aufgabe 1}} | |||
<syntaxhighlight lang="java" line="1" highlight="11-16"> | |||
int x = 0; | |||
void draw() { | |||
background(0); | |||
// Linien zum Markieren der Zone | |||
stroke(255); | |||
line(25, 0, 25, height); | |||
line(75, 0, 75, height); | |||
// Farbe setzen | |||
if( x > 25 && x < 75 ) { | |||
fill(199, 43, 0); | |||
} else { | |||
fill(255); | |||
} | |||
// hier wird animiert... | |||
ellipse(x, 50, 20, 20); | |||
x++; | |||
if (x > width) { | |||
x = 0; | |||
} | |||
} | |||
</syntaxhighlight> | |||
{{Lösung:End}} | |||
{{Aufgabe:Start}} | {{Aufgabe:Start}} | ||
Zeile 96: | Zeile 136: | ||
{{Tipp:Start}} | {{Tipp:Start}} | ||
Berechne zunächst die <code>x</code>- und <code>y</code>-Koordinate des Kreises und prüfe danach mit <code>if - else if - ...</code> Anweisungen die verschiedenen Bedingungen für die Position des Kreises. | Berechne zunächst die <code>x</code>- und <code>y</code>-Koordinate des Kreises und prüfe danach mit <code>if - else if - ...</code> Anweisungen die verschiedenen Bedingungen für die Position des Kreises. | ||
{{Tipp:End}} | {{Tipp:End}}{{Lösung:Start}} | ||
{{Lösung:Start}} | <syntaxhighlight lang="java" line="1" highlight="17-29"> | ||
<syntaxhighlight lang="java" line="1"> | |||
float angle = 0; | float angle = 0; | ||
Zeile 130: | Zeile 169: | ||
// hier wird animiert... | // hier wird animiert... | ||
ellipse( | ellipse(x, y, 20, 20); | ||
angle += 3; | angle += 3; | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Lösung:End}} | {{Lösung:End}} |
Aktuelle Version vom 16. Februar 2022, 21:44 Uhr
- Logische Verknüpfungen
In bedingten Anweisungen und bedingten Schleifen kontrolliert eine Bedingung, welche Befehle als Nächstes ausgeführt werden. Bedingungen in Java sind Ausdrücke, die entweder wahr (true
) oder falsch (false
). true
und false
nennt man Wahrheitswerte. Sie werden in Java mit dem Schlüsselwort boolean
gekennzeichnet.
Durch Verschachtelung von Bedingungen und Schleifen können mehrere Bedingungen miteinander verknüpft werden. Zum Beispiel
wenn es heute nicht regnet wenn es windig ist gehen wir Drachen steigen lassen ende wenn ende wenn
In natürlicher Sprache würden wir uns kompakter ausdrücken:
wenn es heute '''nicht''' regnet '''und''' es windig ist
Java kennt auch solche Verknüpfungen: die logischen Verknüpfungen.
Art | Syntax | Beispiel | Beschreibung |
---|---|---|---|
UND | && |
i%2 == 0 && i < 100 |
Ist wahr, wenn die Ausdrücke links und rechts wahr sind. |
ODER | || |
i >= 10 | i <= 40 |
Ist wahr, wenn mindestens einer der Ausdrücke links und rechts wahr ist. |
NICHT | ! |
!(i == 4) |
Ist wahr, wenn der Ausdruck falsch ist. Dreht den Wahrheitswert um. (Das Beispiel kann auch als i != 4 geschrieben werden.)
|
Du kennst logische Verknüpfungen vielleicht schon von logischen Schaltungen (bzw. digitalen Schaltungen). Die Wahrheitstafeln der UND-Verknüpfung (&&
) und des UND-Gatters sind zum Beispiel genau identisch.
Wie auch bei den Schaltungen lassen sich mit den drei Basisverknüpfungen UND, ODER und NICHT komplexe Anfragen programmieren.
- Analysiere die folgenden Programmzeilen und gib eine Vermutung ab, ob das Ergebnis
true
oderfalse
ist. Probiere erst dann die Zeilen (einzeln) in Processing aus.println(width < 4000 || height < 100);
println(width < 4000 && height < 100);
println(width < 4000 && height < 4000);
println(width > 500 && height < 4000);
println(width == height || width != height);
println(width-height == height-width);
int x = 0;
void draw() {
background(0);
// Linien zum Markieren der Zone
stroke(255);
line(25, 0, 25, height);
line(75, 0, 75, height);
// hier wird animiert...
ellipse(x, 50, 20, 20);
x++;
if (x > width) {
x = 0;
}
}
- Übernimm das Programm oben in Processing und probier es aus. Du siehst zwei Linien und einen fliegenden Ball. Verwende genau eine bedingte Anweisung, um den Ball zwischen den Linien rot werden zu lassen.
- Ändere das Programm so ab, dass der Ball außerhalb des Bereichs rot wird (und innen weiß bleibt).
int x = 0;
void draw() {
background(0);
// Linien zum Markieren der Zone
stroke(255);
line(25, 0, 25, height);
line(75, 0, 75, height);
// Farbe setzen
if( x > 25 && x < 75 ) {
fill(199, 43, 0);
} else {
fill(255);
}
// hier wird animiert...
ellipse(x, 50, 20, 20);
x++;
if (x > width) {
x = 0;
}
}
float angle = 0;
void draw() {
noStroke();
// Vier Zonen
fill(0);
rect(0,0,50,50);
fill(50);
rect(50,0,50,50);
fill(100);
rect(0,50,50,50);
fill(150);
rect(50,50,50,50);
fill(255);
// hier wird animiert...
ellipse(50+25*sin(radians(angle)), 50+25*cos(radians(angle)), 20, 20);
angle += 3;
}
Übernimm das Programm oben in Processing und probier es aus. Du siehst vier Zonen und einen fliegenden Ball. Verwende bedingte Anweisungen, um den Ball in jeder Zone anders zu färben. (Wähle die Farben selbst.)
Berechne zunächst die x
- und y
-Koordinate des Kreises und prüfe danach mit if - else if - ...
Anweisungen die verschiedenen Bedingungen für die Position des Kreises.
float angle = 0;
void draw() {
noStroke();
// Vier Zonen
fill(0);
rect(0,0,50,50);
fill(50);
rect(50,0,50,50);
fill(100);
rect(0,50,50,50);
fill(150);
rect(50,50,50,50);
fill(255);
// Farbe festlegen
float x = 50+25*sin(radians(angle));
float y = 50+25*cos(radians(angle));
if( x < 50 && y < 50 ) {
fill(199, 43, 0);
} else if( x >= 50 && y < 50 ) {
fill(0, 199, 43);
} else if( x >= 50 && y >= 50 ) {
fill(43, 0, 199);
} else {
fill(255);
}
// hier wird animiert...
ellipse(x, y, 20, 20);
angle += 3;
}