Telechargé par sandraebendeng1122

INF 1042 introduction aux structures de donnees seance 1 2 java

publicité
Université de Yaoundé I
Faculté des Sciences
University of Yaounde I
Faculty of Science
Département d’Informatique
INF1042, fiche TD séance 1 et séance 2(Bases du Java), Mars 2020
Dr Thomas MESSI NGUELÉ, Assistant Lecturer
1
Rappels sur les éléments de base de la programmation Java.
1.1
Installation de Java : Installation de OpenJDK (Java open source)
On suppose que l’on est sur un système d’exploitation Linux Ubuntu.
1. La première des choses à faire est de vérifier si Java n’est pas déjà installé. Cela se fait avec la
commande (à partir du terminal) :
java -version
Si un retour est affiché, le logiciel client (JRE) ou serveur (JDK) est présent sur Ubuntu dans
la version indiquée. Il n’y a donc rien à installer.
2. Sinon, faire les deux commandes suivantes :
sudo apt-get update (Commande pour mettre Ubuntu à jour)
sudo apt-get install openjdk-11-jre (Commande pour installer le client openjdk et donc uniquement la version 11 de la JRE)
1.2
Compilation d’un Programme Java :
Considérer le programme java ci-après que l’on enrégistrera dans le fichier FirstClass.java. La
compilation et l’exécution du programme java se feront de la façon suivante :
1. javac FirstClass.java (compilation)
2. java FirstClass (exécution)
public class FirstClass
{
public static void main(String[] args)
{
String greeting = "Welcome to inf1042 course, we start with Java";
System.out.println(greeting);
}
}
1.3
Généralités sur la syntaxe de Java :
Pour les généralités sur la syntaxe java, vous avec à votre disposition :
a) http://imss-www.upmf-grenoble.fr/prevert/Prog/Java/CoursJava/classes1.html
b) Le chapitre 1 (pp 1-57) du livre remis en cours (6ième édition) : Goodrich, Michael T., Roberto
Tamassia, and Michael H. Goldwasser. Data structures and algorithms in Java. John Wiley &
Sons, 2014.
— La version 4 de ce livre est aussi téléchargeable à travers le lien : https://www.academia.
edu/download/36020958/Data_Structures_and_Algorithms_in_Java_Fourth_Edition.pdf
Fiche TD séance 1 et séance 2
Page 1/3
INF1042, Mars 2020
c) Voici aussi une liste d’exercices corrigés qui vous permettront de mieux maitriser la syntaxe :
https://www.cours-gratuit.com/java/
d) Ceux qui veulent aller encore plus loin pourront enfin s’exercicer ici : https://perso.telecom-paristech.
fr/hudry/coursJava/exercices/index.html
2
2.1
Exercices
Exercices détachés.
Exercice 1 : Initiation. Réaliser une seule classe Java contenant les méthodes suivantes :
1. Une méthode Java qui prend en paramètre un entier n et renvoie la somme de tous les entiers
positifs inférieurs ou égaux à n. (Livre de référence, Page 55, exo 1.5)
2. Une méthode Java qui prend en paramètre un entier n et renvoie la somme de tous les entiers
positifs impairs inférieurs ou égaux à n. (Livre de référence, Page 55, exo 1.6)
3. Une méthode Java qui prend en paramètre un entier n et qui retourne la somme des carrés de
tous les entiers positifs inférieurs ou égaux à n. (Livre de référence, Page 55, exo 1.7)
4. Une méthode Java qui prend en paramètre un entier n et affiche la liste des diviseurs de n.
5. Une méthode Java qui prend en paramètre un entier n et affiche la liste des n premiers multiples
de n.
Exercice 2 : Créativité. Pour chacun des exercices suivants, réaliser une classe Java autonome.
(En d’autres termes on aura quatre classes au terme cet exercice).
1. Écrire un programme Java permettant à un utilisateur de choisir une figure géométrique entre :
- un cercle, - un rectancle, - un carré, - un trapèze, - un triangle (isocèle, rectangle, équilatéral)
et ensuite lui demande les paramètres appropriés pour calculer le périmètre et la surface de
cette figure géométrique.
2. Écrire un programme Java qui prend à partir de la console trois entiers, a, b et c et détermine si
ces entiers peuvent être utilisées dans une formule arithmétique correcte (selon l’ordre d’entrée) :
«a + b = c», «a = b - c» ou «a * b = c». (Livre de référence, Page 56, exo 1.16)
3. Une punition courante pour les écoliers est d’écrire une phrase plusieurs fois. Écrivez un programme Java qui écrira la phrase suivante cent fois : «Je ne dirai plus jamais ”hour” pendant le
cours d’inf1042». Votre programme doit numéroter chacune des phrases et utiliser huit polices
différentes choisies aléatoirement. (Livre de référence, Page 57, exo 1.28)
4. Le paradoxe de l’anniversaire dit que la probabilité que deux personnes dans une pièce aient
le même anniversaire soit plus de la moitié, à condition que n, le nombre de personnes dans la
pièce, soit supérieur à 23. Cette propriété n’est pas vraiment un paradoxe, mais beaucoup de
gens trouver cela surprenant. Écrire un programme Java qui peut tester ce paradoxe par une
série d’expériences sur des anniversaires générés aléatoirement, qui testent ce paradoxe pour
n = 5, 10, 15, 20, ..., 100. (Livre de référence, Page 57, exo 1.29)
2.2
Problèmes.
Problème 1 : Les vecteurs. On aimerait réaliser une classe permettant la gestion des vecteurs.
On suppose qu’un vecteur est représenté comme un tableau de coordonnées.
1. Stockage des éléments. Écrire une méthode qui demande à l’utilisateur la taille n d’un vecteur
et ensuite stocke les n élements de ce vecteur à partir du clavier.
2. Affichage des éléments. Écrire une méthode permettant d’afficher les élements d’un vecteur.
3. Opérations sur les vecteurs. Soient deux vecteurs x = (x1 , x2 , ..., xn ) et y = (y1 , y2 , ..., yn ) :
(a) Addition des vecteurs. Écrire une procédure permettant de faire l’addition de deux vecteurs x et y définie par : x + y = (x1 + y1 , x2 + y2 , ..., xn + yn )
Fiche TD séance 1 et séance 2
Page 2/3
INF1042, Mars 2020
(b) Soustraction des vecteurs. Écrire une procédure permettant de faire la soustraction des
deux x et y définie par : x + y = (x1 + y1 , x2 + y2 , ..., xn + yn )
(c) Produit scalaire de deux vecteurs. Écrire une procédure permettant de faire le produit
scalaire de vecteurs x et y définie par : x.y = x1 ∗ y1 + x2 ∗ y2 + ... + xn ∗ yn
4. Norme d’un vecteur. La norme p d’un vecteur v = (v1 , v2 , ..., vn ) dans l’espace à n dimensions
est définie par : ||v|| = (v1p + v2p + v3p + ... + vnp )1/p . Pour le cas particulier de p = 2, cela donne la
norme euclidienne traditionnelle, qui représente la distance du vecteur par rapport à l’origine.
Par exemple, la norme euclidienne d’un vecteur à deux dimensions avec les coordonnées (4, 3)
a une norme euclidienne de : (42 + 32 )1/2 = (16 + 9)1/2 = (25)1/2 = 5.
- Donnez une méthode Java nommée norm telle que norm(v, p) renvoie la valeur de la norme
p de v et norm(v) renvoie la norme euclidienne de v.
5. Distance entre deux vecteurs. La distance entre deux vecteurs x et y noté d(x,y) est donnée
par : d(x, y) = ||x − y||. La distance euclidienne est la distance issue de la norme euclidienne.
- Donnez une méthode Java nommée distance telle que distance(x, y, p) renvoie la distance
entre les vecteurs x et y suivant la norme p et distance(x, y) renvoie la distance euclidienne
entre x et y.
6. Méthode main. Écrire une méthode principale permettant à l’utilisateur de réaliser toutes ces
actions sur les vecteurs autant de fois qu’il le souhaite.
7. Pour les jeunes «lions indomptables» de l’informatique. Ajouter une interface graphique
agréable pour votre mini-application de gestion des vecteurs.
Problème 2 : Les matrices. On aimerait réaliser une classe permettant la gestion des matrices.
On suppose qu’une matrice est représentée comme un tableau à deux dimensions.
1. Stockage des éléments. Écrire une méthode qui demande à l’utilisateur le nombre de ligne n
et le nombre de colonne m d’une matrice et ensuite stocke les élements de cette matrice en les
lisant à partir du clavier.
2. Affichage des éléments. Écrire une méthode permettant d’afficher les élements d’un vecteur.
3. Opérations
sur les matrices.

 Soient deux matrices


a1,1 · · · a1,m
b1,1 · · · b1,m

..  B =  ..
.. 
..
..
A =  ...
 .
.
.
. 
. 
an,1 · · · an,m
bn,1 · · · bn,m
(a) Addition des matrices. Écrire une procédure permettant de faire l’addition de deux matrices A et B définie par : A + B = C. La matrice C est telle que C[i][j] = A[i][j] + B[i][j]
(b) Soustraction des matrices. Écrire une procédure permettant de faire la soustraction de
deux matrices A et B définie par : A − B = C. La matrice C est telle que C[i][j] =
A[i][j] − B[i][j]
(c) Multiplications des matrices. Écrire une procédure permettant de faire la multiplication
de deux matrices
A et B définie par : A ∗ B = C (avec n=m). La matrice C est telle que
Pn
C[i][j] = k=1 A[i][k] ∗ B[k][j].
4. Produit matrice vecteur. Écrire une procédure permettant d’effectuer
le produit matrice
P
vecteur défini par A.v = b, avec b un vecteur donné par : b[i] = nk=1 A[i][k] ∗ vk , ce qui est
encore le produit scalaire entre le vecteur A[i][] et v.
5. Méthode main. Écrire une méthode principale permettant à l’utilisateur de réaliser toutes ces
actions sur les matrices autant de fois qu’il le souhaite.
6. Pour les jeunes «lions indomptables» de l’informatique. Ajouter une interface graphique
agréable pour votre mini-application de gestion des vecteurs.
................ Bon Courage ! ...............
Fiche TD séance 1 et séance 2
Page 3/3
INF1042, Mars 2020
Téléchargement