move While loops to Lektion_3 and add if clauses
This commit is contained in:
parent
abed847f74
commit
dfa28f143d
41
Lektion 2/If_Clauses/.vscode/tasks.json
vendored
Normal file
41
Lektion 2/If_Clauses/.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Run Sketch",
|
||||
"type": "shell",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
"command": "D:\\UNI\\Semester_1\\Programmieren\\processing-4.3\\processing-java.exe",
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "always",
|
||||
"focus": false,
|
||||
"panel": "dedicated"
|
||||
},
|
||||
"args": [
|
||||
"--force",
|
||||
"--sketch=${workspaceRoot}",
|
||||
"--output=${workspaceRoot}/out",
|
||||
"--run"
|
||||
],
|
||||
"windows": {
|
||||
"type": "process",
|
||||
"args": [
|
||||
"--force",
|
||||
{
|
||||
"value": "--sketch=${workspaceRoot}",
|
||||
"quoting": "strong"
|
||||
},
|
||||
{
|
||||
"value": "--output=${workspaceRoot}\\out",
|
||||
"quoting": "strong"
|
||||
},
|
||||
"--run"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
431
Lektion 2/If_Clauses/If_Clauses.pde
Normal file
431
Lektion 2/If_Clauses/If_Clauses.pde
Normal file
@ -0,0 +1,431 @@
|
||||
// Aufgaben
|
||||
|
||||
/*
|
||||
1. Welcher Code ist korrekt? (Mehrere Antworten korrekt)
|
||||
if(a != c){ } ✔
|
||||
if(true){ } ✔
|
||||
if(a <= b){ } ✔
|
||||
if(a % b = 0){ }
|
||||
if(){ }
|
||||
2. Gegeben ist folgender Code. Welche(s) Zeichen muss an die Stelle ???, damit das Programm die richtige Ausgabe liefert?
|
||||
|
||||
int alter = 16;
|
||||
if (alter ??? 18) {
|
||||
println("Volljährig");
|
||||
} else {
|
||||
println("Minderjährig");
|
||||
}
|
||||
|
||||
Die Zeichen ">=" müssen an die Stelle
|
||||
|
||||
3. Welchen Datentyp muss die BEDINGUNG haben? Warum?
|
||||
|
||||
Die Bedingung muss vom Datentyp "Boolean" sein.
|
||||
|
||||
4. Warum ist es wichtig die Zeilen innerhalb einen Code-Blocks einzurücken?
|
||||
|
||||
Übersichtlichkeit...
|
||||
|
||||
5. Wie viele else-Teile kann ein if-Teil haben?
|
||||
Einen.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Einfache if Anweisungen
|
||||
|
||||
// Gegeben sei eine int-Variable foo. Wenn diese größer als 50 ist, soll "OK" ausgegeben werden.
|
||||
|
||||
/*
|
||||
|
||||
int foo = 75;
|
||||
|
||||
if(foo > 50)
|
||||
{
|
||||
println("okay\n");
|
||||
}
|
||||
*/
|
||||
|
||||
// Gegeben seien zwei int-Variablen a und b. Wenn a um mindestens 10 größer ist als b, soll "a gewinnt" ausgegeben werden.
|
||||
int a = 50;
|
||||
int b = 40;
|
||||
|
||||
/*
|
||||
// Die Differenz wird mit a-b berechnet. Dann wird geguckt ob diese größer als 10 ist
|
||||
if((a-b) > 10)
|
||||
{
|
||||
println("a gewinnt\n");
|
||||
}
|
||||
|
||||
*/
|
||||
// Gegeben seien vier float-Variablen a, b, c, d. Wenn die Summe von a und b größer ist als die Summe von c und d, dann soll "a/b gewinnen" ausgegeben werden
|
||||
/*
|
||||
float a = 25;
|
||||
float b = 30;
|
||||
float c = 5;
|
||||
float d = 10;
|
||||
|
||||
if((a+b) > (b+c))
|
||||
{
|
||||
println("a/b gewinnen\n");
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
// Gegeben seien drei int-Variablen x, y, z. Wenn die Summe von x und y genau doppelt so groß ist wie z ist, soll "passt" ausgegeben werden.
|
||||
|
||||
/*
|
||||
int x = 10;
|
||||
int y = 6;
|
||||
int z = 8;
|
||||
|
||||
// Um zu gucken die Summe von x+y doppelt so groß ist, multipliziert man z mit zwei und guckt das Ergebnis gleich groß mit x+y ist.
|
||||
if((x+y) == (z * 2))
|
||||
{
|
||||
println("passt\n");
|
||||
}
|
||||
*/
|
||||
|
||||
// If else
|
||||
|
||||
// Gegeben seien zwei int-Variablen z1 und z2. Wenn die zwei Zahlen gleich sind, soll "gleich" ausgegeben werden, sonst "ungleich".
|
||||
|
||||
/*
|
||||
|
||||
int z1 = 5;
|
||||
int z2 = 5;
|
||||
|
||||
// Wenn z1 gleich z2 ist
|
||||
if(z1 == z2)
|
||||
{
|
||||
println("gleich");
|
||||
}
|
||||
//Wenn irgendein anderer Fal eintritt
|
||||
else {
|
||||
println("ungleich");
|
||||
}
|
||||
*/
|
||||
|
||||
// Löse die obige Aufgabe, indem du im ersten If-Teil "ungleich" ausgibst und im Else-Teil "gleich". Passe dazu die Bedingung an.
|
||||
/*
|
||||
int z1 = 5;
|
||||
int z2 = 5;
|
||||
|
||||
if(z1 != z2)
|
||||
{
|
||||
println("ungleich");
|
||||
}
|
||||
else {
|
||||
println("gleich");
|
||||
}
|
||||
|
||||
*/
|
||||
// Gegeben sei die int-Variable zahl. Wenn die Zahl gerade ist, soll "gerade" ausgegeben werden, sonst "ungerade".
|
||||
/*
|
||||
int zahl = 4;
|
||||
|
||||
// Der Modulo ist Quasi Restrechnung. Besteht kein Rest, wenn die Zahl durch 2 geteilt wird, ist die Zahl gerade.
|
||||
// Falls es einen Rest gibt, ist die Zahl ungerade
|
||||
if(zahl%2==0)
|
||||
{
|
||||
println("gerade");
|
||||
}
|
||||
else {
|
||||
println("ungerade");
|
||||
}
|
||||
|
||||
*/
|
||||
// 3. Verschachteltes If
|
||||
|
||||
|
||||
// Gegeben seien drei int-Variablen a, b und x. Wenn x zwischen den Zahlen a und b liegt,
|
||||
// sollst du "drin" auf der Konsole ausgeben. Geh davon aus, dass a kleiner als b ist!
|
||||
|
||||
/*
|
||||
int a = 5;
|
||||
int b = 10;
|
||||
int x = 8;
|
||||
|
||||
Wenn x größer als und kleiner als b ist, befindet sich x in der Range
|
||||
if(x > a )
|
||||
{
|
||||
if(x < b)
|
||||
{
|
||||
println("drin");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
//4. Klausurnoten
|
||||
/*
|
||||
|
||||
int punkte = 10;
|
||||
|
||||
// Erziehlt der Teilnehmer 10 Punkte oder mehr hat dieser mit Auszeichnung bestanden
|
||||
if(punkte >= 10)
|
||||
{
|
||||
println("Bestanden mit Auszeichnung");
|
||||
}
|
||||
// Erziehlt der Teilnehmer 5 Punkte oder mehr als hat dieser bestanden
|
||||
else if(punkte >= 5){
|
||||
println("Bestanden! \nAuf Wiedersehen. \n ");
|
||||
}
|
||||
// In jedem anderen Fall hat der Teilnehmer nicht bestanden
|
||||
else {
|
||||
println("Leider durchgefallen :( \nAuf Wiedersehen.\n");
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
/* 5. Stehenbleiben
|
||||
Ändere das folgende Programm derart, dass der Ball stehenbleibt, sobald er die Mitte erreicht. */
|
||||
/*
|
||||
|
||||
|
||||
int x = 0;
|
||||
|
||||
void draw() {
|
||||
background(255);
|
||||
ellipse(x, 50, 20, 20);
|
||||
|
||||
// width/2 ist der Mittelpunkt. Solange x also kleiner als der Mittelpunkt ist wird x incremented
|
||||
if (x < width/2) {
|
||||
x++;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// 6. Wachsen
|
||||
// Der Ball fliegt wiederholt von links nach rechts. Bei jedem Durchlauf soll der Ball etwas größer sein.
|
||||
|
||||
|
||||
|
||||
/*
|
||||
int x;
|
||||
int counter;
|
||||
int wh = 5;
|
||||
|
||||
void draw()
|
||||
{
|
||||
background(255);
|
||||
ellipse(x, height/2, wh, wh);
|
||||
|
||||
// Wenn größer gleich width ist, wird x zurückgesetzt und wh (Größe) mit 1.5 multipliziert.
|
||||
// Die verwendung von >= wird verwendet um Bugs verzubeugen, falls der einzige Tick, in welchem die Condition true ist, nicht registriert
|
||||
if(x>=width)
|
||||
{
|
||||
x=0;
|
||||
wh*= 1.5;
|
||||
}
|
||||
x++;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
// 7. Wachsen 2
|
||||
// Ein mittig platzierter Kreis wird stetig größer, bis er den Rand des Fensters erreicht, dann beginnt er wieder als ein kleiner Kreis zu wachsen.
|
||||
|
||||
/*
|
||||
int wh = 1 ;
|
||||
|
||||
void draw()
|
||||
{
|
||||
background(255);
|
||||
ellipse(width/2, height/2, wh, wh);
|
||||
|
||||
// Wenn die Größe der Elipse größer als die Breite ist, dann wird die Größe zurückgesetzt
|
||||
// Für >= gilt die gleiche Begründung wie in der vorherigen Aufgabe
|
||||
if(wh >= width)
|
||||
{
|
||||
wh = 1;
|
||||
}
|
||||
|
||||
// Increment wh +1 für jeden Tick.
|
||||
wh++;
|
||||
}
|
||||
*/
|
||||
|
||||
// 8. Mutierender Mousezeiger
|
||||
// Folgendes Programm erzeugt einen Mauszeiger in Form eines Kreises.
|
||||
// Verändere das Programm derart, dass in der rechten Bildschirmhäfte der Mauszeiger zur gefüllten,
|
||||
// schwarzen Box wird (mittig zum Mauszeiger) und in der linken wieder zum leeren Kreis.
|
||||
|
||||
/*
|
||||
int size = 20;
|
||||
|
||||
void draw() {
|
||||
background(255);
|
||||
|
||||
// Ist die Mausposition größer als die Hälfte der Breite (Mittelpunkt), dann wird ein rectangle gezeichnet
|
||||
if(mouseX > width/2)
|
||||
{
|
||||
fill(0, 0, 0, 255);
|
||||
rect(mouseX-size/2, mouseY-size/2, size, size);
|
||||
}
|
||||
// Sonst wird ein Kreis gezeichnet
|
||||
else {
|
||||
fill(0, 0, 0, 0);
|
||||
ellipse(mouseX, mouseY, size, size);
|
||||
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
9. Timer
|
||||
Du möchtest ein Programm schreiben, dass jede Sekunde einen Punkt auf die Konsole schreibt
|
||||
(verwende print statt println), d.h. nach 10 Sekunden siehst du:
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
int count = 0;
|
||||
int frameRate = 60;
|
||||
|
||||
// Framerate in der main() (setup) Methode setzen
|
||||
void setup()
|
||||
{
|
||||
frameRate(60);
|
||||
}
|
||||
|
||||
|
||||
void draw()
|
||||
{
|
||||
// Pro Tick wird der counter incremented
|
||||
count++;
|
||||
|
||||
// Wenn der Rest (Modulo) von count/frameRate = 0 ist, dann wird ein Punkt mithilfe der Print() funktion ausgegeben.
|
||||
// Da kein Breakcharacter (\n) verwendet wird (Oder die println() Funktion) wird der dot in der gleichen Line ausgegeben
|
||||
if(count%frameRate==0)
|
||||
{
|
||||
print(".");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
10. Klausurnoten (if-else-if)
|
||||
Löse eine ähnliche Aufgabe wie die oben mit if-else-if. Du hast eine Punktzahl gegeben:
|
||||
|
||||
0 - 10: Durchgefallen
|
||||
11 - 20: Naja
|
||||
21 - 30: Mittelgut
|
||||
31 - 40: Gut
|
||||
41 - 50: Super
|
||||
*/
|
||||
|
||||
/*
|
||||
int punkte = 10;
|
||||
|
||||
|
||||
// Alle Punkte über 40 sind Super
|
||||
|
||||
if(punkte > 40)
|
||||
{
|
||||
println("Super");
|
||||
}
|
||||
else if (punkte > 30) {
|
||||
println("Gut");
|
||||
}
|
||||
|
||||
else if (punkte > 20) {
|
||||
println("Mittelgut");
|
||||
}
|
||||
else if (punkte > 10) {
|
||||
println("Naja");
|
||||
}
|
||||
else {
|
||||
println("Durchgefallen");
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
11. Lauftext
|
||||
Schreibe eine Textanzeige, die bei Mausklick zum nächsten Wort wechselt. Das erste Wort ist "Hallo":
|
||||
|
||||
Ergänze den Code, dass bei jedem Mausklick ein neues Wort angezeigt wird.
|
||||
Nach "Hallo" kommt "mein", "Name", "ist", "Hase", "Tschüs". Danach geht es wieder von vorn los.
|
||||
Nutze die Variable zustand und eine if-else-if Konstruktion.
|
||||
*/
|
||||
/*
|
||||
int zustand = 0;
|
||||
|
||||
void setup() {
|
||||
textAlign(CENTER);
|
||||
textSize(20);
|
||||
}
|
||||
|
||||
void mousePressed()
|
||||
{
|
||||
zustand++;
|
||||
}
|
||||
|
||||
void draw() {
|
||||
background(0);
|
||||
|
||||
if (zustand == 0) {
|
||||
text("Hallo", width/2, height/2);
|
||||
}
|
||||
else if (zustand == 1) {
|
||||
text("mein", width/2, height/2);
|
||||
}
|
||||
|
||||
else if (zustand == 2) {
|
||||
text("Name", width/2, height/2);
|
||||
}
|
||||
|
||||
else if (zustand == 3) {
|
||||
text("ist", width/2, height/2);
|
||||
}
|
||||
|
||||
else if (zustand == 4) {
|
||||
text("Hase", width/2, height/2);
|
||||
}
|
||||
|
||||
else {
|
||||
text("Tschüs", width/2, height/2);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
//Performantere Version
|
||||
// Dies liegt daran, dass die Abzweigung von else-if trees vom Compiler vorrausgerechnet werden. Dies geschieht nach einer Warscheinlichkeit die
|
||||
// Die der Compiler einem Branch zuweist. Wenn der Compiler den richtigen Branch guessed, dann gibt es keine Performanceeinbußen gering.
|
||||
// Verschätzt sich der Compiler jedoch frisst das viel Performance. Deswegen kann man dem es dem Compiler einfacher machen und einen Array verwenden.
|
||||
int zustand;
|
||||
|
||||
// Init string (const char*) array mit Strings für jedes Element
|
||||
String [] str = {"Hallo", "mein", "Name", "ist", "Hase", "Tschüß"};
|
||||
|
||||
// Call main() method
|
||||
void setup() {
|
||||
size(500,500);
|
||||
textAlign(CENTER);
|
||||
textSize(width/5);
|
||||
}
|
||||
|
||||
// Register mouse click
|
||||
void mousePressed()
|
||||
{
|
||||
// Increment Zustand
|
||||
zustand++;
|
||||
}
|
||||
|
||||
void draw() {
|
||||
// Background schwarz setzen
|
||||
background(0);
|
||||
|
||||
// Zustand zur array.length()-1 clampen.
|
||||
// Würde man versuchenn ein Element auszulesen, welches bei einer Pos > (Array Length-1) liegt, würde man auf
|
||||
// Eine Ram-Adress zugreifen, welche für eine andere Variable zugewiesen ist, was eine outofBoundsException hervorrufen würde.
|
||||
zustand = constrain(zustand, 0, 5);
|
||||
text(str[zustand], width/2, height/2);
|
||||
}
|
||||
*/
|
||||
BIN
Lektion 2/If_Clauses/out/If_Clauses.class
Normal file
BIN
Lektion 2/If_Clauses/out/If_Clauses.class
Normal file
Binary file not shown.
469
Lektion 2/If_Clauses/out/source/If_Clauses.java
Normal file
469
Lektion 2/If_Clauses/out/source/If_Clauses.java
Normal file
@ -0,0 +1,469 @@
|
||||
/* autogenerated by Processing revision 1293 on 2023-09-26 */
|
||||
import processing.core.*;
|
||||
import processing.data.*;
|
||||
import processing.event.*;
|
||||
import processing.opengl.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.ArrayList;
|
||||
import java.io.File;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
public class If_Clauses extends PApplet {
|
||||
|
||||
// Aufgaben
|
||||
|
||||
/*
|
||||
1. Welcher Code ist korrekt? (Mehrere Antworten korrekt)
|
||||
if(a != c){ } ✔
|
||||
if(true){ } ✔
|
||||
if(a <= b){ } ✔
|
||||
if(a % b = 0){ }
|
||||
if(){ }
|
||||
2. Gegeben ist folgender Code. Welche(s) Zeichen muss an die Stelle ???, damit das Programm die richtige Ausgabe liefert?
|
||||
|
||||
int alter = 16;
|
||||
if (alter ??? 18) {
|
||||
println("Volljährig");
|
||||
} else {
|
||||
println("Minderjährig");
|
||||
}
|
||||
|
||||
Die Zeichen ">=" müssen an die Stelle
|
||||
|
||||
3. Welchen Datentyp muss die BEDINGUNG haben? Warum?
|
||||
|
||||
Die Bedingung muss vom Datentyp "Boolean" sein.
|
||||
|
||||
4. Warum ist es wichtig die Zeilen innerhalb einen Code-Blocks einzurücken?
|
||||
|
||||
Übersichtlichkeit...
|
||||
|
||||
5. Wie viele else-Teile kann ein if-Teil haben?
|
||||
Einen.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Einfache if Anweisungen
|
||||
|
||||
// Gegeben sei eine int-Variable foo. Wenn diese größer als 50 ist, soll "OK" ausgegeben werden.
|
||||
|
||||
/*
|
||||
|
||||
int foo = 75;
|
||||
|
||||
if(foo > 50)
|
||||
{
|
||||
println("okay\n");
|
||||
}
|
||||
*/
|
||||
|
||||
// Gegeben seien zwei int-Variablen a und b. Wenn a um mindestens 10 größer ist als b, soll "a gewinnt" ausgegeben werden.
|
||||
int a = 50;
|
||||
int b = 40;
|
||||
|
||||
/*
|
||||
// Die Differenz wird mit a-b berechnet. Dann wird geguckt ob diese größer als 10 ist
|
||||
if((a-b) > 10)
|
||||
{
|
||||
println("a gewinnt\n");
|
||||
}
|
||||
|
||||
*/
|
||||
// Gegeben seien vier float-Variablen a, b, c, d. Wenn die Summe von a und b größer ist als die Summe von c und d, dann soll "a/b gewinnen" ausgegeben werden
|
||||
/*
|
||||
float a = 25;
|
||||
float b = 30;
|
||||
float c = 5;
|
||||
float d = 10;
|
||||
|
||||
if((a+b) > (b+c))
|
||||
{
|
||||
println("a/b gewinnen\n");
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
// Gegeben seien drei int-Variablen x, y, z. Wenn die Summe von x und y genau doppelt so groß ist wie z ist, soll "passt" ausgegeben werden.
|
||||
|
||||
/*
|
||||
int x = 10;
|
||||
int y = 6;
|
||||
int z = 8;
|
||||
|
||||
// Um zu gucken die Summe von x+y doppelt so groß ist, multipliziert man z mit zwei und guckt das Ergebnis gleich groß mit x+y ist.
|
||||
if((x+y) == (z * 2))
|
||||
{
|
||||
println("passt\n");
|
||||
}
|
||||
*/
|
||||
|
||||
// If else
|
||||
|
||||
// Gegeben seien zwei int-Variablen z1 und z2. Wenn die zwei Zahlen gleich sind, soll "gleich" ausgegeben werden, sonst "ungleich".
|
||||
|
||||
/*
|
||||
|
||||
int z1 = 5;
|
||||
int z2 = 5;
|
||||
|
||||
// Wenn z1 gleich z2 ist
|
||||
if(z1 == z2)
|
||||
{
|
||||
println("gleich");
|
||||
}
|
||||
//Wenn irgendein anderer Fal eintritt
|
||||
else {
|
||||
println("ungleich");
|
||||
}
|
||||
*/
|
||||
|
||||
// Löse die obige Aufgabe, indem du im ersten If-Teil "ungleich" ausgibst und im Else-Teil "gleich". Passe dazu die Bedingung an.
|
||||
/*
|
||||
int z1 = 5;
|
||||
int z2 = 5;
|
||||
|
||||
if(z1 != z2)
|
||||
{
|
||||
println("ungleich");
|
||||
}
|
||||
else {
|
||||
println("gleich");
|
||||
}
|
||||
|
||||
*/
|
||||
// Gegeben sei die int-Variable zahl. Wenn die Zahl gerade ist, soll "gerade" ausgegeben werden, sonst "ungerade".
|
||||
/*
|
||||
int zahl = 4;
|
||||
|
||||
// Der Modulo ist Quasi Restrechnung. Besteht kein Rest, wenn die Zahl durch 2 geteilt wird, ist die Zahl gerade.
|
||||
// Falls es einen Rest gibt, ist die Zahl ungerade
|
||||
if(zahl%2==0)
|
||||
{
|
||||
println("gerade");
|
||||
}
|
||||
else {
|
||||
println("ungerade");
|
||||
}
|
||||
|
||||
*/
|
||||
// 3. Verschachteltes If
|
||||
|
||||
|
||||
// Gegeben seien drei int-Variablen a, b und x. Wenn x zwischen den Zahlen a und b liegt,
|
||||
// sollst du "drin" auf der Konsole ausgeben. Geh davon aus, dass a kleiner als b ist!
|
||||
|
||||
/*
|
||||
int a = 5;
|
||||
int b = 10;
|
||||
int x = 8;
|
||||
|
||||
Wenn x größer als und kleiner als b ist, befindet sich x in der Range
|
||||
if(x > a )
|
||||
{
|
||||
if(x < b)
|
||||
{
|
||||
println("drin");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
//4. Klausurnoten
|
||||
/*
|
||||
|
||||
int punkte = 10;
|
||||
|
||||
// Erziehlt der Teilnehmer 10 Punkte oder mehr hat dieser mit Auszeichnung bestanden
|
||||
if(punkte >= 10)
|
||||
{
|
||||
println("Bestanden mit Auszeichnung");
|
||||
}
|
||||
// Erziehlt der Teilnehmer 5 Punkte oder mehr als hat dieser bestanden
|
||||
else if(punkte >= 5){
|
||||
println("Bestanden! \nAuf Wiedersehen. \n ");
|
||||
}
|
||||
// In jedem anderen Fall hat der Teilnehmer nicht bestanden
|
||||
else {
|
||||
println("Leider durchgefallen :( \nAuf Wiedersehen.\n");
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
/* 5. Stehenbleiben
|
||||
Ändere das folgende Programm derart, dass der Ball stehenbleibt, sobald er die Mitte erreicht. */
|
||||
/*
|
||||
|
||||
|
||||
int x = 0;
|
||||
|
||||
void draw() {
|
||||
background(255);
|
||||
ellipse(x, 50, 20, 20);
|
||||
|
||||
// width/2 ist der Mittelpunkt. Solange x also kleiner als der Mittelpunkt ist wird x incremented
|
||||
if (x < width/2) {
|
||||
x++;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// 6. Wachsen
|
||||
// Der Ball fliegt wiederholt von links nach rechts. Bei jedem Durchlauf soll der Ball etwas größer sein.
|
||||
|
||||
|
||||
|
||||
/*
|
||||
int x;
|
||||
int counter;
|
||||
int wh = 5;
|
||||
|
||||
void draw()
|
||||
{
|
||||
background(255);
|
||||
ellipse(x, height/2, wh, wh);
|
||||
|
||||
// Wenn größer gleich width ist, wird x zurückgesetzt und wh (Größe) mit 1.5 multipliziert.
|
||||
// Die verwendung von >= wird verwendet um Bugs verzubeugen, falls der einzige Tick, in welchem die Condition true ist, nicht registriert
|
||||
if(x>=width)
|
||||
{
|
||||
x=0;
|
||||
wh*= 1.5;
|
||||
}
|
||||
x++;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
// 7. Wachsen 2
|
||||
// Ein mittig platzierter Kreis wird stetig größer, bis er den Rand des Fensters erreicht, dann beginnt er wieder als ein kleiner Kreis zu wachsen.
|
||||
|
||||
/*
|
||||
int wh = 1 ;
|
||||
|
||||
void draw()
|
||||
{
|
||||
background(255);
|
||||
ellipse(width/2, height/2, wh, wh);
|
||||
|
||||
// Wenn die Größe der Elipse größer als die Breite ist, dann wird die Größe zurückgesetzt
|
||||
// Für >= gilt die gleiche Begründung wie in der vorherigen Aufgabe
|
||||
if(wh >= width)
|
||||
{
|
||||
wh = 1;
|
||||
}
|
||||
|
||||
// Increment wh +1 für jeden Tick.
|
||||
wh++;
|
||||
}
|
||||
*/
|
||||
|
||||
// 8. Mutierender Mousezeiger
|
||||
// Folgendes Programm erzeugt einen Mauszeiger in Form eines Kreises.
|
||||
// Verändere das Programm derart, dass in der rechten Bildschirmhäfte der Mauszeiger zur gefüllten,
|
||||
// schwarzen Box wird (mittig zum Mauszeiger) und in der linken wieder zum leeren Kreis.
|
||||
|
||||
/*
|
||||
int size = 20;
|
||||
|
||||
void draw() {
|
||||
background(255);
|
||||
|
||||
// Ist die Mausposition größer als die Hälfte der Breite (Mittelpunkt), dann wird ein rectangle gezeichnet
|
||||
if(mouseX > width/2)
|
||||
{
|
||||
fill(0, 0, 0, 255);
|
||||
rect(mouseX-size/2, mouseY-size/2, size, size);
|
||||
}
|
||||
// Sonst wird ein Kreis gezeichnet
|
||||
else {
|
||||
fill(0, 0, 0, 0);
|
||||
ellipse(mouseX, mouseY, size, size);
|
||||
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
9. Timer
|
||||
Du möchtest ein Programm schreiben, dass jede Sekunde einen Punkt auf die Konsole schreibt
|
||||
(verwende print statt println), d.h. nach 10 Sekunden siehst du:
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
int count = 0;
|
||||
int frameRate = 60;
|
||||
|
||||
// Framerate in der main() (setup) Methode setzen
|
||||
void setup()
|
||||
{
|
||||
frameRate(60);
|
||||
}
|
||||
|
||||
|
||||
void draw()
|
||||
{
|
||||
// Pro Tick wird der counter incremented
|
||||
count++;
|
||||
|
||||
// Wenn der Rest (Modulo) von count/frameRate = 0 ist, dann wird ein Punkt mithilfe der Print() funktion ausgegeben.
|
||||
// Da kein Breakcharacter (\n) verwendet wird (Oder die println() Funktion) wird der dot in der gleichen Line ausgegeben
|
||||
if(count%frameRate==0)
|
||||
{
|
||||
print(".");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
10. Klausurnoten (if-else-if)
|
||||
Löse eine ähnliche Aufgabe wie die oben mit if-else-if. Du hast eine Punktzahl gegeben:
|
||||
|
||||
0 - 10: Durchgefallen
|
||||
11 - 20: Naja
|
||||
21 - 30: Mittelgut
|
||||
31 - 40: Gut
|
||||
41 - 50: Super
|
||||
*/
|
||||
|
||||
/*
|
||||
int punkte = 10;
|
||||
|
||||
|
||||
// Alle Punkte über 40 sind Super
|
||||
|
||||
if(punkte > 40)
|
||||
{
|
||||
println("Super");
|
||||
}
|
||||
else if (punkte > 30) {
|
||||
println("Gut");
|
||||
}
|
||||
|
||||
else if (punkte > 20) {
|
||||
println("Mittelgut");
|
||||
}
|
||||
else if (punkte > 10) {
|
||||
println("Naja");
|
||||
}
|
||||
else {
|
||||
println("Durchgefallen");
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
11. Lauftext
|
||||
Schreibe eine Textanzeige, die bei Mausklick zum nächsten Wort wechselt. Das erste Wort ist "Hallo":
|
||||
|
||||
Ergänze den Code, dass bei jedem Mausklick ein neues Wort angezeigt wird.
|
||||
Nach "Hallo" kommt "mein", "Name", "ist", "Hase", "Tschüs". Danach geht es wieder von vorn los.
|
||||
Nutze die Variable zustand und eine if-else-if Konstruktion.
|
||||
*/
|
||||
/*
|
||||
int zustand = 0;
|
||||
|
||||
void setup() {
|
||||
textAlign(CENTER);
|
||||
textSize(20);
|
||||
}
|
||||
|
||||
void mousePressed()
|
||||
{
|
||||
zustand++;
|
||||
}
|
||||
|
||||
void draw() {
|
||||
background(0);
|
||||
|
||||
if (zustand == 0) {
|
||||
text("Hallo", width/2, height/2);
|
||||
}
|
||||
else if (zustand == 1) {
|
||||
text("mein", width/2, height/2);
|
||||
}
|
||||
|
||||
else if (zustand == 2) {
|
||||
text("Name", width/2, height/2);
|
||||
}
|
||||
|
||||
else if (zustand == 3) {
|
||||
text("ist", width/2, height/2);
|
||||
}
|
||||
|
||||
else if (zustand == 4) {
|
||||
text("Hase", width/2, height/2);
|
||||
}
|
||||
|
||||
else {
|
||||
text("Tschüs", width/2, height/2);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
//Performantere Version
|
||||
// Dies liegt daran, dass die Abzweigung von else-if trees vom Compiler vorrausgerechnet werden. Dies geschieht nach einer Warscheinlichkeit die
|
||||
// Die der Compiler einem Branch zuweist. Wenn der Compiler den richtigen Branch guessed, dann gibt es keine Performanceeinbußen gering.
|
||||
// Verschätzt sich der Compiler jedoch frisst das viel Performance. Deswegen kann man dem es dem Compiler einfacher machen und einen Array verwenden.
|
||||
*/
|
||||
int zustand;
|
||||
|
||||
// Init string (const char*) array mit Strings für jedes Element
|
||||
String [] str = {"Hallo", "mein", "Name", "ist", "Hase", "Tschüß"};
|
||||
|
||||
// Call main() method
|
||||
public void setup() {
|
||||
/* size commented out by preprocessor */;
|
||||
textAlign(CENTER);
|
||||
textSize(width/5);
|
||||
}
|
||||
|
||||
// Register mouse click
|
||||
public void mousePressed()
|
||||
{
|
||||
// Increment Zustand
|
||||
zustand++;
|
||||
}
|
||||
|
||||
public void draw() {
|
||||
// Background schwarz setzen
|
||||
background(0);
|
||||
|
||||
// Wenn der Zustand kleiner als 6 ist Verwende Zustand den Wert eines Elementes zu bekommen.
|
||||
// Würde man versuchenn ein Element auszulesen, welches bei einer Pos > (Array Length-1) liegt, würde man auf
|
||||
// Eine Ram-Adress zugreifen, welche für eine andere Variable zugewiesen ist, was eine outofBoundsException hervorrufen würde.
|
||||
//if(zustand < 6)
|
||||
//text(str[zustand], width/2, height/2);
|
||||
|
||||
// Wenn das Element out of Bounds wäre, wird das letzte Element verwendet.
|
||||
//else
|
||||
zustand = constrain(zustand, 0, 5);
|
||||
text(str[zustand], width/2, height/2);
|
||||
|
||||
//text(str[5], width/2, height/2);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void settings() { size(500, 500); }
|
||||
|
||||
static public void main(String[] passedArgs) {
|
||||
String[] appletArgs = new String[] { "If_Clauses" };
|
||||
if (passedArgs != null) {
|
||||
PApplet.main(concat(appletArgs, passedArgs));
|
||||
} else {
|
||||
PApplet.main(appletArgs);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user