Koordinatengrafik mit Java
HomeAufgabenDruckenJava-Online

Iteration


while-Struktur

Die Iteration wird benutzt, wenn ein Programmteil mehrmals ausgeführt werden soll. Bei der while-Struktur wird vor dem Beginn des Wiederholblocks eine Bedingung auf ihren Wahrheitswert geprüft. So lange die Bedingung wahr ist, wird der Wiederholblock ausgeführt. Es ist besonders darauf zu achten, dass im Schleifenkörper eine Wertveränderung stattfindet, welche dazu führt, dass die Schleifenbedingung false wird. Sonst ergibt sich eine Endlosschleife.

// Linienschar.java

import ch.aplu.util.*;

class Linienschar
{
  Linienschar()
  {
    GPanel p = new GPanel(040040);
    int i = 5;          //Startwert
    while (< 36)
    {
      p.line(i, 535, i);
      i++;             //Wertänderung
    }
  }

  public static void main(String[] args)
  {
    new Linienschar();
  }
}

 

Erklärungen zum Programmcode:

int i = 0 Der Wert der ganzzahligen Variablen i wird auf 0 gesetzt.
while ( i  < 36 )
{
}
Achtung: am Ende einer Zeile mit while-Bedingung steht nie ein Strichpunkt.
Falls in einem Schleifenblock mehrere Anweisungen stehen, müssen diese in einer geschweiften Klammer zusammengefasst werden. Achten Sie auf die Einrückung des Schleifenblocks.
i++ Der Wert der Variable i wird um 1 vergrössert. Gleichwertig mit i = i + 1.


for-Struktur

Bei vielen Aufgaben braucht man in einer wiederholenden Struktur nur einen Schleifenzähler. In diesen Fällen verwendet man an Stelle einer while-Schleife die einfachere for-Schleife. Der Startwert, die Schleifenbedingung und die Wertänderung werden in einer Zeile festgelegt.

// Kreise.java

import ch.aplu.util.*;
import java.awt.Color;

class Kreise
{
  Kreise()
  {
    GPanel p = new GPanel(-2525-2525);
    
    for (int i = 0; i < 6; i++)
    {
      double angle = i * Math.PI / 3.0;
      double a = 10 * Math.cos(angle);
      double b = 10 * Math.sin(angle);
      p.move(a, b);
      Color c = new Color(25540 * i, 255 - 40 * i);
      p.color(c);
      p.fillCircle(5);
    }
  }

  public static void main(String[] args)
  {
    new Kreise();
  }
}
 

Erklärungen zum Programmcode:

for (int  i  = 0 ; i  < 6 ; i ++) Initialisierung, Abbruchbedingung und Wertänderung in einem Ausdruck.
double  angle  =  i  * Math .PI  / 3 . 0 ; Deklariert Winkel von 30, 120, 180, 210, 240, 240 und 300 Grad.
double a = 10 * Math.cos(angle);
double b = 10 * Math.sin(angle);
Deklariert die Koordinaten der Kreise.
color ( r ,  g,  b ) Setzt die Zeichnungsfarbe. r, g, b sind ganze Zahlen zwischen 0 und 255.


Beispiel 3: Farbverlauf

//Farbverlauf.java

import ch.aplu.util.*;
import java.awt.Color;

class Farbverla
{
  Farbverlauf()
  {
    GPanel p = new GPanel(02550255);
    int breite = 255;
    int hoehe = 255;
    for (int i = 1; i < breite; i++)
    {
      int b = i * 255 / breite;  
      int r = 255 - b;
      int g = (500 * Math.abs(- breite/2))/breite;
      Color c = new Color(r, g, b);
      p.color(c);
      p.move(i, 128);
      p.fillRectangle(1, hoehe);
    }
  }

  public static void main(String[] args)
  {
    new Farbverlauf();
  }
}
 

Erklärungen zum Programmcode:

fillRectangle ( 1 , hoehe ) ; In einer for-Schleife werden Rechtecke mit der Breite 1 gezeichnet. Der Mittelpunkt des Rechtecks befindet sich an der aktuellen Cursorposition. Füllfarbe und Linienfarben sind identisch.


Verschachtelte for-Schleifen

Die for-Schleifen lassen sich verschachteln. Im Beispiel Moire.java kommen zwei doppelte for-Schleifen vor.

// Moire.java

import ch.aplu.util.*;

class Moire
{
  Moire()
  {
    GPanel p = new GPanel(010010);

    int i, k;
    for (= 0; i <= 10; i++)
    {
      for (= 0; k <=10; k++)
        p.line(i, 0, k, 10);
    }
    
    for (= 0; i <= 10; i++)
    {
      for (= 0; k <= 10; k++)
        p.line(0, i, 10, k);
    }
  }

  public static void main(String[] args)
  {
    new Moire();
  }
}
   

Erklärungen zum Programmcode:

int i, k Wenn eine Variable in der for-Schleife initialisiert wird, z.b. for (int i = 0; i < 10; i++) , dann ist sie eine lokale Variable, die nur in dieser for-Schleife sichtbar ist. Damit die beiden Variablen i und k in beiden for-Schleifen verwendet werden können, müssen sie vor der ersten Schleife deklariert werden. Mit dem Kommaoperator lassen sich beide Deklarationen zusammenfassen.