Génie Logiciel I. Cours III - Conversion, opérateurs et exceptions. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J.

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimension: px
Commencer à balayer dès la page:

Download "Génie Logiciel I. Cours III - Conversion, opérateurs et exceptions. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J."

Transcription

1 Génie Logiciel I Cours III - Conversion, opérateurs et exceptions Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 1 / 54 Plan du cours 1 Conversion 2 Surcharge d opérateurs 3 Les exceptions Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 2 / 54

2 Conversion de types Différentes sortes de conversion une classe po comporte un constructeur par valeur à un seul argument. p o i n t : : p o i n t ( i n t n ) {x=n ; y =0; Les constructeurs permettent donc de définir des convertisseurs d un type quelconque en un objet de type A. à l inverse, on souhaite convertir une instance de la classe A en un type de base. C est le rôle des opérateurs de cast. operator complexe ( ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 3 / 54 Type classe type de base Définition de l opérateur Considérons la classe po dans laquelle on souhaite définir un opérateur de cast vers le type de base. po c l a s s p o i n t { i n t x, y ; operator i n t ( ) { return x ; les opérateurs de cast sont des fonctions membres auxquelles on ne précise pas le type de retour; les opérateurs de cast sont unaires : ils ne comportent qu un seul argument, qui est ici implicite : this; les opérateurs de cast doivent être utilisables à l extérieur de la classe : ils sont donc public. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 4 / 54

3 Type classe type de base d utilisation po #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; c l a s s p o i n t { i n t x, y ; p o i n t ( i n t abs =0, i n t ord =0) { x=abs ; y=ord ; o p e r a t o r i n t ( ) { cout << a p p e l c a s t pour l e p o i n t << x << << y << e n d l ; r e t u r n x ; p o i n t a ( 3, 4 ), b ( 5, 7 ) ; i n t n1, n2, n3 ; n1=i n t ( a ) ; // a p p e l e x p l i c i t e n2=( i n t ) a ; // a p p e l e x p l i c i t e n3=b ; // a p p e l i m p l i c i t e Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 5 / 54 Type classe type de base Les appels implicites par affectation; lors d un appel de fonction; c l a s s p o i n t { v o i d f c t ( i n t n ) { cout << a p p e l f c t avec argument << n << e n d l ; v o i d f c t ( i n t ) ; p o i n t a ( 3, 4 ) ; f c t ( 6 ) ; // a p p e l normal f c t ( a ) ; // a p p e l avec c o n v e r s i o n i m p l i c i t e e x i t ( EXIT SUCESS ) ; lors de l évaluation d une expression. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 6 / 54

4 Type classe type de base Les appels implicites par affectation; lors d un appel de fonction; lors de l évaluation d une expression. c l a s s p o i n t { p o i n t a ( 3, 4 ), b ( 5, 7 ) ; i n t n1, n2 ; double z1, z2 ; n1=a +3; n2=a+b ; z1=a +3; z2=a+b ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 7 / 54 Type classe type de base Appels implicites par évaluation d expressions n1=a+3; 1 existe t-il un opérateur + prenant un argument de type po et un argument de type? NON; 2 cherchant les conversions possibles permettant de réaliser cette opération, le compilateur choisit de convertir l argument de type po en ; 3 pas de problèmes pour l addition de deux entiers; 4 on stocke le résultat de l addition dans n1. po + Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 8 / 54

5 Type classe type de base Appels implicites par évaluation d expressions n2=a+b; 1 existe t-il un opérateur + prenant deux arguments de type po? NON; 2 cherchant les conversions possibles permettant de réaliser cette opération, le compilateur choisit de convertir les deux arguments de type po en ; 3 pas de problèmes pour l addition de deux entiers; 4 on stocke le résultat de l addition dans n2. po po + Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 9 / 54 Type classe type de base Appels implicites par évaluation d expressions z1=a+3; 1 existe t-il un opérateur + prenant un argument de type po et un argument de type? NON; 2 cherchant les conversions possibles permettant de réaliser cette opération, le compilateur choisit de convertir l argument de type po en ; 3 pas de problèmes pour l addition de deux entiers; 4 le compilateur convertit le résultat en double et le stocke dans z1. po + double Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 10 / 54

6 Type classe type de base Appels implicites par évaluation d expressions z2=a+b; 1 existe t-il un opérateur + prenant deux arguments de type po? NON; 2 cherchant les conversions possibles permettant de réaliser cette opération, le compilateur choisit de convertir les deux arguments en ; 3 pas de problèmes pour l addition de deux entiers; 4 le compilateur convertit le résultat en double et le stocke dans z2. po po + double Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 11 / 54 Type classe type de base Conversions en chaîne po #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; c l a s s p o i n t { i n t x, y ; p o i n t ( i n t abs =0, i n t ord =0) { x=abs ; y=ord ; o p e r a t o r i n t ( ) { cout << a p p e l c a s t pour l e p o i n t << x << << y << e n d l ; r e t u r n x ; p o i n t a ( 3, 4 ) ; i n t n1 ; double z1, z2 ; n1=a +3.85; z1=a +3.85; z2=a+b ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 12 / 54

7 Type classe type de base Conversions en chaîne z1=a+3.85; po double double + double Convertir un double en est une conversion dégradante. par défaut, le compilateur évite au maximum ce type de conversion. Faut-il définir tous les opérateurs de conversion? Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 13 / 54 Type classe type de base Ambiguïtés de conversion La classe po dispose désormais de deux opérateurs de cast: et double. Revenons sur le calcul de z1=a+3.85; po double po double double double + + double double Il y a deux chaînes possibles de conversion. Le compilateur refuse donc cette expression en fournissant un diagnostic d ambiguïté. Il faut donc définir avec soin les opérateurs de casts les plus appropriés. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 14 / 54

8 Type de base type classe Utilisation des constructeurs tout constructeur pouvant être appelé avec un seul argument (les éventuels autres arguments ont une valeur par défaut) fait office de convertisseur; de tels constructeurs peuvent être utilisés par les chaînes de conversion; on peut erdire les conversions implicites en faisant précéder ces constructeurs par le mot-clé explicit. : la classe po c l a s s p o i n t { e x p l i c i t p o i n t ( i n t ) ; p o i n t a, b ; a=p o i n t ( 3 ) ; // a c c e p t é : c o n v e r s i o n e x p l i c i t e b=12; // r e j e t é : c o n v e r s i o n i m p l i c i t e Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 15 / 54 Type classe autre type classe Utilisation des opérateurs de cast po et complexe c l a s s p o i n t { operator complexe ( ) ; c l a s s complexe { double r e e l, imag ; complexe ( double r =0, double=0) { r e e l=r ; imag=i f r i e n d p o i n t : : operator complexe ( ) ; p o i n t : : operator complexe ( ) { complexe r ; r. r e e l=x ; r. imag=y ; return r ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 16 / 54

9 Type classe autre type classe Utilisation des constructeurs po et complexe c l a s s complexe { double r e e l, imag ; complexe ( double r =0, double=0) { r e e l=r ; imag=i complexe ( p o i n t p ) ; c l a s s p o i n t { f r i e n d complexe : : complexe ( p o i n t ) ; complexe : : complexe ( p o i n t p ) { r e e l=p. x ; imag=p. y ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 17 / 54 Conversion de types Conseils Les possibilités de conversion ne sont pas infinies, puisqu elles sont limitées à une chaîne de 3 conversion : standard, C.D.U. 1, standard. La C.D.U. n est mise en œuvre que si elle est utile. l opérateur de cast doit être roduit délibéremment par le concepteur de la classe; le concepteur d une classe peut erdire l usage implicite du constructeur dans une conversion (usage de explicit); de manière générale, on réserve les possibilités de conversion implicites pour des classes ayant de fortes connotations mathématiques. Dans le cas de l exemple typique: la classe complexe, il paraît naturel de disposer de conversions complexe float, float complexe, complexe (par le biais de float), De même, il paraît naturel de pouvoir additionner un complexe et un float, ou deux complexes, et donc de profiter des possibilités de conversion implicites pour ne définir qu un seul opérateur d addition (celle de deux complexes). 1 C.D.U. pour Conversion Définie par l Utilisateur Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 18 / 54

10 Surcharge d opérateurs Mécanisme Definition (Surcharge de fonctions) La surcharge de fonctions est un mécanisme permettant de définir des méthodes ayant le même nom, mais des listes d arguments différentes. En C++, il existe un certain nombres d opérateurs (+, -=, <=,, ) qui peuvent au même titre que les autres types de fonctions être surchargés. Par exemple : les opérateurs de cast 2 possibilités : 1 surdéfinition d opérateurs avec des fonctions amies (le plus naturel); 2 surdéfinition d opérateurs avec des fonctions membres. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 19 / 54 Surcharge d opérateurs Avec une fonction amie #i n c l u d e <iostream > using namespace s t d ; c l a s s p o i n t { i n t x, y ; p o i n t ( i n t abs =0, i n t ord =0) {x=abs ; y=ord ; f r i e n d p o i n t : : operator+( po, p o i n t ) ; p o i n t operator+( p o i n t a, p o i n t b ) { p o i n t p ; p. x=a. x+b. x ; p. y=a. y+b. y ; return p ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 20 / 54

11 Surcharge d opérateurs Avec une fonction amie Une instruction de la forme c=a+b; est en réalité erprétée comme c=operator+(a,b). Que se passe t-il pour une instruction d=a+b+c? Les règles de priorités et d associativité habituelles sont respectées. On obtient donc en notation fonctionnelle d=operator+(operator+(a,b),c) On dit que l addition définie de cette manière est symétrique : les deux arguments a et b jouent exactement le même rôle. On dit aussi que l addition est un opérateur binaire : c est une opération qui s effectue sur deux valeurs. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 21 / 54 Surcharge d opérateurs Avec une fonction membre #i n c l u d e <iostream > using namespace s t d ; c l a s s p o i n t { i n t x, y ; p o i n t ( i n t abs =0, i n t ord =0) {x=abs ; y=ord ; p o i n t operator+( p o i n t ) ; p o i n t p o i n t : : operator+( p o i n t a ) { p o i n t p ; p. x=a. x+t h i s >x ; p. y=a. y+t h i s >y ; return p ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 22 / 54

12 Surcharge d opérateurs Avec une fonction amie Une instruction de la forme c=a+b; est en réalité erprétée comme c=a.operator+(b). Que se passe t-il pour une instruction d=a+b+c? 1 utilisation de variables temporaires; t=a. operator+(b ) ; d=t. operator+(c ) ; 2 transmission de l adresse du résultat partiel. d=(a. operator+(b ) ). operator+(c ) ; Cela dépend des compilateurs. Pour savoir quel mécanisme est en jeu, il suffit d afficher toutes les créations d objets. On dit que l addition définie de cette manière est dissymétrique : les deux arguments a et b ne jouent pas le même rôle. a est l argument implicite sur lequel est appelé l opérateur. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 23 / 54 Surcharge d opérateurs Généralités le symbole qui suit le mot clé operator doit obligatoirement être défini pour les types de base. On ne peut pas créer de nouveaux symboles; il faut conserver la pluralité de l opérateur. On peut ainsi définir un opérateur + binaire et un opérateur + unaire, mais on ne peut pas définir un opérateur = unaire.; unaire binaire fonction amie 0 argument 1 argument fonction membre 1 argument 2 arguments en dépit de la surcharge, les opérateurs conservent leur priorité relative et leur associativité. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 24 / 54

13 Surcharge d opérateurs Les opérateurs surchargeables Liste des opérateurs surchargeables par priorité décroissante : pluralité opérateurs associativité binaire (), [], -> -> unaire +, -, ++,,!,, *, & <- binaire *, /, & -> binaire *->,.* -> binaire +, - -> binaire, -> binaire <, <=, >, >= -> binaire ==,!= -> binaire & -> binaire -> binaire -> binaire && -> binaire -> binaire =, +=, -=, *=, /=, %=, &=, =, =, =, <- = binaire, -> Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 25 / 54 Surcharge d opérateurs Généralités on peut attribuer librement la signification que l on veut à un opérateur, mais il vaut mieux faire preuve de bon sens. On utilisera l opérateur + pour définir l addition de 2 complexes, plutôt que -, * ou ; si l on a redéfini + et =, on n a pas pour autant redéfini l opérateur +=. Veiller à bien le redéfinir. la surcharge d opérateurs ne gère pas l une des propriétés mathématiques de certains opérateurs : la commutativité. complexe operator+(complexe, double ) ; complexe operator+(double, complexe ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 26 / 54

14 Surcharge d opérateurs Généralités (suite) les opérateurs d incrémentation/décrémentation peuvent être définis en notation postfixée et préfixée depuis la version 3; c l a s s p o i n t { i n t x, y ; p o i n t ( i n t abs, i n t ord ) { x=abs ; y=ord ; // n o t a t i o n p r e f i x e e p o i n t o p e r a t o r ++(){ x++; y++; r e t u r n t h i s ; // n o t a t i o n p o s t f i x e e p o i n t o p e r a t o r ( i n t n ) { p o i n t p= t h i s ; x++; y++; r e t u r n p ; ; p o i n t a1 ( 2, 5 ), a2 ( 2, 5 ), b ; b=++a1 ; b=a2++; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 27 / 54 Surcharge d opérateurs Généralités (suite) les opérateurs d incrémentation/décrémentation peuvent être définis en notation postfixée et préfixée depuis la version 3; c l a s s p o i n t { i n t x, y ; p o i n t ( i n t abs, i n t ord ) { x=abs ; y=ord ; f r i e n d p o i n t o p e r a t o r++(p o i n t ) ; f r i e n d p o i n t o p e r a t o r++(p o i n t, i n t ) ; ; p o i n t p o i n t : : o p e r a t o r++(p o i n t & a ){ // n o t a t i o n p r é f i x é e a. x++; a. y++; r e t u r n a ; p o i n t p o i n t : : o p e r a t o r++(p o i n t & a, i n t n ){ // n o t a t i o n p o s t f i x é e p o i n t p=a ; a. x++; a. y++; r e t u r n p ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 28 / 54

15 Surcharge de l opérateur d affectation Problématique La classe vect c l a s s v e c t { i n t nelem ; i n t adr ; ; v e c t a ( 2 ), b ( 1 ) ; b=a ; Le comportement par défaut : a 2 b 1 x y z a 2 b 1 x y z Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 29 / 54 Surcharge de l opérateur d affectation Problématique La classe vect c l a s s v e c t { i n t nelem ; i n t adr ; ; v e c t a ( 2 ), b ( 1 ) ; b=a ; Le comportement souhaité : a 2 b 1 x y z a 2 b 1 x y x y Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 30 / 54

16 Surcharge de l opérateur d affectation Définition L opérateur d affectation = est le frère presque jumeau du constructeur par copie. Il y a 2 différences : 1 on peut affecter un objet à lui-même; 2 avant l affectation, il existe deux objets complets, tandis que la construction par copie crée le second objet. Algorithme de l opération d affectation b=a (avec a différent de b): libération de l emplacement poé par b; création dynamique d un nouvel emplacement dans lequel on recopie les valeurs de l emplacement poé par a; mise en place des valeurs des membres données de b. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 31 / 54 Surcharge de l opérateur d affectation La classe vect c l a s s v e c t { i n t nelem, adr ; v e c t ( i n t n ) { adr=new i n t [ nelem=n ] ; v e c t ( c o n s t & v e c t v ) { adr=new i n t [ nelem=v. nelem ] ; f o r ( i n t i =0; i < nelem ; i ++) adr [ i ]=v. adr [ i ] ; o p e r a t o r =( c o n s t v e c t & v ) { i f ( t h i s!= &v ){ d e l e t e adr ; adr=new i n t [ nelem=v. nelem ] ; f o r ( i n t i =0; i <nelem ; i ++) adr [ i ]=v. adr [ i ] ; r e t u r n t h i s ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 32 / 54

17 Surcharge de l opérateur [] Problématique de la classe vect : on souhaite manipuler un élément de type vect comme un tableau et pouvoir accéder au i-ème élément aussi simplement. L opérateur [] surchargé i n t & v e c t : : operator [ ] ( i n t i ) { return adr [ i ] ; Sous cette forme, on ne contrôle pas si l indice existe ou non. Il faudrait dans ce cas le comparer avec la valeur de nelem. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 33 / 54 Surcharge de l opérateur () Les objets fonctions L opérateur () est utilisé pour les appels de fonction. Lorsqu il est surchargé dans une classe, les instances de cette classe sont alors appelés objets fonctions. c l a s s t r u c { i n t o p e r a t o r ( ) ( i n t n, i n t m) { ; t r u c x ; i n t y ; y = x ( 3, 8 ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 34 / 54

18 Surcharge des opérateur new et delete Contraes la surcharge de l opérateur new se fait obligatoirement par une fonction membre; il n y a qu un seul argument d entrée, de type size t. Il faudra inclure l en-tête stddef.h; le type de la valeur de retour est void *, correspondant à l adresse de l emplacement alloué par l objet. la surcharge de l opérateur delete se fait obligatoirement par une fonction membre; il n y a qu un argument d entrée, qui est de type void *, représentant l adresse de l emplacement alloué à détruire; il ne retourne rien (void). Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 35 / 54 Surcharge des opérateur new et delete Compter les appels d une classe : La classe po #i n c l u d e <i o s t r e a m > #i n c l u d e <s t d d e f. h> u s i n g namespace s t d ; c l a s s p o i n t { s t a t i c i n t npt, npt dyn ; i n t x, y ; p o i n t ( i n t abs =0, i n t ord =0) { x=abs ; y=ord ; npt++; p o i n t ( ) { npt ; v o i d o p e r a t o r new ( s i z e t s z ) { npt dyn++; r e t u r n : : new char [ s z ] ; v o i d o p e r a t o r d e l e t e ( v o i d dp ) { npt dyn ; r e t u r n : : d e l e t e ( dp ) ; i n t p o i n t : : npt =0; i n t p o i n t : : n p t d t n =0; p o i n t ad1 ; p o i n t a ( 3, 5 ) ; ad1=new p o i n t ( 1, 3 ) ; d e l e t e ad1 ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 36 / 54

19 Les exceptions Problématique Pour le développement d un programme, bon nombre d environnements proposent des outils de débogage performants. Malgré tout, même s il est tout à fait au po, un programme peut rencontrer des «conditions exceptionnelles». Dans ce cas, plusieurs stratégies de traitements sont possibles : 1 l émission d un message d erreur et l arrêt complet du programme. Cette solution est à éviter pour les systèmes de contrôles (vols habités, pilotage d usines, ); 2 le traitement du problème dans le programme qui détecte l erreur, mais erreur et traitement doivent être prévus au moment de l écriture du code programmes lourds et complexes; 3 le signalement de l erreur detectée dans une fonction par un code de retour que le programme appelant peut traiter comme il le veut, mais que se pass t-il pour les fonctions ou méthodes qui retournent déjà une valeur? Solution : le mécanisme des exception Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 37 / 54 Les exceptions Mécanisme Le mécanisme des exceptions comporte 3 éléments : les traitements d exceptions sont des séquences associées à un type d erreur. Une séquence est exécutée quand une erreur est détectée et que le mécanisme de surveillance d exception a fait le lien avec un gestionnaire d exception; le mécanisme de capture d exception permet la surveillance d une séquence de code délimitée par des mots clés. elle associe à chaque type d erreur possible une séquence de traitement d erreur. Quand il y a erreur, le déroulement normal du programme est arrété et il y a branchement automatique à la séquence de traitement correspondante (c est un traitement alternatif); le mécanisme de levée d exception est mis en œuvre soit automatiquement par le matériel, soit par le système d exploitation, soit explicitement par le programmeur. Si la séquence produisant une erreur est surveillée et si cette exception peut être traitée, ce traitement est activé. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 38 / 54

20 Les exceptions par l exemple L instruction throw Reprenons la classe vect dans laquelle on a redéfini l opérateur []. On veut ajouter le contrôle de la valeur de l indice. c l a s s v e c t L i m i t e E x c e p t i o n { ; c l a s s v e c t { i n t nelem ; i n t adr ; v e c t ( i n t n=0) { adr=new i n t [ nelem=n ) ] ; v e c t ( ) { d e l e t e adr ; i n t & o p e r a t o r [ ] ( i n t i ) { i f ( i <0 i >nelem ) { v e c t L i m i t e E x c e p t i o n l ; throw ( l ) ; r e t u r n adr [ i ] ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 39 / 54 Les exceptions par l exemple L instruction try catch t r y { v e c t v ( 1 0 ) ; v [ 1 1 ] = 5 ; catch ( v e c t L i m i t e E x c e p t i o n l ) { cout << e x c e p t i o n v e c t L i m i t e << e n d l ; e x i t ( EXIT FAILURE ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 40 / 54

21 Les exceptions par l exemple Récapitulatif cas très simple avec un seul type d exception, et aucune information particulière transmise au gestionnaire d exception; le gestionnaire d exception est défini indépendamment des fonctions suceptibles de la déclencher. On peut ainsi prévoir un traitement différent de l exception d une utilisation de la classe à une autre; le gestionnaire d exception aurait pu être égré à la classe vect elle-même. Il s agit toutefois d un cas très rare, le but étant le découplage entre détection et traitement d une exception; en l absence du bloc try, l exception vectlimite déclenchée par l opérateur [], alors non prise en compte, aurait simplement provoqué un arrêt de l exécution. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 41 / 54 Les exceptions par l exemple Un exemple plus réaliste : les classes vectlimiteexception et vectbuildexception c l a s s v e c t L i m i t e E x c e p t i o n { i n t h o r s ; v e c t L i m i t e E x c e p t i o n ( i n t i =0) { h o r s=i ; ; c l a s s v e c t B u i l d E x c e p t i o n { i n t nb ; v e c t B u i l d E x c e p t i o n ( i n t i =0) { nb=i ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 42 / 54

22 Les exceptions par l exemple Un exemple plus réaliste : la classe vect c l a s s v e c t { i n t nelem ; i n t adr ; v e c t ( i n t n=0) { i f ( n <=0) { v e c t B u i l d E x c e p t i o n : : v e c t B u i l d E x c e p t i o n b ( n ) ; throw b ; adr=new i n t [ nelem=n ] ; v e c t ( ) { d e l e t e adr ; i n t & o p e r a t o r [ ] ( i n t i ) { i f ( i <0 i >nelem ) { v e c t L i m i t e E x c e p t i o n : : v e c t L i m i t e E x c e p t i o n l ( i ) ; throw l ; r e t u r n adr [ i ] ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 43 / 54 Les exceptions par l exemple Un exemple plus réaliste Utilisation t r y { v e c t v ( 1 0 ) ; v [ 1 1 ] = 5 ; catch ( v e c t L i m i t e E x c e p t i o n l ) { cout << e x c e p t i o n i n d i c e << l. hors << h o r s l i m i t e s << e n d l ; e x i t ( EXIT FAILURE ) ; catch ( v e c t B u i l d E x c e p t i o n b ) { cout << e x c e p t i o n c r e a t i o n v e c t nb elem = << b. nb << e n d l ; e x i t ( EXIT FAILURE ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 44 / 54

23 Mécanisme des exceptions Poursuite de l exécution // d e f i n i t i o n des c l a s s e s vect, v e c t L i m i t e E x c e p t i o n e t v e c t B u i l d E x c e p t i o n // i n t main ( i n t argc, char a r g v [ ] ) { v o i d f ( i n t ) ; cout << avant a p p e l de f ( 3 ) << e n d l ; f ( 3 ) ; cout << avant a p p e l de f ( 8 ) << e n d l ; f ( 8 ) ; cout << a p r è s a p p e l de f ( 8 ) << e n d l ; v o i d f ( i n t i ) { t r y { cout << debut b l o c t r y << e n d l ; v e c t v ( 5 ) ; v [ i ]=0; cout << f i n b l o c t r y << e n d l ; catch ( v e c t L i m i t e E x c e p t i o n l ) { cout << e x c e p t i o n i n d i c e << l. hors << h o r s l i m i t e s << e n d l ; catch ( v e c t B u i l d E x c e p t i o n b ) { cout << e x c e p t i o n c r e a t i o n v e c t nb elem = << b. nb << e n d l ; cout << dans f a p r e s t r y, v a l e u r de i = << i << e n d l ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 45 / 54 Mécanisme des exceptions Prise en compte des sorties de blocs v o i d f ( i n t i ) { v e c t v1 ( 5 ) ; t r y { v e c t v2 ( 5 ) ; v2 [ i ]=0; catch ( v e c t L i m i t e E x c e p t i o n l ) { cout << e x c e p t i o n i n d i c e << l. hors << h o r s l i m i t e s << e n d l ; catch ( v e c t B u i l d E x c e p t i o n b ) { cout << e x c e p t i o n c r e a t i o n v e c t nb elem = << b. nb << e n d l ; // i c i, v1 e x i s t e t o u j o u r s, mais pas v2, convenablement d é t r u i t Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 46 / 54

24 Les exceptions Choix du gestionnaire le gestionnaire reçoit toujours une copie de l information transmise, même si l on a utilisé une transmission par référence. En ce qui concerne les poeurs, on évitera de transmettre une variable automatique qui se trouverait détruite avant l entrée dans le gestionnaire; les règles de choix d un gestionnaire d exception sont les suivantes : 1 recherche d un gestionnaire correspondant au type exact mentionné dans throw : une exception de type T pourra être gérée par les gestionnaires suivants : catch (T t) catch (T & t) catch (const T t) catch (const T & t) 2 recherche d un gestionnaire correspondant à une classe de base du type mentionné dans throw; 3 recherche d un gestionnaire correspondant à un poeur sur une classe dérivée du type mentionné dans throw; 4 recherche d un gestionnaire correspondant à un type quelconque, représenté dans catch par des pos de suspension. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 47 / 54 Les exceptions Choix du gestionnaire L ordre dans lequel on écrit les différents gestionnaires a une importance : dès qu un gestionnaire correspond, il est utilisé, sans se préoccuper de l existence d autres gestionnaires. catch ( t r u c ) { // g e s t i o n n a i r e 1 catch ( ) { // g e s t i o n n a i r e 2 ( t y p e q u e l c o n q u e ) catch ( c hose ) { // g e s t i o n n a i r e 3 Le gestionnaire 3 n a aucune chance d être appelé, car le gestionnaire 2 traitera toutes les exceptions non traitées par le gestionnaire 1. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 48 / 54

25 Les exceptions Le cheminement des exceptions t r y { v o i d f 1 ( ) ; f 1 ( ) ; catch ( v e c t L i m i t e E x c e p t i o n l ) { cout << dans main : e x c e p t i o n i n d i c e << e n d l ; v o i d f 1 ( ) { t r y { v e c t v ( 1 0 ) ; v [ 1 2 ] = 0 ; v e c t v1 ( 1); catch ( v e c t B u i l d E x c e p t i o n c ) { cout << dans f 1 : e x c e p t i o n c r e a t i o n << e n d l ; La recherche du gestionnaire se fait d abord dans le bloc try associé, puis récursivement dans les blocs try parents. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 49 / 54 Les exceptions Le redéclenchement des exceptions t r y { v o i d f 1 ( ) ; f 1 ( ) ; catch ( i n t ) { cout << e x c e p t i o n i n t dans main << e n d l ; v o i d f 1 ( ) { t r y { i n t n=2; throw n ; catch ( i n t ) { cout << dans f 1 : e x c e p t i o n c r e a t i o n << e n d l ; throw ; L instruction throw sans expression dans un gestionnaire retransmet l exception au niveau parent. On peut ainsi compléter le traitement d une exception par un traitement complémentaire spécifique. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 50 / 54

26 Les exceptions Spécification d erface Une fonction peut spécifier les exceptions qu elle est susceptible de déclencher sans les traiter (ou de traiter et de redéclencher par throw). v o i d f 1 ( ) throw (A,B) { Il s agit d un comportement rigoureusement équivalent à : v o i d f 1 ( ) { t r y { catch (A a ) { throw ; catch (B b ) { throw ; catch ( ) { u n e x p e c t e d ( ) ; Le comportement par défaut de la fonction unexpected n est pas entièremment défini par la norme, mais ça se termine souvent par un arrêt brutal de l exécution. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 51 / 54 Les exceptions Spécification d erface : la fonction main #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; v o i d f ( i n t ) throw ( i n t ) ; i n t n ; cout << e n t i e r (0 à 2) : ; c i n >> n ; t r y { f ( n ) ; catch ( i n t ) { cout << e x c e p t i o n i n t dans main << e n d l ; cout << a p r e s t r y dans main << e n d l ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 52 / 54

27 Les exceptions Spécification d erface : la fonction f v o i d f ( i n t n ) throw ( i n t ) { t r y { cout << n= << n << e n d l ; s w i t c h ( n ) { case 0 : double d ; throw d ; break ; case 1 : i n t i ; throw i ; break ; case 2 : f l o a t f ; throw f ; break ; catch ( double ) { cout << e x c e p t i o n d o u b l e dans f << e n d l ; cout << a p r e s b l o c t r y dans f << e n d l ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 53 / 54 Les exceptions Spécification d erface : affichage ============================== e n t i e r (0 à 2) : 0 n = 0 e x c e p t i o n double dans f a p r e s b l o c t r y dans f a p r e s t r y dans main ============================== e n t i e r (0 à 2) : 1 n = 1 e x c e p t i o n i n t dans main a p r e s t r y dans main ============================== e n t i e r (0 à 2) : 2 n = 2 // i c i, f i n anormale ( a p p e l de a b o r t ) ============================== Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 54 / 54

Construction et destruction des objets de vie des objets Objets composites Tableaux d'objets Copie (Initialisation et affectation) des objets

Construction et destruction des objets de vie des objets Objets composites Tableaux d'objets Copie (Initialisation et affectation) des objets Construction et destruction des objets Durée de vie des objets Objets composites Tableaux d'objets Copie (Initialisation et affectation) des objets Initialisation des objets Constructeur par recopieinit

Plus en détail

Génie Logiciel I. Cours VII - La S.T.L. et les conteneurs. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09

Génie Logiciel I. Cours VII - La S.T.L. et les conteneurs. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Génie Logiciel I Cours VII - La S.T.L. et les conteneurs Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie

Plus en détail

CHAPITRE 3 : Types de base, Opérateurs et Expressions

CHAPITRE 3 : Types de base, Opérateurs et Expressions CHAPITRE 3 : Types de base, Opérateurs et Expressions 1. Types simples Un type définit l'ensemble des valeurs que peut prendre une variable, le nombre d'octets à réserver en mémoire et les opérateurs que

Plus en détail

Expressions, types et variables en Python

Expressions, types et variables en Python Expressions, types et variables en Python 2015-08-26 1 Expressions Les valeurs désignent les données manipulées par un algorithme ou une fonction. Une valeur peut ainsi être : un nombre, un caractère,

Plus en détail

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2010-2011 S. Kramm (IUT Rouen) MCII1 - Cours 3 2010-2011 1 / 47 Sommaire 1 Rappels de C et définitions

Plus en détail

TP Interface graphique et C++ numéro 1

TP Interface graphique et C++ numéro 1 TP Interface graphique et C++ numéro 1 Master IGC - 1 re année année 2010-2011 Ce premier TP a pour objectif de vous familiariser avec le compilateur C++, les entréessorties du langage et l utilisation

Plus en détail

renforcer le contrôle de type :

renforcer le contrôle de type : renforcer le contrôle de type : définitions, prototypes de fonctions surcharge références conversions de void * préférer le compilateur au préprocesseur considérer les entrées/sorties opérations abstraites

Plus en détail

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS 1. PRÉSENTATION. Le langage C a fait son apparition en 1972 pour le développement du système d exploitation Unix. Il est devenu un standard de la norme ANSI en 1983.

Plus en détail

3 Lien entre pointeurs et tableaux.

3 Lien entre pointeurs et tableaux. programme sont dit dynamiques. On se limite ici aux tableaux statiques à une seule dimension, analogue aux vecteurs manipulés en mathématiques. Ils se déclarent sous la forme : type_d_élément variable_tableau[taille];

Plus en détail

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles GL / C++ Chapitre 7 Lien Dynamique Méthodes Virtuelles 1. Pointeur sur un objet d'une classe dérivée Considérons les classes écrites précédemment : Personne Etudiant // dérive de personne Salarie // dérive

Plus en détail

Organisation des données et structures de stockage

Organisation des données et structures de stockage ING2 - ING3 Nvx 2009-2010 Organisation des données et structures de stockage I. Stockage de l information en C Ce chapitre rappelle brièvement et complète certaines notions de base vues en première année

Plus en détail

Programmer avec les exceptions en Java

Programmer avec les exceptions en Java Programmer avec les exceptions en Java Premier Cycle Cours Eurinsa 2002 (c) P.Pollet 05/12/2002 Java 2001 (PP) 1 Plan Gestion traditionnelle des erreurs d exécution Qu est-ce qu une exception? La classe

Plus en détail

Premiers exemples de traitements

Premiers exemples de traitements #include #include Premiers exemples de traitements void main() float b(0.0); float c(0.0); float delta(0.0); cin >> b >> c; delta = b*b - 4*c; if (delta < 0.0) cout

Plus en détail

Procédures et fonctions

Procédures et fonctions Chapitre 5 Procédures et fonctions 5.1 Introduction Considérons le programme suivant, dont le but est d inverser les éléments d un tableau : public class InversionTableau1 { int t[]= {8, 2, 1, 23; Terminal.ecrireStringln("Tableau

Plus en détail

Java : Programmation Impérative

Java : Programmation Impérative 1 Java : Programmation Impérative Résumé du cours précédent (I11) Paradigme impératif Algorithmique simple Découpage fonctionnel Qu est-ce qu un programme informatique? / un langage de programmation? /

Plus en détail

Langage C notes de cours

Langage C notes de cours Langage C notes de cours K. El Omari IUT GTE, UPPA 1 Présentation générale 1.1 Introduction La programmation par le langage C (ainsi que par d autres langages dit compilés) est basée sur : 1. la rédaction

Plus en détail

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,

Plus en détail

Initialisation des attributs (1)

Initialisation des attributs (1) Initialisation des attributs (1) Initialiser les attributs d une instance en leur affectant individuellement une valeur, après l instanciation, n est pas une technique satisfaisante: a) elle est fastidieuse,

Plus en détail

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 2 : Communication

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 2 : Communication iut ORSAY DUT Informatique Département Informatique 2009 / 2010 Travaux Pratiques n o 2 : Communication Nom(s) : Groupe : Date : Objectifs : rappels sur la création de processus par la primitive fork()

Plus en détail

Programmation Orientée Objet C++ Cours 1

Programmation Orientée Objet C++ Cours 1 Programmation Orientée Objet C++ Cours 1 P. Pesneau pierre.pesneau@math.u-bordeaux1.fr Université Bordeaux 1 Bât A33 - Bur 265 Ouvrages de référence B. W. Kernighan et D. M. Ritchie - Le langage C : Norme

Plus en détail

Programmation objet en Java.

Programmation objet en Java. Programmation objet en Java. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/7/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/7/ Cours Exercices Slide 1 1. Classes,

Plus en détail

Les exceptions en java

Les exceptions en java 1/12 Les exceptions en java 2/12 C'est quoi une exception? Une exception est un événement (une erreur) qui se produit lors de l'exécution d'un programme, et qui va provoquer un fonctionnement anormal (par

Plus en détail

Algorithmique et programmation : les bases (C) Corrigé

Algorithmique et programmation : les bases (C) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours C, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage C des éléments vus en algorithmique. Table des matières 1 Pourquoi

Plus en détail

L1 Informatique Université Paris 8-2010-2011 Programmation Impérative I Rim Chaabane rchaabane@ai.univ-paris8.fr - Cours 6 - Les pointeurs

L1 Informatique Université Paris 8-2010-2011 Programmation Impérative I Rim Chaabane rchaabane@ai.univ-paris8.fr - Cours 6 - Les pointeurs Les pointeurs Le langage C permet de manipuler des adresses d objets ou de fonctions par le biais de pointeurs. Pour ce faire on peut désigner des variables dites de type pointeur, destinées à contenir

Plus en détail

Programmation C++ Le langage impératif. Stéphane Vialette. 12 novembre 2012. LIGM, Université Paris-Est Marne-la-Vallée

Programmation C++ Le langage impératif. Stéphane Vialette. 12 novembre 2012. LIGM, Université Paris-Est Marne-la-Vallée Programmation C++ Le langage impératif Stéphane Vialette LIGM, Université Paris-Est Marne-la-Vallée 12 novembre 2012 Stéphane Vialette (LIGM UPEMLV) Programmation C++ 12 novembre 2012 1 / 67 C++ : chronologie

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes ISMIN 1A Programmation 1 : Examen de programmation C Réponses Partie 1. Questions ouvertes 1. Soit la déclaration suivante, char tab[] = "". Que contient le tableau tab? Réponse : tab[0] = \0. tab est

Plus en détail

1 Création de processus : primitive fork()

1 Création de processus : primitive fork() O r s a y Travaux Pratiques n o 2 : Synchronisation DUT Informatique 2010 / 2011 Nom(s) : Groupe : Date : Objectifs : rappels sur la création de processus par la primitive fork() et synchronisation de

Plus en détail

Entrée et sortie standards (stdin,stdout et cin,cout)

Entrée et sortie standards (stdin,stdout et cin,cout) Chapitre 4 Entrée et sortie standards (stdin,stdout et cin,cout) Pour réaliser les opérations élémentaires d écriture sur l écran ou de lecture des informations du clavier, le C utilise un ensemble de

Plus en détail

INF 2005 Programmation orientée objet avec C++ Texte 2

INF 2005 Programmation orientée objet avec C++ Texte 2 INF 2005 Programmation orientée objet avec C++ Texte 2 1. Mots clés du langage C++ et premiers pas... 2 1.1 Les mots clés du langage C++... 2 1.2 Familiarisation avec le langage... 3 2. Les entrées-sorties...

Plus en détail

Ch1 : Eléments de base du langage C

Ch1 : Eléments de base du langage C Ch1 : Eléments de base du langage C Fathi Mguis Atelier de programmation 1 LFSI1/LARI1 A.U : 2014-2015 Plan 1 Généralités 2 Avantages 3 Structure d un programme en C 4 Les diverse phases d un programme

Plus en détail

Introduction au langage C++

Introduction au langage C++ Introduction au langage C++ D après les notes d introductives au C++ de Stéphane Menozzi http://www.proba.jussieu.fr/~menozzi/ Maxime Pallud IMACS/X-TEC Bat 404 Tel: 01 69 33 46 86 Mail: pallud@imacs.polytechnique.fr

Plus en détail

Fonctions et procédures. Procedures: déclaration et appel

Fonctions et procédures. Procedures: déclaration et appel Cours 5 : fonctions, procédures, passage des paramètres 1 Fonctions et procédures Idée : capitaliser sur le code déjà écrit pour introduire des nouvelles commandes et opérations. On souhaite donner un

Plus en détail

Les exceptions. Cours 12. vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException...

Les exceptions. Cours 12. vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException... Cours 12 Les exceptions vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException... F.Gayral 1 Les exceptions, vous connaissez... public class

Plus en détail

L3 Info & Miage. TP-Projet SGF

L3 Info & Miage. TP-Projet SGF TP-Projet SGF 1. Introduction L objectif de ce mini-projet est de réaliser un Système de Gestion de Fichiers simplifié capable de gérer des accès à des fichiers séquentiels de type flot. L idée est ici

Plus en détail

Exceptions. Fiabilité d un logiciel. Fiabilité en Java. Erreurs/exceptions. Localisation du traitement des erreurs/exceptions.

Exceptions. Fiabilité d un logiciel. Fiabilité en Java. Erreurs/exceptions. Localisation du traitement des erreurs/exceptions. Fiabilité d un logiciel Exceptions Université Française d Egypte Version O 5.7 5/10/15 Richard Grin Robustesse : fonctionne correctement, même en présence d événements exceptionnels Correction : donne

Plus en détail

Fascicule de Génie Electrique (Terminale S option SI)

Fascicule de Génie Electrique (Terminale S option SI) Le langage C Ressource Centre d intérêt CI10 : Traitement de Thématique I11 - Les systèmes numériques : Mise en œuvre d un microcontrôleur avec des composants logiciels réutilisables. 1 Les constantes

Plus en détail

La gestion des exceptions

La gestion des exceptions La gestion des exceptions Même lorsqu un programme est au point, certaines circonstances exceptionnelles peuvent compromettre la poursuite de son exécution ; il peut s agir par exemple de données incorrectes

Plus en détail

Chapitre 15. Héritage

Chapitre 15. Héritage Chapitre 15 : Héritage 229 Chapitre 15 Héritage Chapitre 15 : Héritage 230 1. Généralités - L'héritage est le troisième des paradigmes de la programmation orientée objet (le 1 er étant l'encapsulation,

Plus en détail

Algorithmique - Programmation 1. Cours 1

Algorithmique - Programmation 1. Cours 1 Algorithmique - Programmation 1 Cours 1 Université Henri Poincaré CESS Epinal Automne 2008 1/ 24 Plan Introduction Introduction A propos d AP1 Quelques concepts de base Premiers pas avec Caml Le branchement

Plus en détail

Analyse lexicale 2014-2015

Analyse lexicale 2014-2015 Analyse (lexicale, syntaxique) L3 MIAGE Analyse lexicale Université de Lille, France 2014-2015 1 Rappels Rôle de l analyse lexicale Outils 2 Mise en oeuvre Lexème Vers l analyseur syntaxique Codage d un

Plus en détail

Petit manuel de survie pour C++

Petit manuel de survie pour C++ Département d Informatique ENS de Cachan Petit manuel de survie pour C++ François Laroussinie fl@lsv.ens-cachan.fr Année 2004-2005 Petit manuel de survie pour C++ à compléter avec les précieux commentaires

Plus en détail

Mathématiques pour. l informatique

Mathématiques pour. l informatique Xavier Chanet Patrick Vert Mathématiques pour l informatique Pour le BTS SIO Toutes les marques citées dans cet ouvrage sont des marques déposées par leurs propriétaires respectifs. Illustration de couverture

Plus en détail

Cours Info - 8. Fonctions & Modularité. D.Malka MPSI 2015-2016. D.Malka Cours Info - 8 MPSI 2015-2016 1 / 40

Cours Info - 8. Fonctions & Modularité. D.Malka MPSI 2015-2016. D.Malka Cours Info - 8 MPSI 2015-2016 1 / 40 Cours Info - 8 Fonctions & Modularité D.Malka MPSI 2015-2016 D.Malka Cours Info - 8 MPSI 2015-2016 1 / 40 Sommaire Sommaire 1 Intérêt des fonctions 2 Déclaration d une fonction 3 Appel d une fonction 4

Plus en détail

Tableaux dynamiques avec vector

Tableaux dynamiques avec vector Tableaux dynamiques avec vector Tableaux statiques Les tableaux que nous avons vus jusqu'ici sont des tableaux statiques: int tab[3]; Cette forme de tableaux vient du langage C, et est encore très utilisée.

Plus en détail

Master Informatique Fondamentale - M1 Compilation

Master Informatique Fondamentale - M1 Compilation Master Informatique Fondamentale - M1 Compilation Systèmes de types Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 8 février 2007 1 / 20 Système de types Un type

Plus en détail

Introduction à Fortran 90

Introduction à Fortran 90 Introduction à Fortran 90 Nicolas Kielbasiewicz 19 mars 2008 Fortran pour FORmula TRANslator est comme son nom l indique dédié au calcul scientifique car très performant de ce point de vue. Fortran 77

Plus en détail

Implanter un algorigramme avec le logiciel EditAlgo

Implanter un algorigramme avec le logiciel EditAlgo Implanter un algorigramme avec le logiciel EditAlgo 1. Définir la fonction de l algorithme. Exemple a : On souhaite faire clignoter une diode à la période 2s. Exemple b : On souhaite compter les impulsions

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 7. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 7. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 7 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Facult e des Sciences - Univ. Artois Janvier 2011 Exceptions

Plus en détail

Cours d informatique. 1 ère année 2014 2015

Cours d informatique. 1 ère année 2014 2015 Cours d informatique en Langage C è 1 ère année 2014 2015 L informatique à l IOGS 1A : Langage C : apprentissage d un langage de programmation structuré 3 séances Matlab : analyse numérique 2A : Langage

Plus en détail

IN 101 - Cours 05. 7 octobre 2011. Un problème concret Recherche de collisions

IN 101 - Cours 05. 7 octobre 2011. Un problème concret Recherche de collisions Un problème concret Recherche de collisions IN 101 - Cours 05 7 octobre 2011 Le paradoxe des anniversaires dit que 365 élèves sont suffisants (en moyenne) pour avoir une collision d anniversaire, deux

Plus en détail

Chapitre 1 Introduction

Chapitre 1 Introduction Chapitre 1 Introduction Jean Privat Université du Québec à Montréal INF7330 Construction de logiciels Diplôme d études supérieures spécialisées en systèmes embarqués Automne 2012 Jean Privat (UQAM) 01

Plus en détail

Reprise en main du programme d Affectation de transport en commun

Reprise en main du programme d Affectation de transport en commun Reprise en main du programme d Affectation de transport en commun Modifications indispensables pour bonne compilation : Utilisation de visual C++ express pour avoir accès à un débuggeur et un compilateur

Plus en détail

Langages de haut niveau

Langages de haut niveau Langages de haut niveau Introduction Un assembleur est un programme traduisant en code machine un programme écrit à l'aide des mnémoniques Les langages d'assemblage représentent une deuxième génération

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 2 : JUnit Nom(s) : Groupe : Date : Objectifs : Apprendre à vérifier une implantation à l aide de tests unitaires sous

Plus en détail

PC* Structure de pile

PC* Structure de pile Structure de pile I. Définition........................................... 2 I.1 Introduction..................................... 2 I.2 Opérations caractérisant une structure de pile...................

Plus en détail

Objets Avancées Semestre 3 Année 2015-2016. Projet

Objets Avancées Semestre 3 Année 2015-2016. Projet Conception et Programmation IUT d Aix-Marseille Dép. INFO Aix Objets Avancées Semestre 3 Année 2015-2016 Projet André Abramé - andre.abrame@univ-amu.fr Sophie Nabitz - sophie.nabitz@univ-avignon.fr Petru

Plus en détail

Analyse de la complexité algorithmique (1)

Analyse de la complexité algorithmique (1) Analyse de la complexité algorithmique (1) L analyse de la complexité telle que nous l avons vue jusqu à présent nous a essentiellement servi à déterminer si un problème est ou non facile (i.e. soluble

Plus en détail

De l art d écrire des programmes qui résolvent des problèmes que l on ne sait pas résoudre soi-même!

De l art d écrire des programmes qui résolvent des problèmes que l on ne sait pas résoudre soi-même! Chapitre 1 La récursivité De l art d écrire des programmes qui résolvent des problèmes que l on ne sait pas résoudre soi-même! 1.1 Définition et types de récursivité Définition 1 (Définition récursive,

Plus en détail

Introduction à l'algorithmique II

Introduction à l'algorithmique II Introduction à l'algorithmique II CHAPITRE HAPITRE: : FICHIERS F ICHIERSET ET : F ENREGISTREMENTS ANNÉE NNÉE: 2014 : 2014-2015 Fichiers Lesfichiersservent à stocker des informations de manière permanente,

Plus en détail

3 Pseudo-code et algorithmes 26

3 Pseudo-code et algorithmes 26 TABLE DES MATIÈRES 1 Introduction à la programmation 1 1.1 Programme et langage de programmation 2 1.2 Étapes du développement des programmes 2 1.3 Notion d'algorithme 6 2 Notions de base 9 2.1 Constantes

Plus en détail

Génie Logiciel I. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09

Génie Logiciel I. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Génie Logiciel I Cours II - Propriétés des éléments d une classe, généricité Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.)

Plus en détail

La Gestion des Exceptions

La Gestion des Exceptions La Gestion des Exceptions Les exceptions Les exceptions représentent le mécanisme de gestion des erreurs intégré au langage Java. Il se compose d'objets représentant les erreurs et d'un ensemble de troismotsclésquipermettentdedétecteretdetraiterceserreurs(try,

Plus en détail

La programmation Impérative par le Langage C

La programmation Impérative par le Langage C La programmation Impérative par le Langage C 1. Introduction 1.1 Qu est-ce que la programmation impérative? Un programme est constitué de plusieurs lignes d instructions. Chaque instruction permet d effectuer

Plus en détail

Déclaration et Implémentation d'une classe

Déclaration et Implémentation d'une classe Définir et Instancier une classe en Java Déclaration et Implémentation d'une classe En algorithmique (comme en C++ la plupart du temps), l'écriture du corps des méthodes (implémentation) se fait après

Plus en détail

1 Pointeurs, références, alias et tableaux

1 Pointeurs, références, alias et tableaux 1 Pointeurs, références, alias et tableaux 1 1.1 Définitions Un pointeur est une variable contenant l'adresse d'un objet en mémoire. Un pointeur est déni par le couple (type, adresse) de l'objet pointé.

Plus en détail

Complément du cours Langage C

Complément du cours Langage C Complément du cours Langage C Licence Fondamentale SMI (semestre 3) Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2013/2014 2013/2014 Pr. Ben Mamoun 1 Chapitre 9 Types structures, unions

Plus en détail

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons du cours d aujourd hui Programmation «orientée système» LANGAGE C POINTEURS (5/5) des pointeurs Complément (et mise en garde) sur Exemple pratique : listes Forçage de type (casting) Laboratoire d Intelligence

Plus en détail

LO43 : Bases fondamentales de la programmation orientée objet

LO43 : Bases fondamentales de la programmation orientée objet LO43 : Bases fondamentales de la programmation orientée objet Langage C++ Franck GECHTER franck.gechter@utbm.fr Template La Conception Orientée Objet, Liaison Statique et Liaison Dynamique Template La

Plus en détail

Machines de Turing. Chapitre 14 14.1. DÉFINITION ET FONCTIONNEMENT

Machines de Turing. Chapitre 14 14.1. DÉFINITION ET FONCTIONNEMENT Chapitre 4 Machines de Turing Dans ce chapitre on présente un modèle de calcul introduit dans les années 3 par Turing, les machines de Turing. Ces machines formalisent la notion de calculabilité. La thèse

Plus en détail

[Tutoriel : Interfaçage Visual Studio (C#) -Excel]

[Tutoriel : Interfaçage Visual Studio (C#) -Excel] [Tutoriel : Interfaçage Visual Studio (C#) -Excel] Nicolas Chari, Thomas Dordonne, Aloys Fortier, Jonathan Zilmia [Tutoriel : Interfaçage Visual Studio (C#) -Excel] 2 TABLE DES MATIERES Introduction 4

Plus en détail

Fiche de révisions - Algorithmique

Fiche de révisions - Algorithmique Fiche de révisions - Algorithmique Rédigé par : Jimmy Paquereau 1. Généralités Algorithme : un algorithme est la description d une procédure à suivre afin de résoudre un problème donné. Il n est pas nécessairement

Plus en détail

LIAISON DYNAMIQUE (1)

LIAISON DYNAMIQUE (1) LIAISON DYNAMIQUE (1) Problème : avec un pointeur de base (Employe *), on aurait besoin que la «bonne» méthode soit exécutée, en fonction du type dynamique de l objet pointé. Comment savoir quel est le

Plus en détail

Algorithmique et Structures de Données

Algorithmique et Structures de Données 1.1 Algorithmique et Structures de Données Jean-Charles Régin Licence Informatique 2ème année 1.2 Itérations Jean-Charles Régin Licence Informatique 2ème année Itération : définition 3 En informatique,

Plus en détail

Série 9: Intérêt des fonctions, portée des variables, variables statiques Buts

Série 9: Intérêt des fonctions, portée des variables, variables statiques Buts Série 9: Intérêt des fonctions, portée des variables, variables statiques Buts - La notion de fonction est fondamentale car elle permet d'atteindre deux objectifs: principe d'abstraction: offrir une vue

Plus en détail

La programmation modulaire et les fonctions

La programmation modulaire et les fonctions Chapitre 6 La programmation modulaire et les fonctions Comme tous les langages, C permet de découper un programme en plusieurs parties nommées souvent «modules». Cette programmation dite modulaire se justifie

Plus en détail

Introduction au langage C++

Introduction au langage C++ Introduction au langage C++ Chapitres traités Langage de bas niveau Langage de bas niveau (langage machine) Pourquoi le codage binaire? Les composants à l'intérieur de l'ordinateur sont des composants

Plus en détail

Utilisation des opérateurs sur les bits en PHP

Utilisation des opérateurs sur les bits en PHP Introduction Comme vous le savez sans doute, un processeur ne connaît ni les nombres entiers ni les nombres réels, ni les chaînes de caractères. La seule chose que votre processeur sait traiter ce sont

Plus en détail

Représentation des nombres en langage informatique et conséquences

Représentation des nombres en langage informatique et conséquences CHAPITRE Représentation des nombres en langage informatique et conséquences La création de la numération est un des faits les plus marquants de l histoire de l humanité. Si la plupart des civilisations

Plus en détail

Flux. Gestion des Exceptions. SmartPointer. Entrées-sortiessorties Fichiers. F. Cloppet POO Avancée M1 C++ 271

Flux. Gestion des Exceptions. SmartPointer. Entrées-sortiessorties Fichiers. F. Cloppet POO Avancée M1 C++ 271 Notions Complémentaires Flux Entrées-sortiessorties Fichiers Gestion des Exceptions SmartPointer F. Cloppet POO Avancée M1 C++ 271 Généralités Flux = séquence d octets (byte) Flux s écoulent des périphériques

Plus en détail

Compteurs, variables et afficheurs dans Automgen

Compteurs, variables et afficheurs dans Automgen Section : S Option : Sciences de l ingénieur Discipline : Génie Électrique Compteurs, variables et afficheurs dans Automgen Domaine d application : Traitement programmé de l information Type de document

Plus en détail

Cours C++ Lorsque je lance Dev C++, il apparaître l'écran ci-contre.

Cours C++ Lorsque je lance Dev C++, il apparaître l'écran ci-contre. Cours C++ Définition : Le langage C est un langage de programmation inventé par MM. Kernighan et Ritchie au début des années 70. Au début des années 90, Bjarne Stroustrup fait évoluer le langage vers le

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

ALIAS-AD. Définition LES TRAITEMENTS PAR LOTS

ALIAS-AD. Définition LES TRAITEMENTS PAR LOTS ALIAS-AD LES TRAITEMENTS PAR Définition Pour le Navigateur Internet explorer, il faut une version >= V.9 RAPPELS Les applications de gestion comprennent des traitements interactifs. On dénomme ainsi les

Plus en détail

IFT 1020 Programmation II

IFT 1020 Programmation II Département d informatique et de recherche opérationnelle Été 2005 IFT 1020 Programmation II Etienne Bergeron 7 juillet 2005 1 Explications générales Travail pratique #4 Technique de recherche, Entrées/Sorties

Plus en détail

MODULE 2. Manipulations de base avec les images. Objectifs de ce module : Ouvrir un fichier d image. Sauvegarder un fichier d image

MODULE 2. Manipulations de base avec les images. Objectifs de ce module : Ouvrir un fichier d image. Sauvegarder un fichier d image Objectifs de ce module : Ouvrir un fichier d image MODULE 2 Manipulations de base avec les images Sauvegarder un fichier d image Utiliser adéquatement la classe d image Mat. Module 2 Manipulation de base

Plus en détail

Simulation Numérique

Simulation Numérique Ecole Nationale de Techniques Avancées Simulation Numérique Chapitre 4 Surcharge des opérateurs Eric Lunéville Surcharge des opérateurs Le C++ utilise des opérateurs prédéfinis tels que + - * / sur les

Plus en détail

Catégories, extensions et sécurité

Catégories, extensions et sécurité 11 Catégories, extensions et sécurité Au sommaire de ce chapitre Catégories Extensions Contrôle des accès aux variables d instance Contrôle des accès aux méthodes Espaces de noms Sécurité Appeler des fonctions

Plus en détail

cours 4 : programmes fiables

cours 4 : programmes fiables cours 4 : programmes fiables généricité assertions généricité généricité généricité généricité possibilité d écrire des classes paramétrées par d autres classes permet de : écrire un code dépendant d un/de

Plus en détail

Programmation : Exercices

Programmation : Exercices Programmation : Exercices IUT de Villetaneuse R&T 1 ère année Laure Petrucci 6 novembre 2007 1 Premiers programmes Exercice 1.1 : Machine à dessiner On souhaite écrire un programme pour afficher des dessins.

Plus en détail

Gestion de la mémoire

Gestion de la mémoire Chapitre 9 Gestion de la mémoire Durant l exécution d un programme, les éléments manipulés par le programme sont stockés dans différents types de mémoire. La pile d exécution contient des éléments dont

Plus en détail

VII- Enumérations dans l ordre alphabétique

VII- Enumérations dans l ordre alphabétique VII- Enumérations dans l ordre alphabétique Prenons un dictionnaire. Comment savoir si un mot se trouve avant ou après un autre? On commence par comparer la première lettre de ces deux mots. Si elles sont

Plus en détail

Programmation en C++ C++ de base. Programme C++ Variables, objets, types Fonctions Namespace Tests Boucles Pointeurs, références

Programmation en C++ C++ de base. Programme C++ Variables, objets, types Fonctions Namespace Tests Boucles Pointeurs, références Programmation en C++ C++ de base Programme C++ Variables, objets, types Fonctions Namespace Tests Boucles Pointeurs, références 1 Programme C++ Le programme C++ le plus simple int main() { return 0;...

Plus en détail

GUIDE D UTILISATION PLATE-FORME WEB EN FORME AVEC MYG ET GYM

GUIDE D UTILISATION PLATE-FORME WEB EN FORME AVEC MYG ET GYM GUIDE D UTILISATION PLATE-FORME WEB EN FORME AVEC MYG ET GYM Octobre 2013 Table des matières 1. Présentation générale... 3 2. Accès à la section privilégiée... 4 2.1 Votre code d accès et votre mot de

Plus en détail

Langage de programmation C++

Langage de programmation C++ Langage de programmation C++ Mohamed Tounsi Institut Supérieur d'informatique et Mathématiques Monastir Janvier 2013 Mohamed Tounsi (ISIMM) Langage de programmation C++ Janvier 2013 1 / 14 La notion de

Plus en détail

TP Qt : Prise en main

TP Qt : Prise en main Université de Strasbourg UFR de Mathématiques et d Informatique Département d Informatique Licence 3 d Informatique IHM Année 2009/2010 TP Qt : Prise en main Objectif Le but de ce tp est une prise en main

Plus en détail

Université de Bourgogne - UFR Sciences et Technique - Programmation objet - LPSIL - 2013

Université de Bourgogne - UFR Sciences et Technique - Programmation objet - LPSIL - 2013 Nom : Prénom : Contrôle continu n 4 Programmation objet Vous devez répondre dans les cadres aux questions posées. Documents de cours et notes personnelles autorisés. Téléphones portables, ordinateurs et

Plus en détail

Introduction au Logiciel GAMS (General Algebraic Modeling System)

Introduction au Logiciel GAMS (General Algebraic Modeling System) Introduction au Logiciel GAMS (General Algebraic Modeling System) J.-M. Reneaume SOMMAIRE A. INTRODUCTION... 1 B. DESCRIPTION DU MODELE... 3 1. Structure générale du modèle... 3 a) Structure du fichier

Plus en détail

Programmation sous Python

Programmation sous Python Erwan Biland Lycée Chateaubriand - BCPST 1C Année scolaire 2014-2015 Objects du Utilisation de la console (shell ) Python calculatrice Fichier machin.py Manipulation des variables Création/affectation,

Plus en détail

Chapitre 1: Représentation des Nombres

Chapitre 1: Représentation des Nombres Chapitre 1: Représentation des Nombres 1 Représentation des entiers naturels 11 Écriture dans une base Rappels sur la base 10 Considérons un nombre entier strictement positif, par exemple N = 432 Alors,

Plus en détail