Programmation en Java Syntaxe et éléments de bases

publicité
Programmation en Java Syntaxe et éléments de bases NGUYEN Thi Minh Tuyen Plan du cours 1 2 • Introduc,on à Java • Syntaxe de base Plan du cours 1 2 • Introduc,on à Java • Syntaxe de base Les langages de programmation Niveaux et catégories de langages •  Langage binaire •  Langages impéra;fs: Basic, Fortran, Pascal, C, ... •  Langages fonc;onnels: Lisp, Caml, ... •  Langages orientés-­‐objet: SmallTalk, Ada95, C++, Java,... NGUYEN Thi Minh Tuyen •  Assembleur : instruc;ons de base du processeur (transferts entre registres, addi;on, …) 4 Historique de Java[1] 1995 mai : premier lancement commercial du JDK 1.0 1996 janvier : JDK 1.0.1 1996 septembre : lancement du JDC 1997 février : JDK 1.1 1998 décembre : lancement de J2SE 1.2 et du JCP 1999 décembre : lancement J2EE 2000 mai : J2SE 1.3 2002 février : J2SE 1.4 2004 septembre : J2SE 5.0 2006 mai : Java EE 5
décembre : Java SE 6.0 NGUYEN Thi Minh Tuyen Année Evénements 5 Historique de Java[2] Année Evénements 2008 décembre : Java FX 1.0 2009 juin : JavaFX 1.2
décembre : Java EE 6 2010 janvier : rachat de Sun par Oracle
avril : JavaFX 1.3 2011 juillet : Java SE 7
octobre : JavaFX 2.0 2012 août : JavaFX 2.2 2013 juin : Java EE 7 2014 mars : Java SE 8, JavaFX 8 NGUYEN Thi Minh Tuyen février : JavaFX 1.1
6 Caractéristiques de Java 1.  Java est interprété 3.  Java est orienté objet 4.  Java est simple 5.  Java est fortement typé 6.  Java assure la ges;on de la mémoire NGUYEN Thi Minh Tuyen 2.  Java est portable : il est indépendant de toute plate-­‐forme 7.  Java est sûr 8.  Java est économe 9.  Java est mul;tâche 7 Différentes éditions et versions[1] Sun/Oracle fournit gratuitement un ensemble d'ou;ls et d'API pour permeare le développement de programmes avec Java. •  librement téléchargeable sur le site web d'Oracle :
hRp://www.oracle.com/technetwork/java/index.html JRE (Java Run;me Environment): •  con,ent uniquement l'environnement d'exécu,on de programmes Java. NGUYEN Thi Minh Tuyen •  nommé JDK (Java Development Kit) •  Le JDK con,ent lui-­‐même le JRE. •  Le JRE seul doit être installé sur les machines où des applica,ons Java doivent être exécutées. 8 Différentes éditions et versions[2] Trois plate-­‐formes d'exécu;on (ou édi;ons) Java Standard Edi;on (J2SE / Java SE) : •  Ceae plate-­‐forme sert de base en tout ou par;e aux autres plate-­‐
formes Java Enterprise Edi;on (J2EE / Java EE) : •  environnement d'exécu;on reposant intégralement sur Java SE pour le développement d'applica;ons d'entreprises NGUYEN Thi Minh Tuyen •  environnement d'exécu;on et ensemble complet d'API pour des applica;ons de type desktop. Java Micro Edi;on (J2ME / Java ME) : •  environnement d'exécu;on et API pour le développement d'applica;ons sur appareils mobiles et embarqués dont les capacités ne permeaent pas la mise en oeuvre de Java SE 9 Différentes éditions et versions[3] Types d'applica;ons •  Applica;ons desktop •  Applica;ons pour appareil mobile (MIDP) : midlets •  Applica;ons pour appareil embarqué (CDC) : Xlets •  Applica;ons pour carte à puce (Javacard) : applets Javacard •  Applica;ons temps réel NGUYEN Thi Minh Tuyen •  Applica;ons web : servlets/JSP, portlets, applets 10 Différentes éditions et versions[4] Version Date de diffusion
(GA) Date de fin de vie
(EOL) J2SE 1.4 Février 2002 Octobre 2008 J2SE 5.0 Mai 2004 Octobre 2009 Java SE 6 Décembre 2006 Initialement prévue
juillet 2012, repoussée
à novembre 2012 Java SE 7 Juillet 2011 Avril 2015 Java SE 8 Mars 2014 Mars 2017 NGUYEN Thi Minh Tuyen Versions de Java 11 Java vs. C et C++ Java est très proche de C++ Syntaxe de base iden;que à C et C++ Simplifica;ons de Java (par rapp. à C++) : •  pas de manipula;on de pointeurs sous forme d’adresse mémoire, ges;on mémoire automa;que •  pas d'héritage mul;ple •  pas de préprocesseur Principaux ajouts (par rapport à C++) : •  tableaux avec test de dépassement de bornes •  chaînes de caractères sous forme de classe NGUYEN Thi Minh Tuyen •  pas de surcharge des opérateurs •  no;on d'interface •  classe racine 'Object ’ •  structura;on en paquetages •  mul;-­‐threading incorporé 12 JDK (Java Development Kit) Distribué gratuitement par SUN Existe pour quasiment tous les types d'ordinateurs et d'OS •  compilateur (javac) •  interpréteur / machine virtuelle (java) •  toute la librairie de classes standards •  ou;ls divers : généra;on doc (javadoc), visualisa;on d'applet (appletviewer), debugger (jdb), ... Les sources sont disponibles gratuitement (pour les applica;ons non commerciales) mais restent la propriété de SUN (de même que la marque, le logo, ...) NGUYEN Thi Minh Tuyen Con;ent : 13 Outil de dévelopment Eclipse ... NGUYEN Thi Minh Tuyen Netbeans 14 Plan du cours 1 2 • Introduc,on à Java • Syntaxe de base Premier exemple Classe class PremierExemple {
Programme principal public static void main(String [] args){
somme = 0;
Variables NGUYEN Thi Minh Tuyen int i, somme;
Affecta,on for (i = 1; i <= 9; i++)
somme = somme + i;
System.out.println(somme);
}
} Boucle 16 VARIABLES Une variable possède •  un nom, •  un type et •  une valeur. •  un nom et •  le type de données qu'elle peut contenir. Une variable est u;lisable dans le bloc où elle est définie. La déclara;on d'une variable permet de réserver la mémoire pour en stocker la valeur. NGUYEN Thi Minh Tuyen La déclara;on d'une variable doit donc contenir: Le type d'une variable peut être : •  soit un type élémentaire dit aussi type primi;f déclaré sous la forme type_élémentaire variable; •  soit une classe déclarée sous la forme classe variable ; 17 VARIABLES Exemple: long nombre; int compteur; int jour, mois, annee ; NGUYEN Thi Minh Tuyen String chaine; 18 Type Désigna;on Longueur byte short int long octet signé en,er court signé en,er signé en,er long 8 bits 16 bits 32 bits 64 bits float double virgule floRante simple précision (IEEE754) virgule floRante double précision (IEEE754) 32 bits 64 bits char caractère 16 bits boolean valeur logique: true/false 1 bit NGUYEN Thi Minh Tuyen Types élémentaires 19 Nombres entiers byte, short, int , long •  Codés en décimal, hexadécimal (0x) ou octal •  byte = [-­‐128; +127] •  short = [-­‐32768 ; +32767] •  int = [-­‐2.147.483.648 ; +2.147.483.647] •  long = [-­‐9,223... 1018 ; +9,223... 1018] NGUYEN Thi Minh Tuyen •  Valeurs min/max: 20 Nombres Qlottants float, double float pi = 3.141f; float floaant1 = +.1f , floaant2 = 1e10f; Aaen;on: float pi = 3.141; // erreur à la compila;on NGUYEN Thi Minh Tuyen double valeur = 3.0, valeur2 = 0x1p-­‐52; 21 Caractères •  16 bits => 65536 valeurs : presque tous les caractères de toutes les écritures ! •  liRéraux entre simples quotes : 'a' 'Z’ •  possibilité d’u,liser la valeur Unicode : par exemple '\u03c0' pour p •  test du type : •  Character.isLeaer(c), •  Character.isDigit(c), … (où c est une variable de type char ) NGUYEN Thi Minh Tuyen •  caractères spéciaux : '\n' '\t' '\b' '\\’ ... •  conver,ble automa,quement en int ou long (et manuellement en byte ou short) •  inversement, (char)val est le caractère dont le code Unicode est l'en,er val 22 Boolean •  2 valeurs : true ou false •  type retourné par les opérateurs de comparaison •  type aRendu dans tous les tests •  ne peut PAS être conver, en en,er NGUYEN Thi Minh Tuyen •  véritable type 23 Constantes •  variable dont la valeur ne peut plus être changée une fois fixée •  se déclare avec le mot-­‐clé final : ce qui interdit d’écrire ensuite… PI = 3.14; //ERREUR… •  possibilité de calculer la valeur de la constante plus tard à l'exécu,on, et ailleurs qu'au niveau de la déclara,on : final int MAX_VAL; NGUYEN Thi Minh Tuyen final double PI = 3.14159; //OK : constante "blanche" //... MAX_VAL = lireValeur(); 24 Conventions de nommage •  pas obligatoires, mais très fortement recommandées (pour la lisibilité du code) •  iden,ficateurs en minuscules, sauf : unExempleSimple •  début des noms en majuscule pour classes et interfaces (et elles seules) : UnNomDeClasse •  pour les constantes, majuscules et sépara,on des mots par _ : NGUYEN Thi Minh Tuyen •  majuscule au début des "sous-­‐mots » intérieurs : final int VALEUR_MAX; •  pas d'emploi de $ (et de caractères non ASCII) 25 NGUYEN Thi Minh Tuyen Chaîne de caractères 26 Caractères spéciaux Affichage \' Apostrophe \" Guillemet \\ antislash \t Tabulation \b retour arrière (backspace) \r retour chariot \f saut de page (form feed) \n saut de ligne (newline) \0ddd caractère ASCII ddd (octal) \xdd caractère ASCII dd (hexadécimal) \udddd caractère Unicode dddd (hexadécimal) NGUYEN Thi Minh Tuyen Caractères spéciaux 27 Addition de chaînes de caractères •  L'opérateur + permet de concaténer plusieurs chaînes de caractères. Il est possible d'u;liser l'opérateur +=. String texte = " ";
texte += " Hello ";
texte += " World3 "; NGUYEN Thi Minh Tuyen •  Java admet l'opérateur + comme opérateur de concaténa;on de chaines de caractères. 28 Comparaison de deux chaines String texte1 = " texte 1 ";
String texte2 = " texte 2 ";
if ( texte1.equals(texte2) )... NGUYEN Thi Minh Tuyen U;liser la méthode equals() 29 Longueur d'une chaine La méthode length() permet de déterminer la longueur d'une chaine. NGUYEN Thi Minh Tuyen String texte = " texte ";
int longueur = texte.length(); 30 Modi5ication de la casse d'une chaine String texte = " texte ";
String textemaj = texte.toUpperCase(); NGUYEN Thi Minh Tuyen Les méthodes Java toUpperCase() et toLowerCase() permeaent respec;vement d'obtenir une chaîne tout en majuscules ou tout en minuscules. 31 Commentaires Type de commentaires Exemple commentaire abrégé // commentaire sur une seule ligne
int N=1; // déclaration du compteur commentaire multiligne /* commentaires ligne 1 commentaires ligne 2 */ commentaire de
documentation
automatique /** * commentaire de la methode * @param val la valeur à traiter * @since 1.0 * @return la valeur de retour * @deprecated Utiliser la nouvelle methode XXX */ •  javadoc : ou,l qui analyse le code Java, et produit automa;quement une documenta,on HTML avec la liste des classes, leurs aRributs, méthodes… avec leurs éventuels "commentaires de documenta,on" respec,fs NGUYEN Thi Minh Tuyen •  ne sont pas pris en compte par le compilateur 32 NGUYEN Thi Minh Tuyen Entrée/sortie 33 Entrée/sortie standard float z=1.732f; System.out.print(” z = "); System.out.print(z); System.out.println(",2z = ” + ( 2*z )); •  Lecture // Lecture d'un caractère int car = System.in.read(); // Lecture de 10 caractères short buf[] = new short[10]; int nbLus = System.in.read(buf); NGUYEN Thi Minh Tuyen •  Écriture 34 Lecture formatée : classe Scanner 2 étapes: •  U,lisa,on de l'objet Scanner •  Récupérez ce que vous tapez Scanner sc = new Scanner(System.in); NGUYEN Thi Minh Tuyen import java.u,l.Scanner; 35 Exemple: import java.u,l.Scanner; //… Scanner sc = new Scanner(System.in); String ch = sc.next(); int k = sc.nextInt(); double val; if (sc.hasNextDouble()) val = sc.nextDouble(); String ligne = sc.nextLine(); NGUYEN Thi Minh Tuyen Lecture formatée : classe Scanner Il existe une méthode nextXyz() et une méthode hasNextXyz() pour chaque type primi;f xyz 36 NGUYEN Thi Minh Tuyen Opérateurs 37 Affectation Il existe des opérateurs qui permeaent de simplifier l'écriture d'une opéra;on d'affecta;on associée à un opérateur mathéma;que : = a=10 a = 10 += a+=10 a = a + 10 -­‐= a-­‐=10 a = a - 10 *= a*=10 a = a * 10 /= a/=10 a = a / 10 %= a%=10 reste de la division ^= a^=10 a = a ^ 10 <<= a<<=10 a = a << 10 a est complété par des zéros à droite >>= a>>=10 a = a >> 10 a est complété par des zéros à
gauche >>>= a>>>=10 a = a >>> 10 décalage à gauche non signé NGUYEN Thi Minh Tuyen Opérateur Exemple Signification 38 Comparaisons > a > 10 strictement supérieur < a < 10 strictement inférieur >= a >= 10 supérieur ou égal <= a <= 10 inférieur ou égal == a == 10 Egalité != a != 10 diffèrent de & a & b ET binaire ^ a ^ b OU exclusif binaire | a | b OU binaire && a && b ET logique (pour expressions booléennes) || a || b OU logique (pour expressions booléennes) ? : a ? b : c opérateur conditionnel NGUYEN Thi Minh Tuyen Opérateur Exemple Signification 39 Incrémentation et décrémentation •  n++ •  n-­‐-­‐ •  -­‐-­‐n NGUYEN Thi Minh Tuyen •  ++n 40 Opérations arithmétiques •  + (addi;on), •  * (mul;plica;on), •  / (division) et •  % (reste de la division). •  Ils peuvent se combiner à l'opérateur d'affecta;on NGUYEN Thi Minh Tuyen •  -­‐ (soustrac;on), 41 Priorité des opérateurs ( ) opérateurs d'incrémentation ++, -- opérateurs de multiplication, division, et modulo *, /, % opérateurs d'addition et soustraction opérateurs de décalage opérateurs de comparaison opérateurs d'égalité +, - <<, >> <, >, <=, >= ==, != opérateur OU exclusif ^ opérateur ET & opérateur OU | opérateur ET logique && opérateur OU logique || opérateurs d'assignement =, +=, -= NGUYEN Thi Minh Tuyen parenthèses 42 NGUYEN Thi Minh Tuyen Blocs, instructions de controle 43 Instructions et blocs •  on peut grouper plusieurs instruc,ons en un bloc délimité par des accolades { et }. Exemple : int a=1, b=2; { //début de bloc int x=a; a = b; b = x; } //fin de bloc x = 3; //ERREUR: x n’est pas connu ici •  Remarque : la portée d'une variable va de sa déclara,on jusqu'à la fin du bloc où elle est déclarée NGUYEN Thi Minh Tuyen •  chaque instruc,on se termine par un ';’. Exemples : int i; i = 4*3; 44 Instructions de contrôle PermeRent de modifier l’ordre normal (séquen,el) d’exécu,on des instruc,ons •  exécu,on condi,onnelle : if … else •  boucles : •  for •  while •  do … while NGUYEN Thi Minh Tuyen •  cas mul,ples : switch 45 if (boolExpr) instruc,on; if (boolExpr) { // Exécuté si VRAI } else { // Exécuté si FAUX } if (boolExpr) { // Exécuté si boolExpr est VRAI } else if (boolExpr2) instruc,ons; // Exécuté si boolExpr2 est VRAI }else { // ... } NGUYEN Thi Minh Tuyen Exécution conditionnelle 46 case cst1: // instruc,ons si expr==cst1 break; case cst2: // instruc,ons si expr==cst2 case cst3: // instruc,ons si // expr==cst3 || expr==cst2 break; default: // instruc,ons si aucune // des valeurs prévues break; NGUYEN Thi Minh Tuyen Cas m
ultiples switch (expr) { } •  expr : de type en,er ou char ou bien type énuméré (défini avec enum) •  cst1, ... : liRéral ou constante (final) 47 Boucles de répétitions Deux types de boucles : while (boolExpr) { // Corps de la boucle } while (boolExpr) instruc,on; //(cas avec une seule instruc,on) do { // Corps de la boucle // (exécuté au moins une fois) NGUYEN Thi Minh Tuyen ou } while (boolExpr); ou do instruc,on; //(cas avec une seule instruc,on) while (boolExpr); 48 Boucles d'itération •  ini,alisa,ons : déclara,on et/ou affecta,ons, séparées par des virgules •  incréments : expressions séparées par des virgules •  équivalent à : ini,alisa,ons; while (boolExpr) { //Corps de la boucle incréments; } NGUYEN Thi Minh Tuyen for (ini,alisa,ons ; boolExpr ; incréments) { // Corps de la boucle } 49 Exemples int somme=0; for (int i=1; i<=n; i++) somme +=i; for (i=0, j=1; i<10&&(i+j)<10; i++,j*=2) { //… } NGUYEN Thi Minh Tuyen for ( ; ; ) ; 50 Interruptions des boucles break •  sor,e de la boucle •  passage à l'itéra,on suivante return •  sor,e immédiate de la fonc,on en cours (cf. + loin), donc a for,ori sor,e de la boucle en cours par la même occasion NGUYEN Thi Minh Tuyen con;nue 51 Exercices 1.  Conversion de températures 2.  Conversion de durées Lit au clavier une durée exprimée en seconde et la conver,t en nombre de jour, heures, minutes et secondes. 3.  Calcul de x^n (en;er) NGUYEN Thi Minh Tuyen Lit une température exprimée en degrés Fahrenheit et affiche sa valeur en degrés Celsius. 52 NGUYEN Thi Minh Tuyen Question? 53 
Téléchargement