IN101 : Sujet du TD5.2
Groupe ESIEE, Denis BUREAU, novembre 2005.
Attention ! Le sujet peut être modifié jusqu'à la veille du TD.

1  Les objectifs

Savoir choisir et programmer des structures répétitives et savoir manipuler les expressions booléennes.

2  Notions abordées dans le cours 5

3  Références dans le "Petit mémento de syntaxe Java"

Paragraphes 11.3.2.1 à 11.3.2.3 .

4  Dérouler une boucle à la main

Après exécution de la fonction suivante, que vaut X en fonction de X0 ? (il y a plusieurs cas, selon la valeur de X0; il est conseillé d'essayer les valeurs 0, 1, 2, 3, 3.4, 4)
public double f( double X0 ) {
  double X=X0;  int i;
  for ( i=1; i<X0; i++ )  X = X * X0;
  return X; } // f()

5  Traduire en Java

Methode de lecture d'une voyelle minuscule avec limite
  (sans parametre ni valeur de retour)
  Soient carac un caractere et nbEssais un entier
  NbEssais <-- 0
  REPETER
    Demander une voyelle minuscule et la mettre dans carac
    incrementer nbEssais
    SI carac n'est pas une voyelle minuscule
      ALORS afficher "Erreur"
    FINSI
  JUSQUA ce que carac soit une voyelle minuscule ou que nbEssais >= 3
  SI carac n'est pas une voyelle minuscule
    ALORS afficher "Trop d'erreurs !"
    SINON afficher carac " est bien une voyelle minuscule."
  FINSI
FinMethode
  
Aide : On peut demander à l'utilisateur du programme de taper un caractère par la méthode
carac = JOptionPane.showInputDialog("Entrez une voyelle minuscule").charAt(0);
à condition d'avoir importé javax.swing.JOptionPane et déclaré le caractère carac.

6  Exercices

  1. Écrire en pseudo-langage une fonction calculant la factorielle d'un nombre entier positif en utilisant une boucle POUR.
    Rappels : 0! = 1 et n! = n ×(n-1) ×(n-2) ×¼×2 ×1.
  2. Traduire en Java la fonction factorielle.
  3. Écrire (uniquement en pseudo-langage) le calcul de la factorielle d'un nombre en utilisant une boucle TANTQUE, une boucle REPETER...JUSQUA, et une boucle REPETER...FOIS.
  4. Écrire une procédure Java prenant en paramètre un nombre entier ( < 10000) et affichant une suite de mots décrivant chaque chiffre.
    Contrainte : ne pas effectuer de calcul de puissance.
    Exemple : 347 ® trois quatre sept
    Extension (en travail personnel) : afficher le nombre "en français", par exemple : trois cent quarante-sept

7  Problèmes

  1. s'il reste du temps, sinon à faire en travail personnel
    Écrire une procédure Java prenant en paramètre un nombre entier compris entre 1 et 3999, et affichant son équivalent en nombre romain.
    Contrainte : ne pas effectuer de calcul de puissance.
    Conseil : utiliser une méthode auxiliaire qui retournera le caractère romain en fonction du chiffre et de la puissance de 10 passés en paramètres.
    Exemple : 2448 ® MMCDXLVIII
  2. Optionnel
    Écrire une procédure Java permettant, à partir d'une date quelconque jour/quantième/mois/année (mêmes paramètres que le "dernier dimanche" du TD5.1), de calculer et d'afficher le calendrier du mois en question comme ci-dessous (M majuscule pour Mercredi).
    Exemple : m, 13, 12, 2005 ®
               Calendrier du mois de decembre 2005 :
                  lundi    mardi Mercredi    jeudi vendredi   samedi dimanche
                      .        .        .        1        2        3        4
                      5        6        7        8        9       10       11
                     12       13       14       15       16       17       18
                     19       20       21       22       23       24       25
                     26       27       28       29       30       31        .
              
    



File translated from TEX by TTH, version 3.70.
On 29 Nov 2005, 20:09.