9. entrées / sorties



Dans les leçons précédentes, vous avez écrit des programmes "batch". A chaque exécution d'un de ces programmes, le résultat est le même; l'utilisateur ne peut qu'observer et ne peut pas influencer le résultat. Nous allons maintenant introduire un peu d'interactivité.

Pour ce tutorial, la première possibilité est d'utiliser la classe Terminal. Grâce à cette classe, il va être possible de poser des questions à l'utilisateur et de lire ses réponses. L'interaction va se faire au niveau du terminal (d'où le nom de la classe), c'est à dire dans la fenêtre de commandes (appelée terminal, console, invite de commandes, commandes MS-DOS, etc. selon le système utilisé).

Quand on parle d'entrée (input) ou de sortie, c'est toujours par rapport au programme. Ici, les entrées correspondront aux données fournies par l'utilisateur via le clavier et les sorties seront affichées par le programme. Le programme va donc lire les entrées (read input) et écrire les sorties (write output / print output).

Exemple : programme qui dessine une spirale conformément aux choix de l'utilisateur

class Tortue extends SuperTortue{

    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++){
                avance(dist);
                tourneDroite(360/nbCotes);
                dist += increment;
            }
        }
   }
}
 

public class MonProg{

    public static void main(String[] args){

        Terminal term = new Terminal();    // Déclaration et initialisation
                                           // de la variable qui va permettre
                                           // l'interaction

        term.ecrireString("********************************");
        term.ecrireString("Spirales");
        term.ecrireLigne();
        term.ecrireString("Combien de cotes ?");
        int nbCotes = term.lireInt();
        term.ecrireString("Combien de tours ?");
        int nbTours = term.lireInt();
        term.ecrireString("Longueur initiale du cote ?");
        int longueurInit = term.lireInt();
        term.ecrireString("Increment ?");
        int incr = term.lireInt();

        Tortue rosalie = new Tortue();

        rosalie.spirale(nbCotes, nbTours, longueurInit, incr);
    }
}
MonProg9a.java

Une autre possibilité est d'utiliser les méthodes lireInt, lireString et msgErreur de la classe SuperTortue. L'exemple ci-dessus devient (la classe Tortue ne change pas) :

public class MonProg9b{

    public static void main(String[] args){

        Tortue rosalie = new Tortue();
        int nbCotes = rosalie.lireInt("Combien de cotes ?");
        int nbTours = rosalie.lireInt("Combien de tours ?");
        int longueurInit = rosalie.lireInt("Longueur initiale du cote ?");
        int incr = rosalie.lireInt("Increment ?");
        rosalie.spirale(nbCotes, nbTours, longueurInit, incr);
    }
}

MonProg9b.java



Exercice

13/03/2002
CLMJ