Cours n° 2 Données en Java

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Architecture de machines Codage des informations
Développement logiciel sur micro-contrôleurs PIC en C
Cours n° 1 Présentation du langage C++
Cours n° 7 Standard Template Library II.
Calculs de complexité d'algorithmes
GEF 243B Programmation informatique appliquée Expressions et opérateurs §
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
C.
Le codage de l ’information
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
8. Les tableaux P. Costamagna – ISEN N1.
Initiation à la programmation et algorithmique cours 3
Points importants de la semaine Les types arithmétiques. Les opérateurs.
Cours algorithme 2 S. Tabbone.
Partie 1 Etude de l'existant
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
Expressions et assignations
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Algorithme et structure de données
33 Types de données et opérateurs. 3-2 Objectifs A la fin de ce cours, vous serez capables de : Décrire les types de données primitives Déclarer et initialiser.
Question Comment le compilateur fait-il pour évaluer une expression telle que : A + B lorsque A et B sont des données de types arithmétiques différents.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Programmation multimédia 3
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Principes de programmation
IFT 6800 Atelier en Technologies d’information
Chapitre 3 Syntaxe et sémantique.
Expressions et affectations
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
C++ : variables Déclaration de variables
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
Types de données fondamentaux
L’essentiel du langage C
Structures des données
2.1 - Historique Chapitre 2 : Introduction au langage C++
Informatique, Ordinateur & Programme ...
LES PILES ET FILES.
Notions de pointeurs en C
Ecrire des expressions arithmétiques et logiques
Les types.
Chapitre 3 :Algèbre de Boole
Les variables et les types standard des données
Un survol du language C.
REPRESENTATION DE L’INFORMATION
Cours n° 1 Présentation du langage C++
Tutorat en bio-informatique
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Microcontrôleurs PIC. 1ère séance Présentation du PIC16F876 Outils de programmation du PIC Le langage C Exemples d’applications simples 2ème séance Présentation.
B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs.
Introduction à la programmation (420-PK2-SL) cours 1
Module algorithmique et programmation
Les expressions. Une expression retourne une valeur lorsqu’elle est exécutée par le programme. a+2, x==0, i++, !isdigit(c) && b, sin(Pi),… On peut donc.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Objets et Actions Élémentaires.
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction au langage C
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Transcription de la présentation:

Cours n° 2 Données en Java

Sommaire Types 2. Variables 3. Expressions Notion de types Types natifs/prédéfinis/primitifs 2. Variables Notion de variables Extraits de règles BNF Déclaration de variables Variables et constantes Visibilité et masquage Assignations 3. Expressions Opérateur et expressions Règles d’évaluation Précédence/priorité des opérateurs Opérateurs arithmétiques/relationnels/logique/assignation

short : type des entiers signés (positifs et négatifs) 1. TYPES Notion de type dans les langages Information sémantique associée à une donnée Le type d’une donnée est le moyen de définir dans un langage informatique le codage à utiliser/utilisé pour la représentation interne de la donnée un ensemble de valeurs possibles pour la donnée un ensemble d’opérations applicables aux données de ce type Exemple short : type des entiers signés (positifs et négatifs) représentation interne sur 16 bits en Java permettant de coder resp. 28=256 (resp. 216=65 5366) valeurs distinctes construites par un codage i) binaire pur pour les entiers positifs et ii) « par complément à 2 » pour les entiers négatifs ensemble des valeurs entières de -128..127 (resp. -32768..32767) opérations arithmétiques (+, -, *, /, …) Remarque : Dans les LOO, une classe est conceptuellement un type de données

Dynamique de codage des types entiers Types natifs/prédéfinis/primitifs (1/4) Dynamique de codage des types entiers TENTIER_MIN (valeur entière minimum) du type entier TENTIER TENTIER_MAX (valeur entière maximum) du type entier TENTIER Taille (octet) Valeurs min..max 1 -128..127 2 -32 768..+32 767 4 -2 147 483 648 .. +2 147 483 647 8 -9 223 372 036 854 775 808 .. +9 223 372 036 854 775 808

Valeurs absolues min..max 1. TYPES Types natifs/prédéfinis/primitifs (2/4) Précision des types flottants et valeurs absolues minimum et maximum Valeurs données (à titre indicatif) pour un codage en virgule flottante norme IEEE 754 Identificateur Taille (octet) Précision (chiffres) Valeurs absolues min..max float 4 7 1.40299846 x10-45 3.40282347x1038 double 8 15 4.9406564584124654 x10-324 1.7976931348623160 x10308

1. TYPES Types natifs/prédéfinis/primitifs (3/4) Type des caractères Remarque : Tables de transcodage ASCII/ANSI ou Unicode des caractères Unicode Objectif : représenter tous les systèmes d’écriture Intérêt : universalité en Gestion Electronique des Documents (GED) et pour l’édition de programmes Inclut les 256 codes ASCII/ANSI (1er octet nul) Identificateur Taille (octet) Nb valeurs distinctes Norme char 2 65 536 Unicode (\u0000 à \uffff)

Type des booléens 1 Types natifs/prédéfinis/primitifs (4/4) Identificateur Taille (octet) Valeurs logiques boolean 1 false true

Les 3 attributs (informatiques) d’une variable 2. VARIABLES Notion de variable (1/2) Moyen informatique de manipuler une donnée/information : associer la donnée à une variable Une variable est une entité symbolique représentant : sur un plan conceptuel, une donnée sur un plan informatique, un emplacement de stockage (une ou plusieurs cellules) en mémoire repéré par l’adresse de la première cellule mémoire utilisée La valeur est l’information stockée dans cet emplacement L’affectation est l’opération (=) par laquelle une valeur est attribuée à une variable Les 3 attributs (informatiques) d’une variable Identificateur désignant la donnée dans le code source auquel est associé une adresse de stockage en mémoire Type définissant les modalités de représentation interne et les opérations applicables Valeur (littérale)

Etapes de création d’une variable (implantation en mémoire) 2. VARIABLES Notion de variable (2/2) Etapes de création d’une variable (implantation en mémoire) Déclaration : du type de la variable Effet : réservation d’un emplacement libre en mémoire (nécessaire à la représentation interne d’une variable du type donné) La variable, par son emplacement mémoire, correspond à une adresse mémoire de début d’implantation ( @ ) Remarque : Selon les langages, cette adresse mémoire est manipulable ou non En Java, les adresses des variables ne sont pas manipulables. La mémoire n’est pas accessible/modifiable par ces adresses Initialisation : association/assignation effective de la valeur à la variable (valeur littérale exprimée dans un format autorisé) Effet : mise à jour de l’emplacement mémoire réservé à la variable par la représentation interne de la valeur correspondant au codage lié au type de la variable

Limitation à la présentation des règles syntaxiques les plus usuelles 2. VARIABLES Extraits de règles syntaxiques BNF variable_declaration ::= { modifier } type variable_declarator { "," variable_declarator } ";" type ::= type_specifier { "[" "]" } type_specifier ::= "boolean" | "byte" | "char" | "short" | "int" | "float" | "long" | "double" | class_name | interface_name variable_declarator ::= identifier { "[" "]" } [ "=" variable_initializer ] modifier ::= "public" | "private" | "protected" | "static" | "final" | "native" | "synchronized" | "abstract" | "threadsafe" | "transient" variable_initializer ::= expression | ( "{" [variable_initializer { "," variable_initializer } [ "," ] ] "}" ) expression ::= numeric_expression | testing_expression | logical_expression | string_expression | bit_expression | casting_expression | creating_expression | literal_expression | "null" | "super" | "this" | identifier | ( "(" expression ")" ) | (expression ( ( "(" [ arglist ] ")" ) | ( "[" expression "]" ) | ( "." expression ) | ( "," expression ) | ( "instanceof" ( class_name | interface_name ) ) ) ) identifier ::= "a..z,$,_" { "a..z,$,_,0..9,unicode character over 00C0" } etc… Limitation à la présentation des règles syntaxiques les plus usuelles

Remarque : La déclaration est obligatoire 2. VARIABLES Déclaration de variable (1/2) <déclarationVariable> ::= <type> <identificateur>[=<valeur>] {, <déclarationVariable>} ; type de la variable déclarée identificateur de la variable valeur : valeur littérale ou expression de même type que la variable Exemples : byte age; float totalTHT; char c; int nbClients=0, nbFournisseurs; Remarque : La déclaration est obligatoire avant toute utilisation de la variable Sans déclaration préalable : erreur signalée par le compilateur Illustration des déclarations état courant de la mémoire Adresses Mémoire . . . . . . . . age @000A1267 totalHT @000A1268 @000A1269 @000A126A @000A126B @000A126C c @000A126D @000A126E @000A126F @000A1270 @000A1271 . . . . . . . .

Conseil Exemples : Déclaration de variable (2/2) byte age=18; 2. VARIABLES Déclaration de variable (2/2) Exemples : byte age=18; float totalTHT=0.0; char c=‘A’; … float pi=22./7.; Initialiser explicitement les variables même en cas d’initialisation automatique (usuellement à 0) des compilateurs Adresses Mémoire . . . . . . . . age @000A1267 0001 0010 totalHT @000A1268 0000 0000 @000A1269 @000A126A @000A126B @000A126C c @000A126D @000A126E 0100 0001 @000A126F @000A1270 @000A1271 Conseil

2. VARIABLES Sémantique des identificateurs Le langage informatique comme tout autre langage comporte les aspects : lexical, syntaxique et sémantique. La variable a le rôle sémantique de la donnée/information qu’elle représente. Le rôle sémantique sera précisé par l’identificateur qui lui est attribué Le choix de l’identificateur est donc très important, il nécessite un temps de réflexion L’identificateur doit être explicite et de longueur acceptable Exemple de règle d’écriture des identificateurs : Commencer par une minuscule, passage en majuscule en début de mot nbClients, noCompteClient, tauxTVA, prixUnitaire Les variables de boucles (usuelles) : i, j, k,… Conseil

Entiers – Notations applicables aux variables de type entier Valeurs littérales Entiers – Notations applicables aux variables de type entier Notation décimale i=0; i=-128; i=128; … Notation hexadécimale (0xH…) Symboles hexadécimaux : 0..9, A, B, C, D, E, F (minuscules autorisées) Notation débutant par 0x suivie des symboles hexadécimaux short nbMois=0xC; //  short nbMois=12; Flottants – Notations applicables aux variables de type flottant r=0.; s=.0; //  r=0.0; s=0.0; f=.234; g=234.; //  f=0.234; et g=234.0; x=39.276; Notation exponentielle f = 24.3e-4; // f= 0.00243 (24.3*10-4 )(E accepté) g = 1.5123E3; // g=1512.3

Modifieurs des règles de modification 2. VARIABLES Variables et constantes Variable : donnée de nature modifiable Constante : donnée de nature non modifiable Dans les langages, les modifieurs permettent de définir certaines caractéristiques des données lors de leur déclaration Modifieurs des règles de modification Remarque : L’initialisation de la donnée constante ne peut être différée de sa déclaration. Une fois déclarée et initialisée, la constante ne peut plus être modifiée par programme. Erreur signalée par le compilateur en cas de tentative de modification. Modifieur Exemple const const double g=9.81; final final double g=9.81;

Variables locales à un bloc Portée/visibilité des variables/constantes C’est la portion de code dans laquelle une variable est utilisable/accessible/référençable (par son nom) Variables locales à un bloc Variables déclarées à l’intérieur de ce bloc Elles ne sont accessibles qu’à l’intérieur de ce bloc Variables globales Variables déclarées en dehors de tout bloc Elles sont accessibles dans l’ensemble du programme Pour des raisons d’intégrité des données : ne pas utiliser de variables globales Conseil

Visibilité et masquage des variables // Déclarations globales // MonProgramme.cpp int z=0; int z=0; ... ... int main() int main() { // Bloc1 { // Déclarations locales Bloc1 // Bloc1 (main) int x,y; int x,y; … … { // Bloc2 { // Déclarations locales // Bloc2 (imbriqué) int y; int y; ... x ... ... x ... ... y ... ... y ... ... z ... ... z ... } // Fin Bloc2 } ... y ... ... y ... ... z ... ... z ... } // Fin Bloc1 }

Remarque : L’initialisation est essentielle 2. VARIABLES Affectation <Affectation> ::= <identificateur> = <valeur> ; identificateur : identificateur de la variable (l-value/left-value) valeur : valeur littérale ou expression de même type que la variable (r-value/right-value) Exemples : int age; float totalTHT; char c; age=18; Remarque : L’initialisation est essentielle avant toute utilisation de la variable Sans initialisation préalable : Généralement, pas d’erreur signalée par le compilateur Bug a priori inévitable (initialisation avec l’état de la mémoire) Illustration de l’affectation Adresses Mémoire . . . . . . . . age @000A1267 0001 0010 totalHT @000A1268 @000A1269 @000A126A @000A126B @000A126C c @000A126D @000A126E @000A126F @000A1270 @000A1271

3. EXPRESSIONS Opérateurs et expressions Opérateur Symbole indiquant une opération à effectuer entre 1, 2 ou plusieurs opérandes et retournant un résultat typé dépendant de l’opérateur et du type des opérandes. Un opérateur est caractérisé par son arité (nombre d’arguments) Lorsque l’arité est supérieure à 1, l’opération est en notation infixée Exemples : moins unaire : -10 moins binaire : 10-7 Expression Combinaison de littéraux, de variables, de constantes, de fonctions, d’expressions et d’opérateurs. L’expression exprime un calcul, une manipulation de caractères ou un test de données Exemples : 2+3*x+1 "C++ " + "et Java" ((a<b && a>0) || (a>b && a==0))

Suivant les types des opérandes 3. EXPRESSIONS Classification usuelle des opérateurs Suivant les types des opérandes Arithmétiques associés à une/des opérandes de type entiers/réels Résultat : entier/réel Relationnels associés à deux opérandes de même type natif Résultat : booléen Logiques associés à une/des opérandes de type booléen Résultat : booléen Exemples : 2 + 3 * x // avec x de type flottant (b+c != 0) (b1 || (i==0)) // avec b1 de type booléen et i de type entier

3. EXPRESSIONS Règle d’évaluation des expressions (1/2) Interprétation d’une expression 2 + 3 * x //  (2+3) * x ? ou  2 + (3*x) ? Règle d’évaluation i) Fondée sur l’ordre de précédence/priorité des opérateurs un nombre arbitraire fixant pour deux précédence distinctes l’ordre d’évaluation l’expression correspondant à l’opérateur de plus forte précédence est évalué en premier ii) Fondée sur l’associativité de l’opérateur : gauche (G) ou droite (D) Associativité gauche : a  b  c = (a  b)  Associativité droite : a  b  c = a  (b  c) iii) Règle d’évaluation en cas d’égalité de précédence : de gauche à droite a  b  c  (a  b)  c //  et , deux opérateurs de même précédence // Ordre d’évaluation : 1)  et 2)  iv) Pour un opérateur (binaire) donné, l’ordre d’évaluation est (généralement) celui : 1) du premier opérande et 2) du deuxième opérande

Parenthésage explicite 3. EXPRESSIONS Règle d’évaluation des expressions (1/2) Parenthésage explicite Pour une évaluation des expressions différente des règles d’évaluation on utilise le parenthésage explicite (qui force l’ordre d’évaluation de l’expression) Les expressions entre parenthèses sont évaluées en premier Remarque : La règle d’évaluation n’est pas un principe standard dans les différents langages i) Les précédences, ii) les règles d’associativité et iii) la règle d’évaluation des opérateur binaires doivent être : apprises et connues pour chaque langage et lorsque ceux-ci ne sont pas normalisés pour chaque compilateur

Objectif en génie logiciel Conseil 3. EXPRESSIONS Règle d’évaluation des expressions N’utiliser que les précédences d'opérateurs les « plus usuelles » Définir explicitement la précédence des opérateurs par les parenthèses appropriées, même si elles sont inutiles Objectif en génie logiciel Code source clair Plus facile à lire Plus sûr (moins de risques d'erreurs lorsque l'on modifie des expressions pour une maintenance par exemple) Conseil

Précédence des opérateurs (1/2) 3. EXPRESSIONS Précédence des opérateurs (1/2) Niveau de priorité Opérateur Rôle 17 :: Sélection de contexte global 17 :: Sélection de contexte de classe 16 . Sélecteurs de membres 16 [] Index de tableau 16 () Appel de fonction 15 instanceof Appartenance d’un objet à une classe 15 ++, -- Incrémentation, décrémentation 15 ~ NOT binaire, bit à bit 15 ! NOT logique 15 +, - Signe plus, signe moins 14 () Conversion de type, casting 13 *, /, % Opérateurs multiplication, division, modulo 12 +, - Opérateurs arithmétiques 11 <<, >>, >>> Décalage bit à bit 10 <, <=, >, >= Opérateurs relationnels

Précédence/priorité des opérateurs (2/2) 3. EXPRESSIONS Précédence/priorité des opérateurs (2/2) Niveau de priorité Opérateur Rôle 9 ==, != Egalité, Inégalité 8 & AND bit à bit 7 ^ XOR bit à bit 6 | OR bit à bit 5 && AND logique 4 || OU logique 3 ?: IF arithmétique 2 =, *=, /=, %=, Opérateurs d'assignation +=, -=, <<=, >>=, &=, |=, ^= 1 , Opérateur virgule (succession)

Par ordre décroissant de précédence 3. EXPRESSIONS Opérateurs arithmétiques Par ordre décroissant de précédence Exemple : int x=20, y; y = 2 + 3 * x; Evaluation. Quelle est la valeur de y ? //  (2 + 3) * x ou  2 + (3 * x) ? Opérateur Opération * multiplication / division % modulo + addition - soustraction modulo : reste de la division entière 10 % 3 égal 1

Par ordre décroissant de précédence 3. EXPRESSIONS Opérateurs relationnels Par ordre décroissant de précédence Exemple : ((a<b && a>b) || (a>b && a==0) Evaluation ? Pour a=2 et b=10 Opérateur Opération < infériorité <= infériorité ou égalité > supériorité >= supériorité ou égalité == égalité != inégalité

Par ordre décroissant de précédence 3. EXPRESSIONS Opérateurs logiques Par ordre décroissant de précédence Tables de vérités Exemple : (a==0) && ((a<b && a>0) || (a>b && a==0)) Evaluation ? Pour a=2 et b=16 Opérateur Opération ! NON logique && ET logique || OU logique ^ : xor ou exclusif x y ! x x & y x | y x ^ y true false

Par ordre décroissant de précédence 3. EXPRESSIONS Opérateurs d’assignation Par ordre décroissant de précédence Définition de l’assignation composée a = b; //  a = a  b Exemple : int i, a, b; i = a = b = 3; // associativité droite // de l’opérateur = //  i = (a = (b = 3)); Opérateur Opération = assignation = assignation composée

3. EXPRESSIONS Exemple d’évaluation d’expression Exemples Evaluer l’expression (syntaxiquement correcte) 2 * 5 + 20 % 7 / 5 - 12 13 12 2 * 5 + 20 % 7 / - (2 5) (20 ((20 7) ((2 5)) (((2 3)) 12) Précédences Gestion des priorités 1) 10 2) 6 3) 2 Evaluations 4) 12 5) 0