Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S....
Transcript of Algorithmes et programmation II : Les types composés de... · Les structures et les pointeurs S....
Algorithmes et programmation II :Les types composés
Souheib Baarir1
1Université Paris Ouest Nanterre La Défense.
Laboratoire d'informatique de Paris 6.
Licence Mia - 2010/2011
S. Baarir (Paris10/LIP6) Les types composés L2 Mia - 2010/2011 1 / 26
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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