Sujets abordés et exemples semaine 3 Structure d'un programme simple en Java Pourquoi main? / Premier programme Java. public class PremierProgramme / Programme principal String nom; System.out.print("Tapez votre nom ici:"); nom = Clavier.lireString(); System.out.print( Bonjour ); System.out.println(nom); Conventions d'écriture du code Java Indentation (tabulation 4 ou 8) Espaces (parenthèses, opérateurs) Lignes blanches Nom du programme Noms des variables commentaires http://cyberzoide.developpez.com/java/javastyle/javastyle.pdf Notion de variables, de types simples et de constantes Qu est-ce qu une variable? Qu est-ce qu un type? Types entiers byte (1 octet) : -128..127 short (2 octets) : -32768..32767 int (4 octets) : -2 147 483 648.. 2 147 483 647 long (8 octets) : -9 223 372 036 854 775 808..-9 223 372 036 854 775 807 Types réels float (4 octets, 7 décimales) : -1,40239846x10-45..3,40282347x10 38 double (8 octets, 15 décimales) : 4,9406564584124654x10-324..1,797693134862316x10 308 Type char
un seul caractère ('A') caractères spéciaux : o \n : nouvelle ligne o \t : tabulation o \\ : caractère \ o \" : caractère " Type String Chaîne de caractères ("Bonjour") Pas un type de base, mais possède certaines caractéristiques des types. Type boolean Deux valeurs : true et false Utilisé pour les conditions logiques dans les sélections et les répétitions. Affectation de valeurs Opérateur = N a pas la même signification que == / Exemple d'utilisation de variables. public class ProgrammeVariables int entier1; int entier2 = 0; float reel; boolean booleen1 = true; boolean booleen2 = false; char caractere; String chaine; // Lecture et affichage d'un entier System.out.print("Tapez un entier:"); entier1 = Clavier.lireInt(); System.out.print("l'entier lu est: "); // Lecture et affichage d'un réel System.out.print("Tapez un réel:"); reel = Clavier.lireFloat(); System.out.print("le réel lu est: "); System.out.println(reel); // Lecture et affichage d'un caractère System.out.print("Tapez un caractère:"); caractere = Clavier.lireChar(); Clavier.lireFinLigne(); System.out.print("le caractère lu est: "); System.out.println(caractere);
// Lecture et affichage d'une chaine de caractères System.out.print("Tapez une chaine:"); chaine = Clavier.lireString(); System.out.print("la chaine lue est: "); System.out.println(chaine); // affichage de booléens System.out.print("booleen 1 vaut: "); System.out.println(booleen1); System.out.print("booleen 2 vaut: "); System.out.println(booleen2); // affectation d'entiers System.out.print("l'entier 2 est: "); entier2 = entier1; System.out.print("l'entier 1 est: "); System.out.print("l'entier 2 est: "); Exemple d exécution : Tapez un entier:3 l'entier lu est: 3 Tapez un réel:1.1 le réel lu est: 1.1 Tapez un caractère:r le caractère lu est: R Tapez une chaine:allo la chaine lue est: allo booleen 1 vaut: true booleen 2 vaut: false l'entier 2 est: 0 l'entier 1 est: 3 l'entier 2 est: 3 Opérateurs Opérateurs sur les valeurs numériques (int, long, float et double) Opérations de base : + - / Modulo : % (donne le reste de la division.) La priorité des opérations s applique ( ), / %, + -, + - unaires / Exemple d'utilisation d'opérateurs arithmétiques. public class ProgrammeOperateurs
int entier1 = 5; int entier2 = 10; float reel1 = 2; float reel2 = 3; // opérations sur les entiers System.out.print("entier 1 vaut: "); System.out.print("entier 2 vaut: "); // addition System.out.print("entier 1 + entier 2: "); System.out.println(entier1 + entier2); // soustraction System.out.print("entier 1 - entier 2: "); System.out.println(entier1 - entier2); // multiplication System.out.print("entier 1 entier 2: "); System.out.println(entier1 entier2); // division System.out.print("entier 1 / entier 2: "); System.out.println(entier1 / entier2); // modulo System.out.print("entier 1 % entier 2: "); System.out.println(entier1 % entier2); // affichage des variables (elles sont inchangées) System.out.print("entier 1 vaut: "); System.out.print("entier 2 vaut: "); // opérations sur les réels System.out.print("reel 1 vaut: "); System.out.println(reel1); System.out.print("reel 2 vaut: "); System.out.println(reel2); // addition System.out.print("reel 1 + reel 2: "); System.out.println(reel1 + reel2); // soustraction System.out.print("reel 1 - reel 2: "); System.out.println(reel1 - reel2); // multiplication System.out.print("reel 1 reel 2: "); System.out.println(reel1 reel2); // division System.out.print("reel 1 / reel 2: "); System.out.println(reel1 / reel2); // modulo System.out.print("reel 1 % reel 2: "); System.out.println(reel1 % reel2); // affichage des variables (elles sont inchangées) System.out.print("entier 1 vaut: "); System.out.println(reel1); System.out.print("entier 2 vaut: "); System.out.println(reel2);
Exécution : System.out.println(1.0/0); // réel / 0 => Infinity System.out.println(1/0); // entier / 0 => Erreur entier 1 + entier 2: 15 entier 1 - entier 2: -5 entier 1 entier 2: 50 entier 1 / entier 2: 0 entier 1 % entier 2: 5 reel 1 vaut: 2.0 reel 2 vaut: 3.0 reel 1 + reel 2: 5.0 reel 1 - reel 2: -1.0 reel 1 reel 2: 6.0 reel 1 / reel 2: 0.6666667 reel 1 % reel 2: 2.0 entier 1 vaut: 2.0 entier 2 vaut: 3.0 entier 1 + entier 2: 15 entier 1 - entier 2: -5 entier 1 entier 2: 50 entier 1 / entier 2: 0 entier 1 % entier 2: 5 reel 1 vaut: 2.0 reel 2 vaut: 3.0 reel 1 + reel 2: 5.0 reel 1 - reel 2: -1.0 reel 1 reel 2: 6.0 reel 1 / reel 2: 0.6666667 reel 1 % reel 2: 2.0 entier 1 vaut: 2.0 entier 2 vaut: 3.0 Infinity java.lang.arithmeticexception: / by zero at ProgrammeOperateurs.main(ProgrammeOperateurs.java:68) Conversions de types Une opération mixte engendre des conversions automatiques de types jusqu à ce que les deux opérandes soient de même type. int => long => float => double
/ Exemple d'utilisation d'opérateurs arithmétiques. public class ProgrammeConversionsImplicites int entier = 5; float reel = 2; // opérations sur les entiers System.out.print("entier vaut: "); System.out.println(entier); System.out.print("reel vaut: "); System.out.println(reel); // addition System.out.print("entier + reel: "); System.out.println(entier + reel); // soustraction System.out.print("entier - reel: "); System.out.println(entier - reel); // multiplication System.out.print("entier reel: "); System.out.println(entier reel); // division System.out.print("entier / reel: "); System.out.println(entier / reel); // modulo System.out.print("entier % reel: "); System.out.println(entier % reel); // débordement entier = 300000; System.out.print("entier entier: "); System.out.println(entier entier); Exécution : entier vaut: 5 reel vaut: 2.0 entier + reel: 7.0 entier - reel: 3.0 entier reel: 10.0 entier / reel: 2.5 entier % reel: 1.0 entier entier: -194313216 l entier est d abord converti en long, puis en float.
Possibilité de débordement lorsque les deux opérandes sont de même type mais que le résultat dépasse les limites. (int int donne un int, même si le résultat est trop grand ou trop petit pour un int. Il ne sera pas converti en long.) La conversion automatique fonctionne aussi pour l affectation (par exemple, on peut affecter un int dans une variable float). Cependant, ça n évite pas les débordements.