IN101 : Sujet du TD3
Groupe ESIEE, Denis BUREAU, février 2007.
Attention ! Le sujet peut être modifié jusqu'à la veille du TD.

1  Les objectifs

Savoir manipuler des expressions entières, réelles, et booléennes ; savoir écrire des méthodes avec des paramètres et les inclure dans une classe ; savoir appeler ces méthodes depuis une autre classe.

2  Apport de connaissances

3  Évaluation d'expressions

Quelle est la valeur des expressions Java suivantes (sans calculatrice !) ?
  1. 1 + 2 / 3
  2. 1.0 + 2 / 3
  3. 1 + 20E-1 / 3
  4. 28 % 5
  5. Math.cos(Math.PI/4) == Math.sin(Math.PI/4)

4  Expressions booléennes

Dans les expressions booléennes suivantes, i1 à i6 sont des int .
Récrire ces expressions sans utiliser aucun ! :
  1. !( i1 != 0 )
  2. !( i2 <= 0 )
  3. !( i3 <  0 )
  4. !( -9 <= i4 && i4 <= +9 )
  5. !( i5%2==0 || i6%2==1 )

5  Méthodes à écrire

Conseil valable pour chaque méthode demandée :
commencer par écrire la signature suivie d'un corps vide, puis réfléchir au contenu de ce dernier.
  1. Écrire en Java une fonction sommeJusquA() à un paramètre entier n qui retourne la somme des n premiers entiers (sans faire de boucle !).
    Exemple: 10 ® 55
  2. Écrire en Java une fonction max qui retourne le plus grand des 3 entiers passés en paramètres.
    Contraintes : n'utiliser qu'un seul return et ne pas comparer les mêmes valeurs plusieurs fois.
    Exemple : paramètres : 5 , 3 , 5 ® retourne : 5

6  Classes & méthodes à écrire

Conseil valable pour chaque méthode demandée :
commencer par écrire la signature suivie d'un corps vide, puis réfléchir au contenu de ce dernier.
  1. Écrire en Java une classe Pendule comportant 1 attribut réel l, correspondant à la longueur de ce pendule.
    Prévoir un constructeur à 1 paramètre et une fonction periode() qui retourne la période du pendule selon la formule t = 2pÖ{[l/g]}    (définir g en constante).
    Exemple: 2.4525 ® 3.141592653589793
  2. Écrire en Java une classe de test Expressions ne comportant qu'une fonction booléenne test(). En utilisant les valeurs données dans l'énoncé, cette fonction créera un objet de la classe Pendule, appellera sur cet objet la méthode periode(), comparera le résultat obtenu au résultat attendu (à 10-9 près), et enfin retournera le résultat de la comparaison.
  3. Écrire en Java une classe Triangle comportant 3 attributs réels a, b, et c, correspondant aux longueurs des trois côtés de ce triangle.
    Prévoir un constructeur à 3 paramètres, une fonction perimetre() qui retourne le périmètre du triangle, et une fonction surface() qui retourne la surface du triangle selon la formule s = Ö{p (p-a)(p-b)(p-c)}  où p est le demi-périmètre du triangle (indice : une fonction appellera l'autre...)
    Exemple: 1.5 2. 2.5 ® 6 et 1.5
  4. Compléter la fonction test() précédente pour qu'elle teste aussi les méthodes de la classe Triangle en utilisant les valeurs données dans l'énoncé. Combiner le résultat de toutes les comparaisons pour déterminer la valeur booléenne finale à retourner.
  5. Écrire en Java une classe Cercle comportant 3 attributs réels x, y, et diameter, correspondant respectivement aux coordonnées du centre et au diamètre de ce cercle.
    Prévoir un constructeur à 3 paramètres, et une fonction estSur() à 2 paramètres (les coordonnées d'un point) qui retourne vrai si le point est sur le cercle, et faux sinon (attention aux problèmes de précision...).
    Exemple: 0.0 0.0 2.0 0.707107 0.707107 ® true (à 10-6 près)
  6. Compléter la fonction test() précédente pour qu'elle teste aussi les méthodes de la classe Cercle en utilisant les valeurs données dans l'énoncé. Combiner le résultat de toutes les comparaisons pour déterminer la valeur booléenne finale à retourner.
  7. En travail personnel :
    Il est conseillé de tester sur machine ces exercices avec BlueJ.

7  Problème

  1. Écrire en java une fonction droites() déterminant si deux droites sont co-linéaires (c'est-à-dire confondues ou parallèles) ou orthogonales ou sécantes. La fonction prendra les 2 × 3 coefficients réels en paramètre et retournera une chaîne de 1 caractère "L", "O", ou "S". On supposera que les coefficients fournis définissent toujours une équation de droite. On supposera que les droites ne sont ni horizontales ni verticales.
  2. On souhaite maintenant qu'au lieu de répondre "L", la fonction réponde "C" quand les droites sont confondues et "P" lorsqu'elles sont strictement parallèles.
  3. On veut maintenant que la fonction marche aussi pour des droites horizontales ou verticales.
  4. On veut enfin que la fonction réponde "?" lorsque les coefficients ne définissent pas 2 équations de droites.



File translated from TEX by TTH, version 3.74.
On 07 Feb 2007, 18:45.