La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.

Présentations similaires


Présentation au sujet: "1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée."— Transcription de la présentation:

1 1 Structures des données

2 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée par un indice.  La structure va nous permettre de désigner sous un seul nom un ensemble de valeurs pouvant être de types différents.  L'accès à chaque élément de la structure (nommé champ) se fera non plus par une indication de position, mais par son nom au sein de la structure.

3 3 Structures des données DÉCLARATION D'UNE STRUCTURE  Première méthode  Ce modèle s'appelle ici personne et il précise le nom et le type de chacun des "champs" constituant la structure.  Le modèle de structure ne réserve pas de variables correspondant à cette structure. struct personne {char nom[20]; char prenom[20]; int no_employe; }; On définit un modèle de structure

4 4 Structures des données DÉCLARATION D'UNE STRUCTURE  Première méthode  Une fois un tel modèle défini, on peut déclarer des "variables" du type correspondant. struct personne p1,p2; On réserve deux emplacements p1 et p2 du type personne. nomprenomno_employenomprenom no_employe 20 octets 2 octets20 octets 20 octets 2 octets 84 octets p1 p2

5 5 Structures des données DÉCLARATION D'UNE STRUCTURE  Deuxième méthode struct {char nom[20]; char prenom[20]; int no_employe; } p1,p2; On déclare des variables de type structure sans utiliser un modèle de structure.

6 6 Structures des données DÉCLARATION D'UNE STRUCTURE  Troisième méthode struct personne {char nom[20]; char prenom[20]; int no_employe; } p1,p2;... struct personne pers1,pers2,pers3; On peut combiner déclaration du modèle de structure et déclaration de variables.

7 7 Structures des données DÉCLARATION D'UNE STRUCTURE  Quatrième méthode – avec TYPEDEF struct personne {char nom[20]; char prenom[20]; int no_employe; };... typedef struct personne PERSONNE; PERSONNE p1,p2; Variant A typedef struct {char nom[20]; char prenom[20]; int no_employe; }personne; personne p1,p2,*p3,p4[5]; Variant B

8 8 Structures des données DÉCLARATION D'UNE STRUCTURE LA PORTÉE DU MODÈLE DE STRUCTURE  La "portée" d'un modèle de structure dépend de l'emplacement de sa déclaration:  si elle se situe au sein d'une fonction (y compris, la "fonction main"), elle n'est accessible que depuis cette fonction;  si elle se situe en dehors d'une fonction, elle est accessible de toute la partie du fichier source qui suit sa déclaration; elle peut ainsi être utilisée par plusieurs fonctions;  il est possible de placer un certain nombre de déclarations de modèles de structures dans un fichier séparé que l'on incorpore par #include.

9 9 Structures des données Accès aux membres des structures  L'opérateur de sélection de membre qui se note. (point) ou bien -> (flèche). personne p1,p2,*p3,p4[5];... p1.no_employe p2.nom p3 -> no_employe ou bien(*p3).no_employe p4[0].no_employe

10 10 Structures des données UTILISATION D'UNE STRUCTURE  Utilisation des champs d'une structure  Utilisation globale d'une structure p1.no_employe=12345; printf (“%d", p1.no_employe); scanf(“%d”,& p1.no_employe); p3 -> no_employe=2345; p4[0].no_employe=5678; strcpy(p1.prenom,”Lili”); personne x,y; x = y; Le champ peut être manipulé comme n'importe quelle variable L'affectation globale n'est pas possible entre tableaux.

11 11 Structures des données INITIALISATION D'UNE STRUCTURE  Lors de sa déclaration.  Lors d’exécution du programme. struct personne p = {"Jean", "Dupond", 7845}; struct personne p; printf(“Entrer le nom:”); gets(p.nom); printf(“Entrer le prenom:”); gets(p.prenom); printf(“Entrer le no_employe:”); scanf(“%d”,&p.no_emploe); En utilisant constantes ou des expressions constantes

12 12 Structures des données IMBRICATION DE STRUCTURES  Chacun des champs d'une structure peut être d'un type absolument quelconque: pointeur, tableau, structure,...  Champ - tableau struct personne {char nom[30] ; char prenom [20] ; double heures [31] ; } employe ; employe.heures[4] désigne le cinquième élément du tableau heures de la structure employe.

13 13 Structures des données IMBRICATION DE STRUCTURES  Chacun des champs d'une structure peut être d'un type absolument quelconque: pointeur, tableau, structure,...  Champ structure struct s_date {int jour; int mois; int an; }; struct personne {char nom[20]; int numero; struct s_date naissance; } p; p.nom désigne le nom p.naissance.mois désigne le mois

14 14 Structures des données TABLEAUX DE SRUCTURES  point est un nom de modèle de structure.  courbe représente effectivement un ''objet'' de type "tableau de 50 éléments du type point".  courbe[i].nom représente le nom du point de rang i du tableau courbe. struct point {char nom ; int x ; int y ; }; struct point courbe[50]; un point d'un plan représente un ensemble de 50 points du type défini struct point

15 15 Structures des données Exemple  Faire un programme C de: 1) remplir une structure imbriquée personne avec les champs (nom, numéro, date de naissance) en utilisant la structure date (avec les champs: jour, mois, an); 2) afficher la structure remplie. Utiliser les fonctions: saisir la date; saisir la personne, afficher la personne. #include 1/5 struct s_date { int jour; int mois; int an; }; struct personne { char nom[20]; int numero; struct s_date naissance; }; Les déclarations des modèles des structures

16 16 Structures des données Exemple void afficher( struct personne ); 2/5 struct s_date SaisirDate( void ); void SaisirPersonne( struct personne *f ); /* programme principal */ main() { struct personne p; SaisirPersonne(&p); afficher(p); return 0; } Les déclarations des fonctions Nom? Lili Numero? 123 Jour? 9 Mois? 8 Annee? 1978 Nom: Lili Numero: 123 Date de naissance: 9/8/1978

17 17 Structures des données Exemple void afficher( struct personne f ) { 3/5 printf("Nom : %s\n", f.nom ); printf("Numero : %d\n", f.numero); printf("Date de naissance : %d/%d/%d\n", f.naissance.jour, f.naissance.mois, f.naissance.an ); } La définition de la fonction d’affichage

18 18 Structures des données Exemple struct s_date SaisirDate( void ) { 4/5 struct s_date date; printf("Jour ? "); scanf("%d", &date.jour); fflush(stdin); printf("Mois ? "); scanf("%d", &date.mois); fflush(stdin); printf("Annee ? "); scanf("%d", &date.an); fflush(stdin); return date; } La définition de la fonction de saisie date

19 19 Structures des données Exemple void SaisirPersonne( struct personne *f ) { 5/5 printf("Nom ? "); gets( f->nom ); printf("Numero ? "); scanf("%d", &f->numero); fflush(stdin); f->naissance = SaisirDate(); } La définition de la fonction de saisie personne

20 20 Structures des données TRANSMISSION D'UNE STRUCTURE EN ARGUMENT D'UNE FONCTION  Transmission de la valeur d'une structure #include struct enreg { int a; double b; }; void fct (struct enreg y); int main(void) {struct enreg x; x.a = 1; x.b = 12.5; printf ("\navant appel fct: %d %.2f",x.a,x.b); fct (x); printf ("\n au retour dans main: %d %.2f", x.a, x.b); } void fct (struct enreg s) {s.a = 0; s.b=1; printf ("\ndans fct: %d %.2f", s.a, s.b); } avant appel fct : dans fct : au retour dans main :

21 21 Structures des données TRANSMISSION D'UNE STRUCTURE EN ARGUMENT D'UNE FONCTION  Transmission de l'adresse d'une structure: l'opérateur -> #include struct enreg { int a; float b; }; void fct (struct enreg *); int main(void) {struct enreg x; x.a = 1; x.b = 12.5; printf ("\navant appel fct: %d %.2f",x.a,x.b); fct (&x); printf ("\n au retour dans main : %d %.2f", x.a, x.b); retunr 0 ; } void fct (struct enreg * ads) {ads->a = 0; ads->b = 1; printf ("\ndans fct: %d %.2f", ads->a, ads->b); } avant appel fct : dans fct : au retour dans main :

22 22 Structures des données TABLEAUX DE STRUCTURES - modèle 1  Exemple - Faire un programme C de création d'un tableau d'éléments – étudiants (nombre maximale 20), de type structuré. Chaque structure est composée des champs suivants: a) nom - chaîne de caractères; b) note - nombre réel. Trier le tableau selon le champ note en ordre décroissant. Afficher le tableau créé et le tableau après le tri.

23 23 Structures des données TABLEAUX DE STRUCTURES - modèle Tableau des pointeursTableau des structures nomnote

24 24 Structures des données TABLEAUX DE STRUCTURES - modèle 1  Exemple #include 1/5 #include #define MAX 20 typedef struct { char nom[80]; float note; }etud; Le modèle de la structure

25 25 Structures des données TABLEAUX DE STRUCTURES - modèle 1  Exemple etud in(); 2/5 int entrer(etud *p[ ], etud s[ ]); void print(etud *s[ ],int n); void sort(etud *s[ ],int n); void main() { etud *p[MAX], s[MAX]; int n; n=entrer(p,s); print(p,n); sort(p,n); printf("Apres le tri\n"); print(p,n); } entrer nombre de structures:3 nom:Lili note:3.50 nom:Ivan note:5.50 nom:Ana note:4.00 Lili3.50 Ivan5.50 Ana4.00 Apres le tri Ivan5.50 Ana4.00 Lili3.50 Les prototypes des fonctions

26 26 Structures des données TABLEAUX DE STRUCTURES - modèle 1  Exemple etud in() 3/5 { etud t; printf("nom:"); gets(t.nom); printf("note:"); scanf("%f",&t.note); fflush(stdin); return t; } La définition de la fonction de saisie étudiant

27 27 Structures des données TABLEAUX DE STRUCTURES - modèle 1  Exemple int entrer(etud *p[ ],etud s[ ]) 4/5 { int n,i; do { printf("entrer nombre de structures:"); scanf("%d",&n); }while(n>MAX); fflush(stdin); for(i=0;inom,s[i]->note); } La définition de la fonction d’entré La définition de la fonction d’affichage

28 28 Structures des données TABLEAUX DE STRUCTURES - modèle 1  Exemple void sort(etud *s[ ],int n) 5/5 { etud *temp; int i,j,f=1; while(f!=0) { f=0; for(i=0; inote note) { temp=s[i]; s[i]=s[i+1]; s[i+1]=temp; f=1; } } } La définition de la fonction de tri

29 29 Structures des données TABLEAUX DE STRUCTURES - modèle 2  Exemple – avec deux structures embriquées #include 1/4 #include #define MAX 20 typedef struct { char nom[80]; float note; }etud; struct tab { etud tbl[MAX]; int size; }; Les modèles des structures

30 30 Structures des données TABLEAUX DE STRUCTURES - modèle 2  Exemple – avec deux structures embriquées void entrer(struct tab *s); 2/4 void print(struct tab s); void sort(struct tab *s); void main() { struct tab s; entrer(&s); print(s); sort(&s); printf("Apres le tri\n"); print(s); } Les prototypes des fonctions entrer nombre de structures:3 nom:Lili note:3.50 nom:Ivan note:5.50 nom:Ana note:4.00 Lili3.50 Ivan5.50 Ana4.00 Apres le tri Ivan5.50 Ana4.00 Lili3.50

31 31 Structures des données TABLEAUX DE STRUCTURES - modèle 2  Exemple – avec deux structures embriquées void entrer(struct tab *s) 3/4 { int n,i; do { printf("entrer nombre de structures:"); scanf("%d",&n); } while(n>MAX); fflush(stdin); for(i=0;i

32 32 Structures des données TABLEAUX DE STRUCTURES - modèle 2  Exemple – avec deux structures embriquées void print(struct tab s) 4/4 { int i; for(i=0;i

33 33

34 34

35 35

36 36

37 37

38 38

39 39

40 40

41 41

42 42

43 43

44 44

45 45

46 46

47 47

48 48

49 49

50 50

51 51


Télécharger ppt "1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée."

Présentations similaires


Annonces Google