Tag 1 7.Schleifen

Metaphysischer Grenzverkehr II (Eno Henze, 2007))

1.7.1 Iteration – Schleifen

Iteration bezeichnet den Vorgang, bestimmte Anweisungen immer wieder auszuführen. Die Parameter der Anweisungen können sich durch Veränderung von Variablenwerten bei jeder weiteren Ausführung ändern.

while Schleife

Die while-Schleife steuert einen Code-Block, der wiederholt ausgeführt wird. Er wird so lange ausgeführt, wie die angegebene Bedingung für seine Ausführung wahr ist, also zutrifft. Die Bedingung muss bei jeder Ausführung im Code-Block verändert werden, ansonsten würde die Schleife endlos wiederholt werden, was in den allermeisten Fällen nicht erwünscht ist.


while (Bedingung) {
  Anweisungen
}
    

Um die Bedingung zu fomulieren werden in der Regel zwei Werte miteinander verglichen. Oft ist einer der beiden Werte in einer Variablen (im folgenden Beispiel in „i“) abgelegt und wird im Code-Block verändert :


int i = 0;
while (i < 3){
  i = i + 1;
} 
	
    

Der Vergleich wird durch die zur Verfügung stehenden Vergleichsoperatoren durchgeführt:

  • == gleich
  • != ungleich
  • > größer als
  • >= größer gleich als
  • < kleiner als
  • <= kleiner gleich als

Beispiel 1-4


int counter = 0;
int radius = 30;

void setup(){
  size(800,600);
  background(255);
  fill(0,20);
  noStroke();
}

void draw(){
  while (counter < 7000){  
    ellipse(random(0, width),random(0, height),radius,radius);
    counter = counter + 1;
  }
}
    

for Schleife

Eine for-Schleife weist drei Teile auf: die Zählervariable wird initialisiert, sie wird durch einen Vergleichsoperator mit einem Wert verglichen und sie wird schließlich verändert. Die Teile sind jeweils durch ein Semikolon voneinander getrennt:


for (int i = 0; i < 10; i = i + 1){
    Code-Block
}
    

Die Schleife wird so lange durchlaufen und damit der Code-Block ausgeführt, bis der Vergleich der Variable nach boolscher Logik false ergibt.

Beispiel 1-5


void setup(){
  size(800,600);
  background(255);
  noFill();
  stroke(100);
}

void draw(){
  background(255);
  for(int k = 0; k < 60; k++){
    int radius = k * 20;
    ellipse(width/2,height/2, radius,radius);
  }
  for(int i = 0; i < 200; i++){
    int radius = i * 20;
    ellipse(mouseX,mouseY, radius,radius);
  }
}
    

Beispiel 1-6


float step = 50;
float c = 0;

void setup(){
  size(690,300);
  frameRate(6);
  colorMode(HSB);
  stroke(255); 
}

void draw(){
  for(int yr = 0; yr < height; yr += step){
    for(int xr = 0; xr < width; xr += step){
     float randomHue = random(40);
     fill(randomHue,255,255);
     rect(xr,yr,step,step);
   }
  }
}
    

Aufgabe
Modifiziere den Sketch so, dass 20 X 10 Rechtecke zu sehen sind, die in zufälligen blautönen dargestellt werden.


Beispiel 1-7


float radius = 6;
float alpha = 20;
float off = 20;
float c = 0;

void setup(){
  size(690,300);
  background(255);
  //frameRate(6);
  colorMode(HSB);
  noStroke();
  fill(0,alpha);
}

void draw(){

}

void mouseMoved(){
  for(int i = 0; i < 100; i ++){
      float offsetX = randomGaussian()*off;// random(-off,off);
      float offsetY = randomGaussian()*off;//random(-off,off);
      ellipse(mouseX+offsetX, mouseY+offsetY, radius, radius);
  }
}