Université de Nice Sophia-Antipolis
DU IG - Introduction à la programmation objet

Contrôle du 26 octobre 2011 - 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.

  1. (8 points) Écrivez une classe Main qui contient une méthode main qui affiche la somme des 100 premiers nombres pairs : 2 + 4 +..., en utilisant une boucle.
    public class Main {
      /**
       * Affiche la somme des 100 premiers nombres pairs.
       */
      public static void main(String[] args) {
        int somme = 0;
        for (int i = 1; i < 101; i++) {
          somme += i * 2; // ou somme = somme + i * 2;
        }
        // ou
    //    for (int i = 0; i < 100; i++) {
    //      somme += (i + 1) * 2;
    //    }
        System.out.println(somme);
      }
    }  
      
  2. (10 points) Écrivez une classe Main2 qui contient une méthode main qui affiche le plus petit nombre entier n tel que la somme des n premiers nombres pairs est supérieur à un nombre entier m entré au clavier par l'utilisateur (on demande à l'utilisateur d'entrer un nombre entier supérieur à 100).
    Le code utilisera la classe Console utilisée dans les TPs.
    Si l'utilisateur a tapé un nombre inférieur ou égal à 100, la méthode main affichera seulement le message "Vous deviez taper un nombre plus grand que 100 !" (sans attendre un autre nombre).
    Voici un modèle de ce qui devra être affiché par l'exécution du programme :
    Entrez un nombre entier plus grand que 100 : 30000
    La somme des 173 premiers nombres pairs est égale à 30102

    Rappel : la classe Console contient la méthode static int readInt() qui retourne la valeur d'un entier tapé au clavier par l'utilisateur.

  3. public class Main2 {
      public static void main(String[] args) {
        System.out.print("Entrez un nombre entier plus grand que 100 : ");
        int m = Console.readInt();
        if (m <= 100) {
          System.out.println("Vous deviez taper un nombre plus grand que 100 !");
          return;
        }
        int somme = 0;
        int i = 0;
        while (somme <= m) {
          i++;
          somme += i * 2;
          // Les 2 dernière lignes peuvent être remplacées par la ligne suivante :
          // somme += ++i * 2;
        }
        System.out.println("La somme des " + i + " premiers nombres pairs est égale à " + somme);
      }
    }
    
  4. (2 points) Que signifie "static" dans la définition de la méthode readInt ?
    La méthode correspond à un message qui peut être envoyé à la classe Console, pas à un objet de classe Console.