3. Het gebruik van variabelen en herhaling

Het gebruik van variabelen (in plaats van constante getallen) biedt grote voordelen.

Stel dat we zes concentrische cirkels willen tekenen, dan zouden we die cirkels afzonderlijk kunnen laten tekenen met:

g.drawOval (50, 10, 220, 220);
g.drawOval (70, 30, 180, 180);
g.drawOval (90, 50, 140, 140);
g.drawOval (110, 70, 100, 100);
g.drawOval (130, 90, 60, 60);
g.drawOval (150, 110, 20, 20);

Maar we kunnen beter gebruik maken van een herhaling-structuur, namelijk zo:

// Zes cirkels getekend met een do/while lus
import java.applet.*;
import java.awt.*;

class Cirkels2 extends Applet {
   public void paint (Graphics g) {
      int straal = 110, breedte = 320, hoogte = 240;
      do {
         int x=breedte/2-straal, y=hoogte/2-straal;
         g.drawOval (x, y, 2*straal, 2*straal);
         straal -= 20;
      } while (straal > 0);
   }
}

Het programma begint met een cirkel met een straal van 110 pixels. Daarna wordt er steeds opnieuw een cirkel getekend en wordt er telkens 20 van de straal afgetrokken -- zolang de straal groter is dan nul. Die herhaling kunnen we in Java bewerkstelligen met:

do {
   // Hier springt de tekst in
   // omdat dit gedeelte afhankelijk
   // is van de do/while constructie.
} while (straal > 0);

Een opmerkelijke expressie is de volgende:

straal -= 20;

Je kunt dit ook anders schrijven, namelijk zo:

straal = straal - 20;

In beide gevallen betekent het dat er van de straal 20 wordt afgetrokken.

   

Lijnen tekenen

Een punt in een appletvenster wordt beschreven met coördinaten. Zo zie je in de applet hieronder het punt (200, 100), dat wil zeggen dat het 200 pixels van links en 100 pixels van de bovenkant af ligt.

       

In Java kun je een lijn tekenen van punt (x1, y1) naar (x2, y2) met:

g.drawLine (x1, y1, x2, y2);

Je zou het appletvenster kunnen verdelen in horizontale stroken van 10 pixels met :

// Het venster wordt in horizontale stroken verdeeld.
import java.applet.*; 
import java.awt.*;
public class HorizontaleLijnen extends Applet {
   public void paint (Graphics g) {
      int y = 10, breedte = 320, hoogte = 240;
      do {
         g.drawLine (0, y, breedte, y);
         y += 10;
      } while (y < hoogte);
   }
}

Dat levert dit beeld op:

   

Opdracht 3.1

Schrijf een applet waarin het venster verdeeld wordt in vakjes van 10 pixels breed en 10 pixels hoog.

   

Opdracht 3.2

Schrijf een applet waarin om de 10 pixels lijnen zijn getrokken van linksboven naar rechtsonder, en zo verder van linksonder naar rechtsboven (zie figuur hieronder). Hierbij is het handig om te weten dat <= betekent "kleiner dan of gelijk aan".

   

(c) 2003-2008, Thomas J.H.Luif