Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:e2:processing:syn-java-while

Syntax: while-Schleife

Die while-Schleife

Im Fachkonzept: Wiederholung habt ihr gelernt, dass man mit den so genannten Schleifen einen Programmblock so lange wiederholen kann, wie eine bestimmte Bedingung gültig ist. Die Syntax in Java sieht dafür so aus:

{Wiederholung = "while" "(" Bedingung ")" "{" Programm "}".}

Eine Schleife besteht aus dem Schlüsselwort while und dann - ähnlich wie bei einer Verzweigung - aus einer Bedingung und einem Programmblock. Dieser Programmblock wird so lange ausgeführt, wie die Bedingung zutrifft. Klarer machen das die unten stehenden Beispiele.

while (meineZahl > 5) {
  zeichneDinosaurierAufZufallsPosition();
}
while (xPositionDerFigur < width) {
  geheEinenSchritt();
}
Kreise

Es soll am oberen Fensterrand alle 25 Pixel ein Kreis gezeichnet werden, und zwar so lange, bis der Fensterrand erreicht ist. Die Größe des Fensters soll dabei Variabel sein, d.h. geändert werden können, ohne dass das Programm angepasst werden muss. Der erste Kreis soll bei $(10 |10)$ beginnen.

Code & Erklärung
  • Zunächst muss man sich überlegen, was die Abbruchbedingung der while-Schleife sein sollte: Es müssen solange Kreise gezeichnet werden, wie die x-Position des Kreises kleiner als die Breite des Fensters ist. Das könnte man ja auch als $x < width$ ausdrücken. Wir benötigen als eine Variable $x$, die wir verändern können.
  • Der Schleifenkörper ist dann denkbar einfach: Kreis zeichnen und die x-Position um 25 erhöhen.
void setup() {
  size(300, 300);
}
 
void draw() {
  background(0);
 
  // Variable mit der x-Position des Kreises
  // Startposition = 10 (damit das mit dem Rand passt)
  int x = 10;
 
  // Solange die x-Position kleiner als die Breite des Fensters ist, ...
  while (x < width) {
    // ... zeichne den Kreis und ...
    ellipse(x, 10, 10, 10);
 
    // erhöhe die x-Position um 25.
    x += 25;
  }
}
Einführungsvideo
Eigener Cursor

Das Programm soll einen eigenen Cursor zeichnen, der aus ineinander geschachtelten Quadraten besteht. Das größte Quadrat soll 25 Pixel breit und hoch sein.

Code & Erklärung
  • Abbruchbedingung? → Breite des Rechtecks größer als 0.
  • Schleifenkörper? → Rechteck an Mausposition zeichnen und Breite um 4 verringern.
void setup() {
  size(300, 300);
  noCursor();
}
 
void draw() {
  background(0);
  rectMode(CENTER);
  noFill();
  stroke(255);
 
  int breite = 25;
 
  while (breite > 0) {
    rect(mouseX, mouseY, breite, breite);
 
    breite -= 4;
  }
}
Video zum eigenen Cursor
Komplexe Bedingungen
Komplexere Bedingungen

Auch bei Wiederholungen können natürlich komplexe Bedingungen verwendet werden. Das erste Beispiel soll angepasst werden: Es soll alle 25 Pixel ein Kreis auf gezeichnet werden, wobei der nächste im $45°$-Winkel unter dem vorherigen sein soll. Das soll so lange passieren, bis einer der beiden der Fensterränder erreicht ist. Die Größe des Fensters soll dabei Variabel sein, d.h. geändert werden können, ohne dass das Programm angepasst werden muss. Der erste Kreis soll bei $(10 |10)$ beginnen.

size(300, 300)
size(200, 300)
size(300, 200)
void setup() {
  size(300, 200);
}
 
void draw() {
  background(0);
  int x = 10;
  int y = 10;
 
  while (x < width && y < height) {
    ellipse(x, y, 10, 10);
 
    x += 25;
    y += 25;
  }
}
info/sek-ii/e2/processing/syn-java-while.txt · Zuletzt geändert: 2022-09-19 19:47 von christian.weber