Licence professionnelle : Technologie
des Applications Internet
TD de Programmation
Orientée Objet n°2
Objectifs : Le but de ce TD est :
Les exercices proposés dans les différents thèmes de ce TD sont indépendants. Ils sont présentés dans un ordre de complexité croissante, effctuez donc ces exercices dans l'orde.
Afin d'organiser correctements vos fichiers, nous vous recommandons de respecter la règle suivante lors des TP de programmation : pour chaque TP créez un répertoire TPi où i est le numero du TP. C'est dans ce répertoire que vous devrez ranger les programmes que vous écrirez lors de ce TP.
Par ailleurs, rappelez vous que tout programme source JAVA devra avoir comme suffixe .java. La version compilée d'un programme JAVA a le même nom que le programme source correspondant mais son suffixe est .class
exemple : programme source Montp1.java , programme compilé
Montp1.class (obtenu par la commande javac Montp1.java) ,
exécution : java Montpt1
Thème 1 : expressions |
Exercice 1 : Conversion de températures
En utilisant la formule C = (5/9)(F-32) écrire en langage JAVA un programme Degres.java qui lit une température exprimée en degrés Fahrenheit et affiche sa valeur en degrés centigrades ou degrés Celsius.
exemples d'exécution du programme :
C:\JAVA\TP1>java Degres
donnez une temperature en Fahrenheit : O.O
cette temperature equivaut a -17.8 degres Celsius
C:\JAVA\TP1>java Degres
donnez une temperature en Fahrenheit : 60.0
cette temperature equivaut a 15.6 degre Celsius
C:\JAVA\TP1>
Exercice 2 : Conversion de durées
Ecrire un programme Hjms.java en langage JAVA qui pour un nombre de secondes donné calcule et affiche son équivalent en nombre de jours, d'heures, de minutes et de secondes.
exemples d'exécution du programme :
C:\JAVA\TP1>java Hjms
donnez une durée en secondes : 3621
cette durée équivaut à 0 jours 1 heures 0 minutes 21
secondes
C:\JAVA\TP1>java Hjms
donnez une durée en secondes : 567231
cette durée équivaut à 6 jours 13 heures 33 minutes
et 51 secondes
C:\JAVA\TP1>
Thème 2 : instructions conditionnelles |
Exercice 1 : Déterminer de l'appartenance d'un point à une couronne
| Ecrire un programme Couronne.java en langage JAVA qui pour un pour un point P du plan détermine si ce point se trouve ou non à l'intérieur de la couronne de centre l'origine et définie par la donnée de son rayon extérieur r1 et son rayon intérieur r2 | ![]() |
Exercice 2 : Classez 3 nombres
Ecrire un programme TroisNombre.java qui lit 3 nombres au clavier et les classes dans l'ordre croissant et les affiche du plus petit au plus grand sur la console.
Thème 3 : itérations |
Chaque exercice comporte plusieurs parties de complexité croissante. Ne traiter une partie que lorsque la partie précédente de l'exercice aura été terminée : c'est à dire que vous aurez édité, compilé et exécuté le programme demandé.
Exercice 1 : Prix d'un lot
a) Le jeu consiste à découvrir par essais successifs le prix d'un lot . Pour chaque essai, le joueur reçoit un message : "Trop grand", "Trop petit" ou "BRAVO ! Vous avez trouvé en K essais". Le jeu est fini quand le joueur a trouvé le prix du lot.
On propose d'écrire un programme JAVA PrixLot1.java qui joue le rôle de meneur de jeu ; l'exécution de ce programme vous fera tenir le rôle du joueur. Le programme Prixlot1doit définir le prix du lot en tirant un entier aléatoire entre 1 et 1000 et dialoguer avec le joueur pendant le jeu.
Pour choisir un nombre au hasard on utilisera la méthode random de la classe Math qui retourne un réel (double) tiré au hasard et de manière uniforme dans l'intervalle [0 1].
eudoxe%java PrixLot1
Le but est de chercher un prix entre 0 et 1000
Tapez un prix : 566
Trop grand
Tapez un prix : 400
Trop grand
Tapez un prix : 150
Trop petit
Tapez un prix : 200
Trop petit
Tapez un prix : 214
BRAVO ! Vous avez gagné en 5 essais
eudoxe%
b) Copier dans le fichier PrixLot2.java le fichier PrixLot1.java, et modifier PrixLot2.java de manière à pouvoir :
thales%java PrixLot2
Le but est de chercher un prix entre 0 et 1000
1ère partie. Nombre maximum d'essais : 4
Tapez un prix : 678
Trop petit
Tapez un prix : 920
Trop grand
Tapez un prix : 860
Trop petit
Tapez un prix : 910
Trop petit
PERDU ! Vous avez épuisé le nombre d'essais autorisés
Le prix était : 917
Voulez-vous rejouer O/N ? o
2ème partie. Nombre maximm d'essais : 8
Tapez un prix : 678
Trop grand
Tapez un prix : 333
Trop grand
Tapez un prix : 300
Trop petit
Tapez un prix : 320
Trop petit
Tapez un prix : 324
BRAVO !
Vous avez gagné en 5 essais
Voulez-vous rejouer O/N ? n
thales%
c) En jouant avec le programme précédent, essayer de trouver une stratégie systématique et efficace. Ecrire un programme PrixLot3.java qui fait jouer l'ordinateur à votre place suivant la tactique que vous venez de définir ; les deux rôles de meneur de jeu et de joueur sont donc à la charge du programme, le joueur "ignorant" évidemment le prix connu du meneur de jeu, mais "sachant" si son essai est plus grand ou plus petit que le prix.
Le programme PrixLot3 effectue 20 parties ; il affiche pour chaque partie le prix tiré au sort et le nombre d'essais successifs qui ont été nécessaires pour le trouver avec la tactique programmée.
Pouvez-vous prévoir, pour la tactique que vous avez choisie, l'ordre de grandeur des nombres d'essais ? Compléter le programme PrixLot3 en lui faisant calculer la moyenne des 20 nombres d'essais obtenus pour les 20 parties.
Exercice 2: Calcul de X^n
a) Ecrire un programme JAVA Puissance1.java permettant de calculer et d'afficher la valeur de X^n (lire X puissance n, HTML ne permet pas dans cette version d'écrire des exposants!!), où X et n sont respectivement un réel et un entier introduits au clavier.
Pour effectuer ce calcul on ne fera pas appel aux fonctions de la classe Math (pow ou exp et log), mais on utilisera des instructions itératives (for, while ou do while). Le programme devra permettre de traiter tous les cas possibles : n = 0, n > 0 et n < 0 avec X réel négatif, positif ou nul. Rappelons que :
|
|
On pourra organiser le calcul de la façon suivante :
|
b) à partir du programme Puissance1.java précédent écrire un programme Puissance2.java qui après chaque calcul de puissance demande à l'utilisateur si il veut faire un autre calcul ou non.
exemple d'exécution :
C:\JAVA\TP1>java Puissance2
x = 2.0
n = 3.0
x^n = 8.0
voulez-vous faire un autre calcul O/N : o
x = 3.5
n = -3
x^n = 0.0233236151
voulez-vous faire un autre calcul O/N : n
C:\JAVA\TP1>
Exercice 3 : Valeur approchée de la racine carrée d'un nombre réel positif
On considère un nombre réel positif A ; on sait que la suite (un) n=0,1,2,... définie par la donnée d'un réel u0 positif et par la relation de récurrence un = (un-1 + A / un-1) * 0,5 (pour n > 0) converge vers la racine carrée de A . On suppose le nombre A compris entre 1 et 100, et on prend u0 = A / 2.
Pour obtenir une valeur approchée de racine carrée de A, on cherche le premier terme un tel que | un^2 - A | < E-5 . Le nombre trouvé est une valeur approchée de racine carrée de A ( en effet | un^2 - A | < E-5 implique que | un- rac(A) | < E-5 / ( un+ rac(A) où rac(A) correspond à la racine carrée de A).
a) Ecrire un programme JAVA Raca1.java qui permet
| Entrer un nombre A entre 1 et 100: 19.23
Approximations successives : |
- définir une constante : static final double EPS = 1E-5;
- utiliser une boucle tant que :
while (. . . . . . . >= EPS)
{ . . . . . . . . . }
b) à partir du programme Raca1.java écrire un programme Raca2.java qui vérifie que le nombre introduit au clavier est bien un nombre positif supérieur à 1, et dans le cas contraire affiche un message d'erreur et redemande une nouvelle valeur à l'utilisateur.