Algorithmique
&
structures des données II
1ère Business Computing (BC)
Responsable : Dr. Fadoua Bouafif
1
Dr. Fadoua.BOUAFIF
Objectifs du cours
Ce cours a pour objectif de prolonger les acquis du premier semestre dans
l’élément algorithmique et programmation I, en introduisant de nouvelles
structures de données linéaires et arborescentes avec différentes
implémentations (contiguë et chainée).
 Nous commençons tout d’abord par introduire la notion des types
d’éléments abstraits, ainsi que le principe de la récursivité.
 Ensuite, nous couvrons les structures de données linéaires : les listes, les
files et les piles et leurs applications à travers l’évaluation des expressions
arithmétiques.
 Enfin, les structures de données arborescentes sont étudiées (arbres,
graphes).
2
Plan du cours
Chapitre 1: Les enregistrements
Chapitre 2: La récursivité
Chapitre 3: Les variables dynamiques
Chapitre 4: Les listes chainées
Chapitre 5: Les piles et les files
Chapitre 6: Les arbres
3
Chapitre 1
Les enregistrements
4
Dr. Fadoua.BOUAFIF
Objectifs du chapitre
5
Dr. Fadoua.BOUAFIF
A la fin du chapitre, les étudiants seront en mesure de:
- Définir le type enregistrement en algorithmique et en langage C
- Nommer les opérations sur les enregistrements
- Déterminer le tableau d’enregistrement
- Arranger les pointeurs et les enregistrements
Plan du chapitre
1) Introduction
2) Définition
3) Déclaration
4) Manipulation des enregistrements
5) Tableaux et enregistrements
6) Pointeurs et enregistrements
7) Conclusion
6
Dr. Fadoua.BOUAFIF
Introduction
Les types utilisés, jusqu'à présent, sont :
 des types simples, tels que:
 réel,
 entier,
 caractère,
 et le type structuré tableau qui permet de stocker plusieurs données de même type.
Il est parfois nécessaire de définir un objet qui décrit plusieurs informations de types différents. Cet
objet est alors définit à travers un type structuré appelé enregistrement ou structure.
7
Dr. Fadoua.BOUAFIF
Définitions
 Le type enregistrement (structure) est une structure de données qui rassemble un ensemble
d'informations de types différents : simple, complexe ou même de type enregistrement, dans une
même variable.
 L'information qui compose cette structure est appelée champ ou attribut.
 Un enregistrement (structure) est un ensemble d'attributs.
Exemple:
8
Type Personne =Enregistrement
nom : chaine [20]
prénom : chaine [20]
CIN: entier
FinPersonne
Dr. Fadoua.BOUAFIF
Nom de
l’enregistrement
Les attributs/les champs
Déclaration En Algorithmique
9
Dr. Fadoua.BOUAFIF
Syntaxe Exemple
Déclaration de
l’enregistrement
Type Nom_structure = Enregistrement
Nom_champ1 : type_champ1
Nom_champ2 : type_champ2
…….
Nom_ champn : type_champ3
Fin_Nom_structure
Type
Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
Déclaration
variables
Var Nom_variable: Nom_structure Var: P1, P2: Personne
Déclaration En langage C
10
Dr. Fadoua.BOUAFIF
Syntaxe Exemple
Déclaration
de la
structure
Typedef Struct
{
Nom_champ1 : type_champ1;
Nom_champ2 : type_champ2;
…….
Nom_ champn : type_champ3;
} NomStruct ;
Typedef struct
{
char nom[20];
char prenom[20];
int CIN ;
} Personne;
Déclaration
variables
Nom_struct Nom_variable; Personne P1, P2;
Remarques 11
Dr. Fadoua.BOUAFIF
En algorithmique En Langage C
La déclaration des types structures se fait dans une
section spéciale des algorithmes appelée Type, qui
précède la section des variables et succède à la
section (clause) des constantes.
La déclaration de la structure sera effectuée avant le
programme principal
Algorithme principal
Type
Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
Var: P1, P2: Personne
Const: ….
Debut
…..
fin
#include <studio.h>
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
}Personne; /*N’oubliez pas ce point virgule*/
void main ( )
{
Personne P1,P2;
………
}
Remarque En langageC
12
 Il est possible de déclarer et d’initialiser une variable structurée dans un seul et même temps :
 Syntaxe
Typedef Struct
{
type1 champ1 ;
type2 champ2 ;
type3 champ3 ;
.....
typen champn ;
} NomStructure; Nom_variable = {val_champ1, val_champ2,… };
Exemple
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne; P1= {"med", " selmi", 12345678};
Dr. Fadoua.BOUAFIF
Activité 1
 Soit un produit est caractérisé par:
 Référence (entier)
 Désignation (chaine de caractère)
 Quantité (entier)
 Prix_Unitaire (réel)
Ecrire la structure qui définie le produit en algorithmique et en langage C
Dr. Fadoua.BOUAFIF
13
Manipulation des enregistrements
 Comme pour les tableaux, il n'est pas possible de manipuler un
enregistrement globalement,
 La manipulation d'un enregistrement se fait à travers de « ses champs ».
Dr. Fadoua.BOUAFIF
14
Accès aux champs d’un enregistrement
15
Syntaxe:
nom_variable.nom_champ
En algorithme EN C
Type Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
var : P : Personne
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne;
Personne P;
Exemple:
P.Nom
P.Prenom
P.CIN
16
 Il est possible d'affecter une variable enregistrement dans une autre, à condition qu'ils
soient de même structure.
Tous les champs de la première variable enregistrement à affecter seront
recopiés dans les champs de l'autre variable enregistrement.
Affectation
P1= P2;
Printf ("%s %d", P1.nom, p1.CIN);
 BenSaleh ali 12345678
Dr. Fadoua.BOUAFIF
En Algorithmique En C
Nom_variable valeur Nom_variable = valeur
Exemple
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne; P1= {"BenSaleh","ali",12345678};
17
Lecture/Ecriture
Dr. Fadoua.BOUAFIF
En algorithme EN C
Lire(Nomvariable.champ) Scanf(‘’code format’’,& Nom_variable .champ);
ecrire(Nomvariable.champ) printf(‘’code format’’, Nom_variable .champ);
Les opérations de lecture/écriture n'acceptent que des types simples, alors on ne
peut pas lire/écrire directement une variable de type structure.
 On doit lire/écrire les attributs/champs de la variable de type structure un à un
Syntaxe
18
Lecture/Ecriture
Dr. Fadoua.BOUAFIF
Exemple
En algorithme EN C
Algorithme Affiche_Personne
Type Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
var : P : Personne
Debut
Ecrire("Veuillez saisir le nom ,le prenom et le
numero CIN")
Lire(P.nom, P.Prenom, P.CIN)
Ecrire("Nom:", P.nom, "Prenom:", P.Prenom,
"CIN:", P.CIN)
fin
#include<stdio.h>
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne;
int main()
{
Personne P;
printf("Veuillez saisir le nom, le prenom et le numero
CIN");
scanf("%s%s%d",P.nom, P.Prenom, &P.CIN)
printf(" le nom: %sn le prenom: %sn CIN:%dn",
P.nom, P.Prenom, P.CIN)
return 0; }
19
 Egalité ou différence (== ou !=):
 On ne peut pas tester l'égalité ou la différence de deux enregistrements de même type
d'une façon globale.
 La comparaison doit se faire champ par champ : le 1er champ du premier enregistrement
est comparé au premier champ du second enregistrement et ainsi de suite.
 Exemple:
Type Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
var: P1,P2: Personne
Remarques
P1=P2  écriture fausse
En algorithme
P1.nom =P2.nom
P1.CIN =P2.CIN
En C
Strcmp(P1.nom, P2.nom)
P1.CIN =P2.CIN
 écriture correcte
 écriture correcte
Dr. Fadoua.BOUAFIF
20
 Pour la manipulation des attributs de type chaîne de caractères, les fonctions prédéfinies de
manipulation des chaînes sont utilisées.
Exemple:
Typedef Struct
{
char nom [20];
char prenom [20];
int CIN;
} Personne;
P1= {"BenSaleh","ali",12345678};
Attention!!
En langage C
Personne P2;
Strcpy(P2.prenom, "alia"); // affectation du nom « alia » à P2.prenom
P2.CIN =12345679; // affectation CIN à P2.CIN
Strcmp(P1.prenom, P2.prenom); // Comparaison de deux chaines
Dr. Fadoua.BOUAFIF
Activité 2
 Soit un étudiant est définie par son nom, son prénom et sa date de naissance(jour/mois/année)
et son moyenne
 Définir la structure étudiant
 Ecrire un programme qui permet de saisir et d’afficher les informations d’un étudiant
 Solution
Dr. Fadoua.BOUAFIF
21
22
En Algorithme En C
Type Nom_structure = Enregistrement
Nom_champ1 : type_champ1
Nom_champ2 : type_champ2
…….
Nom_ champn : type_champ3
Fin_Nom_structure
Type Tab : tableau [0…N-1] de Nom_Structure
Var : T : Tab
Typedef Struct
{
Nom_champ1 : type_champ1;
Nom_champ2 : type_champ2;
…….
Nom_ champn : type_champ3;
} NomStruct ;
Typedef NomStruct T[N];
Tableau & enregistrement
Syntaxe
Dr. Fadoua.BOUAFIF
Groupe G;
G [0] G[1] ………
G [1].CIN
‘Sassi’ ‘med’ 22234 ‘saleh’ ‘afef’ 11145 …
23
Tableau & enregistrement
Exemple
En algorithme En C
Type Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
Type Groupe : tableau [0…9] de Personne
Var : G : Groupe
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne;
Typedef Personne Groupe[10];
Groupe G;
G [0].nom
Dr. Fadoua.BOUAFIF
24
 Soit un étudiant est définie par son nom, son prénom et 4 notes.
 Définir la structure étudiant
 Ecrire un algorithme qui permet de saisir une liste de 30 étudiants
Activité 3
Dr. Fadoua.BOUAFIF
25
 Soit un étudiant est définie par son nom, son prénom et 4 notes.
 Définir la structure étudiant
 Ecrire un algorithme qui permet de saisir une liste de 30 étudiants
Activité 3
Dr. Fadoua.BOUAFIF
Pointeurs & enregistrements
Syntaxes
ASD II
26
En Algorithme En C
Type Nom_structure = Enregistrement
Nom_champ1 : type_champ1
Nom_champ2 : type_champ2
…….
Nom_ champn : type_champ3
Fin_Nom_structure
Var: pt_structure: ↑ Nom_Structure
Typedef Struct
{
Nom_champ1 : type_champ1;
Nom_champ2 : type_champ2;
…….
Nom_ champn : type_champ3;
} NomStruct ;
NomStruct *pt_structure;
Pointeurs & enregistrements
Syntaxes (suite)
ASD II
27
En Algorithme En C
Déclaration
structure
Déclaration
variable
Accès aux
champs
Type Nom_structure = Enregistrement
Nom_champ1 : type_champ1
Nom_champ2 : type_champ2
…….
Nom_ champn : type_champ3
Fin_Nom_structure
Var: pt_structure: Nom_Structure
pt_structure.Nom_champ
Typedef Struct
{
Nom_champ1 : type_champ1;
Nom_champ2 : type_champ2;
…….
Nom_ champn : type_champ3;
} NomStruct ;
NomStruct *pt_structure;
(*pt_structure). Nom_champ;
ou pt_structureNom_champ;
Pour accéder à un champ de la structure avec une variable pointeur, nous utilisons:
 En algorithme l’opérateur (.)
 En C l’operateur «  » ou l’opérateur (.)
Pointeurs & enregistrements
Exemple
ASD II
28
En algorithme En C
Algorithme Exemple_Personne #include<stdio.h>
Début
pt  P
(*pt).CIN 205004
lire ( (*pt).nom)
écrire ((*pt).CIN)
Fin
var : P : Personne
pt : Personne
Type Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne;
int main ()
{
Personne P ; // déclaration variable enregistrement
Personne*pt ; // déclaration d’un pointeur de type enregistrement
pt=&P; // pt pointe sur l’adresse de P
(*pt).CIN=205004 ; // ou P.CIN =205004
scanf("%s", (ptnom) ); //ou scanf("%s", ((*pt).nom));
//ou scanf("%s", (P.nom));
printf(" Num_CarteId=%d", (*pt).CIN); // ou pt -> CIN ; ou P .CIN ;
return 0; }
29
 Ecrire un sous-programme qui permet d’afficher la liste des étudiants de
l’activité 3 en utilisant les pointeurs
Activité 3
Dr. Fadoua.BOUAFIF
30
 Dans ce cours nous avons :
 Défini le type enregistrement (structure)
 Détaillé les manipulations sur les enregistrements
 Présenté le tableau d’enregistrement
 Présenté l’utilisation des pointeurs sur les enregistrements
Conclusion
Dr. Fadoua.BOUAFIF

Ch1 _ les enregistrements.pdf

  • 1.
    Algorithmique & structures des donnéesII 1ère Business Computing (BC) Responsable : Dr. Fadoua Bouafif 1 Dr. Fadoua.BOUAFIF
  • 2.
    Objectifs du cours Cecours a pour objectif de prolonger les acquis du premier semestre dans l’élément algorithmique et programmation I, en introduisant de nouvelles structures de données linéaires et arborescentes avec différentes implémentations (contiguë et chainée).  Nous commençons tout d’abord par introduire la notion des types d’éléments abstraits, ainsi que le principe de la récursivité.  Ensuite, nous couvrons les structures de données linéaires : les listes, les files et les piles et leurs applications à travers l’évaluation des expressions arithmétiques.  Enfin, les structures de données arborescentes sont étudiées (arbres, graphes). 2
  • 3.
    Plan du cours Chapitre1: Les enregistrements Chapitre 2: La récursivité Chapitre 3: Les variables dynamiques Chapitre 4: Les listes chainées Chapitre 5: Les piles et les files Chapitre 6: Les arbres 3
  • 4.
  • 5.
    Objectifs du chapitre 5 Dr.Fadoua.BOUAFIF A la fin du chapitre, les étudiants seront en mesure de: - Définir le type enregistrement en algorithmique et en langage C - Nommer les opérations sur les enregistrements - Déterminer le tableau d’enregistrement - Arranger les pointeurs et les enregistrements
  • 6.
    Plan du chapitre 1)Introduction 2) Définition 3) Déclaration 4) Manipulation des enregistrements 5) Tableaux et enregistrements 6) Pointeurs et enregistrements 7) Conclusion 6 Dr. Fadoua.BOUAFIF
  • 7.
    Introduction Les types utilisés,jusqu'à présent, sont :  des types simples, tels que:  réel,  entier,  caractère,  et le type structuré tableau qui permet de stocker plusieurs données de même type. Il est parfois nécessaire de définir un objet qui décrit plusieurs informations de types différents. Cet objet est alors définit à travers un type structuré appelé enregistrement ou structure. 7 Dr. Fadoua.BOUAFIF
  • 8.
    Définitions  Le typeenregistrement (structure) est une structure de données qui rassemble un ensemble d'informations de types différents : simple, complexe ou même de type enregistrement, dans une même variable.  L'information qui compose cette structure est appelée champ ou attribut.  Un enregistrement (structure) est un ensemble d'attributs. Exemple: 8 Type Personne =Enregistrement nom : chaine [20] prénom : chaine [20] CIN: entier FinPersonne Dr. Fadoua.BOUAFIF Nom de l’enregistrement Les attributs/les champs
  • 9.
    Déclaration En Algorithmique 9 Dr.Fadoua.BOUAFIF Syntaxe Exemple Déclaration de l’enregistrement Type Nom_structure = Enregistrement Nom_champ1 : type_champ1 Nom_champ2 : type_champ2 ……. Nom_ champn : type_champ3 Fin_Nom_structure Type Personne=enregistrement nom : chaine [20] prenom : chaine [20] CIN : entier Fin_Personne Déclaration variables Var Nom_variable: Nom_structure Var: P1, P2: Personne
  • 10.
    Déclaration En langageC 10 Dr. Fadoua.BOUAFIF Syntaxe Exemple Déclaration de la structure Typedef Struct { Nom_champ1 : type_champ1; Nom_champ2 : type_champ2; ……. Nom_ champn : type_champ3; } NomStruct ; Typedef struct { char nom[20]; char prenom[20]; int CIN ; } Personne; Déclaration variables Nom_struct Nom_variable; Personne P1, P2;
  • 11.
    Remarques 11 Dr. Fadoua.BOUAFIF Enalgorithmique En Langage C La déclaration des types structures se fait dans une section spéciale des algorithmes appelée Type, qui précède la section des variables et succède à la section (clause) des constantes. La déclaration de la structure sera effectuée avant le programme principal Algorithme principal Type Personne=enregistrement nom : chaine [20] prenom : chaine [20] CIN : entier Fin_Personne Var: P1, P2: Personne Const: …. Debut ….. fin #include <studio.h> Typedef Struct { char nom[20]; char prenom[20]; int CIN; }Personne; /*N’oubliez pas ce point virgule*/ void main ( ) { Personne P1,P2; ……… }
  • 12.
    Remarque En langageC 12 Il est possible de déclarer et d’initialiser une variable structurée dans un seul et même temps :  Syntaxe Typedef Struct { type1 champ1 ; type2 champ2 ; type3 champ3 ; ..... typen champn ; } NomStructure; Nom_variable = {val_champ1, val_champ2,… }; Exemple Typedef Struct { char nom[20]; char prenom[20]; int CIN; } Personne; P1= {"med", " selmi", 12345678}; Dr. Fadoua.BOUAFIF
  • 13.
    Activité 1  Soitun produit est caractérisé par:  Référence (entier)  Désignation (chaine de caractère)  Quantité (entier)  Prix_Unitaire (réel) Ecrire la structure qui définie le produit en algorithmique et en langage C Dr. Fadoua.BOUAFIF 13
  • 14.
    Manipulation des enregistrements Comme pour les tableaux, il n'est pas possible de manipuler un enregistrement globalement,  La manipulation d'un enregistrement se fait à travers de « ses champs ». Dr. Fadoua.BOUAFIF 14
  • 15.
    Accès aux champsd’un enregistrement 15 Syntaxe: nom_variable.nom_champ En algorithme EN C Type Personne=enregistrement nom : chaine [20] prenom : chaine [20] CIN : entier Fin_Personne var : P : Personne Typedef Struct { char nom[20]; char prenom[20]; int CIN; } Personne; Personne P; Exemple: P.Nom P.Prenom P.CIN
  • 16.
    16  Il estpossible d'affecter une variable enregistrement dans une autre, à condition qu'ils soient de même structure. Tous les champs de la première variable enregistrement à affecter seront recopiés dans les champs de l'autre variable enregistrement. Affectation P1= P2; Printf ("%s %d", P1.nom, p1.CIN);  BenSaleh ali 12345678 Dr. Fadoua.BOUAFIF En Algorithmique En C Nom_variable valeur Nom_variable = valeur Exemple Typedef Struct { char nom[20]; char prenom[20]; int CIN; } Personne; P1= {"BenSaleh","ali",12345678};
  • 17.
    17 Lecture/Ecriture Dr. Fadoua.BOUAFIF En algorithmeEN C Lire(Nomvariable.champ) Scanf(‘’code format’’,& Nom_variable .champ); ecrire(Nomvariable.champ) printf(‘’code format’’, Nom_variable .champ); Les opérations de lecture/écriture n'acceptent que des types simples, alors on ne peut pas lire/écrire directement une variable de type structure.  On doit lire/écrire les attributs/champs de la variable de type structure un à un Syntaxe
  • 18.
    18 Lecture/Ecriture Dr. Fadoua.BOUAFIF Exemple En algorithmeEN C Algorithme Affiche_Personne Type Personne=enregistrement nom : chaine [20] prenom : chaine [20] CIN : entier Fin_Personne var : P : Personne Debut Ecrire("Veuillez saisir le nom ,le prenom et le numero CIN") Lire(P.nom, P.Prenom, P.CIN) Ecrire("Nom:", P.nom, "Prenom:", P.Prenom, "CIN:", P.CIN) fin #include<stdio.h> Typedef Struct { char nom[20]; char prenom[20]; int CIN; } Personne; int main() { Personne P; printf("Veuillez saisir le nom, le prenom et le numero CIN"); scanf("%s%s%d",P.nom, P.Prenom, &P.CIN) printf(" le nom: %sn le prenom: %sn CIN:%dn", P.nom, P.Prenom, P.CIN) return 0; }
  • 19.
    19  Egalité oudifférence (== ou !=):  On ne peut pas tester l'égalité ou la différence de deux enregistrements de même type d'une façon globale.  La comparaison doit se faire champ par champ : le 1er champ du premier enregistrement est comparé au premier champ du second enregistrement et ainsi de suite.  Exemple: Type Personne=enregistrement nom : chaine [20] prenom : chaine [20] CIN : entier Fin_Personne var: P1,P2: Personne Remarques P1=P2  écriture fausse En algorithme P1.nom =P2.nom P1.CIN =P2.CIN En C Strcmp(P1.nom, P2.nom) P1.CIN =P2.CIN  écriture correcte  écriture correcte Dr. Fadoua.BOUAFIF
  • 20.
    20  Pour lamanipulation des attributs de type chaîne de caractères, les fonctions prédéfinies de manipulation des chaînes sont utilisées. Exemple: Typedef Struct { char nom [20]; char prenom [20]; int CIN; } Personne; P1= {"BenSaleh","ali",12345678}; Attention!! En langage C Personne P2; Strcpy(P2.prenom, "alia"); // affectation du nom « alia » à P2.prenom P2.CIN =12345679; // affectation CIN à P2.CIN Strcmp(P1.prenom, P2.prenom); // Comparaison de deux chaines Dr. Fadoua.BOUAFIF
  • 21.
    Activité 2  Soitun étudiant est définie par son nom, son prénom et sa date de naissance(jour/mois/année) et son moyenne  Définir la structure étudiant  Ecrire un programme qui permet de saisir et d’afficher les informations d’un étudiant  Solution Dr. Fadoua.BOUAFIF 21
  • 22.
    22 En Algorithme EnC Type Nom_structure = Enregistrement Nom_champ1 : type_champ1 Nom_champ2 : type_champ2 ……. Nom_ champn : type_champ3 Fin_Nom_structure Type Tab : tableau [0…N-1] de Nom_Structure Var : T : Tab Typedef Struct { Nom_champ1 : type_champ1; Nom_champ2 : type_champ2; ……. Nom_ champn : type_champ3; } NomStruct ; Typedef NomStruct T[N]; Tableau & enregistrement Syntaxe Dr. Fadoua.BOUAFIF
  • 23.
    Groupe G; G [0]G[1] ……… G [1].CIN ‘Sassi’ ‘med’ 22234 ‘saleh’ ‘afef’ 11145 … 23 Tableau & enregistrement Exemple En algorithme En C Type Personne=enregistrement nom : chaine [20] prenom : chaine [20] CIN : entier Fin_Personne Type Groupe : tableau [0…9] de Personne Var : G : Groupe Typedef Struct { char nom[20]; char prenom[20]; int CIN; } Personne; Typedef Personne Groupe[10]; Groupe G; G [0].nom Dr. Fadoua.BOUAFIF
  • 24.
    24  Soit unétudiant est définie par son nom, son prénom et 4 notes.  Définir la structure étudiant  Ecrire un algorithme qui permet de saisir une liste de 30 étudiants Activité 3 Dr. Fadoua.BOUAFIF
  • 25.
    25  Soit unétudiant est définie par son nom, son prénom et 4 notes.  Définir la structure étudiant  Ecrire un algorithme qui permet de saisir une liste de 30 étudiants Activité 3 Dr. Fadoua.BOUAFIF
  • 26.
    Pointeurs & enregistrements Syntaxes ASDII 26 En Algorithme En C Type Nom_structure = Enregistrement Nom_champ1 : type_champ1 Nom_champ2 : type_champ2 ……. Nom_ champn : type_champ3 Fin_Nom_structure Var: pt_structure: ↑ Nom_Structure Typedef Struct { Nom_champ1 : type_champ1; Nom_champ2 : type_champ2; ……. Nom_ champn : type_champ3; } NomStruct ; NomStruct *pt_structure;
  • 27.
    Pointeurs & enregistrements Syntaxes(suite) ASD II 27 En Algorithme En C Déclaration structure Déclaration variable Accès aux champs Type Nom_structure = Enregistrement Nom_champ1 : type_champ1 Nom_champ2 : type_champ2 ……. Nom_ champn : type_champ3 Fin_Nom_structure Var: pt_structure: Nom_Structure pt_structure.Nom_champ Typedef Struct { Nom_champ1 : type_champ1; Nom_champ2 : type_champ2; ……. Nom_ champn : type_champ3; } NomStruct ; NomStruct *pt_structure; (*pt_structure). Nom_champ; ou pt_structureNom_champ; Pour accéder à un champ de la structure avec une variable pointeur, nous utilisons:  En algorithme l’opérateur (.)  En C l’operateur «  » ou l’opérateur (.)
  • 28.
    Pointeurs & enregistrements Exemple ASDII 28 En algorithme En C Algorithme Exemple_Personne #include<stdio.h> Début pt  P (*pt).CIN 205004 lire ( (*pt).nom) écrire ((*pt).CIN) Fin var : P : Personne pt : Personne Type Personne=enregistrement nom : chaine [20] prenom : chaine [20] CIN : entier Fin_Personne Typedef Struct { char nom[20]; char prenom[20]; int CIN; } Personne; int main () { Personne P ; // déclaration variable enregistrement Personne*pt ; // déclaration d’un pointeur de type enregistrement pt=&P; // pt pointe sur l’adresse de P (*pt).CIN=205004 ; // ou P.CIN =205004 scanf("%s", (ptnom) ); //ou scanf("%s", ((*pt).nom)); //ou scanf("%s", (P.nom)); printf(" Num_CarteId=%d", (*pt).CIN); // ou pt -> CIN ; ou P .CIN ; return 0; }
  • 29.
    29  Ecrire unsous-programme qui permet d’afficher la liste des étudiants de l’activité 3 en utilisant les pointeurs Activité 3 Dr. Fadoua.BOUAFIF
  • 30.
    30  Dans cecours nous avons :  Défini le type enregistrement (structure)  Détaillé les manipulations sur les enregistrements  Présenté le tableau d’enregistrement  Présenté l’utilisation des pointeurs sur les enregistrements Conclusion Dr. Fadoua.BOUAFIF