Université de Nice Sophia-Antipolis

DU IG - Introduction à la programmation objet - 2009-10

Contrôle du 27 octobre 2009

Durée : 1h. Seuls documents autorisés : photocopies des transparents distribués en cours ; les énoncés et corrections des TP sont interdits. Éteignez les téléphones portables.

Important : la présentation et la lisibilité du code compteront dans la note finale. Vous êtes autorisé à écrire le code (et seulement le code) avec un crayon à papier si c'est parfaitement lisible (pas de crayon trop clair).
Ajoutez des commentaires quand vous pensez que ça peut être utile au correcteur. Ne mettez pas de commentaires évidents qui n'ajoutent rien à votre code.
Respectez le découpage en questions et l'ordre des questions. Les numéros des questions devront apparaître clairement sur votre feuille.

Exercice 1 (14 points)

Ecrivez une classe TestTirages dont la méthode main appelle une méthode tirages qui tire au hasard 100 nombres compris entre 1 et 6 (bornes comprises) et retourne le total de tous les nombres pairs tirés parmi ces 100 nombres. Cette méthode tirages sera paramétré par le nombre de tirages qui pourra être 100 ou une autre valeur. Le nombre 6 sera fixe, pas donné par un paramètre de la méthode.

Pour cela vous utiliserez la méthode random de la classe java.lang.Math dont voici la javadoc :

public static double random()

Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. Returned values are chosen pseudorandomly with (approximately) uniform distribution from that range.
Returns: a pseudorandom double greater than or equal to 0.0 and less than 1.


/**
 * Tire 100 nombres entiers compris entre 1 et 6
 * et affiche la somme des nombres pairs parmi ces nombres.

 */
public class TestTirages {
  private static final int NB_MAX = 6;
  
  public static void main(String[] args) {
    System.out.println(tirages(100));
  }

  public static int tirages(int nbTirages) {
    int somme = 0;
    for (int i=0; i < nbTirages; i++) {
      int n = (int)(Math.random() * NB_MAX) + 1;
      if (n % 2 == 0) {
        somme += n;
      }
    }
    return somme;
  }
}

Exercice 2 (6 points)

  1. Dans cette javadoc, à quoi sert le mot static de la signature de la méthode ?
    static indique que la méthode correspond à un message envoyé à la classe.
  2. Combien y-a-t-il de types de boucles/répétitions ? Donnez des critères simples pour choisir plutôt un type que les autres. On ne vous demande pas de décrire avec précision chacun des types.
    3 types de boucles :
    pour
    utilisé lorsqu'on connaît à l'avance le nombre de tour ;
    tant que
    utilisé lorsqu'on la boucle peut ne jamais être exécutée ;
    jusqu'à
    utilisé lorsqu'on la boucle est toujours exécutée au moins une fois ;
  3. Dans l'exercice 1, que contient la pile d'exécution lorsque la méthode random est en cours d'exécution, du sommet de la pile à sa base ? Donnez une réponse courte ; on ne vous demande pas de donner tous les détails de cette pile d'exécution.
    La pile d'exécution contient les espaces mémoires des méthodes random, tirages et main.