Atelier de ProgrammationC II
Cours 3:
Les structures
1
2024 / 2025
Semestre II
Réalisé par: Dhouha Maatar
Nadia Ben Said
2.
2
PLAN
Définition
Déclarationd'une structure
Définition d’une variable de type structure
Utilisation
Structure imbriquée
Structure comportant des tableaux
Tableau de structure
Application
3.
3
Définition
Les enregistrements enalgorithmique sont appelés structures avec le
langage C.
Contrairement aux tableaux qui sont des structures de données dont tous les
éléments sont de même type, les structures sont des structures de données
dont les éléments peuvent être de type différents.
Les éléments qui composent une structure sont appelés champs.
Exemple:
ETUDIANT (Structure)
CIN (entier)
Nom (chaine)
Prénom (chaine) Champs
Age (entier)
Moyenne (réel)
4.
4
Déclaration d'une structure
Lorsde la déclaration de la structure, on indique les champs de la structure,
c'est-à-dire le type et le nom des variables qui la composent.
Syntaxe:
struct <Nom_Structure> {
<type_champ1> <Nom_Champ1>;
<type_champ2> <Nom_Champ2>;
<type_champ3> <Nom_Champ3>;
...
} ;
Remarque: La dernière accolade doit être suivie d'un point-virgule
• Le nom des champs répond aux critères des noms de variable
• Deux champs ne peuvent avoir le même nom
• Les données peuvent être de n'importe quel type
5.
5
Définition d’une variablede type structure
Alternative-1:
struct {
int CIN;
char Nom[30];
char Prenom[30];
int Age;
float Moyenne;
} e1; // e1 variable de type structure
struct {
int CIN;
char Nom[30];
char Prenom[30];
int Age;
float Moyenne;
} e2; // e2 variable de type structure
6.
6
Alternative-2:
struct Etudiant {
intCIN;
char Nom[30];
char Prenom[30];
int Age;
float Moyenne;
};
// Déclaration des variables e1 et e2 de type struct Etudiant
struct Etudiant e1, e2;
Définition d’une variable de type structure
7.
7
Alternative-3:
typedef struct {
intCIN;
char Nom[30];
char Prenom[30];
int Age;
float Moyenne;
} Etudiant;
// Déclaration des variables e1 et e2 de type Etudiant
Etudiant e1, e2;
Définition d’une variable de type structure
8.
8
Utilisation
– Soit ladéfinition du type Etudiant:
typedef struct {
int CIN;
char Nom[30];
char Prenom[30];
int Age;
float Moyenne;
} Etudiant;
// Déclaration des variables e1 et e2 de type Etudiant
Etudiant e1, e2;
– L’accès aux champs de la structure Etudiant est défini comme suit:
<nom_variable_structure>.<nom_champ>
Exemple:
e1.CIN
9.
9
Utilisation
Affectation d’une valeurà un champ d’une variable structure
Exemple
e1.CIN = 1234;
strcpy(e1.Nom , "Sassi");
strcpy(e1.Prenom, "Omar");
e1.Age = 19;
e1.Moyenne = 14.25;
OU
Etudiant e1 = {1234,"Sassi ","Omar ", 19, 14.25 };
Affectation globale d’une variable structure
Exemple: e2 reçoit les mêmes valeurs pour tous les champs que celles de e1:
e2 = e1;
10.
10
Remarque: On nepeut pas comparer deux variables de type structure en
utilisant les operateurs de comparaisons == et !=
=>Effectuer la comparaison champ par champ.
Exemple: if (strcmp(e1.Nom, e2.Nom)==0)
return 1; // e1 et e2 ont le même nom.
Affectation individuelle d’une variable structure
Exemple:
e2 reçoit les mêmes valeurs pour tous les champs que celles de e1, en faisant
une affectation champ par champ:
e2.CIN = e1.CIN;
strcpy(e2.Nom, e1.Nom);
strcpy(e2.Prenom, e1.Prenom);
e2.Age = e1.Age;
e2.Moyenne = e1.Moyenne;
Utilisation
11.
11
Utilisation
Lecture d’une variablestructure
Exemple
printf("Saisir CIN:" );
scanf("%d", &e1.CIN);
printf("Saisir Nom: ");
scanf("%s", e1.Nom);
……
Écriture d’une variable structure
Exemple
printf("CIN Etudiant: %d", e1.CIN );
printf("Nom Etudiant: %s", e1.Nom );
.…
Passage par adresse d’une variable structure
Exemple: l’entête d’ une fonction (sans retour) SaisirEtudiant() qui permet de
saisir un étudiant:
void SaisirEtudiant(Etudiant * e)
12.
12
Structure imbriquée
Une structurepeut avoir un champ qui est de type structure.
Dans ce cas, on parle de structures imbriquées.
La structure imbriquée doit être différente de la première.
Exemple:
ETUDIANT
CIN (entier)
Nom (chaine)
Prénom (chaine)
Date_Naissance (Date)
Moyenne (réel)
Définition des Structures Etudiant et Date
- Jour
- Mois
- Année
typedef struct {
int jour;
int mois;
int annee
} Date;
typedef struct {
int CIN;
char Nom[30];
char Prenom[30];
Date Date_Naissance;
float Moyenne;
} Etudiant;
13.
13
Structure imbriquée
L’affectation directeaux champs se fait comme suit par exemple:
Soit Etudiant e;
e.Date_Naissance.jour = 7;
e.Date_Naissance.mois =2;
e.Date_Naissance.année = 2002;
La saisie des champs est comme suit:
scanf ("%d %d %d", &e.Date_Naissance.jour, &e.Date_Naissance.mois,
&e.Date_Naissance.annee);
14.
14
Structure Comportant desTableaux
Exemple:
ETUDIANT
CIN (entier)
Nom (chaine)
Prénom (chaine)
Date_Naissance (Date)
Notes (Tableau) // Tableau contenant les 5 Notes obtenues par l’étudiant
Moyenne (réel)
Nouvelle définition de la structure Etudiant:
Exemples d’utilisation:
Etudiant e;
e.Notes[2] = 13.6;
printf ("%f", e.Notes[i]);
typedef struct {
int jour;
int mois;
int annee;
} Date;
typedef struct {
int CIN;
char Nom[30];
char Prenom[30];
Date Date_Naissance;
float Notes[5];
float Moyenne;
} Etudiant;
15.
15
Tableau de Structure
Etantdonné qu'une structure est composée d'éléments de taille fixes, il est possible de
créer un tableau ne contenant que des éléments du type d'une structure donnée.
Il suffit de créer un tableau dont le type est celui de la structure et de le repérer par un
nom de variable.
Exemple: On veut définir un nouveau type qui permet de représenter les étudiants d’une
classe, qui comporte un maximum de 50 étudiants:
# define MAX 50
typedef struct {
int jour;
int mois;
int annee;
} Date;
typedef struct {
int CIN;
char Nom[30];
char Prenom[30];
Date Date_Naissance;
float Notes[5];
float Moyenne;
} Etudiant;
typedef Etudiant Classe[MAX];
Classe C;
16.
16
Application 1
Créer unestructure point contenant les informations suivantes :
num de type entier
x de type réel
y de type réel
Développer la fonction ?saisir_point() qui permet de saisir et de retourner toutes les
informations relatives à un point.
Développer, en utilisant la fonction précédente, la fonction ?saisir_Tab_point(?) qui permet
de saisir les données de 4 points dans un tableau,
Développer la fonction ?Affiche_Tab_point(?) qui permet d’afficher le contenu du tableau.
19
Application 2
Dans ceproblème on se propose de programmer quelques traitements qui se font dans une
banque. Ces traitements concernent les clients de la banque et leurs soldes.
On supposera que les informations utiles d’un client sont les suivantes :
RIB : numéro de compte du client composé de 20 chiffres. (chaîne de caractères de taille 20)
nom : nom du client. (chaîne de caractères de taille 30)
CIN : carte d’identité du client. (chaîne de caractères de taille 8)
Solde : Solde du client. (du type réel)
1.Définir le type client.
2.Ecrire la fonction client saisie_client() permettant de saisir et de retourner toutes les
informations relatives à un client.
3.Développer , en utilisant la fonction précédente, la fonction void saisie_clients(client *C,int n)
permettant de Saisir les informations de n clients dans le tableau C.
4.Ecrire la fonction int client_au_rouge(client C[], int n) qui permet de chercher et retourner le
nombre de clients ayant des soldes négatives.
5.Définir le main qui permet de:
• Saisir le nombre total n des clients de la banque,
• Définir un tableau qui regroupe les informations des n clients,
• Saisir les données de tous les clients de la banque,
• Afficher le nombre de clients ayant des soldes négatives.
#3 Une structure permet de regrouper plusieurs types de données sous un même nom.Cela permet de créer des types personnalisés adaptés aux besoins du programme.
La structure regroupe des éléments de types différents.
#4 Notez bien qu’il s’agit de déclarations et non de définitions, l’utilisation d’initialisations est donc exclue.
Une structure ne peut pas comporter plus de cent vingt-sept membres.
On a la possibilité de déclararer plusiers champs qui ont le meme type
#11 Ecrire SaisirEtudiant de deux façons différentes
Etudiant SaisirEtudiant() void SaisirEtudiant(Etudiant *e)
#15 Comment accéder à chaque champs:
Comment accéder au nom de l etudiant 1
Comment accéder à la note de l etudiant 2
Comment accéder au jour de naissance de l etudiant 3
Comment accéder à la 3 ème note du 3 ème étudiant