DS Java 22 23
DS Java 22 23
DS Java 22 23
Exercice_1
Considérons le programme suivant.
1. class A{ 14. public String h(){return super.h();}
2. public static int x=4; 15. }
3. public int y; 16. public class TestConstPolymor{
4. public A(){this(6);} 17. public static void main(String[] args){
5. public A(int x){A.x++;y=x;} 18. A a1 =new A(); A a2 =new B();
6. public static void f(A a1){A.x++;} 19. A.f(a1); a2.f(17);
7. public void f(int y){this.y=y;} 20. System.out.println(A.x +" "+a1.y +" "+a2.y);
8. public String g(){return "POO en Java";} 21. System.out.println(a1.g());
9. public String h(){return this.g();} 22. System.out.println(a2.h());
10. } 23. A a3=a1; A a4=a2;
11. class B extends A{ 24. System.out.println(A.x +" "+a3.y+" "+a4.y) ;
12. public B(){} 25. }
13. public String g(){return "POO en C++";} 26. }
Exercice_2
La suite de Robinson est définie par :
o U0=0
o Un se construit en mettant le nombre d’apparition de chacun des chiffres constituant le terme Un-1 suivi du
chiffre lui-même, selon l’ordre décroissant des chiffres, pour tout n>0.
Exemple :
Pour n=5, U5=13123110
En effet :
o U0=0
o U1=10 car il y a une apparition (1) du chiffre 0 dans U0
o U2=1110 car il y’a une apparition (1) du chiffre 1 et une apparition (1) du chiffre 0 dans U1
o U3=3110 car il y’a une apparition (3) du chiffre 1 et une apparition (1) du chiffre 0 dans U2
o U4=132110 car il y’a une apparition (1) du chiffre 3, deux apparition du chiffre 1 et une apparition (1) du
chiffre 0 dans U3
o U5=13123110 car il y’a une apparition (1) du chiffre 3, une apparition du chiffre 2, trois apparitions du
chiffre 1 et une apparition (1) du chiffre 0 dans U4
Travail à faire :
1. Ecrire en Java une méthode statique occurrenceChiffre(i,x) qui calcule et renvoie le nombre d’occurrences du chiffre
i dans l’entier naturel x.
ième
2. Ecrire en Java en une méthode statique robinson(n) permettant de calculer le n terme de la suite de Robinson.
3. Ecrire un programme Java (public static void main()) permettant de tester la méthode robinson(n).
1/3
Exercice_3
Un entier naturel n étant donné, on calcule le produit prod(n) de ses chiffres dans son écriture
en base 10, puis le produit des chiffres de prod(n) dans son écriture en base 10, et on
recommence ainsi l’application de prod jusqu’à obtenir un chiffre entre 0 et 9. Le nombre
minimal de fois où on applique prod pour transformer n en un chiffre entre 0 et 9 est appelé
la persistance de n. Par exemple, la persistance de 9 est égale à 0, celle de 97 est égale à 3,
car prod(97)=9 x7=63, prod(63)=6x3=18, prod(18)=1x8=8, et celle de 9575 est égale à 5,
car prod(9575)=1575, prod(1575)=175, prod(175)=35, prod(35)=15, prod(15)=5.
1. Ecrire en Java une méthode prod(n) qui renvoie le produit des chiffres d’un nombre
entier n passé en paramètre à la méthode.
2. Ecrire en Java une méthode persistance(n) qui renvoie la persistance d’un nombre
entier n passé en paramètre à la méthode.
3. Ecrire un programme Java (public static void main()) permettant de calculer et
d’afficher le plus petit entier naturel de persistance 5.
Exercice_4
1. Ecrire en Java une méthode trianglePascal(n) permettant de renvoyer le triangle de
Pascal de rang n sous forme d’un tableau de tableaux, chaque tableau représente une
ligne du triangle.
2. Ecrire un programme Java (public static void main()) qui affiche le triangle de
Pascal de rang n en utilisant la méthode trianglePascal(n).
Exercice_5
2/3
Exercice_6
v La programmation orientée objet à pour intérêt d’organiser les données dans des instances, de
composer de nouveaux objets à partir de l’union d’autres objets plus simples.
Il est naturel de considérer un hexagone comme étant un objet composé de six sommets et six
côtés. Si l’on dispose d’une classe Point, alors l’hexagone sera défini à partir de six instances de
Point qui joueront respectivement le rôle de chacun des sommets.
1. Créez une classe nommée Point caractérisée par les membres suivants:
p Deux attributs privés x et y de type réel.
p Un constructeur initialisant les attributs à partir de deux réels passés en paramètres.
p Un constructeur de recopie initialisant les attributs à ceux de point passé en paramètre.
p Une méthode distance(Point p) de type réel retournant la distance entre le point courant et le
point p passé en paramètre.
p Un modificateur et un accesseur pour chaque attribut privé.
2. Créez une classe nommée Hexagone qui utilise la classe Point et disposant des membres suivants:
p Un tableau H de type Point, contenant les six sommets d’hexagone.
p Un attribut statique nombre=0 de type int indique combien d’objets ont été créés.
p Un attribut numero de type int indique le numéro d’hexagone.
p Un constructeur permettant d’initialiser les attributs et compter le nombre d’objets créés.
p Un constructeur de recopie appelant le constructeur précédent, initialisant les attributs à ceux
d’hexagone passé en paramètre et numérotant les objets créés.
p Une méthode statique nbr_Hexagones() permettant d’afficher le nombre d’hexagones créés.
p Une méthode calculerPerimetre() de type réel retournant la somme des côtés d’hexagone.
p Une méthode getSommet(int i) retournant le ième sommet d’hexagone.
p Une méthode setSommet(int i, double a, double b) qui remplace les coordonnées de sommet
d’indice i par a et b.
p Une méthode setSommet(int i, Point p) qui remplace les coordonnées de sommet d’indice i par
les coordonnées de point p.
p Une méthode deplacerSommets(double dx , double dy ) permettant de déplacer tous les sommets
d’hexagone par le vecteur (dx , dy ).
p Une méthode getSommets() retournant un tableau de type Point consitutant les sommets d’hexa-
gone.
p Une méthode getAbscissesSommets() retournant un tableau des valeurs des abscisses des som-
mets d’hexagone.
p Une méthode retirerSommet(int i) permettant de retirer le sommet d’indice i dans l’hexagone.