0% ont trouvé ce document utile (0 vote)
2 vues16 pages

Structures

Le document traite des structures de données en C, expliquant leur déclaration, utilisation et manipulation. Il aborde également l'utilisation de typedef pour simplifier la déclaration de types structurés et comment les structures peuvent être utilisées comme arguments de fonctions. Enfin, il propose un exercice pratique sur la définition et la manipulation d'une structure représentant un point dans un plan.

Transféré par

ali36093810
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues16 pages

Structures

Le document traite des structures de données en C, expliquant leur déclaration, utilisation et manipulation. Il aborde également l'utilisation de typedef pour simplifier la déclaration de types structurés et comment les structures peuvent être utilisées comme arguments de fonctions. Enfin, il propose un exercice pratique sur la définition et la manipulation d'une structure représentant un point dans un plan.

Transféré par

ali36093810
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Module: Structures de données

Filière: SMA/SMI-S4

Structures

Pr. Issam QAFFOU


Laboratoire Ingénierie des Systèmes
d’Information
Département d’Informatique
FSSM-UCA
Introduction
• L’utilisation des types prédéfinis en C s’avère parfois
limitée et quelques applications exigent au
programmeur de définir d’autres types.
• Par exemple, pour manipuler une entité "Etudiant"
connue par son nom qui est une chaine de caractère et
son âge qui est un entier.
• Pour pouvoir travailler avec des variables structurées
on doit les identifier par un type.
• Les tableaux sont un type de telles variables mais ayant
le même type.
• Pour des types différents on doit utiliser ce qu’on
appelle une "Structure".
• Une structure est un ensemble de champs combinés.
SMI/SMA-S4 Structures de données 2
Déclaration
• Le langage C permet de définir des modèles structurés.
• La déclaration d'une structure s'effectue en précisant le
nom de la structure, ainsi que le nom et le type de ses
champs :
• Syntaxe en C : struct nom_structure
{ type 1 nom_champ1;
type 2 nom_champ2;

type N nom_champN;
};
• Remarque: Le nom d’une structure n’est pas un nom de
variable, c’est le nom du type ou modèle de la structure.

SMI/SMA-S4 Structures de données 3


Déclaration
• Exemple: struct Etudiant
{ int Age;
float Moyenne;
char Nom[20];
};
• Une telle déclaration ne fait aucune réservation (on définit un
type).
• Pour réserver de l’espace, on le fait de deux manières:
– Lors de la déclaration: struct nom_structure{
Type_1 Champ_1;

Type_n Chanp_n;
} variables;
– Après déclaration: struct nom_structure variables;

SMI/SMA-S4 Structures de données 4


Utilisation
• On peut initialiser les champs d’une structure tous à la
fois quand on déclare une variable ayant le type cette
structure (comme on fait pour un tableau: entre
accolades).

• On peut les initialiser un par un en utilisant:


nom_var.nom_champ

• Cette dernière syntaxe est utilisée pour accéder à


chacun des champs de la structure.

SMI/SMA-S4 Structures de données 5


Utilisation
• Dans le cas où la variable structure est un
pointeur, par exemple: struct Etudiant *p, on
accède aux champs de la structure via ce
pointeur en utilisant -> (une flèche):
• On peut aussi garder le point au lieu de la
flèche en écrivant:
• Attention: avant d’utiliser un pointeur il faut
l’initialiser. Pour le cas d’une structure, on
l’initialise avec la fonction malloc(sizeof(struct
<nom_structure>));
SMI/SMA-S4 Structures de données 6
Exemple

SMI/SMA-S4 Structures de données 7


Composition de structures
• On peut déclarer une variable structure ou en
particulier un tableau dans une autre structure.
• On peut, par exemple, déclarer une structure date
contenant des champs: jour, mois, annee et inclure une
variable dt de type date dans la structure Etudiant.

• On peut écrire E.d1.m pour accéder au champ


correspondant au mois de la structure date.

SMI/SMA-S4 Structures de données 8


Manipulation
• On peut créer un tableau de structure. Par exemple, un
tableau d’Etudiant.

• On procède au remplissage du tableau d’une manière


ordinaire, en remplissant chaque champ.
• Pour accéder à un champ d’un élément de ce tableau
on utilise nom_tab[indice].nom_champ. Par exemple:
sma_grp1[2].age
• L’arithmétique des pointeurs déjà vue au chapitre des
pointeurs reste valable pour des pointeurs vers des
structures.

SMI/SMA-S4 Structures de données 9


Manipulation
• Exemple

SMI/SMA-S4 Structures de données 10


typedef
• typedef permet de définir un type de donnée
structuré.
• L’utilisation devient plus aisée des structures définies
avec typedef.
• En effet, si on déclare :
– struct personne { ... }; les déclarations de variables se
feront par : struct personne p1,p2;
• alors que si on déclare :
– typedef struct { ... } PERSONNE; les déclarations de
variables se feront par : PERSONNE p1,p2;
• on voit que la seconde méthode permet d'éviter
d'avoir à répéter struct.

SMI/SMA-S4 Structures de données 11


typedef
• De la même manière, en ce qui concerne les pointeurs, il
est plus difficile d'écrire et de comprendre :
struct personne {
... };
struct personne *p1,*p2;
/* p1 et p2 pointeurs vers des struct */
que la version suivante qui donne un nom parlant au type
pointeur vers struct :
typedef struct {
... } PERSONNE;
typedef PERSONNE *P_PERSONNE; /* P_PERSONNE type
pointeur vers struct */
P_PERSONNE p1,p2; /* p1 et p2 pointeurs vers des struct */
SMI/SMA-S4 Structures de données 12
Structures et fonctions
• Une structure peut être utilisée comme argument d’une
fonction et transmise par valeur ou par adresse via un
pointeur.
Par valeur

SMI/SMA-S4 Structures de données 13


Structures et fonctions

Par adresse

SMI/SMA-S4 Structures de données 14


Structures et fonctions
• Une fonction peut retourner un résultat d’un
type structuré

SMI/SMA-S4 Structures de données 15


Structures et fonction
• Exercice
– Définir une structure Point qui permet de représenter
un point dans un plan par ses coordonnées x et y de
type float.
– Définir une fonction Initialiser qui saisit les champs
d’une variable Point passée en paramètre.
– Définir une fonction Afficher qui affiche le contenu
des champs d’une variable Point passée en paramètre.
– Définir une fonction Déplacer qui permet de déplacer
un point dans plan (les champs x et y doivent être
translatés par dx et dy respectivement).
– Dans la fonction main() appeler ces fonctions et tester.

SMI/SMA-S4 Structures de données 16

Vous aimerez peut-être aussi