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