56

Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

  • Upload
    ngodieu

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Algorithmes et programmation II :Les types composés

Souheib Baarir1

1Université Paris Ouest Nanterre La Défense.

Laboratoire d'informatique de Paris 6.

[email protected]

Licence Mia - 2010/2011

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 1 / 26

Page 2: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Grandes lignes du cours

Introduction

Tableaux à deux dimensions

Les structures de donnéesLes bases sur les structuresLes structures et les pointeurs

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 2 / 26

Page 3: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Introduction

Introduction

Tableaux à deux dimensions

Les structures de donnéesLes bases sur les structuresLes structures et les pointeurs

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 3 / 26

Page 4: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Rappels et compléments

I À partir des types prédé�nis du C (char, int,�oat, etc),

I on peut créer de nouveaux types, appelés typescomposés,

I qui permettent de représenter des ensemblesorganisées de données :

I les tableaux à une dimension ;I Les tableaux à n (>1) dimensions ;I Les structures de données.

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 4 / 26

Page 5: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Rappels et compléments

I À partir des types prédé�nis du C (char, int,�oat, etc),

I on peut créer de nouveaux types, appelés typescomposés,

I qui permettent de représenter des ensemblesorganisées de données :

I les tableaux à une dimension ;I Les tableaux à n (>1) dimensions ;I Les structures de données.

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 4 / 26

Page 6: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Rappels et compléments

I À partir des types prédé�nis du C (char, int,�oat, etc),

I on peut créer de nouveaux types, appelés typescomposés,

I qui permettent de représenter des ensemblesorganisées de données :

I les tableaux à une dimension ;I Les tableaux à n (>1) dimensions ;I Les structures de données.

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 4 / 26

Page 7: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Rappels et compléments

I À partir des types prédé�nis du C (char, int,�oat, etc),

I on peut créer de nouveaux types, appelés typescomposés,

I qui permettent de représenter des ensemblesorganisées de données :

I les tableaux à une dimension ;I Les tableaux à n (>1) dimensions ;I Les structures de données.

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 4 / 26

Page 8: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Les tableaux à une dimension

Intérêt

Représenter un seul ensemble de données de même type.

L'ensemble des noms des planètes du système solaire :I planetes ={ "Mercure", "Venus", "Terre", "Mars", "Jupiter",

"Saturne", "Uranus", "Neptune" ,"Pluton" }I char* planetes[9].

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 5 / 26

Page 9: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Les tableaux à une dimension

Intérêt

Représenter un seul ensemble de données de même type.

L'ensemble des noms des planètes du système solaire :I planetes ={ "Mercure", "Venus", "Terre", "Mars", "Jupiter",

"Saturne", "Uranus", "Neptune" ,"Pluton" }

I char* planetes[9].

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 5 / 26

Page 10: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Les tableaux à une dimension

Intérêt

Représenter un seul ensemble de données de même type.

L'ensemble des noms des planètes du système solaire :I planetes ={ "Mercure", "Venus", "Terre", "Mars", "Jupiter",

"Saturne", "Uranus", "Neptune" ,"Pluton" }I char* planetes[9].

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 5 / 26

Page 11: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Les tableaux à n (>1) dimensions

Intérêt

Représenter plusieurs ensembles de données de même type.

I La �che de présence des étudiants d'un groupe à l'ensembledes séances de TD ;

I Plateaux de jeux : scrabble, sudoku ;I . . .

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 6 / 26

Page 12: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Les tableaux à n (>1) dimensions

Intérêt

Représenter plusieurs ensembles de données de même type.

I La �che de présence des étudiants d'un groupe à l'ensembledes séances de TD ;

I Plateaux de jeux : scrabble, sudoku ;I . . .

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 6 / 26

Page 13: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Les structures de données

Intérêt

Représenter une information complexe à partir d'informationsélémentaires (de types di�érents).

I Représenter les informations concernant une personne : nom,prénom, adresse,...

I Lister les constituant d'une voiture : marque, matricule,puissance,...

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 7 / 26

Page 14: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Les structures de données

Intérêt

Représenter une information complexe à partir d'informationsélémentaires (de types di�érents).

I Représenter les informations concernant une personne : nom,prénom, adresse,...

I Lister les constituant d'une voiture : marque, matricule,puissance,...

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 7 / 26

Page 15: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Tableaux à deux dimensions

Introduction

Tableaux à deux dimensions

Les structures de donnéesLes bases sur les structuresLes structures et les pointeurs

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 8 / 26

Page 16: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Déclaration et accès

Dé�nition

Pour déclarer un tableau, nomTableau, de type TypeTableau denb_lignes et nb_clonnes, on écrit :

TypeTableau nomTableau [ nb_l i gne s ] [ nb_colonnes ]

Pour accéder à l'élément situé à l'intersection de la ie ligne et de laje colonne de TypeTableau, on écrit : nomTableau[i-1][j-1]

I La �che de présence des étudiants d'un groupe à l'ensembledes séances de TD :

i n t p r e s e n c e s [NB_ETU] [NB_SEANCES ] ;

I Pour savoir si l'étudiant e a assister à la séance s :

p r e s e n c e s [ e−1] [ s −1] ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 9 / 26

Page 17: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Déclaration et accès

Dé�nition

Pour déclarer un tableau, nomTableau, de type TypeTableau denb_lignes et nb_clonnes, on écrit :

TypeTableau nomTableau [ nb_l i gne s ] [ nb_colonnes ]

Pour accéder à l'élément situé à l'intersection de la ie ligne et de laje colonne de TypeTableau, on écrit : nomTableau[i-1][j-1]

I La �che de présence des étudiants d'un groupe à l'ensembledes séances de TD :

i n t p r e s e n c e s [NB_ETU] [NB_SEANCES ] ;

I Pour savoir si l'étudiant e a assister à la séance s :

p r e s e n c e s [ e−1] [ s −1] ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 9 / 26

Page 18: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : score d'un match de tennis en 3 sets

#define NB_L 2#define NB_C 3i n t s c o r e [NB_L ] [NB_C] ;

Exercice : un peu d'algorithmique... !

Q1 : Combien y a-t-il eu de jeux joués ?

Q2 : Combien chaque joueur a gagné de jeux ?

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 10 / 26

Page 19: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : score d'un match de tennis en 3 sets

#define NB_L 2#define NB_C 3i n t s c o r e [NB_L ] [NB_C] ;

Exercice : un peu d'algorithmique... !

Q1 : Combien y a-t-il eu de jeux joués ?

Q2 : Combien chaque joueur a gagné de jeux ?

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 10 / 26

Page 20: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : score d'un match de tennis en 3 sets

#define NB_L 2#define NB_C 3i n t s c o r e [NB_L ] [NB_C] ;

Exercice : un peu d'algorithmique... !

Q1 : Combien y a-t-il eu de jeux joués ?

Q2 : Combien chaque joueur a gagné de jeux ?

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 10 / 26

Page 21: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Les structures de données

Introduction

Tableaux à deux dimensions

Les structures de donnéesLes bases sur les structuresLes structures et les pointeurs

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 11 / 26

Page 22: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Outline

Introduction

Tableaux à deux dimensions

Les structures de donnéesLes bases sur les structuresLes structures et les pointeurs

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 12 / 26

Page 23: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Les bases sur les structures

Introduction

Tableaux à deux dimensions

Les structures de donnéesLes bases sur les structuresLes structures et les pointeurs

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 13 / 26

Page 24: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Dé�nition d'une structure

Dé�nition

Une structure est un �nouveau� type de données, dé�nit par leprogrammer, qui rassemble une ou plusieurs variables (membres),et qui peuvent être de types di�érents.

I Syntaxe de dé�nition :

struct nouvType {type 1 va r 1 ;t ype 2 va r 2 ;. . .t ype n va r n ;

} ;

I Syntaxe de redé�nition :

typedef struct nouvType nomType ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 14 / 26

Page 25: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Dé�nition d'une structure

Dé�nition

Une structure est un �nouveau� type de données, dé�nit par leprogrammer, qui rassemble une ou plusieurs variables (membres),et qui peuvent être de types di�érents.

I Syntaxe de dé�nition :

struct nouvType {type 1 va r 1 ;t ype 2 va r 2 ;. . .t ype n va r n ;

} ;

I Syntaxe de redé�nition :

typedef struct nouvType nomType ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 14 / 26

Page 26: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Dé�nition d'une structure

Dé�nition

Une structure est un �nouveau� type de données, dé�nit par leprogrammer, qui rassemble une ou plusieurs variables (membres),et qui peuvent être de types di�érents.

I Syntaxe de dé�nition :

struct nouvType {type 1 va r 1 ;t ype 2 va r 2 ;. . .t ype n va r n ;

} ;

I Syntaxe de redé�nition :

typedef struct nouvType nomType ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 14 / 26

Page 27: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : dé�nition des nombres complexes (l'ensemble C)

I Rappel : les nombres complexes sont composés d'une partie

réelle et d'une partie imaginaire. .

I En langage C, la manipulation de tels nombre nécessite ladé�nition d'un nouveau type de données, comprenant les deuxparties réel et imaginaire.

I Dé�nition :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;

I Redé�nition :

typedef struct complexe sComplexe ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 15 / 26

Page 28: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : dé�nition des nombres complexes (l'ensemble C)

I Rappel : les nombres complexes sont composés d'une partie

réelle et d'une partie imaginaire. .

I En langage C, la manipulation de tels nombre nécessite ladé�nition d'un nouveau type de données, comprenant les deuxparties réel et imaginaire.

I Dé�nition :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;

I Redé�nition :

typedef struct complexe sComplexe ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 15 / 26

Page 29: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : dé�nition des nombres complexes (l'ensemble C)

I Rappel : les nombres complexes sont composés d'une partie

réelle et d'une partie imaginaire. .

I En langage C, la manipulation de tels nombre nécessite ladé�nition d'un nouveau type de données, comprenant les deuxparties réel et imaginaire.

I Dé�nition :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;

I Redé�nition :

typedef struct complexe sComplexe ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 15 / 26

Page 30: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : dé�nition des nombres complexes (l'ensemble C)

I Rappel : les nombres complexes sont composés d'une partie

réelle et d'une partie imaginaire. .

I En langage C, la manipulation de tels nombre nécessite ladé�nition d'un nouveau type de données, comprenant les deuxparties réel et imaginaire.

I Dé�nition :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;

I Redé�nition :

typedef struct complexe sComplexe ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 15 / 26

Page 31: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Déclaration des variables de type structure

Règle

Pour déclarer une variable d'une structure, on utilise la mêmesyntaxe que pour les types de base.

I Syntaxe de déclaration (sans utiliser la redé�nition) :

struct nouvType x , y , . . . ;

I Syntaxe de déclaration (en utilisant la redé�nition) :

nomType x , y , . . . ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 16 / 26

Page 32: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Déclaration des variables de type structure

Règle

Pour déclarer une variable d'une structure, on utilise la mêmesyntaxe que pour les types de base.

I Syntaxe de déclaration (sans utiliser la redé�nition) :

struct nouvType x , y , . . . ;

I Syntaxe de déclaration (en utilisant la redé�nition) :

nomType x , y , . . . ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 16 / 26

Page 33: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Déclaration des variables de type structure

Règle

Pour déclarer une variable d'une structure, on utilise la mêmesyntaxe que pour les types de base.

I Syntaxe de déclaration (sans utiliser la redé�nition) :

struct nouvType x , y , . . . ;

I Syntaxe de déclaration (en utilisant la redé�nition) :

nomType x , y , . . . ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 16 / 26

Page 34: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : Utilisation de la dé�nition des nombres complexes

I Dé�nition :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;

typedef struct complexe sComplexe ;

I Déclaration d'une variable x de type complexe :I sans utiliser la redé�nition :

struct complexe x ;

I en utilisant la redé�nition :

sComplexe x ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 17 / 26

Page 35: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : Utilisation de la dé�nition des nombres complexes

I Dé�nition :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;

typedef struct complexe sComplexe ;

I Déclaration d'une variable x de type complexe :I sans utiliser la redé�nition :

struct complexe x ;

I en utilisant la redé�nition :

sComplexe x ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 17 / 26

Page 36: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : Utilisation de la dé�nition des nombres complexes

I Dé�nition :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;

typedef struct complexe sComplexe ;

I Déclaration d'une variable x de type complexe :I sans utiliser la redé�nition :

struct complexe x ;

I en utilisant la redé�nition :

sComplexe x ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 17 / 26

Page 37: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Accès aux variables (membres) d'une structure

Règle

On accède aux di�érentes variables d'une structure grâce à l'opé-rateur membre de structure, noté �.� .

I Dé�nition et déclaration :

struct nouvType {type 1 va r 1 ;. . .t ype n va r n ;

} ;struct nouvType x ;

I Accès au membre varj de x : x.varj

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 18 / 26

Page 38: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Accès aux variables (membres) d'une structure

Règle

On accède aux di�érentes variables d'une structure grâce à l'opé-rateur membre de structure, noté �.� .

I Dé�nition et déclaration :

struct nouvType {type 1 va r 1 ;. . .t ype n va r n ;

} ;struct nouvType x ;

I Accès au membre varj de x : x.varj

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 18 / 26

Page 39: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Accès aux variables (membres) d'une structure

Règle

On accède aux di�érentes variables d'une structure grâce à l'opé-rateur membre de structure, noté �.� .

I Dé�nition et déclaration :

struct nouvType {type 1 va r 1 ;. . .t ype n va r n ;

} ;struct nouvType x ;

I Accès au membre varj de x : x.varj

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 18 / 26

Page 40: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : accès aux membres des nombres complexes

I Rappel : la somme de deux nombre complexe z1 = (r1, i1) etz2 = (r2, i2) est le nombre complexe z3 = (r1 + r2, i1 + i2).

I Dé�nition et déclaration :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;typedef struct complexe sComplexe ;sComplexe z1 , z2 , z3 ;

I Initialisation et accès :

z1 = {3 ,4} ;z2 = {2 . 5 , 8 } ;z3 . r e e l = z1 . r e e l + z2 . r e e l ;z3 . im a g i n a i r e = z1 . im a g i n a i r e +

z2 . im a g i n a i r e ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 19 / 26

Page 41: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : accès aux membres des nombres complexes

I Rappel : la somme de deux nombre complexe z1 = (r1, i1) etz2 = (r2, i2) est le nombre complexe z3 = (r1 + r2, i1 + i2).

I Dé�nition et déclaration :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;typedef struct complexe sComplexe ;sComplexe z1 , z2 , z3 ;

I Initialisation et accès :

z1 = {3 ,4} ;z2 = {2 . 5 , 8 } ;z3 . r e e l = z1 . r e e l + z2 . r e e l ;z3 . im a g i n a i r e = z1 . im a g i n a i r e +

z2 . im a g i n a i r e ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 19 / 26

Page 42: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : accès aux membres des nombres complexes

I Rappel : la somme de deux nombre complexe z1 = (r1, i1) etz2 = (r2, i2) est le nombre complexe z3 = (r1 + r2, i1 + i2).

I Dé�nition et déclaration :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;typedef struct complexe sComplexe ;sComplexe z1 , z2 , z3 ;

I Initialisation et accès :

z1 = {3 ,4} ;z2 = {2 . 5 , 8 } ;z3 . r e e l = z1 . r e e l + z2 . r e e l ;z3 . im a g i n a i r e = z1 . im a g i n a i r e +

z2 . im a g i n a i r e ;

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 19 / 26

Page 43: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

ok, pas ok !

struct nouvType {type1 va r1 ;. . .typen varn ;

} ;struct nouvType x = {v1 , . . . , vn } , y ;

I La copie (ou l'a�ectation) d'une structure :

y = x ; /∗ ok ! L ' e f f e t e s td ' a f f e c t e r l a v a l e u r de chaquemembre de x , dans l e même membre de y . ∗/

I La comparaison entre deux structure :

i f ( y == x ) { . . . } /∗ pas ok ! ∗/

i f ( y . va r1 == x . va r1 &&...&& y . varn == x . varn ) { . . . }/∗ ok ! ∗/

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 20 / 26

Page 44: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

ok, pas ok !

struct nouvType {type1 va r1 ;. . .typen varn ;

} ;struct nouvType x = {v1 , . . . , vn } , y ;

I La copie (ou l'a�ectation) d'une structure :

y = x ; /∗ ok ! L ' e f f e t e s td ' a f f e c t e r l a v a l e u r de chaquemembre de x , dans l e même membre de y . ∗/

I La comparaison entre deux structure :

i f ( y == x ) { . . . } /∗ pas ok ! ∗/

i f ( y . va r1 == x . va r1 &&...&& y . varn == x . varn ) { . . . }/∗ ok ! ∗/

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 20 / 26

Page 45: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

ok, pas ok !

struct nouvType {type1 va r1 ;. . .typen varn ;

} ;struct nouvType x = {v1 , . . . , vn } , y ;

I La copie (ou l'a�ectation) d'une structure :

y = x ; /∗ ok ! L ' e f f e t e s td ' a f f e c t e r l a v a l e u r de chaquemembre de x , dans l e même membre de y . ∗/

I La comparaison entre deux structure :

i f ( y == x ) { . . . } /∗ pas ok ! ∗/

i f ( y . va r1 == x . va r1 &&...&& y . varn == x . varn ) { . . . }/∗ ok ! ∗/

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 20 / 26

Page 46: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

ok, pas ok !

struct nouvType {type1 va r1 ;. . .typen varn ;

} ;struct nouvType x = {v1 , . . . , vn } , y ;

I La copie (ou l'a�ectation) d'une structure :

y = x ; /∗ ok ! L ' e f f e t e s td ' a f f e c t e r l a v a l e u r de chaquemembre de x , dans l e même membre de y . ∗/

I La comparaison entre deux structure :

i f ( y == x ) { . . . } /∗ pas ok ! ∗/

i f ( y . va r1 == x . va r1 &&...&& y . varn == x . varn ) { . . . }/∗ ok ! ∗/

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 20 / 26

Page 47: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exercice : les structures, les tableaux et les fonctions

Soit un tableau de n nombre complexes.

I Écrivez la fonction, somme, qui permet de calculer la somme detous les nombres complexes du tableau, en considérant que :

I le tableau est une variable globale ;I le tableau est un paramètre de la fonction.

I Écrivez la fonction, affiche, qui a�che le nombre complexe z

sous la forme : z = a + ib, où a est la partie réelle et b est lapartie imaginaire.

I En utilisant les fonctions précédentes, écrivez la fonction main

qui calcule la somme des nombre complexes z1 = 3+ i5,z2 = 5.3+ i6.9 et z3 = 2.4+ i8.4 et qui a�che le résultat.

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 21 / 26

Page 48: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Outline

Introduction

Tableaux à deux dimensions

Les structures de donnéesLes bases sur les structuresLes structures et les pointeurs

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 22 / 26

Page 49: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Les structures et les pointeurs

Introduction

Tableaux à deux dimensions

Les structures de donnéesLes bases sur les structuresLes structures et les pointeurs

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 23 / 26

Page 50: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Dé�nition

I Considérons la structure suivante :

struct nouvType {type 1 va r 1 ;. . .t ype n va r n ;

} ;typedef struct nouvType Type ;

I La déclaration d'un pointeur sur la structure Type se fait par :

Type *p ;

I L'allocation dynamique de l'espace-mémoire pour stocker lastructure Type se fait par :

p = (Type *) malloc (sizeof(Type));

I L'accès à la donnée vari de la structure Type, pointée par p,se fait par : (*p).vari ou p->vari

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 24 / 26

Page 51: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Dé�nition

I Considérons la structure suivante :

struct nouvType {type 1 va r 1 ;. . .t ype n va r n ;

} ;typedef struct nouvType Type ;

I La déclaration d'un pointeur sur la structure Type se fait par :

Type *p ;I L'allocation dynamique de l'espace-mémoire pour stocker la

structure Type se fait par :

p = (Type *) malloc (sizeof(Type));

I L'accès à la donnée vari de la structure Type, pointée par p,se fait par : (*p).vari ou p->vari

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 24 / 26

Page 52: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Dé�nition

I Considérons la structure suivante :

struct nouvType {type 1 va r 1 ;. . .t ype n va r n ;

} ;typedef struct nouvType Type ;

I La déclaration d'un pointeur sur la structure Type se fait par :

Type *p ;I L'allocation dynamique de l'espace-mémoire pour stocker la

structure Type se fait par :

p = (Type *) malloc (sizeof(Type));

I L'accès à la donnée vari de la structure Type, pointée par p,se fait par : (*p).vari ou p->vari

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 24 / 26

Page 53: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : pointeur sur la structure complexe

I Dé�nition et déclaration :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;typedef struct complexe sComplexe ;sComplexe z1 , ∗ z2 ;

I Création de pointeur :

z1 = {3 ,4} ;z2 = ( sComplexe ∗) ma l l o c ( sizeof ( sComplexe ) ) ;z2−>r e e l=z1 . r e e l ;z2−>imag i n a i r e=z1 . im a g i n a i r e ;p r i n f t ( " z2 = %f + j%f \n" , z2−>r e e l , z2−>imag i n a i r e ) ;

la sortie sera : z2 = 3 + j4

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 25 / 26

Page 54: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : pointeur sur la structure complexe

I Dé�nition et déclaration :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;typedef struct complexe sComplexe ;sComplexe z1 , ∗ z2 ;

I Création de pointeur :

z1 = {3 ,4} ;z2 = ( sComplexe ∗) ma l l o c ( sizeof ( sComplexe ) ) ;z2−>r e e l=z1 . r e e l ;z2−>imag i n a i r e=z1 . im a g i n a i r e ;p r i n f t ( " z2 = %f + j%f \n" , z2−>r e e l , z2−>imag i n a i r e ) ;

la sortie sera : z2 = 3 + j4

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 25 / 26

Page 55: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exemple : pointeur sur la structure complexe

I Dé�nition et déclaration :

struct complexe {double r e e l ;double i m a g i n a i r e ;

} ;typedef struct complexe sComplexe ;sComplexe z1 , ∗ z2 ;

I Création de pointeur :

z1 = {3 ,4} ;z2 = ( sComplexe ∗) ma l l o c ( sizeof ( sComplexe ) ) ;z2−>r e e l=z1 . r e e l ;z2−>imag i n a i r e=z1 . im a g i n a i r e ;p r i n f t ( " z2 = %f + j%f \n" , z2−>r e e l , z2−>imag i n a i r e ) ;

la sortie sera : z2 = 3 + j4

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 25 / 26

Page 56: Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S. Baarir (Pris10/LIP6)aLes yptes composésL2 Mia - 2010/2011 2 / 26. Introduction

Exercice : les structures, les tableaux, les pointeurs et lesfonctions

Soit un tableau de n pointeurs sur des nombres complexes.

I Écrivez la fonction, somme, qui permet de calculer la somme detous les nombres complexes du tableau, en considérant que letableau est un paramètre de la fonction.

I En utilisant les fonctions précédentes, écrivez la fonction main

qui calcule la somme des nombre complexes z1 = 3+ i5,z2 = 5.3+ i6.9 et z3 = 2.4+ i8.4 et qui a�che le résultat.

S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 26 / 26