Chapitre 2 : Premières Applications Java Objectifs l - Etre capable d’écrire des programmes simples en Java - Etre capable d’utiliser les instructions d’entrées/sorties - Devenir familier avec les types de données primitifs - Comprendre les concepts de base de la mémoire - Etre capable d’utiliser les opérateurs arithmétiques, relationnels et logiques - Comprendre la précédence des opérateurs - Utiliser la documentation Sommaire l - Introduction - Premier programme en Java - Compiler et exécuter un programme Java - Affichage de plusieurs lignes de texte - Affichage dans une boite de dialogue - Saisie et Affichage © Karim Bouzoubaa - Va r i a b l e s , C o n s t a n t e s , Tableaux - Opérateurs - Utiliser la documentation 1 2.1 Introduction l Programmation avec le langage Java - Exemples simples - Analyse détaillée des exemples - Analyse des types des données en Java - Étude des opérateurs pour combiner des données dans une expression © Karim Bouzoubaa 2 2.2 Premier prog en Java : afficher une ligne de texte l Programme pour afficher le texte - ˝Premier programme en Java˝ © Karim Bouzoubaa 3 2.2 Premier prog en Java : afficher une ligne de texte 1 2 3 4 5 6 7 8 9 10 11 // prog 2.1: Premier.java // Un premier programme en Java public class Premier { // Méthode main commence l’exécution d’un programme Java public static void main(String args[]) { System.out.println("Premier programme en Java"); } // Fin de la méthode main } // Fin de la classe Premier © Karim Bouzoubaa 4 2.2 Premier prog en Java : afficher une ligne de texte 1. // prog 2.1: Premier.java 2. // Un premier programme en Java l Commentaires - l l Améliorer la lisibilité des programmes Un commentaire ne cause l’ordinateur à l’exécution d’aucune action - l Un commentaire qui commence par le symbole // et finit à la ligne est appelé commentaire simple ligne Java ignore les commentaires Commentaire à lignes multiples /* Ceci est un commentaire à lignes multiples */ © Karim Bouzoubaa 5 2.2 Premier prog en Java : afficher une ligne de texte 4. public class Premier { l l l l l l 7. l l l l Déclare la définition d’un programme appelé Premier Tout programme Java doit contenir au moins la définition d’une classe (mot clé class) Un mot clé est un mot réservé à l’utilisation par Java (public class class) Le mot public veut dire que le programme est publique (avant chapitre 4) Nécessaire de nommer le fichier avec le même nom que celui de la classe publique suivi de l’extension .java (Premier.java) Une accolade ouvrante{ (ligne 4) introduit le corps de toute classe. Une accolade fermante correspondante } (ligne 11) doit terminer toute définition de classe. public static void main(String args[]) { Tout programme Java commence son exécution par main Les parenthèses après main indiquent que c’est un bloc de programme appelé méthode. Une classe java contient une ou plusieurs méthodes. seulement une de ces méthodes doit être la méthode main et doit être définie tel qu’illustrée à la ligne 7 Le mot clé void indique que main exécutera un ensemble de tâches mais ne retournera à la fin aucune information. L’accolade gauche { (ligne 7) initie le corps de main. L’accolade droite } finit la définition de main (ligne 9). © Karim Bouzoubaa 6 2.2 Premier prog en Java : afficher une ligne de texte 8. System.out.println("Premier programme en Java"); l Chaque instruction en Java finit par le symbole ; l Afficher la chaîne de caractères contenue entre les doubles quottes " " l l La méthode System.out.println affiche une ligne de texte dans la fenêtre de console et passe à la ligne suivante, La méthode System.out.print affiche une ligne de texte et le curseur reste positionné sur la même ligne et exactement à la fin du texte en question. © Karim Bouzoubaa 7 2.3 Compiler et exécuter un programme Java l Deux étapes 1. Compiler : javac Premier.java (Si pas d’erreurs, génération de Premier.class) Figure 2.4 - Exécution du programme Premier sur une console DOS 2. Exécuter le programme Par ailleurs, et comme nous l’avons dit précédemment, le même fichier .c :s’exécute java Premier de la même manière sur les autres plateformes. La figure 2.5 m l’exécution du programme Premier sur une console Linux. ! Figure 2.5 - Exécution du programme Premier sur une console Linux © Karim Bouzoubaa Nous remarquerons que le fichier testé a été enregistré dans le répertoire bin de afin d'être capable d'appeler les commandes javac et java qui se trouvent s 8 2.4 Affichage de plusieurs lignes de texte l Exécution du programme PlusieursLignes.java l Chaque mot du texte est affiché sur une ligne © Karim Bouzoubaa 9 2.4 Affichage de plusieurs lignes de texte 1 // prog 2.2: PlusieursLignes.java 2 // Un second programme en Java 3 4 public class PlusieursLignes { 5 6 // Méthode main commence l’exécution d’un programme Java 7 public static void main(String args[]) { 8 System.out.println("Mon "); 9 System.out.print("premier\nprogramme\nJava"); 10 } // Fin de la méthode main 11 12 } // Fin de la classe PlusieursLignes © Karim Bouzoubaa 10 2.4 Affichage de plusieurs lignes de texte 1 // prog 2.2: PlusieursLignes.java 2 // Un second programme en Java … 6 // Méthode main commence l’exécution d’un programme Java … l commentaires 4 public class PlusieursLignes { l 7 l déclare la définition d’un programme appelé PlusieursLignes public static void main(String args[]) { La méthode main où Java commence l’exécution © Karim Bouzoubaa 11 2.4 Affichage de plusieurs lignes de texte 8 l System.out.println("Mon "); La méthode System.out.println affiche le texte "Mon " et passe à la ligne suivante 9 l l System.out.print("premier\nprogramme\nJava"); Quand Java rencontre le caractère \, il le combine avec le caractère suivant pour former une séquence. La séquence \n est interprétée comme étant le caractère de saut de ligne. \n n’est pas affiché à l’écran Le caractère spécial "\n" indique aux méthodes println et print de positionner le curseur au début de la ligne suivante. è l La ligne 9 affiche les textes premier, programme et Java, chacun sur une ligne séparée Les autres séquences de Java Séquence Nom \n Nouvelle ligne Positionne le curseur au début de la ligne suivante \t Tabulation horizontale Déplace le curseur au prochain stop de tabulation \r Retour chariot Positionne le curseur au début de la ligne courante Utilisé pour afficher le caractère \ backslash \\ \" © Karim Bouzoubaa Description Double quotte Utilise pour afficher le caractère “ double quotte 12 2.4 Affichage de plusieurs lignes de texte l Exécution du programme PlusieursLignes.java l Chaque mot du texte est affiché sur une ligne © Karim Bouzoubaa 13 2.5 Affichage dans une boite de dialogue © Karim Bouzoubaa 14 2.5 Affichage dans une boite de dialogue 1. // prog 2.3: BoiteDialogue.java 2. // Un programme en Java qui affichage un message dans une 3. // boite de dialogue 4. 5. // importer la classe JOptionPane 6. import javax.swing.JOptionPane ; 7. 8. public class BoiteDialogue { 9. 10. // Méthode main commence l’exécution d’un programme Java 11. public static void main(String args[]) { 12. JOptionPane.showMessageDialog(null, "Mon premier programme Java"); 13. System.exit(0); 14. } // Fin de la méthode main 15. 16. } // Fin de la classe BoiteDialogue © Karim Bouzoubaa 15 2.5 Affichage dans une boite de dialogue l l l l l et print affichent à l’intérieur de la fenêtre de commandes De nos jours, il y a utilisation des interfaces graphiques Utilisation de libraires dédiées. Dans Java, une libraire s’appelle un package Un package est un programme déjà écrit qui fournit un ensemble de services println o Un package contient des classes o Une classe contient des méthodes o Chaque service correspond à une méthode est un package (plus de détails, section 2.9). La classe qui nous intéresse est JOptionPane javax.swing © Karim Bouzoubaa 16 2.5 Affichage dans une boite de dialogue 1. 2. 3. 4. 5. 6. // // // … // … prog 2.3: BoiteDialogue.java Un programme en Java qui affiche un message dans une boite de dialogue importer la classe JOptionPane commentaires l 6. import javax.swing.JOptionPane; l Dans Java, pour appeler une librairie, utiliser le mot clé import l Cette instruction permet d’importer la classe JOptionPane du package javax.swing l La classe JOptionPane contient des méthodes qui permettent d’interagir avec l’utilisateur (e.g. lire des données ou les afficher à l’écran) par utilisation de composantes graphiques. 8. public class BoiteDeDialogue { l déclare la définition d’un programme appelé BoiteDeDialogue © Karim Bouzoubaa 17 2.5 Affichage dans une boite de dialogue 11. l public static void main(String args[]) { La méthode main où Java commence l’exécution 12. JOptionPane.showMessageDialog(null, "Mon premier programme Java"); l Appel à la méthode showMessageDialog de la classe JOptionPane l L’appel à une méthode appartenant à une classe se fait suivant la syntaxe NomClasse.NomMéthode(paramètres) l affiche à l’écran une boite de dialogue contenant un message. Elle est appelée avec deux paramètres séparés par une virgule showMessageDialog 13. - Le premier argument correspondra au mot clé Java null - Le second paramètre est le texte correspondant au message. Comme print et println, le texte doit être entre deux double quottes. System.exit(0); l Termine l’exécution du programme l Nécessaire lors de l’utilisation de composants graphiques. © Karim Bouzoubaa 18 2.5 Affichage dans une boite de dialogue Titre de la boite de dialogue Icône de la boite de dialogue Texte de la boite de dialogue Bouton de validation © Karim Bouzoubaa 19 2.6 Saisie et Affichage © Karim Bouzoubaa 20 2.6 Saisie et Affichage l l Programme qui permet d’afficher et de saisir des informations de l’utilisateur But du programme : - utilisateur saisit un nombre - programme affiche le carré du nombre saisi - deux versions de ce programme: l La première version utilisera une interface console l La deuxième version utilisera une interface graphique © Karim Bouzoubaa 21 2.6 Saisie et Affichage – version 1 1. // prog 2.4: Carre.java 2. // Un programme Java qui calcule le carré d’un nombre 3. 4. // importer la classe Scanner 5. import java.util.Scanner ; 6. 7. public class Carre { 8. 9. // Méthode main commence l’exécution d’un programme Java 10. public static void main(String args[]) { 11. 12. Scanner entree; 13. int nombre; // le nombre entier 14. int carre; // le carré à afficher 15. 16. System.out.print("Donner un nombre : "); 17. entree = new Scanner(System.in) ; 18. nombre = entree.nextInt() ; 19. carre = nombre * nombre ; 20. System.out.print("Le carré du nombre est : " + carre); 21. 22. } // Fin de la méthode main 23. 24. } // Fin de la classe Carre © Karim Bouzoubaa 22 2.6 Saisie et Affichage – version 1 5. import java.util.Scanner ; Cette instruction permet d’importer la classe Scanner du package java.util l La classe Scanner contient des méthodes qui permettent de lire une chaîne de caractères de l’utilisateur, de l’analyser et d’en reconnaître les types primitifs tels que les entiers, les caractères, etc. l 7. public class Carre { … 10. public static void main(String args[]) { l déclare la définition d’un programme appelé Carre l La méthode main où Java commence l’exécution © Karim Bouzoubaa 23 2.6 Saisie et Affichage – version 1 12. 13. 14. l l Scanner entree; int nombre; int carre; Pour récupérer la valeur du nombre dont on veut calculer le carré, nous devons utiliser des variables Une variable - - est une case de la mémoire de l’ordinateur est d’un certain type l l l l - l prend des valeurs (selon le type) il faut la déclarer toutes les variables utilisées dans le programme - - l entier : 6, 0, -4, 99, -458 réel : 3.5, 56.1, -5.451 caractère : ‘b’, ‘m’, ‘a’ etc spécifier son nom spécifier son type Dans le programme, 3 variables sont déclarées : entree, nombre et carre - - - chaque déclaration finit par le symbole ‘;’ entree est de type Scanner, nombre et carre sont de type int (entières) © Karim Bouzoubaa 24 2.6 Saisie et Affichage – version 1 System.out.print("Donner un nombre : "); 16. l Affiche un message à l’utilisateur pour l’informer de saisir un nombre 17. l l entree = new Scanner(System.in) ; Permet de spécifier la source d’où proviennent les données En effet, un Scanner permet au programme de lire des données des périphériques externes o Les données peuvent provenir de plusieurs sources, telles que le disque ou le clavier o Dans notre cas, le Scanner est associé à l’entrée standard System.in qui est le clavier 18. l l nombre = entree.nextInt() ; la méthode nextInt de la classe Scanner o requiert une rentrée (valeur entière) de la part de l’utilisateur o La valeur saisie est affectée à la variable nombre L’opérateur ‘=’ permet d’assigner (ou d’affecter) ce qui est lue par la méthode nextInt à la variable nombre : cette une instruction d’affectation. © Karim Bouzoubaa 25 2.6 Saisie et Affichage – version 1 19. carre = nombre * nombre ; l Multiplie la valeur de la variable nombre par elle-même l Affecte le résultat à la variable carre l L’opération de multiplication est effectuée grâce au symbole ‘*’ (étoile) et non pas au symbole ‘x’ 20. System.out.print("Le carré du nombre est : " + carre); l Afficher un message contenant le résultat recherché. l Le message comporte deux parties: - une partie statique "Le carré du nombre est : " - une partie dynamique : la variable carre dont la valeur change selon les exécutions - Les deux parties sont concaténées grâce à l’opérateur de concaténation ‘+’: © Karim Bouzoubaa 26 2.6 Saisie et Affichage – version 2 1. // prog 2.5: CarreGraphique.java 2. // Un programme Java qui calcule le carré d’un nombre 3. 4. // importer la classe JOptionPane 5. import javax.swing.JOptionPane ; 6. 7. public class CarreGraphique { 8. 9. // Méthode main commence l’exécution d’un programme Java 10. public static void main(String args[]) { 11. 12. String nombreChaine; // chaine saisie par l’utilisateur 13. int nombre; // le nombre entier 14. int carre; // le carré à afficher 15. 16. nombreChaine = JOptionPane.showInputDialog("Donner un nombre"); 17. nombre = Integer.parseInt(nombreChaine) ; 18. carre = nombre * nombre ; 19. JOptionPane.showMessageDialog(null,"Le carré du nombre est : " + 20. carre, "Résultat", JOptionPane.PLAIN_MESSAGE); 21. System.exit(0); 22. 23. } // Fin de la méthode main 24. 25. } // Fin de la classe CarreGraphique © Karim Bouzoubaa 27 2.6 Saisie et Affichage – version 2 5. import javax.swing.JOptionPane ; Cette instruction permet d’importer la classe l JOptionPane du package javaw.swing La classe JOptionPane contient des méthodes qui permettent d’interagir avec l’utilisateur (e.g. lire des données ou les afficher à l’écran) par utilisation de composantes graphiques. l 7. public class CarreGraphique { … 10. public static void main(String args[]) { l déclare la définition d’un programme appelé CarreGraphique l La méthode main où Java commence l’exécution 12. 13. 14. l String nombreChaine; int nombre; int carre; Trois variables utilisées - - de type String, i.e. chaine de caractères "mon programme" , "java" nombre et carre sont de type int (entières) nombreChaine © Karim Bouzoubaa 28 2.6 Saisie et Affichage – version 2 16. nombreChaine = JOptionPane.showInputDialog("Donner un nombre"); l l l l l Cette instruction lit une chaîne de caractères de l’utilisateur représentant le nombre pour lequel nous désirons calculer le carré. La méthode showInputDialog de la classe JOptionPane affiche une boite de dialogue requérant une rentrée de la part de l’utilisateur Cette méthode possède un argument de type chaîne de caractères qui représente le message à afficher à l’utilisateur "Donner un nombre". Le message renseigne l’utilisateur sur ce qui lui est demandé de fournir à l’ordinateur. Cette boite de dialogue comprend également un zone où l’utilisateur doit taper la valeur demandée et comprend également deux autres boutons: - Le bouton ‘OK’ permet de valider la valeur saisie - Le bouton ‘Annuler’ annule la saisie. La valeur saisie par l’utilisateur est affectée à la variable nombreChaine. © Karim Bouzoubaa 29 2.6 Saisie et Affichage – version 2 17. nombre = Integer.parseInt(nombreChaine) ; Différence entre version 1 et version 2 l o La méthode nextInt lit directement un entier o La méthode parseInt lit une chaine de caractères La méthode parseInt de la classe Integer convertit la valeur de la variable donnée en argument (nombreChaine dans notre cas) et la convertit en la valeur entière correspondante. Ensuite, grâce à l’opérateur =, cette valeur est affectée à la variable entière nombre. l 18. l carre = nombre * nombre ; Multiplie la valeur de la variable variable carre © Karim Bouzoubaa nombre par elle-même et affecte le résultat à la 30 2.6 Saisie et Affichage – version 2 19. JOptionPane.showMessageDialog(null,"Le carré du nombre est : " + carre, "Résultat", JOptionPane.PLAIN_MESSAGE); l Afficher un message contenant le résultat recherché par l’utilisateur l showMessageDialog l utilisée avec quatre paramètres: - Le premier est le même qu’avec l’appel à deux paramètres - Le second paramètre représente le message à afficher - Le troisième argument : nom de la boite de dialogue - Le quatrième argument correspond au type de la boite de dialogue (PLAIN_MESSAGE sans icône) - Par défaut, showMessageDialog affiche une boite de type informationnel symbolisé par l’icône portant la lettre ‘i’. Autres types de boite de dialogue Type de la boite de dialogue Description JOptionPane.ERROR_MESSAGE Indique une erreur JOptionPane.INFORMATION_MESSAGE Indique un message informationnel JOptionPane.WARNING_MESSAGE Indique un avertissement JOptionPane.QUESTION_MESSAGE Pose une question JOptionPane.PLAIN_MESSAGE © Karim Bouzoubaa Icône aucune Indique un message sans icône 31 2.7 Variables l Variable : donnée utilisée dans un programme (e.g. nombre, nombreChaine et carre) l Variable : emplacement dans la mémoire centrale de l’ordinateur l l l Lors d’une affectation : le système se charge de mettre une valeur (en code binaire) dans l’emplacement mémoire correspondant Lorsque cette variable est utilisée pour affichage ou pour être évaluée dans une expression, le système va récupérer sa valeur de la mémoire pour effectuer le traitement demandé Chaque variable possède : - un nom (qui l’identifie de manière unique dans le programme) - un type (entier, chaîne de caractères, réel, etc.) - une taille (en octets) - une valeur (selon le type) - Exemple, nombre porte le nom nombre, est de type entier, a une taille de 4 octets en mémoire centrale et possède la valeur 5 suite à l’exécution de l’instruction de la ligne 18. © Karim Bouzoubaa 32 2.7 Variables - Le nom l Nommer une variable : - Conditions l l - Correct : x, x1, som, moy_1, _x Non correct : 1x, x-y, x! Conventions l l Commencer une variable par une minuscule (e.g. nombre) Si le nom de la variable est composé (de plusieurs mots), commencer chaque nouveau mot par une majuscule (e.g. monPremierNombre). © Karim Bouzoubaa 33 2.7 Variables - Le type et la taille l l Le type d’une variable permet de connaître - sa taille en mémoire (en octets), - l’ensemble des valeurs possibles - les opérations que cette variable est susceptible de subir. Types simples et types composés: - - Un type est simple lorsque ses valeurs ne sont pas décomposables en constituants plus simples. Quatre catégories: 1. Types entiers : byte, short, int et long qui correspondent aux nombres entiers positifs, nuls ou négatifs 2. Types à virgule flottante : float et double qui représentent les nombres avec une précision fractionnelle 3. Type caractère : char, qui représente les symboles dans un ensemble de caractères tels que les lettres et les digits 4. Type booléen : boolean, qui permet de représenter les valeurs logiques l La valeur par défaut pour byte, short, int, long, float, double = 0, char = 0. l La valeur par défaut pour boolean = false Dans le cas contraire, un type est dit composé (sous forme de classes, voir chapitre oritenté-objet). © Karim Bouzoubaa 34 2.7 Variables - Le type et la taille Nombre d’octets Intervalle des valeurs byte 1 -128 .. 127 (-27 .. 27 – 1) short 2 -32 768 .. 32 767 (-215 .. 215 – 1) int 4 -2 147 483 648 .. -2 147 483 647 (-231 .. 231 – 1) long 8 -9 223 372 036 854 775 808 .. -9 223 372 036 854 775 807 (-263 .. 263 – 1) Type -3.4 028 234 663 852 886 E+38 .. -1.40 129 846 432 481 707 e-45 float 4 et 1.40 129 846 432 481 707 e-45 .. 3.4 028 234 663 852 886 E+38 -1.7 976 931 348 623 157 E+308 .. -4.94 065 645 841 246 544 e-324 double 8 et 4.94 065 645 841 246 544 e-324 .. 1.7 976 931 348 623 157 E+308 char 2 ’\u0000’ .. ’\uFFFF’ Ensemble de caractères unicode boolean 1 true, false © Karim Bouzoubaa 35 2.8 Constantes l l l Une constante est une donnée qui ne change de valeur durant tout le temps d’exécution du programme. Comme la variable, une constante porte - un nom, - un type, - une taille - et une valeur Pour spécifier qu’une donnée est constante, utiliser le mot clé Java final final double PI = 3.14 ; l Les conventions d’écriture des constantes : - Tous les caractères du nom de la constante sont majuscules (e.g. PI) - Si le nom de la constante est composé (de plusieurs mots), séparer les mots par un souligné ‘_’ (e.g. MA_CONSTANTE). © Karim Bouzoubaa 36 2.9 Tableaux l tab[0] tab[1] tab[2] tab[3] tab[4] 6 5 -2 54 18 Un tableau est une composante Java ni simple ni composée : - un tableau est une structure de données qui consiste en un ensemble fixe d’éléments de même type - on se réfère à tous les éléments du tableau avec le même nom l D’autres types de structures de données existent : l Les structures de données peuvent être regroupées sous deux groupes : l l - les structures statiques (taille fixe) : les tableaux - les structures dynamiques (taille peut changer) : les listes, les piles, les graphes, etc. Pour référer à un élément du tableau : - le nom - le numéro de sa position (ou l’indice). Indice premier élément = 0 - Exemple tab[1] deuxième élément du tableau, valeur = 5 Le nom du tableau : mêmes conditions et conventions de nomination qu’une variable © Karim Bouzoubaa 37 2.9 Tableaux l - tab[3] tab[4] 6 5 -2 54 18 int tab[]; Etape 2 : spécifier le nombre d’éléments avec l’opérateur new nom = new type[nombre]; l tab = new int[5]; Déclaration d’un tableau en une seule étape : l int tab[] = new int[5]; Accéder à un élément du tableau (lecture/écriture) : en précisant son indice - l tab[2] Etape 1 : spécifier le type des éléments et le nom du tableau type nom[] ; l l tab[1] Déclaration d’un tableau en deux étapes: - l tab[0] tab[i] : élément d’indice i de tab Initialiser un tableau : deux façons - Initialiser chaque élément du tableau l - tab[0] = 6; tab[1] = 5; … tab[4] = 18; Initialiser lors de la déclaration (plus nécessaire d’utiliser new et de spécifier le nombre) l int tab[] = {6, 5, -2, 54, 18}; © Karim Bouzoubaa 38 2.9 Tableaux l But du programme : - Déclarer tableau, - l’initialiser - afficher un de ses éléments. © Karim Bouzoubaa un 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. // prog 2.6.1: Tableau.java // Un programme Java qui initialise les éléments d’un tableau // et affiche un de ses éléments // importer la classe JOptionPane import javax.swing.JOptionPane ; public class Tableau { // Méthode main commence l’exécution d’un programme Java public static void main(String args[]) { int tab[]; String indiceChaine; int indice; // tableau d’entiers // chaine saisie par l’utilisateur // le nombre entier tab = new int[5] ; // allocation en mémoire de 5 entiers tab[0] = 6; tab[1] = 5; tab[2] = -2; tab[3] = 54; tab[4] = 18; indiceChaine = JOptionPane.showInputDialog("Donner un indice"); indice= Integer.parseInt(indiceChaine) ; JOptionPane.showMessageDialog(null, "Le tableau à l’indice " + indice + " est : " + tab[indice-1]); System.exit(0); } // Fin de la méthode main } // Fin de la classe Tableau 39 2.9 Tableaux 13. 14. 15. l l Déclaration d’un tableau tab d’entiers Déclaration d’une variable indiceChaine qui permettra à l’utilisateur de saisir une chaîne de caractères représentant un indice du tableau utilisé pour afficher un élément du tableau 17. 18. 19. 20. 21. 22. l tab = new int[5] ; tab[0] = 6; tab[1] = 5; tab[2] = -2; tab[3] = 54; tab[4] = 18; Allocation de 5 éléments pour tab et son initialisation élément par élément 23. 24. 25. 26. l int tab[]; String indiceChaine; int indice; indiceChaine = JOptionPane.showInputDialog("Donner un indice"); indice= Integer.parseInt(indiceChaine) ; JOptionPane.showMessageDialog(null, "Le tableau à l’indice " + indice + " est : " + tab[indice-1]); La ligne 23 demande à l’utilisateur de saisir un indice. Ce dernier est converti à la ligne 24 en entier. L’instruction des lignes 25 et 26 affiche l’élément correspondant à l’indice demandé par l’utilisateur. © Karim Bouzoubaa 40 2.10 Opérateurs l Les expressions sont utilisées dans beaucoup de programmes (Δ = b2 – 4ac) l Expression = combinaison (variable, valeur, constante, méthode) l La combinaison par utilisation d’opérateurs l Exemple : est-ce que Δ est positif ou non - l Expression : (Math.pow(b, 2) – (4 * a * c)) > 0 l utilisation de variables a, b et c l utilisation de la valeur 4 l appel à la méthode Math.pow l opérateurs arithmétiques de soustraction ‘-‘ et de multiplication ‘*’ l opérateur relationnel ‘>’ Opérateurs sont de trois types : - Arithmétiques - Relationnels - Logiques. © Karim Bouzoubaa 41 2.10 Opérateurs arithmétiques Opérateur Opérateur arithmétique + * Expression algébrique a+b a–b ab Expression Java a+b a–b a*b Division / a b a/b Modulo (Reste de la division) % a mod b a%b Addition Soustraction Multiplication l (a + b)(c − d) 2 l Pour évaluer une expression sans parenthèses : Règles de priorité - devient ((a a + b * c – d = (a + b) * (c – d) Opérateur Opération () Parenthèses *, / et % +, - © Karim Bouzoubaa + b) * (c – d)) / 2 Multiplication, Division et Modulo Addition et Soustraction ou a + (b * c) – d Priorité Evalué en premier. L’expression la plus interne est évaluée d’abord. S’il y a plusieurs pairs de parenthèses du même niveau, elles sont évaluées de gauche à droite Evalué en second. S’il y a plusieurs opérateurs de ce niveau, ils sont évalués de gauche à droite. Evalué en dernier. S’il y a plusieurs opérateurs de ce niveau, ils sont évalués de gauche à droite. 42 2.10 Opérateurs arithmétiques • Évaluation de l’expression a + b * c – d © Karim Bouzoubaa 1 a = 1, b = 2, c = 4, d = 3 2 a+b*c-d 3 a+b*c-d 4 a+8-d 5 9-d 6 6 43 2.10 Opérateurs arithmétiques – Incrémentation & Décrémentation l i = i + 1; instruction qui revient très souvent dans les programmes l - Java propose raccourcis des - Post-incrémentation : i++; - Pré-incrémentation : ++i; i = i - 1; remplacé par - Post-décrémentation : i--; - Pré-décrémentation : --i; © Karim Bouzoubaa 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. // prog 2.7: Incrementation.java // Un programme Java qui montre l’utilisation de l’incrémentation public class Incrementation { // Méthode main commence l’exécution d’un programme Java public static void main(String args[]) { int x, y ; // deux entiers x = 9 ; System.out.println("x = " + x) ; y = ++x -5 ; System.out.println("x = " + x) ; System.out.println("y = " + y) ; x = 9 ; System.out.println("\nx = " + x) ; y = x++ -5 ; System.out.println("x = " + x) ; System.out.println("y = " + y) ; } // Fin de la méthode main } // Fin de la classe Incremenation 44 2.10 Opérateurs arithmétiques – Assignation l Java fournit des opérateurs d’assignation pour réduire les expressions d’affectation l Par exemple, l’expression x = x + 9 devient x += 9 l l L’opérateur d’assignation d’addition += ajoute la valeur de l’expression de droite à la valeur de la variable se trouvant à gauche de l’opérateur. De manière générale - variable = variable opérateur expression (opérateur étant +, -, *, / et %) - variable opérateur= expression - Exemple, x = x * (5 / y) réduit à x *= 5 / y © Karim Bouzoubaa 45 2.10 Opérateurs relationnels • Pour comparer deux valeurs, java fournit l’ensemble des opérateurs relationnels suivants (retournent true ou false) Opérateur == != > >= < <= © Karim Bouzoubaa Explication Egal Non égal Supérieur Supérieur ou égal Inférieur Inférieur ou égal 46 2.10 Opérateurs logiques • Comment exprimer : x est dans l’intervalle [5, 10] ? • En java, Il faut exprimer – x est supérieur ou égale à 5 (x >= 5) • et (conjonction logique) – x est inférieur ou égal à 10 (x <= 10) • En java, l’expression devient : (x >= 5) • La liste des opérateurs logiques est Opérateur && & || | ^ ! © Karim Bouzoubaa && (x <= 10) Explication et logique et logique booléen ou logique ou logique booléen inclusif ou logique booléen exclusif non logique 47 2.10 Opérateurs - Priorité l La priorité entre tous les opérateurs. Ces derniers sont listés de haut en bas dans un ordre décroissant de priorité Opérateur () ++ -- ! * / % + > >= < <= == != & ^ | && || = += -= *= /= %= © Karim Bouzoubaa 48 2.10 Opérateurs – Exemple récapitulatif l Évaluation de l’expression : ( - a – b > 0 ) && ( a * b + c < 100 ) a = 5, b = 2 , c = 3 Ordre 1. 2. 3. 4. 5. 6. © Karim Bouzoubaa Opération a - b 3 > 0 a * b 10 + c 13 < 100 true && true Expression ( 3 > 0 ) && ( a * b + c < 100 ) true && ( a * b + c < 100 ) true && ( 10 + c < 100 ) true && ( 13 < 100 ) true && true true 49 2.11 Documentation l l l l l Documentation Java disponible gratuitement : java.sun.com/reference/docs/ Objectifs de Java : fournir un langage comportant le plus possible de fonctionnalités (e.g. puissance, maximum, tri de nombres, date système, etc.) Ces fonctionnalités sont regroupées dans une API Pour les programmeurs : se concentrer sur la programmation de leurs problèmes particuliers au lieu de perdre du temps à programmer des fonctions qui peuvent avoir déjà été programmées par d’autres par le passé. API très vaste (très difficile à connaître en entier) - Java fournit l’API à travers une documentation - Obtenir de l’aide sur ces fonctions et sur la manière dont elles doivent être utilisées. © Karim Bouzoubaa 50 2.11 Documentation l Structure de ces fonctionnalités: API = ensemble de packages (ou librairies) - Un package = ensemble de classes (ou programmes) - Classe = ensemble de méthodes (ou fonctionnalités) - l Exemple, puissance mathématique xy Package java.lang, classe Math, méthode pow(x, y) - Pour utiliser la méthode pow(x, y) dans un programme - l l Mentionner le package et la classe import java.lang.Math; Pour utiliser toutes les classes du package import java.lang.*; © Karim Bouzoubaa 51 2.11 Documentation Cadre des packages Cadre principal Cadre des classes © Karim Bouzoubaa 52 2.11 Documentation l Importance de l’index (e.g. méthode de tri sort) © Karim Bouzoubaa 53