Université Alioune Diop de Bambey Année 2012
TD Java AMRT2 Bambey
Exercice 1:
Soit le programme suivant :
public class ExoI
{ public static void main(String[] args)
{ int i, n, som ;
som = 0 ;
for (i=0 ; i<4 ; i++)
{ System.out.println ("donnez un entier ") ;
n = Clavier.lireInt() ;
som += n ;
}
System.out.println ("Somme : " + som) ;
}
}
Écrire un programme réalisant la même chose en employant à la place de l’instruction for :
1. une instruction while,
2. une instruction do... while.
Exercice 2:
Écrire un programme qui calcule les racines carrées de nombres fournis en donnée. Il s’arrêtera lorsqu’on lui fournira la valeur 0. Il refusera les valeurs négatives. Son exécution se présentera ainsi :
donnez un nombre positif : 2
sa racine carree est : 1.4142135623730951
donnez un nombre positif : -3
svp positif
donnez un nombre positif : 5
sa racine carree est : 2.23606797749979
donnez un nombre positif : 0
Exercice 3:
Écrire un programme calculant la somme des n premiers termes de la "série harmonique", c’est-à-dire la somme :
1 + 1/2 + 1/3 + 1/4 + ..... + 1/n
La valeur de n sera lue en donnée
Exercice 4 :
Écrire un programme qui affiche un triangle isocèle formé d’étoiles. La hauteur du triangle (c’est-à-dire son nombre de lignes) sera fourni en donnée, comme dans l’exemple ci-dessous.
On s’arrangera pour que la dernière ligne du triangle s’affiche sur le bord gauche de l’écran.
combien de lignes ? 8
*
***
*****
*******
*********
***********
*************
***************
Exercice 5 :
Écrivez un programme qui lit des chaînes de caractères passées comme arguments à la ligne de commande, soit à la fonction FiltreNoms; ces chaînes sont des noms de personnes. Le programme affiche ensuite les noms qui commencent par la lettre " F " et se terminent par la lettre " e ".
Voici un exemple d’exécution du programme :
C:\>java FiltreNoms Latendresse Masse Fontaine Bourassa Frenette Levasseur
Liste de noms :
Latendresse
Masse
Fontaine
Bourassa
Frenette
Levasseur
Après filtrage :
Fontaine
Frenette
Exercice 6 :
Écrivez un programme qui lit une série de nombres de type entier et qui affiche la somme de ces nombres. Les données doivent être lues à partir de la ligne de commande.
Voici un exemple d’exécution du programme :
C:\>java Somme 5 10 15 20 25 30 35 40 45 50
5 + 10 + 15 + 20 + 25 + 30 + 35 + 40 + 45 + 50 = 275
Exercice 7 :
Réaliser une classe Point permettant de représenter un point sur un axe. Chaque point sera caractérisé par un nom (de type char) et une abscisse (de type double). On prévoira :
• un constructeur recevant en arguments le nom et l’abscisse d’un point,
• une méthode affiche imprimant (en fenêtre console) le nom du point et son abscisse,
• une méthode translate effectuant une translation définie par la valeur de son argument.
Écrire un petit programme utilisant cette classe pour créer un point, en afficher les caractéristiques, le déplacer et en afficher à nouveau les caractéristiques.
Exercice 8 : Initialisation d’un objet
Que fournit le programme suivant ?
class A
{ public A (int coeff)
{ nbre *= coeff ;
nbre += decal ;
}
public void affiche ()
{ System.out.println ("nbre = " + nbre + " decal = " + decal) ;
}
private int nbre = 20 ;
private int decal ;
}
public class InitChmp
{ public static void main (String args[])
{ A a = new A (5) ; a.affiche() ;
}
}
Exercice 9 :Méthodes d’accès aux champs privés
Soit le programme suivant comportant la définition d’une classe nommée Point et son utilisation :
class Point
{ public Point (int abs, int ord) { x = abs ; y = ord ; }
public void deplace (int dx, int dy) { x += dx ; y += dy ; }
public void affiche ()
{ System.out.println ("Je suis un point de coordonnees " + x + " " + y) ;
}
private double x ; // abscisse
private double y ; // ordonnee
}
public class TstPnt
{ public static void main (String args[])
{ Point a ;
a = new Point(3, 5) ; a.affiche() ;
a.deplace(2, 0) ; a.affiche() ;
Point b = new Point(6, 8) ; b.affiche() ;
}
}
Modifier la définition de la classe Point en supprimant la méthode affiche et en introduisant deux méthodes d’accès nommées abscisse et ordonnee fournissant respectivement l’abscisse et l’ordonnée d’un point. Adapter la méthode main en conséquence.
Exercice 10:
Créer une classe Compte qui modélise un compte en banque. Dans cette classe on doit avoir au moins les deux informations suivantes : numéro du compte et le solde du compte.
Cette classe doit posséder les méthodes :
- void deposer(int s) : pour déposer une somme sur le compte.
- void retirer(int s) : pour retirer une somme sur le compte.
- int avoirSolde() : qui retourne le solde du compte.
- String infos() : qui retourne une chaîne d'informations similaires à : "Compte numero: 121, Solde : 15000 Fr"
-Ecrire un programme pour tester la classe Compte. Ce programme doit effectuer successivement les opérations suivantes : déposer 5000 Frs, afficher le solde, retirer 200 Frs, afficher un RIB (methode infos()).
Exercice11 :
Écrivez une méthode qui calcule le factoriel d'un nombre entier passé en paramètre. Écrivez également un programme permettant de tester cette méthode et d’afficher le résultat.
Rappel
fact(0) = 1;
fact(n) = n * (n-1) * (n-2) * ...* (n-(n-1))
Voici un exemple d’exécution du programme.
fact(0) = 1
fact(5) = 120
fact(10) = 3628800
Exercice 12 :
Ecrivez une classe Livre avec les attributs suivants:
La classe Livre doit disposer des constructeurs suivants:
La classe Livre doit contenir des accesseurs pour les différents attributs. Elle doit aussi contenir une méthode toString() donnant une représentation de la classe Livre.
Ecrivez aussi une classe de testLivre afin de tester la classe Livre.
Exercice 13 :
Ecrivez une classe Personne avec les attributs suivants:
La classe Personne doit disposer des constructeurs suivants:
La classe Personne doit contenir des accesseurs et mutateurs pour les différents attributs. Elle doit aussi contenir une méthode toString() donnant une représentation de la classe Personne.
Ecrivez aussi une classe de testPersonne afin de tester la classe Personne.
Exercice 14 :