Vous êtes sur la page 1sur 25

Les structures

Brahimi Mohamed
Structures

Tableau : est collection de variables de même type

Structure : Collection de variables de différents types

Représentation des entités composés


Exemples

● Etudiant
– Nom : Chaîne de caractères
– Age : Entier
– Note : Réel
● Des différents types représentant le même objet
 Produit
– Référence : Entier
– Designation : Chaîne de carctères
– Quantité : Enntier
Exemples

● Etudiant
– Nom de l'étudiant
– Age
– Note
Etudiant

Brahimi Mohamed Age = 27 Note=20


Définition (Algorithmique)

Type nom_de_structure = Structure


Nom_de_member1 : type1
Nom_de_member2 : type2
...
Nom_de_memberN : typeN
Fin
Exemple (Algorithmique)

Type Etudiant = Structure


Nom: Chaîne de caractères
Age : Entier
Note : Réel
Fin
Définition (langage C)

Struct nom_de_structure {
type1 Nom_de_member1 ;
type2 Nom_de_member2 ;
...
typeN Nom_de_memberN ;
} ;
Exemple (langage C)

Struct Etudiant {
char Nom[30] ;
int Age ;
float Note ;
} ;
Déclaration (Algorithmique)

nom de variable : nom_de_structure

● Exemples :
etud : Etudiant
Déclaration (langage C)

struct nom_de_structure nom_de_variable;

● Exemple :
struct Etudiant etud ;
Déclaration (langage C)

Typedef struct nom_de_structure nom_de_structure


nom_de_structure nom_de_variable;

● Exemple :
Typedef struct Etudiant Etudiant
Etudiant etud ;
Manipulation (Algorithmique)

nom_de_variable . nom_de_memeber
● Exemple :
etud.note = 20
etud.Age = 19
lire(etud.Nom)
Manipulation (langage C)

nom_de_variable . nom_de_memeber 
● Exemple :
etud.note = 20 ;
etud.Age = 19 ;
scanf("%d",&etud.Nom) ;
Exemple (Algorithmmique)

● Gestion des notes des étudiants


– Tableau des étudiants.
– Remplir les informations.
– Affichage des étudiants.
– Calcule de la moyenne.
Exemple (Algorithmmique)

Algorithme Exemple
Type Etudiant= Structure
nom : chaîne de caractères 
note : réel
Fin
Var
etudiants : tableau[1..100] d'Etudiant
Procédure Remplir
Procédure Remplir(Var etds : tableau[1..100] d'Etudiant,n:entier)
Var etd : Etudiant
Début
Ecrire("Tapez la liste des étudiants avec les notes : ")
Pour i allant de 1 à n faire
Dpour
Ecrire("Nom : ")
Lire(etd.Nom)
Ecrire("Note : ")
Lire(etd.Note)
etds[i] ←- etd
Fpour
Fin
Procédure Affichage

Procédure Affichage (etds : tableau[1..100] d'Etudiant,n:entier)


Var etd : Etudiant
Début
Ecrire("Liste d'étudiants :")
Pour i allant de 1 à n faire
Dpour
etd ←--etds[i]
Ecrire(etd.nom," : ",etd.Note)
Fpour
Fin
Fonction Moyenne

Fonction Moyenne (etds : tableau[1..100] d'Etudiant,n:entier)


Var etd : Etudiant
somme : Entier
Début
somme <--- 0
Pour i allant de 1 à n faire
Dpour
somme <--- somme + etds[i].Note
Fpour
Moyenne <--- somme/n ;
Fin
Algorithme Exemple
Type Etudiant= Structure
nom : chaîne de caractères 
note : réel
Fin
Var etudiants : tableau[1..100] d'Etudiant
n : Entier
Procédure Remplir(Var etds : tableau[1..100] d'Etudiant,n:entier)
Procédure Affichage (Var etds : tableau[1..100] d'Etudiant,n:entier)
Fonction Moyenne (Var etds : tableau[1..100] d'Etudiant,n:entier)
Début
Ecrire("Donnez le nombre d'étudiants")
Lire(n)
Remplir(etudiants,n)
Affichage(etudiants,n)
Ecrire("Moyenne = ",Moyenne(etudiants,n))
Fin
Pointeur sur une Structure

● Une variable qui contient l'adresse d'une structure.

● Algorithmique
– nom_de_pointeur : Pointeur(Nom_de_structure)
● Langage C
– Struct nom_de_structure * nom_de_pointeur ;
Pointeur sur une Structure

● Les opérateur « & » et « * » sont utilisés comme dans les


variable.

● Exemple :
– PtrEtudiant : Pointeur(Etudiant)
– struct Etudiant *PtrEtudiant ;
Pointeur sur une Structure

● Pour accéder aux members des structures (Algorithmique).

● Exemple :
– PtrEtudiant : Pointeur(Etudiant)
– valeur(PtrEtudiant).Note=15
Pointeur sur une Structure

● Pour accéder aux members des structures (C).

● Exemple :
– struct Etudiant *ptrEtudiant ;
– *(PtrEtudiant).Note=15
– PtrEtudinat ->Note =15
Résumé

● Une structure est un type de variable personnalisé défini


par le programmeur.

● Une structure est composée de « sous-variables » qui sont


en général des variables de type de base.
Résumé

● On accède à un des composants de'une structure en utilisant :

nom_de_structure.prenom
● On accède à un des composants d'une structure àtravers un
pointeur en utilsant :

*(pointeurStructure) . prenom
pointeurStructure->prenom