1 Conception p a r Objet e t Programmation Java 2SE 2022-2023 2 Plan du cours Séances Chapitres 1 Introduction à Java 2 Classe et objet 3 Encapsulation 4 Héritage & Polymorphisme 5 Exceptions 6 Interface et collection 3 Objectifs du cours Décrire les éléments-clé de laplate-forme Java Compiler etexécuter une application Java Décrire la syntaxedu langage Comprendre leparadigme OO et utiliser Javapour le mettre en œuvre Comprendre et utiliser les exceptions Comprendre et utiliser lesAPI de java 4 Introduction à Java Qu’est-ce que Java? 5 Javaest uneplateforme ◦ La plateformeJava,uniquement software,est exécutéesur la plateforme du systèmed’exploitation ◦ La « JavaPlatform » est constituée de: La « JavaVirtual Machine » (JVM) Des interfaces de programmation d’application(JavaAPI) Java est un langagede programmation Orienté Objet ◦ Un programme Javaest compilé etinterprété 6 La plateforme Java Plateforme = environnement hardware ou software sur lequel le programme est exécuté. La Java« Platform » se compose de: ◦ laJavaVirtual Machine (JavaVM) ◦ laJavaApplication Programming Interface(JavaAPI) 7 La plateforme Java 8 La plateforme Java Java VirtualMachine 9 La plateforme Java Java VirtualMachine Une machine virtuelle est un ordinateur fictifs’exécutant sur un ordinateur réel Elle possède un langagenatifpropre et traduit un programme écrit dans ce langage vers le langage natif de l’ordinateur. Lit le bytecode compilé (indépendant de la plateforme) Implémentée dans des environnements de développement ou dans les navigateurs Web La plateformeJava 10 Java VirtualMachine La plateforme Java 11 JavaApplication Programming Interface (API) Java fournit de nombreuses librairies de classes remplissant des fonctionnalités très diverses : c'est l'API Java – API (Application and Programming Interface /Interface pour la programmation d'applications) : Ensemble de bibliothèques permettant une programmation plus aisée car les fonctions deviennent indépendantes du matériel. Ces classes sont regroupées, par catégories, en paquetages (ou "packages"). 12 La plateforme Java JavaApplication Programming Interface (API) L’API Javaest structuré en libraires (packages).Les packagescomprennent des ensembles fonctionnels decomposants (classes).. Java.lang: gestion des chaînes de caractères (String), interaction avecl’OS (System), programmation parallèle(Thread). Java.util:parseur de chaîne,Liste,Dictionnaires, HashTable,... Java.io: gestion des entrées/Sorties (écran, clavier,fichier) java.applet: gestion desapplets Java.awt et Java.swing: gestion de l’interfacegraphique:Fenêtres,boutons, boites de dialogue,événements souris,... Outil de développement : le JDK 13 Environnement de développement fourni par Sun JDK signifie Java Development Kit (Kit de développement Java). Il contient : – les classes de base de l'API java (plusieurs centaines), la documentation au format HTML le compilateur : javac la JVM (machine virtuelle) : java le visualiseur d'applets : appletviewer – le générateur de documentation : javadoc – etc. – – – – 14 Outil de développement : le JDK 15 Le langage deprogrammation Java Simple et orienté objet Javaest un langagede programmation simple ◦ Langagede programmation au même titre que C/C++/Perl/Smalltalk/Fortranmais plus simple ◦ Les aspects fondamentaux du langagesont rapidement assimilés Javaest orienté objet : ◦ La technologie OO après un moment de gestation est maintenantcomplètement intégrée ◦ En java,tout est un objet (à ladifférencedu C++ par ex.) Simple aussi parce qu’ilcomporte un grand nombre d’objets prédéfinis pour l’utilisateur Gestion mémoire (« Garbage collector») Javaest familier pour les programmeurs C++ Le langage deprogrammation Java 16 Neutre architecturalement Il existe une grande diversité de systèmes d’exploitation compilateur Javagénère un bytecode, c’est à dire un format intermédiaire, neutre architecturalement, conçu pour faire transiter efficacement le code vers des hardware différents et/ou plateformes différentes MyProgram.java Le Le bytecode ne peut-être interprété JVM que par le processeur de laJVM Mac JavaCompiler MyProgram.class = bytecode JVM Windows JVM Unix JAVA: Caractéristiques 17 Orienté Objet Portable Interprété Simple JAVA Multitâches Fortement typé Gère la mémoire Économe Sû r Cours POO & Langage JAVA Syntaxe du langage JAVA Cours POO & Langage JAVA Introduction 19 Nous traitons Javad'abord comme un langage de programmation classique. Nous aborderons les objets ultérieurement. Dans un programme ontrouve deux choses - des données - les instructions qui lesmanipulent On s'efforce généralement de séparer les données des instructions : DONNEES INSTRUCTIONS Cours POO & Langage JAVA JAVA: Syntaxe 20 Les commentaires Sur plusieurs lignes Sur une seule ligne Commentaire Javadoc Cours POO & Langage JAVA JAVA: Syntaxe 21 Nom de la classe Déclaration de classe Modificateur public class Personne { private String nom; private String prenom; private int age; … // autres attributs Déclaration des attributs public Personne () { nom = " "; prenom = " "; age = 0; Définition des méthodes } public String getNom(){ return this.nom; } … // autres méthodes } Cours POO & Langage JAVA JAVA: Syntaxe Instructions,blocs et blancs 22 Les instructions Java se terminent par un ; Les blocs sont délimités par : { pour le début de bloc } pour la fin du bloc Un bloc permet de définir un regroupement d’instructions. La définition d’une classe ou d’une méthode se fait dans un bloc. Les espaces, tabulations, sauts de ligne sont autorisés. Cela permet de présenter un code plus lisible. Cours POO & Langage JAVA JAVA: Syntaxe Point d’entrée d’un programme Java 23 Pour pouvoir faire un programme exécutable il faut toujours une classe qui contienne une méthode particulière, la méthode « main » c’est le point d’entrée dans le programme :le microprocesseur sait qu’il va commencer à exécuter les instructions à partir de cet endroit public static void main(String arg[ ]) { …/… } Cours POO & Langage JAVA JAVA: Syntaxe 24 Exemple (1) Fichier Bonjour.java public class Bonjour La classe est l’unité de base de nos programmes. Le mot clé en Java pour définir une classe est class Accolades délimitant le début et la fin de la définition de la class Bonjour { public static void main(String args[]) { System.out.println(“bonjour”); Accolades délimitant le début et la fin de la méthode main } } Les instructions se terminent par des ; JAVA: Syntaxe 25 Exemple (1) Compilation et exécution (1) Le nom du fichier est nécessairement celui de la classe avec l’extension .java en plus. Java est sensible à la casse des lettres. Fichier Bonjour.java Compilation en bytecode java dans une console DOS: javac Bonjour.java Génère un fichier Bonjour.class public class Bonjour { public static void main(String[] args) Exécution du programme (toujours depuis la console DOS) sur la JVM : java Bonjour Affichage « bonjour » dans la console { System.out.println(“bonjour”); } } 25 JAVA: Syntaxe Exemple (1) Compilation et exécution (1) 26 Pour résumer, dans une console DOS, si j’ai un fichier Bonjour.java pour la classe Bonjour : – javac Bonjour.java – Compilation en bytecode java Indication des erreurs de syntaxe éventuelles Génération d’un fichier Bonjour.class si pas d’erreurs java Bonjour Java est la machine virtuelle Exécution du bytecode Nécessité de la méthode main, qui est le point d’entrée dans le programme JAVA: Syntaxe 27 Identificateurs On a besoin de nommer les classes, les variables, les constantes, etc. ; on parle d’identificateur. Les identificateurs commencent par une lettre, _ ou $ Attention : Java distingue les majusculesdes minuscules Java est sensible à la casse. Conventions sur les identificateurs : Si plusieurs mots sont accolés, mettre une majuscule à chacun des mots sauf le premier. • Exemple : uneVariableEntiere La première lettre est majuscule pour les classes et les interfaces • Exemples : MaClasse, UneJolieFenetre Cours POO & Langage JAVA JAVA: Syntaxe 28 Identificateurs Conventions sur les identificateurs : – La première lettre est minuscule pour les méthodes, les attributs et les variables – exemples : setLongueur, i, uneFenetre Les constantes sont entièrement en majuscules exemple : LONGUEUR_MAX Un identifiant ne peut pas être: un mot clé du langage true ou false qui sont des booléens littéraux null qui est une valeur littérale Cours POO & Langage JAVA JAVA: Syntaxe 29 Les mots réservés de Java abstract default goto null synchronized boolean do if package this break double implements private throw byte else import protected throws case extends instanceof public transient catch false int return true char final interface short try class finally long static void continue float native super volatile const for new switch while Cours POO & Langage JAVA JAVA: Syntaxe 30 Déclarationdesdonnées Rôle des déclarations Un programme manipule des données caractérisées par un nom et un type. Ces données sont stockées en mémoire. Au moment de la traduction du programme, le compilateur affecte à chaque donnée un emplacement en mémoire caractérisé par une adresse et une taile. Il le fait en s'aidant des déclarations faites par le programmeur. Par aileurs celles-ci permettent au compilateur de détecter des erreurs de programmation. Ainsi l'opération x=x*2; sera déclarée erronée si x est une chaîne de caractères par exemple. JAVA: Syntaxe 31 Déclaration desdonnées Déclaration des constantes La syntaxe de déclaration d'une constante est la suivante : final type nom=valeur; ex : final float PI =3.141592F; Remarque: Pourquoi déclarer des constantes ? 1. La lecture du programme sera plus aisée si l'on a donné à la constante un nom ex : final float taux_tva = 0.186F ; 2.La modification du programme sera plus aisée si la "constante" vient à changer. Ainsi dans le cas précédent, si le taux de tva passe à 33%, la seule modification à faire sera de modifier l'instruction définissant savaleur : final float taux_tva=0.33F; Si l'on avaitutilisé 0.186 explicitement dans le programme, ce serait alors de nombreuses instructions qu'il faudrait modifier. JAVA: Syntaxe 32 Déclaration desdonnées Déclarationdesvariables Une variable est identifiée par un nom et se rapporte à un type de données. Le nom d'une variable Java a n caractères, le premier alphabétique, les autres alphabétiques ou numériques. Javafaitla différenceentre majuscules et minuscules.Ainsi les variables FINet finsontdifférentes. Les variables peuvent être initialisées lors de leur déclaration. La syntaxe de déclaration d'une ou plusieurs variables est : identificateur_de_type variable1,variable2,...,variable n; où identificateur_de_type est un typeprédéfiniou bienun typeobjet défini par le programmeur. JAVA: Syntaxe 33 Déclaration desdonnées Déclaration desvariables int i = 0; Type Nom de lavariable La déclaration et l’initialisation d’une variable peut se faire en une seule ligne. Ex: int i = 0; La déclaration et l’initialisation d’une variable peut se faire sur plusieurs lignes. Ex: String chaine; chaine = "bonjour"; La déclaration de plusieurs variables en même temps. Ex: Cours POO & Langage JAVA int i = 0, j = 3; JAVA: Syntaxe 34 Les types de Données Le type d'une variable peut être : soit un type élémentaire dit aussi type primitif déclaré sous la forme type_élémentaire variable soit une classe déclarée sous la forme classe variable JAVA: Syntaxe 35 Les types de Données : Les types numériques entiers byte short int long Taille (en bits) 8 16 Intervalle de valeurs -128 … 127 -32768 … 32767 32 -231 … 231-1 64 -263 … 263-1 Notation – 2 entier normal en base décimal – 0b101001 entier en valeur binaire en base 2 – 010 entier en valeur octale (base 8) – 0xF entier en valeur hexadécimale (base 16) Exemple int binaryValue = 0b10; // == 2 int octalValue = 010; // == 8 decimalValue = 10; int hexadecimalValue = 0x10; // == 16 JAVA: Syntaxe 36 Les types de Données :Numériques flottants Taille (en bits) Exemple float double 32 64 3.25f - 3.1e-4f 3.25 - 3.1e-4 Notation – 4.55 ou 4.55D réel double précision – 4.55f réel simple précision Exemple // Notation traditionnelle float floatValue = 3.4f; double doubleValue = 3.4; JAVA: Syntaxe 37 Les types de Données :les Booléens true peut prendre deux valeurs false Cours POO & Langage JAVA Ex : boolean trouve = true; JAVA: Syntaxe Les types de Données : les caractères 38 Les caractères – char : contient une seule lettre – le type char désigne des caractères en représentation Unicode Codage sur 2 octets contrairement à ASCII/ANSI codé sur 1 octet. Le codage ASCII/ANSI est un sous-ensemble d’Unicode Notation hexadécimale des caractères Unicode de ‘ \u0000 ’ à ‘ \uFFFF ’. Notation char a,b,c; // a,b et c sont des variables du type char a='a'; // a contient la lettre 'a' b= '\u0022‘; // b contient le caractère guillemet : " c=97; // x contient le caractère de rang 97 : 'a' JAVA: Syntaxe Les types de Données :les tableaux 39 Les tableaux permettent de stocker plusieurs valeurs de même type dans une variable. – Les valeurs contenues dans la variable sont repérées par un indice – En langage java, les tableaux sont des objets Déclaration – int tab [ ]; String chaines[ ]; Création d'un tableau tab = new int [20]; // tableau de 20 int chaines = new String [100]; // tableau de 100 chaine JAVA: Syntaxe 40 Les instructions élémentaires de Java On distingue 1 ) les instructions élémentaires exécutées par l'ordinateur. 2 ) les instructions de contrôle du déroulement du programme. Les instructions élémentaires apparaissent clairement lorsqu'on considère la structure d'un micro-ordinateur et de ses périphériques. Ecran Clavier U.C Mémoire Disque 1. lecture d'informations provenant du clavier 2. traitement d'informations 3. écriture d'informations àl'écran 4. lecture d'informations provenant d'un fichierdisque 5. écriture d'informations dans unfichier disque JAVA: Syntaxe 41 Ecrituresurécran Le System.out.println() est une méthode utilisée pour imprimer sur la console ou la sortie standard. En plus d’imprimer sur la console, la méthode println() déplace le curseur sur une nouvelle ligne La syntaxe de l'instruction d'écriture sur l'écran est la suivante : System.out.println(expression); où expression esttouttypede donnéequipuisse êtreconvertien chaîne decaractères pourêtreaffichéà l'écran. class PrintLN { 42 Exemple public static void main(String[] args) { // Declaring different datatypes int num =10; char ch ='G'; String str = "GeeksforGeeks"; double d = 10.2; float f = 13.5f; boolean bool = true; // Various overloads of println() method System.out.println(num); System.out.println(ch); System.out.println(str); System.out.println(d); System.out.println(f); System.out.println(bool); System.out.println("Hello"); System.out.print("The addition of "); System.out.println( num1 + " and " + num2 + " is:"); } } JAVA: Syntaxe 43 Lecture dedonnées tapées au clavier Pour lire au clavier les données qui nous intéressent il faut créer et utiliser un objet spécial en instanciant la classe java.util.Scanner. Cet objet va nous fournir les méthodes qui manquaient pour lire des données. La classe Scanner est principalement utilisée pour scanner l'entrée et lire l'entrée des types de données primitifs (intégrés) comme int, decimal, double, etc. import java.util.Scanner; public class UseScanner { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int nombre; System.out.print("Entrez un nombre entier: "); nombre = scan.nextInt(); System.out.println(nombre); } } JAVA: Syntaxe 44 Affectationde lavaleurd'une expression à une variable On s'intéresse ici à l'opération Variable = expression; L'expression peut être de type: • Arithmétique • Relationnelle • Booléenne •Caractère JAVA: Syntaxe 45 Interprétationdel’opérateurd’affectation L'opération variable=expression; estelle-mêmeuneexpressiondontl'évaluationse déroulede lafaçon suivante: • La partie droite de l'affectation est évaluée: le résultat est une valeur V. • La valeur V est affectée à la variable C'est ainsi que l'opération V1=V2=expression est légale. Acausedelapriorité,c'est l'opérateur = le plus à droite qui vaêtre évalué. On a donc V1=(V2=expression) . L'expression (V2 = expression )est évaluée et a pour valeur V. L'évaluation de cette expressiona provoqué l'affectation de V àV2. L'opérateur = suivant est alors évaluésous laforme V1=V.La valeur decette expressionest encore V.Son évaluation provoque l'affectation de V àV1. Ainsi donc, l'opération V1=V2=expressionest une expressiondont l'évaluation 1 ) Provoque l'affectation de lavaleur de expressionauxvariablesV1 etV2 2 ) Rend comme résultat lavaleur de expression. On peut généraliseràune expresion du type :V1=V2=....=Vn=expression JAVA: Syntaxe 44 Expression arithmétique Les opérateurs des expressions arithmétiques sont les suivants : + addition - Soustraction * multiplication / division :le résultat est le quotient exact si l'un au moins des opérandes est réel. Si les deux opérandes sont entiers le résultat est le quotient entier.Ainsi 5/2 -> 2 et 5.0/2->2.5. % division :le résultat est le reste quelque soit lanature des opérandes, le quotient étantlui entier.C'est donc l'opération modulo. JAVA: Syntaxe Expressionarithmétique Il existe diversesfonctions mathématiques : double sqrt(doublex) double cos(double x) double sin(double x) double tan(doublex) Double pow(doublex,doubley) double exp(doublex) doublelog(double x) double abs(double x) etc... racinecarrée Cosinus Sinus Tangente x à lapuissancey(x>0) Exponentielle Logarithme népérien valeurabsolue Toutes ces fonctions sont définies dans une classe Java appelée Math. Lorsqu'on les utilise, il faut les préfixer avec le nom de la classe où elles sont définies. Ainsi on écrira : double x,y=4; x=Math.sqrt(y); JAVA: Syntaxe 48 Prioritésdansl'évaluationdes expressions arithmétiques La priorité des opérateurs lors de l'évaluation d'une expression arithmétique est lasuivante (du plus prioritaire au moins prioritaire) : [fonctions],[ ( )],[ *, /,%], [+,-] Les opérateurs d'un même bloc [ ] ont même priorité. JAVA: Syntaxe 49 Expressions relationnelles Les opérateurs sont les suivants :<, <= ,==, != ,>,>= ordre de priorité >,>=, <,<= ==, != Le résultat d'une expression relationnelle est le booléen falsesiexpressionestfausse truesinon. Exemple: booleanfin; int x; fin=x>4; x= (5==5); // l ’expression (5==5) est évaluée et la valeur est affectée à x qui vaut alors vrai x= (5!=4); // x vaut vrai, ici on obtient vrai si 5 est différent de 4 x= (5>5); // x vaut faux, 5 n'est pas supérieur strictement à 5 x= (5<=5); // x vaut vrai, 5 est bien inférieur ou égal à 5 JAVA: Syntaxe 50 Expressions relationneles Comparaison de deux caractères Soient deux caractères c1 et c2. Il est possible de les comparer avecles opérateurs <, <=, ==, !=, >, >= Ce sont alors leurs codes ASCII,qui sont des nombres, qui sont alors comparés. On rappele que selon l'ordre ASCII on a les relations suivantes: espace < ..< '0' < '1' < ..< '9' < ..< 'A' < 'B' < ..< 'Z' < ..< 'a' < 'b' < ..<'z' JAVA: Syntaxe 51 Expressions relationneles Comparaison de deux chaînes de caractères Elles sont comparées caractère par caractère.La première inégalitérencontrée entre deux caractères induit une inégalité de même sens sur leschaînes. Exemples : Soit àcomparer les chaînes "Chat" et "Chien" "Chat" "Chien" ----------------------- 'C' = 'C' 'h' = 'h' 'a' < 'i‘ Cette dernière inégalité permet de dire que "Chat" < "Chien". Soit à comparer les chaînes "Chat" et "Chaton". Il y a égalité tout le temps jusqu'à épuisement de la chaîne "Chat". Dans ce cas, la chaîne épuisée est déclarée la plus "petite". On adonc la relation "Chat" < "Chaton". JAVA: Syntaxe 52 Expressions relationneles Fonctions de comparaisons de deux chaînes On ne peut utiliser ici les opérateurs relationnels <,<=, ==, !=,>,>= . Il faututiliser des méthodes de laclasse String: String chaine1,chaine2; chaine1=…; chaine2=…; int i=chaine1.compareTo(chaine2); boolean egal=chaine1.equals(chaine2) Ci-dessus, lavariable i auralavaleur : 0 si les deux chaînessont égales 1 si chaîne n°1 > chaîne n°2 -1 si chaîne n°1< chaîne n°2 La variable egalaura la valeur true si les deux chaînes sont égales. JAVA: Syntaxe 53 Expressionsbooléennes Les opérateurs sont : – et logique : && – ou logique : || – non logique : ! Le résultat d'une expression booléenne est un booléen. ordre de priorité ! , &&, || Exemples : si a et b sont 2 variables booléennes boolean a,b, c; a= true; – b= false; c= (a &&b); // c vaut false c= (a || b); // c vaut true c= !(a &&b); // c vaut true c=!a; // c vaut false Les opérateurs relationnels ont priorité sur les opérateurs &&et ||. les opérateurs d’incrémentation ++ et de décrémentation et -- 54 Le langage Java offre des opérateurs d'incrémentation et de décrémentation de variables entières. L'opérateur ++ permet d'incrémenter (ajouter 1 à la valeur courante) le contenu d'une variable. l'opérateur -- permet de décrémenter (retirer 1 à la valeur courante) le contenu d'une variable. Dans les deux cas, ces opérateurs peuvent être utilisés en notation préfixée ou bien en notation postfixée. Exemple int value = 10; // On démarre avec une variable initialisée à 10; ++value; // Cette instruction se contente d'incrémenter value de 1 System.out.println( value ); // Affiche 11 --value; // Cette instruction se contente de décrémenter value de 1 System.out.println( value ); // Affiche 10 int value = 10; // On démarre avec une variable initialisée à 10; value++; // Cette instruction se contente d'incrémenter value de 1 System.out.println( value ); // Affiche 11 value--; // Cette instruction se contente de décrémenter value de 1 System.out.println( value ); // Affiche 10 Utilisation préfixée des opérateurs ++ et -55 public class Demo { public static void main( String [] args ) { int first = 10; int second = 20; int result = ++first + ++second; System.out.println( result ); // Affiche 32 } } Utilisation postfixée des opérateurs ++ et -public class Demo { 2 3 public static void main( String [] args ) { 4 int first = 10; 5 int second = 20; 6 7 int result = first++ + second++; 8 9 10 System.out.println( result ); // Affiche 30 } } 11 12 13 56 Prioritégénéraledes opérateurs () [] fonction gd ! ~ ++ -dg new (type) opérateurs cast dg */% gd +gd << >> gd < <= > >= instanceof gd == != gd & gd ^ gd | gd && gd || gd ?: dg = += -= etc. . dg gd indique qu'a priorité égale, c'est la priorité gauche-droite qui est observée. Cela signifie que lorsque dans une expression, l'on a des opérateurs de même priorité, c'est l'opérateur le plus à gauche dans l'expression qui est évalué en premier. dg indique une priorité droite-gauche. JAVA: Syntaxe 57 Lesstructures de contrôles Les structures de contrôle classiques existent en Java : – – – – – if, else switch, case, default, break for while do, while JAVA: Syntaxe 58 Les structures de contrôles : if /else Instructions conditionnelles – Effectuer une ou plusieurs instructions seulement si une certaine condition est vraie if (condition) instruction; et plus généralement : if (condition) { bloc d’instructions} condition doit être un booléen ou renvoyer une valeur booléenne – Effectuer une ou plusieurs instructions si une certaine condition est vérifiée sinon effectuer d’autres instructions if (condition) instruction1; else instruction2; et plus généralement if (condition) { 1er bloc d’instructions} else {2ème bloc d’instruction} JAVA: Syntaxe 59 Les structures de contrôles :if /else Max.java JAVA: Syntaxe Les structures de contrôles : switch 60 Sélection multiples – l’utilisation de if /else peut s’avérer lourde quand on doit traiter plusieurs sélections et de multiples alternatives – pour cela existe en Java le switch / case assez identique à celui de C/C++ – La valeur sur laquelle on teste doit être un char ou un entier (à l’exclusion d’un long). – L’exécution des instructions correspondant à une alternative commence au niveau du case correspondant et se termine à la rencontre d’une instruction break ou arrivée à la fin du switch JAVA: Syntaxe 61 Les structures de contrôles : switch Alternative.java import java.io.*; Variable contenant la valeur que l’on veut tester. public class Alternative Première alternative : { on affiche Un et on sort public static void main(String args[]) du bloc du switch au break; { int nb = Integer.parseInt(System.console().readLine("Entrer une valeur pour n:")); switch(nb) { case 1: Deuxième alternative : System.out.println("Un"); on affiche Deux et on sort case 2: du bloc du switch au break; System.out.println("Deux"); break; default: System.out.println("Autre nombre"); break; Alternative par défaut: } on réalise une action } par défaut. } 61 JAVA: Syntaxe 62 Les structures de contrôles : while Boucles indéterminées – On veut répéter une ou plusieurs instructions un nombre indéterminés de fois :on répète l’instruction ou le bloc d’instruction tant que une certaine condition reste vraie – nous avons en Java une première boucle while (tant que) while (condition) {bloc d’instructions} les instructions dans le bloc sont répétées tant que la condition reste vraie. On ne rentre jamais dans la boucle si la condition est fausse dès le départ JAVA: Syntaxe 63 Les structures de contrôles : while Boucles indéterminées – un autre type de boucle avec le while: do {bloc d’instructions} while (condition) les instructions dans le bloc sont répétées tant que la condition reste vraie. On rentre toujours au moins une fois dans la boucle : la condition est testée en fin de boucle. JAVA: Syntaxe Les structures de contrôles :while 64 Factorielle.java import java.io.*; public class Facto1 { public static void main(String args[]) { int n, result,i; n = Integer.parseInt(System.console().readLine("Entrer une valeur pour n:")); result = 1; i = n; while (i > 1) { result = result * i; i--; } System.out.println("la factorielle de "+n+" vaut "+result); } } JAVA: Syntaxe 65 Les structures de contrôles : for Boucles déterminées – On veut répéter une ou plusieurs instructions un nombre déterminés de fois : on répète l’instruction ou le bloc d’instructions pour un certain nombre de pas. – La boucle for for (int i = 1; i <= 10; i++) System.out.println(i); //affichage des nombres de 1 à 10 – une boucle for est en fait équivalente à une boucle while for (instruction1; expression1; expression2) {bloc} … est équivalent à … instruction 1; while (expression1) {bloc; expression2}} JAVA: Syntaxe Les structures de contrôles : for 66 Factorielle.java import java.io.*; public class Facto2 { public static void main(String args[]) { int n, result,i; n = Integer.parseInt(System.console().readLine("Entrer une valeur pour n:")); result = 1; for(i =n; i > 1; i--) { result = result * i; } System.out.println("la factorielle de "+n+" vaut "+result); } }