You are on page 1of 27

Structures de donnes

Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

STRUCTURES ET FONCTIONS C

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Plan de la leon
Structures Unions Fonctions

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

STRUCTURES

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Dfinition
Un nouveau type utilisateur typedef struct _article { int code; char design[25]; float prixUnit; int quantite; } article;
article est quivalent struct _article article tv, *p;
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Dfinition
Variable

struct article tv ;

Espaces ajouts par des compilateurs


Optimiser le temps daccs mmoire code design prixUnit quantite

tv
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Accs aux champs


Accs par valeur Accs par adresse p = & tv ; p -> prixUnit = 989.50;
code p
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

tv . code =23798;

prixUnit tv
989.50

23798

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Manipulation des structures


Affectation
Recopier une structure dans une autre

article a; article copie; copie = a;

23798
Prof. A. EL FAKER

989.50

23798

copie

989.50

ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Manipulation des structures


Paramtre : gnralement par adresse float prixTotalHT(article *p,int q) { return (p->prixUnit * q); } Retour : toujours par adresse article * saisie(void) { article a; scanf(%s,a.design); return (&a); }
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Initialisation des structures


Au moment de leur dfinition, l'aide d'une liste de valeurs entre accolades struct date { int jour, mois, an; } aujourdhui = {8,7,2004};
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Unions

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Unions
Tous les membres sont implants la mme adresse union OV { char op ; float val ; } ov ;

ov 0

op

val 42

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Unions
Structure avec partie variante struct U{ boolean isOp; union{ char op ; float val ; } opVal; opVal }u;
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Accs
u.isOp = true; u.opVal.op =+

isOp opVal true +

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Exercice
Dfinir un point dans le plan laide de ses deux reprsentations :
Polaire : (rho, theta) Cartsienne : (re, im) M

im


re

Dclarer le point
M(rho=PI/3, theta=2)
Prof. A. EL FAKER

ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

FONCTIONS

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Dfinition
int f(int a, int b) { int x; x = a*b; return x; Prototype

Corps

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Dfinition
int f(int a, int b) f est une adresse f ne peut tre dfinie lintrieur dune autre fonction
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Prototype
Dclarer un prototype sans corps?
Avertir le compilateur La fonction est dfinie dans un autre fichier ou plus loin dans le mme fichier

int recherche(int [ ], int, int);


Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Prototype
Prototype complet int recherche(int tab[ ], int n, int x); Facilite la documentation pour le programmeur
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Type de retour
{ } int x = a*b; return x;

return spcifie la fois la fin de la fonction courante et attribue comme valeur cette fonction la valeur de l'expression exp
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Type de retour
void int
Ne renvoie aucune valeur Par dfaut

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Type de retour
int [] Pas de tableau Pas de fonction Pas de structure
Mais peut tre un pointeur

struct article * f() ;


Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Passage de paramtres

Pour permettre la modification d'un objet on doit passer son adresse et non une copie de sa valeur

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Passage de paramtres
Transmission par adresse void echange(int *a, int *b){ int c =*a; *a=*b; *b=c;} main(){ int n=10, m=20; echange(&n,&m); }
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

10 20 20 10

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Passage de paramtres

Une fonction peut tre passe en paramtre une autre fonction

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Les macro-fonctions
#define MIN(a,b) (a<b)? a : b
Substitu par le prprocesseur lutilisation

int y=MIN(x,0);

int y=(x<0)? x : 0;
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Les macro-fonctions
Points forts Pratique Rapide Les mcanismes dappel et de retour de fonction ne sont pas mis en oeuvre
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Structures de donnes
Leon n 1 Introduction et C : Structures et fonctions n. 4 Complments vue densemble

Les macro-fonctions
Points faibles Mise au point et maintenance difficiles

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

You might also like