La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

8PRO100 Éléments de programmation Les types composés.

Présentations similaires


Présentation au sujet: "8PRO100 Éléments de programmation Les types composés."— Transcription de la présentation:

1 8PRO100 Éléments de programmation Les types composés

2 Types composés En plus des types de base (entier, réels, charactères, etc) il est possible dans la plupart des langages de programmation de définir ses propres types. Il sagit en fait de rassembler une ou plusieurs variables, qui peuvent être de types différents, et de les regrouper sous un seul nom afin de les manipuler plus facilement.

3 Exemple Un nombre complexe est un nombre de la forme a + b*i où a et b sont des nombres réels et le symbole i vaut On doit d'abord définir un nouveau type dont le nom est complexe. Ce nouveau type aura l'espace mémoire nécessaire pour contenir les 2 nombre réels a et b. Après la déclaration: complexe x la mémoire associée sera: x.a: x.b: réel

4 Exemple en C struct complexe { double reel; double imag; }; struct complexe x; x.reel: x.imag: double

5 Où définir un nouveau type #include struct complexe { double reel; double imag; }; fonction(...){ struct complexe x; } Si on défini un nouveau type à lintérieur dune fonction alors il ne sera visible quà lintérieur de cette fonction. Pour quun type composé soit visible dans toutes les fonctions dun fichier, il faut le déclarer au début du fichier, à lextérieur de toute fonction. Note: La même chose sapplique à la déclaration de variables: cest ce que lon appelle les variables globales.

6 Assignation d'une valeur dans une structure struct complexe { double reel; double imag; }; struct complexe x; x.reel = 5; x.imag = 3; 5 3 x.reel: x.imag:

7 Accéder aux membres dune structure struct complexe x, y, z; x.reel = 5; x.imag = 3; y = x; z.reel = x.réel; z.imag = 8; 5 3 x.reel: x.imag: 5 y.reel: 3 y.imag: 5 z.reel: 8 z.imag:

8 Comparer deux structures if (x == y) printf(Deux structures égales); if (x != z) printf(Deux structures différentes); 5 3 x.reel: x.imag: 5 y.reel: 3 y.imag: 5 z.reel: 8 z.imag:

9 Les structures et les fonctions On peut passer des structures en paramètre. On peut utiliser les structures comme valeur de retour. Contrairement aux tableaux, les structures sont passées par copie.

10 Exemple struct complexe somme(struct complexe x, struct complexe y){ struct complexe a; a.reel = x.reel + y.reel; a.imag = x.imag + y.imag; return a; }

11 typedef Dans lexemple précédent, il est laborieux davoir à écrire autant de struct complexe. Le C fournit une fonctionnalité appelée typedef servant à créer des noms de nouveaux types de donnéees. Exemple: typedef struct complexe Complexe Complexe x, y; Le nom Complexe devient synonyme de struct complexe

12 Les structures contenant des structures Les membres dun type composé peuvent être eux mêmes des variables de types composé différents. En C, cela se traduit par le fait quune structure peut être membre dune autre structure.

13 Exemple struct point{ int x; int y; }; struct point p1={2, 1}, p2={8, 5}; 0 1 2 3 4 5 6 7 8 9 543210543210 y x p1 p2

14 Exemple struct rect{ struct point q1; struct point q2; }; struct rect r ; r.q1.x = p1.x; r.q1.y = p1.y; r.q2.x = p2.x; r.q2.y = p2.y; ou encore: r.q1=p1; r.q2=p2; 0 1 2 3 4 5 6 7 8 9 543210543210 y x p1 p2

15 Remarque Le type des membres ne peut pas être la structure elle-même. Ainsi lexemple suivant est invalide. struct objet{ int n; struct objet x; } Mais lexemple suivant est valide et même très courant struct objet{ int n; struct *objet x; }

16 Les tableaux de structures On peut faire des tableaux de types composés tout comme on peut faire des tableaux de type de base. Exemple: struct complexe tab[1000]; for (i=0; i<1000; i=i+1){ tab[i].reel = 0; tab[i].imag = 0; } tab[0].reeltab[1].reel tab[999].reel... tab: tab[0].imagtab[1].imag tab[999].imag...

17 Les structures et les pointeurs Lopérateur de prise dadresse & fonctionne avec les structures. On peut définir des pointeurs sur des types composés. struct complexe *pc, x; pc = &x; (*pc).reel = 3; (*pc).imag = 5; Remarque: Les parenthèse sont nécessaires puisque lopérateur. a une priorité supérieure à lopérateur *.

18 Les structures et les pointeurs Les pointeurs de structures sont si fréquemment utilisés quil existe une notation abrégée. Exemple: struct complexe *p, x; pc = &x; pc->reel = 3;/* identique à (*pc).reel=3 */ pc->imag = 5;/* identique à (*pc).imag=5 */

19 La taille dune structure Le nombre doctets alloués pour chaque variable dun type composé nest pas toujour la somme de la taille de ses membres. Exemple: struct exemple{ char c1, c2, c3; int n; } x; Sur sunens il y a toujours un nombre pair doctets réservés pour chaque variable (sauf si un seul octet est nécessaire). Donc, 8 octets seront alloués pour x, cest-à-dire quun octet sera perdu.

20 La taille dune structure Le C dispose dun opérateur permettant de déterminer le nombre doctets nécessaires pour mémoriser un objet du type de son opérande. sizeof expression(Lexpresion nest pas évalué) sizeof (nom de type) exemple: sizeof a vaut 1 sizeof (char) vaut 1 sizeof (121+434)/2 vaut 4 sur sunens sizeof (int) vaut 4 sur sunens sizeof (struct complexe) vaut 8 sur sunens

21 Exemple Supposons quune banque utilise un ordinateur pour conserver les principales informations sur ses clients. On associe à chaque client une variable dont le type est une structure qui pourrais ressembler à ce qui suit. structure client{ int folio; char prenom[15]; char nom[15]; int solde; int type_de_compte; char *imprimer; /* ce qui reste à imprimer dans le livret */ int derniere_transaction; };

22 Exemple Supposons quune banque utilise un ordinateur pour conserver les principales informations sur ses clients. On associe à chaque client une variable dont le type est une structure qui pourrais ressembler à ce qui suit. structure client{ int folio; char prenom[15]; char nom[15]; int solde; int type_de_compte; char *imprimer; /* ce qui reste à imprimer dans le livret */ int derniere_transaction; };


Télécharger ppt "8PRO100 Éléments de programmation Les types composés."

Présentations similaires


Annonces Google