Structures
This presentation is the property of its rightful owner.
Sponsored Links
1 / 17

Structures PowerPoint PPT Presentation


  • 55 Views
  • Uploaded on
  • Presentation posted in: General

Structures. Modèles d'objets réels. Qu'est ce que c'est une structure. Un objet complexe dont les parts ne sont du même type Exemple. Chaque partie d'objet (champ) peut être d'un type différent et a un nom par lequel il peut être accédé. Déclaration et présentation.

Download Presentation

Structures

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Structures

Structures

Modèles d'objets réels

B.Shishedjiev - Informatique II


Qu est ce que c est une structure

Qu'est ce que c'est une structure

  • Un objet complexe dont les parts ne sont du même type

    • Exemple

  • Chaque partie d'objet (champ) peut être d'un type différent et a un nom par lequel il peut être accédé.

B.Shishedjiev - Informatique II


D claration et pr sentation

Déclaration et présentation

  • Déclaration – on déclare le nom et les noms et les types des champs.

    • Déclaration de l'étiquette d'une structure

struct nom_de_structopt{

declare_champ1; declare_champ2; ... ;

declare_champn; };

B.Shishedjiev - Informatique II


D claration et pr sentation1

Déclaration et présentation...

  • Exemples

struct etudiant{

int numero;

char nom[30];

char sex;

int naiss[3];

double notes[5];

};// déclaration de la structure étudiant

struct etudiant e1,e2;//e1 et e2 sont variable

//de type struct etudiant

struct point{

int x;

int y;

} p1,p2;// déclaration combinée

struct point p3,p4; ;//p1,p2,p3,p4sont variable

//de type struct point

B.Shishedjiev - Informatique II


D claration et pr sentation2

Déclaration et présentation...

  • On peut omettre le nom du structure mais puis on ne peut pas déclarer nouvelle variable avec la même structure.

    on peut déclarer de nouveaux étudiants, mais pas de nouvelles variables qui ont la structure déclarée au dessus

    même que les deux structures ont les mêmes champs ils ne sont pas identiques

struct {

double r; double im;

} c1;

struct {

double r; double im;

} c2;

B.Shishedjiev - Informatique II


D claration et pr sentation3

Déclaration et présentation...

  • Présentation

typedef struct {int jour;

int mois;

int annee;} DATE;

struct etudiant{

int numero;

char nom[30];

char sex;

DATE naiss;

double notes[5];}

etud;

B.Shishedjiev - Informatique II


Initialisation

Initialisation

  • La structure est initialisée de même façon que le tableau (par des expressions constantes) .

typedefstruct {double x, double y} POINT;

struct fiche {

int numero;

char nom[32], prenom[32];

} u = { 1234, "DURAND", "Pierre" };

POINT p1 ={3.45, 2.56}, p2={0.0,0.0};

B.Shishedjiev - Informatique II


Initialisation1

Initialisation

  • Exemple

typedefstruct {int jour;

int mois;

int annee} DATE;

typedefstruct {

int numero; char nom[30];

char sex; DATE naiss;

double notes[5];} ETUDIANT;

ETUDIANT e1 = {245, "Dubois", 'M',{12,2,1988},

{12,10,8,14,6}};

B.Shishedjiev - Informatique II


Affectation

Affectation

  • On peut affecter la valeur d'une structure à une variable du même type. C'est équivalent à l'affectation des champs correspondants.

typedef struct etudiant{

int numero;

char nom[30];

char sex;

DATE naiss;

double notes[5];} ETUDIANT ;

ETUDIANT e1 = {245, "Dubois", 'M',{12,2,1988},

{12,10,8,14,6}}, e2;

...

e2 = e1;

B.Shishedjiev - Informatique II


Acc s aux champs

Accès aux champs

  • L'opérateur accès au champ '.'

    • Exemples

nom_de_varaible_structure.nom_du-champ

e1.numero = 1234;

e2.naiss.jour = 3;

e2.naiss.mois = 4;

e2.naiss.annee = 1983;

e2.notes[0] = 14;

B.Shishedjiev - Informatique II


Pointeurs vers structures

Pointeurs vers structures

  • Déclaration

    • Exemples

  • Accès aux champs des structures designées

    • Exemples

type_structure *nom

ETUDIANT *p1;

struct point {int x, int y} pt1,pt2, *p4;

p1 = &e1;

p4 = &pt2;

nom_de_pointeur_vers_structure->nom_du-champ

p1->numero = 1234;

p1->naiss.jour = 3;

p4->x = 3;

B.Shishedjiev - Informatique II


Pointeurs vers structures1

Pointeurs vers structures

  • Accès aux champs et adresses des champs

    Si les déclarations suivants existent

    Les expressions suivants sont équivalents

ETUDIANT *p1,et;

struct point {int x, int y} pt1,pt2, *p4;

p1 = &e1;

p4 = &pt2;

B.Shishedjiev - Informatique II


Param tres de fonctions

Paramètres de fonctions

  • La structure ne diffère pas d'autres type comme paramètre Exemple:

void affichEtud(ETUDIANT e) {

printf ("%6d %-15s %2d/%2d/%4d %5.2lf\n",

e.numero,e.nom, e.naiss.jour,

e.naiss.mois, e.naiss.annee, e.moyenne);

}

void affichEtud(ETUDIANT e) {

DATE *d = &e.naiss;

printf ("%6d %-15s %2d/%2d/%4d %5.2lf\n",

e.numero,e.nom, d->jour,

d->mois, d->annee, e.moyenne);

}

B.Shishedjiev - Informatique II


R sultat de fonction

Résultat de fonction

  • Une valeur du type structure peut servir comme résultat d'une fonction.Exemple

ETUDIANT lireEtud(void){

ETUDIANT e;

int i;

printf("Tapez le numero, le nom, et le gendre d'etudiant…");

scanf("%d , %s , %c \n",&e.numero,&e.nom,&e.sex);

puts("Tapez la date de naissance…");

scanf(", %2d / %2d / %d \n", &e.naiss.jour,

&e.naiss.mois, &e.naiss.annee);

printf("Tapez les %d notes d'etudiant \n", MAXNOTES);

for (i=0; i <MAXNOTES; i++) scanf(", %lf",(e.notes+i));

return e;

}

B.Shishedjiev - Informatique II


Tableau de structures

Tableau de structures

  • On peut utiliser un tableau dont les éléments sont de structures. Exemples

  • Chaque élément est une structure

ETUDIANT groupe[40];

struct point polygone[20];

groupe[0].numero = 12345;

(groupe+1)->numero = groupe->numero +1;

groupe[3].notes[2] = 12;

polygone[10].x = 4;

(polygone+10)->y = 6;

B.Shishedjiev - Informatique II


Exemple

Exemple

  • Trouver les moyennes des notes d'un groupe d'étudiants

#include <stdio.h>

#define MAXETUD 40

#define MAXNOTES 5

typedef struct {int jour;

int mois;

int annee;} DATE;

typedef struct {

int numero; char nom[30];

char sex; DATE naiss;

double notes[MAXNOTES];

double moyenne;} ETUDIANT;

ETUDIANT lireEtud(void);

void affichEtud(ETUDIANT e);

int lireGroupe(ETUDIANT g[], int maxEtud);

void calcMoyennes(ETUDIANT g[], int n);

B.Shishedjiev - Informatique II


Exemple1

Exemple

void main(void){

ETUDIANT groupe[MAXETUD];

int netud,i;

netud = lireGroupe(groupe, MAXETUD);

calcMoyennes(groupe, netud);

printf("num nom date moyenne\n");

for (i=0; i<netud;i++) affichEtud(groupe[i]);

}

void calcMoyennes(ETUDIANT g[], int n){

int i,j;

for (i=0 ; i< n; i++) {

g[i].moyenne = 0;

for (j=0; j<MAXNOTES; j++)g[i].moyenne +=g[i].notes[j];

g[i].moyenne /= MAXNOTES;

}

}

B.Shishedjiev - Informatique II


  • Login