Documente Academic
Documente Profesional
Documente Cultură
Moulay Ismal
Langage C
KHALID SBAI
Enseignant Chercheur
Ecole Suprieure de Technologie
Dpartement de Gnie Electrique
kh.sbai@yahoo.fr
Universit Moulay Ismal
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
Les structures
Type de donnes du langage C
Constitu de plusieurs lments, appels champs
ou membres.
Chaque membre a un nom.
Chaque membre peut tre de type diffrent.
Intrt
Rassembler des donnes htrognes caractrisant
une entit pour en faire un type utilisateur.
quivalence base de donnes :
Champ de la table /membre de la structure
Enregistrement / variable du type structure
Table / structure
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
23/02/2012
Dclaration de base du
modle formel de la structure
avec le mot cl struct et non la
variable.
est appel tiquette de la
structure. Ltiquette permet
didentifier un modle de
structure.
struct nom_structure
{
type1 nomchamps1;
type2 nomchamps2;
.
.
.
typeN nomchampsN;
};
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
Dclaration optionnelle
dun type
Dclaration optionnelle
dune variable
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
23/02/2012
De type diffrent.
// Affiche 190
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
23/02/2012
struct LIVRE
{
char titre[80];
char auteur[40];
char editeur[40];
char ISBN[11];
int nombre_pages;
int annee edition;
double prix;
};
Universit
Moulay Ismal
Exemple2
struct personne
{
char nom[20];
char prenom[20];
int no_employe;
};
struct personne p1, p2;
struct pt p;
}
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
Forme recommande
typedef struct
{
char titre[80];
char auteur[40];
char editeur[40];
char ISBN10[11];
int nombre_pages;
int annee edition;
double prix;
} LIVRE;
Syntaxe habituelle:
LIVRE livre1;
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
Notations
quivalentes
typedef struct pt
{
int x;
int y;
int z;
char nom;
} point;
main()
{
point p;
}
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
Universit
Moulay Ismal
(non)
Universit
Moulay Ismal
#include <math.h>
struct complexe
{
double reelle;
double imaginaire;
};
main()
{
struct complexe z;
double norme;
...
norme = sqrt(z.reelle * z.reelle + z.imaginaire * z.imaginaire);
printf("norme de (%f + j %f) = %f \n",z.reelle,z.imaginaire,norme);
}
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
23/02/2012
livre2=livre1;
}
Universit
Moulay Ismal
Tableaux de structures
Comme le mot clef struct dfinit un type alors il est
parfaitement possible de crer des tableaux stockant
des structures du mme type.
Exemple
struct eleve
{
int module1;
int module2;
};
struct eleve promotion[35];
Universit
Moulay Ismal
struct eleve
{
char nom[50];
double notes[10];
};
Universit
Moulay Ismal
Universit
Moulay Ismal
int main()
{
LIVRE livre1;
...
strcpy(livre1.editeur_livre.nom,
"Mhfoud");
...
}
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
...
saisir_editeur(&livre1.editeur_livre);
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
Exemple dutilisation
les nombres complexes
Universit
Moulay Ismal
Universit
Moulay Ismal
23/02/2012
Allocation dynamique
main()
{
struct s_fiche *fiche ;
int nb_fiches ;
int i ;
printf(Combien de fiches ? ) ;
scanf(%d,&nb_fiches) ;
/* allocation */
fiche=(struct s_fiche*)
malloc(nb_fiches*sizeof(s_fiche)) ;
if (fiche==NULL)
{printf( erreur dallocation \n ) ; exit(1) ;
}
Universit
Moulay Ismal
(suite)
struct s_date SaisirDate(void)
{ struct s_date date ;
printf( Jour ? ) ;
scanf(%d,&date.jour) ;
printf(\n Mois ? ) ;
scanf(%d,&date.mois) ;
printf(\n An ? ) ;
scanf(%d,&date.an) ;
printf(\n) ;
return date ;
}
void SaisirFiche(struct s_fiche *f)
{
printf(Nom ?) ;
gets(f->nom) ;
printf(Numero ?) ;
scanf(%d,&f->numero) ;
f->naissance=SaisirDate() ; }
Universit
Moulay Ismal
typedef struct
{
char code;
short taille;
double prix;
} article;
if (fichier != NULL)
{
fwrite(&article1, sizeof(article), 1, fichier);
if (fclose(fichier))
printf("Le fichier n'a pas t correctement crit");
}
else
printf("Erreur lors de l'ouverture du fichier.\n");
int main()
{
FILE * fichier;
article article1 =
{ 'A', 42, 25.50 };
Universit
Moulay Ismal
Universit
Moulay Ismal
23/02/2012
UNION
Dfinition :
Une union rassemble une collection de champs occupant
tous le mme emplacement mmoire. Une union est
comparable une structure sauf qu'elle permet de
dfinir plusieurs variables stockes au mme endroit en
mmoire.
Universit
Moulay Ismal
23/02/2012
union nom_union
{
type1 nomchamps1;
type2 nomchamps2;
.
.
.
typeN nomchampsN;
};
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
} z1,z2, essai;
23/02/2012
Universit
Moulay Ismal
La taille dune union est celle du plus long types de ces membres.
Universit
Moulay Ismal
Universit
Moulay Ismal
Universit
Moulay Ismal
Universit
Moulay Ismal
23/02/2012
TYPES ENUMERES
Dfinition
La dfinition dune numration respecte la syntaxe
donne dans lencart suivant.
enum nom_enum
{
numrateur1,
numrateur2,
numrateur3,
numrateur4,
...
numrateurN
} variables ;
Universit
Moulay Ismal
/* couleurs fondamentales */
/* valeur 3 */
/* valeur 6 */
/* valeur 5 */
/* valeur 7 */
Universit
Moulay Ismal
23/02/2012
TYPES ENUMERES
Exemple
main ()
{
enum couleur col;
col = noir;
printf ("%d ", col); imprime (col);
col += rouge;
printf ("%d ", col); imprime (col);
col += cyan;
printf ("%d ", col); imprime (col);
col -= bleu;
printf ("%d ", col); imprime (col);
}
Universit
Moulay Ismal
Universit
Moulay Ismal
FIN