Académique Documents
Professionnel Documents
Culture Documents
Tableau de structures :
18 décembre 2019
1/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Le type structure :
Tableau de structures :
Plan du Cours
1 Le type structure :
2 Tableau de structures :
Domaines d’utilisation :
Déclaration :
Schéma d’un tableau des structures :
Compréhension de base :
Exemples sur les tableaux des structures :
2/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Outline
1 Le type structure :
introduction
Déclaration et terminologie :
Manipulation du type structure :
Accès à un champ d’une structure :
Cas spécial : Pointeur vers le type structure :
L’initialisation d’une structure
Affectation entre deux variables de type structure :
Comparaison entre deux variables de type structure :
Retour de structures dans une fonction
exercices
2 Tableau de structures :
3/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Introduction
Rappels
En C il exite deux grandes familles de types :
Type scalaires : entiers( int, char, long...), flottants(double,
float...) et pointeurs.
Type composés : Tableaux et Types structures.
4/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Domaines d’utilisation
5/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
struct
Le type structure (struct) en C est semblable au type
enregistrement (record) dans le langage PASCAL.
C’est une collection des champs qui peuvent être de types
différents.
6/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Exemple
Une personne est une structure avec les champs possibles
suivants :
nom et prénom : chaı̂ne de caractères
taille et poids : réels
âge : entier
sexe : caractère
etc ...
7/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
10/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Outline
1 Le type structure :
introduction
Déclaration et terminologie :
Manipulation du type structure :
Accès à un champ d’une structure :
Cas spécial : Pointeur vers le type structure :
L’initialisation d’une structure
Affectation entre deux variables de type structure :
Comparaison entre deux variables de type structure :
Retour de structures dans une fonction
exercices
2 Tableau de structures :
11/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Déclaration et terminologie
12/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Déclaration
Façon 1 :
Déclaration directe sans le nom du type structure.
struct
{ int numero ;
float taille, poids ;
char sexe ;
} pers1, pers2 ;
Déclaration
Façon 2 :
Déclaration avec le nom du type structure.
on déclare d’abord le type :
struct Personne
{ int numero ;
float taille, poids ;
char sexe ;
};
Déclaration
Façon 2 :
Si on veut déclarer d’autres informations de ce type, il suffit de se
référer au type ”struct Personne”.
Exemples :
Déclaration
Façon 3 :
déclarer en même temps le type et les variables.
struct Personne
{
int numero ;
float taille, poids ;
char sexe ;
} pers1, pers2 ;
16/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Déclaration
Façon 4 :
déclarer en utilisant ”typedef”.
typedef struct
{
int numero ;
float taille, poids ;
char sexe ;
Déclaration
Remarques
Il est fortement sohaitable d’utiliser la 4 ième façon.
Avec la déclaration selon la 4 ième façon :
Personne est le nom du type structure qui dispose de 4
champs d’information.
numero est le nom d’un champ de type entier. taille et poids
sont deux champs de type réels. sexe est un champ de type
caractère.
pers1 et pers2 sont deux variables de type structure dont le
nom est Personne.
18/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Déclaration
19/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Déclaration
struct Date
{
int jour;
int mois;
int an;
};
20/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Déclaration
struct Membre
{
char nom[80];
char adresse[200];
int numero;
float amende[10];
struct Date emprunt;
struct Date creation;
};
21/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Déclaration
struct Membre m = {
”Mohamed Taha”,
”Rue Mekka, 9, 24000 Casablanca”,
42,
{ 0.0 },
{ 0, 0, 0 },
{ 5, 12, 2019 }
};
22/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Déclaration
Exemple
Écrire les déclarations d’une variable ”unEtud” de type ”Etudiant”
pour la gestion de ses notes.
Un etudiant est identifié par un nom et un prénom, ses notes
dans les différents modules et son code apogee.
23/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Déclaration
Solution :
Etudiant unEtud ;
24/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Déclaration
Exercice :
Écrire les déclarations d’une variable ”unEmp” de type ”Employe”
qui comporte les champs d’informations suivantes :
nom et prénom
numéro d’employé
numéro d’assurance sociale
âge
salaire hebdomadaire
poste de travail (parmi les postes : analyste, programmeur,
opérateur, secrétaire)
25/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Outline
1 Le type structure :
introduction
Déclaration et terminologie :
Manipulation du type structure :
Accès à un champ d’une structure :
Cas spécial : Pointeur vers le type structure :
L’initialisation d’une structure
Affectation entre deux variables de type structure :
Comparaison entre deux variables de type structure :
Retour de structures dans une fonction
exercices
2 Tableau de structures :
26/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
L’opérateur .
le C utilise l’opérateur point ”.” pour accéder à un champ d’une
variable de type structure :
variable_de_type_structure . champ
27/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Exemple 1
Écrire les instructions pour donner à la ”pers1” les informations
suivantes : C’est un homme qui mesure 1.67 mètre et pèse
67.8 kgs. Son numéro d’identification est le 7234.
28/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Exemple 1
Écrire les instructions pour donner à la ”pers1” les informations
suivantes : C’est un homme qui mesure 1.67 mètre et pèse
67.8 kgs. Son numéro d’identification est le 7234.
pers1.numero = 7234 ;
pers1.sexe = 'M' ;
pers1.taille = 1.67 ;
pers1.poids = 67.8 ;
28/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Exemple 2
Écrire les instructions pour afficher les informations de ”pers1” à
l’écran :
29/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Exemple 2
Écrire les instructions pour afficher les informations de ”pers1” à
l’écran :
29/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Exemple 3
Accès aux champs d’une structure contenant une structure :
struct Membre m;
::::::
printf(”\nDate d'emprunt %d/%d/%d\n”, m.emprunt.jour,
m.emprunt.mois, m.emprunt.an);
:::::
30/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Avec la déclaration :
Personne ∗ P ;
Initialisation de structure
32/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Exemple
newP = P ;
est équivalent à
newP.numero = P.numero ;
newP.sexe = P.sexe ;
newP.taille = P.taille ;
newP.poids = P.poids
33/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Avec
pers1 = pers2 ;
/∗ pers1 contiendra toutes les informations de pers2.∗/
Exemple :
Écrire une fonction permettant d’échanger les informations de deux
personnes (de type Personne) :
34/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Solution :
temporaire = ∗P1 ;
∗P1 = ∗P2 ;
∗P2 = temporaire ;
}
35/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Attention
La comparaison directe de deux informations de type structure
36/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
.......
37/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
typedef struct
{ float real_part;
float imag_part;
} Complex ;
Complex c;
38/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
result.real_part += b.real_part;
result.imag_part += b.imag_part;
return result;
}
:::::::
//appel de la fonction add
c3 = add(c1, c2); /∗ c3 = c1 + c2 ∗/
::::::: 39/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Outline
1 Le type structure :
introduction
Déclaration et terminologie :
Manipulation du type structure :
Accès à un champ d’une structure :
Cas spécial : Pointeur vers le type structure :
L’initialisation d’une structure
Affectation entre deux variables de type structure :
Comparaison entre deux variables de type structure :
Retour de structures dans une fonction
exercices
2 Tableau de structures :
40/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Exercices
Exercice 1 :
Écrire un programme permettant de :
saisir les informations d’une personne (type Personne) en
utilisant une fonction dont l’argument est transmis par
pointeur : void saisir ( Personne * P )
appeler la fonction ”saisir” 2 fois pour obtenir les informations
de deux personnes différentes ;
afficher les informations de ces deux personnes avec une
fonction du genre : void afficher ( Personne unePers )
échanger (permuter) les informations de ces deux personnes
en utilisant une fonction ;
réafficher de nouveau les informations de ces deux personnes
41/65
après l’échange.
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
introduction
Le type structure : Déclaration et terminologie :
Tableau de structures : Manipulation du type structure :
exercices
Exercices
Indications : La lecture suivante est parfaitement valide :
Exercices
Exercice 2 :
Écrire un programme en mode interactif permettant de gérer les
notes d’un seul étudiant (type structure). Les champs prévus sont :
nomPre : une chaı̂ne de 30 caractères
numIns : un entier
note : un tableau de 7 notes
mention : chaı̂ne de caractères
43/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Outline
1 Le type structure :
2 Tableau de structures :
Domaines d’utilisation :
Déclaration :
Schéma d’un tableau des structures :
Compréhension de base :
Exemples sur les tableaux des structures :
44/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Domaines d’utilisation
Outline
1 Le type structure :
2 Tableau de structures :
Domaines d’utilisation :
Déclaration :
Schéma d’un tableau des structures :
Compréhension de base :
Exemples sur les tableaux des structures :
46/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Déclaration
47/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Déclaration
Solution :
typedef struct
{
char sexe ;
float taille, poids ;
}Personne ;
Personne pers[MAX_PERS] ;
Outline
1 Le type structure :
2 Tableau de structures :
Domaines d’utilisation :
Déclaration :
Schéma d’un tableau des structures :
Compréhension de base :
Exemples sur les tableaux des structures :
49/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
50/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Outline
1 Le type structure :
2 Tableau de structures :
Domaines d’utilisation :
Déclaration :
Schéma d’un tableau des structures :
Compréhension de base :
Exemples sur les tableaux des structures :
51/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Discussion
52/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Discussion
//La déclaration :
Personne ∗ P ;
//rend valide l'affectation suivante :
P = pers ;
//Cette affectation est équivalente à :
P = &pers[0] ;
//De plus,
∗(P + i) est équivalent à pers[i].
//Ainsi :
∗(P + i).taille est pers[i].taille
//Donc,
(P + i) −> taille est pers[i].taille
53/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Outline
1 Le type structure :
2 Tableau de structures :
Domaines d’utilisation :
Déclaration :
Schéma d’un tableau des structures :
Compréhension de base :
Exemples sur les tableaux des structures :
54/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Exemple
Exemple
On dispose du fichier texte ”Personne.txt” :
Amina Darif F 1.63 54.88
Mohamed Amine M 1.57 56.25
Khalid Ibrahimi M 1.43 42.50
:: :: :: ::
Écrire un programme en C permettant de lire le fichier et de :
1 créer un tableau de personnes
2 afficher la liste des 10 premières personnes
3 compter et afficher le nombre de personnes dont :
la taille dépasse 1.80 mètre
le poids dépasse 56.78 kgs
55/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Solution
Personne pers[MAX_PERS] ;
int nbPers ; 56/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Solution
void continuer()
{
printf(”Appuyez sur Entrée ”);
fflush(stdin);
getchar();
}
57/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Solution
58/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Solution
while (!feof(donnees)) {
/∗ On lit 30 caractères pour un nom et prénom et on fait
déposer le caractère '\0' à la fin∗/
fgets(pers[n].nomPre, LONG_NP+1, donnees);
Solution
int nombre (Personne pers[], int nbPers, int code, float borne)
{
int k = 0 , i ;
return k ;
}
60/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Solution
Continuer(); 61/65
} Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Solution
void main()
{ lireCreer (Pers, &nbPers);
afficher(Pers, nbPers);
printf(”\n\n”);
printf(”Le nombre de personnes dont la taille dépasse”
” 1.80 mètre :%3d\n”, nombre(Pers, nbPers, 1, 1.80));
continuer();
} 62/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
Solution
Exécution :
Solution
64/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures
Domaines d’utilisation :
Déclaration :
Le type structure :
Schéma d’un tableau des structures :
Tableau de structures :
Compréhension de base :
Exemples sur les tableaux des structures :
The End
65/65
Pr Mostafa SAADI – ENSAK Programmation C : CH8 - Les Structures