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
- Constantes, final, static, Math.PI,
Math.abs(), Math.sqrt()
- Notions abordées dans les 3 premiers cours : voir les plans de cours
détaillés et les références vers le poly sur la page web de l'unité.
3 Évaluation d'expressions
Quelle est la valeur des expressions Java suivantes (sans calculatrice !) ?
- 1 + 2 / 3
- 1.0 + 2 / 3
- 1 + 20E-1 / 3
- 28 % 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 ! :
- !( i1 != 0 )
- !( i2 <= 0 )
- !( i3 < 0 )
- !( -9 <= i4 && i4 <= +9 )
- !( 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.
- É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
- É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.
- É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
- É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.
- É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
- 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.
- É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)
- 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.
- En travail personnel :
Il est conseillé de tester sur machine ces exercices avec BlueJ.
7 Problème
- É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.
- 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.
- On veut maintenant que la fonction marche aussi pour des droites
horizontales ou verticales.
- 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.