|
Utiliser une boucle for()
L'applet que nous nous proposons de construire devra dessiner 216 rectangles. Chacun aura une couleur différente, mais ces 216 couleurs sont définies par la combinaison de seulement 6 valeurs.
Il faut bien sûr automatiser le processus (sans quoi l'exercice n'aurait pas grand intérêt) en demandant à l'ordinateur de répéter certaines opérations : dessiner 216 fois un rectangle, combiner 216 fois les 6 valeurs RGB...
L'instruction for()
L'instruction for() permet de demander au programme de répéter une opération en fonction de la valeur d'une variable. On donne à l'instruction for() la valeur de départ de la variable, sa valeur d'arrivée (= la condition pour que la boucle se poursuive) et la manière dont la variable évolue de boucle en boucle.
La syntaxe de cette instruction est : for(valeur initiale de la variable; condition; évolution de la variable)
Par exemple, for(int i=0; i<300; i=i+1) demande au programme d'exécuter 300 boucles. À la première boucle, la variable i vaut 0 [int i=0] ; lorsque la valeur de i dépasse 299 [i<300], le programme ne relance pas la boucle ; à chaque tour, la variable i est incrémentée de 1 [i=i+1, que l'on écrit aussi i++ ou i+=1].
Voici une applet qui écrit 5 fois la lettre A :
import java.awt.*;
public class applet5 extends java.applet.Applet
{
public void paint (Graphics g)
{
g.setColor(Color.red);
for (int i=0;i<5;i++)
{
g.drawString("A",10,10);
}//for i
}
}
Et voici le résultat :
Le code prêt à l'emploi
Contrairement à ce qu'on pourrait croire, ce programme fonctionne très bien, mais la lettre A a été 5 fois dessinée au même endroit, on ne la voit donc qu'une fois.
Pour éviter cela, il faut que le dessin de la lettre soit décalé à chaque fois. Il faut donc utiliser une autre variable qui fera évoluer par exemple la valeur de l'abscisse.
Le plus simple est d'utiliser une sorte de compteur : à chaque boucle, l'abscisse sera incrémentée de 10, par exemple.
Voici la mise en uvre :
import java.awt.*;
public class applet6 extends java.applet.Applet
{
int abscisse = 10;--- variable déclarée et initialisée
public void paint (Graphics g)
{
g.setColor(Color.red);
for (int i=0;i<5;i++)
{
g.drawString("A",abscisse,10);
abscisse += 10;--- valeur de la variable incrémentée
}//for i
}
}
Et voici le résultat :
Le code prêt à l'emploi
On déclare une variable abscisse, que l'on initialise à 10. Puis, au premier tour, on dessine la lettre A non pas au point (10, 10) comme auparavant, mais au point (abscisse, 10). Comme la variable abscisse vaut 10, le programme effectue la substitution, le point de départ du dessin est bien (10,10).
Puis on incrémente la variable de 10 [abscisse += 10;], ce qui fait qu'à la boucle suivante abscisse vaut 20 : le programme effectue de même la substitution et le tour est joué, le deuxième point est (20,10). Et ainsi de suite.
Les variables
int abscisse = 10;
Une variable est une sorte de boîte vide que l'on remplit ensuite à son gré. Pour qu'une variable existe, il suffit de lui donner un nom et de déclarer son type.
Les règles de formation des noms de variables sont les suivantes :
- Le premier caractère doit être une lettre parmi les caractères ASCII de base (A-Z, a-z), ou le caractère de soulignement (_) ou le dollar ($).
- Les caractères suivants suivent la même règle, mais peuvent aussi être des chiffres (donc : pas de caractère accentué, ni de signe de ponctuation, ni d'espace).
Dans l'exemple ci-dessus, on déclare la variable abscisse de type int, c'est à dire nombre entier (compris entre -2147483648 et 2147483647, codage sur 32 bits).
On peut également, dans la foulée comme ici, remplir cette boîte avec une valeur. Le signe = a donc comme signification : "est rempli par la valeur suivante", "reçoit la valeur de".
Les commentaires
}//for i
Les deux barres obliques permettent d'inscrire dans le programme des commentaires, des indications qui aident le futur lecteur à s'y retrouver. Ces commentaires doivent être brefs : ils ne doivent pas dépasser la longueur de la ligne.
Des commentaires plus longs, s'étendant sur plusieurs lignes, doivent être entourés des balises /* (balise initiale) et */ (balise de fin).
Par exemple :
/*Ce commentaire
tient sur plusieurs
lignes.*/
|