12. tableaux



Un tableau est une structure qui permet de stocker plusieurs valeurs de même type (n'importe quel type). On peut avoir des tableaux d'entier, de chaînes de caractères, de tortues, etc. Il est également possible de créer un tableau de tableaux.

int[] monTableau;                     déclaration d'un tableau de nombres entiers
monTableau = new int[10];     initialisation du tableau

forme générale : new typeElement[taille du tableau]

on peut aussi initialiser le tableau directement en énumérant ses éléments.
boolean[] reponse = { true, false, true, true, false };

Le premier élément du tableau se trouve à l'index 0. notation : monTableau[0]
La taille du tableau (nombre d'éléments) est donnée par l'expression : nomDuTableau.length
Le dernier élément du tableau se trouve donc à l'index nomDuTableau.length-1

Pour parcourir un tableau, on utilisera donc une boucle.
Exemple :

Terminal t = new Terminal();
String[] jours = { "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche" };

for (int i=0; i<jours.length; i++){
    t.ecrireString(jours[i]);
}


Exemple

On ajoute à la classe Tortue une variable tableau qui est prévue pour contenir les coordonnées des 100 premiers points où la tortue est passée. (chaque point représente l'extrémité d'un trait dessiné par la méthode avance)

class Tortue extends SuperTortue{

    Coordonnee[] tableau = new Coordonnee[100];
    //tableau pour conserver que les 100 premières coordonnées de la tortue

    int i = 0;
    //i indique l'index de la prochaine case libre dans le tableau
 

    Tortue(){
        super();
        Coordonnee c = new Coordonnee(300,300);
        tableau[i] = c;
        //le point de départ de la tortue est stocké dans la première case
        i = 1;
        //la prochaine case libre se trouve à l'index 1
    }

    void av2(int dist){
        //la méthode avance(int dist) ne stocke pas les coordonnées
        //on a donc besoin d'une nouvelle méthode -> av2(int dist)
        avance(dist);
        if (i < 100){
            //tant qu'on n'a pas dépassé 100 coordonnées dans le tableau
            tableau[i] = position();
            //après chaque trait, on stocke la nouvelle position de la tortue
            i++;
            //prochaine case libre
        }
    }

    void redessine(){
        //méthode qui permet de redessiner les 100 premiers traits de la tortue
        Coordonnee c = tableau[0];
        for(int j=1; j<i; j++){
           dessineTrait(c,tableau[j]);
            //on dessine un trait entre les coordonnées tableau[j-1] et tableau[j]
            c = tableau[j];
        }
    }

    void spirale(int nbCotes, int nbTours, int increment, int longInit){
        int dist = longInit;
        for (int j=0; j<nbTours; j++){
            for (int i=0; i<nbCotes; i++){
                av2(dist);
                tourneDroite(360/nbCotes);
                dist += increment;
            }
        }
    }
}

public class MonProg12a{

    public static void main(String[] args){
        Tortue rosalie = new Tortue();
        rosalie.spirale(4,10,3,5);
        rosalie.nettoie();
        rosalie.redessine();
    }
}
MonProg12a.java



Exercice

9/1/2001
CLMJ