Vous êtes sur la page 1sur 28

Chapitre 5 :

Types de Données Composés

Objectif

 Manipuler les types de données composés et leurs opérations.

Éléments de contenu

1. Introduction
2. Le type tableau
3. Le type chaine de caractères
4. Le type enregistrement

1
Abir BK, Karim H et Rym K
Introduction
Jusque-là, et avec les structures de données simple qu’on a déjà définies (entier, réel,
caractère,), on n’est capable de définir que des variables de types simples qui, à un instant
donné, ne peut contenir qu’une seule valeur, et l’affectation d’une nouvelle valeur détruit
l’ancienne.

Si par exemple ou voulais représenter les moyennes annuelles de 50 étudiants, la déclaration


de 50 variables de type Réel est alors absurde, il serait plus commode si on avait une structure
qui puisse englober toutes ces données. On parlera alors d’une structure de données
composée ou d’un type de données composé.

1. Le type Tableau
Un tableau est une structure de données permettant de regrouper sous un même nom un
nombre fini d’éléments de même type.
 Un tableau est caractérisé par :
 Son nom
 Sa taille (borne inférieure et borne supérieure connues à l’avance)
 Ses éléments : chaque élément est défini par son type et son contenu.
 L’accès à un élément du tableau se fait à l’aide d’un indice.

Dans ce chapitre, on va évoquer deux types de tableaux :


 Les tableaux à une dimension appelés également Vecteurs,
 Les tableaux à deux dimensions appelés également Matrices.

1.2 Tableau unidimensionnel ou Vecteur

1.2.1 Déclaration

A. Algorithmique
La déclaration d’un tableau peut être faite de deux manières équivalentes :

2
Abir BK, Karim H et Rym K
Var
Nom _ tableau : tableau [bi…bs] du _ type_ de_
base

Ou

Var
Nom _ tableau : tableau de taille type _ tableau

Avec :

 bi représente le plus petit élément de l’intervalle borné fermé.

 bs représente le plus grand élément de l’intervalle borné fermé.

 (bs – bi + 1) représente le nombre d’éléments d’un tableau : il sera fixe de


manière définitive en algorithmique.

 L’indice peut prendre n’importe quelle valeur comprise entre bi et bs.

 Type _ de_ base peut être : type simple (logique, caractère, entier, etc) ou type
composé (chaîne de caractère, etc.)

 Taille est un entier qui représente la taille du tableau

 Exemple :
Var
T : tableau de 100 entiers
Ou bien
T : tableau de [0..99] entiers

Un élément d’un tableau doit être considéré exactement comme une variable simple. En effet,
toutes les opérations applicables sur le type de base sont applicables sur les éléments du
tableau (comparaison, affectation, etc.)

L’indice n’est pas nécessairement une constante, il peut être également une variable ou une
expression.

 Exemples :

3
Abir BK, Karim H et Rym K
TAB [4] : donne le cinquième élément de TAB

TAB [i] : le contenu de la variable « i » détermine le rang de l’élément.

TAB [3 *i-5] : l’évaluation de l’expression va donner le rang de l’élément.

 Remarque :

 L’indice du tableau doit être obligatoirement de type entier.

 Il serait préférable que cet indice soit initialisé à la valeur 0.

 Un tableau, s’il est rempli, ne doit pas faire l’objet d’une lecture supplémentaire sauf
s’il s’agit d’une opération de mise à jour où on doit modifier le contenu des éléments
du tableau.

 La taille du tableau doit être connue à l’avance.

B. Langage C
En langage C, la syntaxe de la définition d’un tableau unidimensionnel est la suivante :

Type Nom _ tableau [Nombre d’éléments] ;

 Type : définit le type d’élément que contient le tableau, c’est-à-dire définit la taille
d’une case du tableau en mémoire.
 Nom_tableau : est le nom qu’on décide de donner au tableau. Le nom du tableau suit
les mêmes règles qu’un nom de variable
 Nombre d’éléments : est un nombre entier qui détermine le nombre de case que le
tableau doit comporter

 Exemples :

int Tab1[20] ; : Tableau de 20 entiers non initialisé


float Tab2[] = {1, 2, 3, 4, 5}; : Tableau de 5 réelles
int Tab3[20] = {1, 2, 3, 4, 5}; : Tableau de 20 entiers partiellement initialisé
char Tab4[30] ; : Tableau qui doit contenir 30 caractères

4
Abir BK, Karim H et Rym K
1.2.2 Opérations de base sur un tableau

A. Initialiser un tableau

Etant donné un tableau défini, les valeurs des éléments qu’il contient en sont pas
obligatoirement définies, il faut donc les initialiser. C’est-à-dire leur affecter une valeur

Algorithme Ini_Tab
Var
T: Tableau [0..N-1] de Entier
N, i: entier
Début
Lire (N)
Pour i de 0 à N-1 faire
T[i] 0
FinPour
Fin

Traduction en langage C

#include <stdio.h>
#include <conio.h>

int main()
{
int Tab[10];
int Taille, i=0;
do
{
printf("Donner la taille de Tableau Tab : ");
scanf("%d",&Taille);
}
while(Taille<2 || Taille>10);
for(i=0 ; i<Taille ; i++)

5
Abir BK, Karim H et Rym K
Tab[i]=0;
getch();
return 0;
}

B. Remplir un Tableau

Il s’agit de remplir le tableau par des valeurs saisis au clavier par l’utilisateur

Algorithme Remp_Tab
Var
T = Tableau [0..N-1] de Entier
N,i : entier
Début
Lire (N)
Pour i de 0 à N-1 faire
Lire( T [ i ] )
FinPour
Fin

Traduction en langage C

#include <stdio.h>
#include <conio.h>

int main()
{
int Tab[10];
int Taille, i=0;
do
{
printf("Donner la taille de Tableau Tab : ");
scanf("%d",&Taille);
}
while(Taille<2 || Taille>10);

6
Abir BK, Karim H et Rym K
for(i=0 ; i<Taille ; i++)
scanf("%d",&Tab[i]);
getch();
return 0;
}

C. Affichage des éléments d’un tableau

Il s’agit d’afficher les différents éléments stockés dans un tableau TAB.

Algorithme Aff_Tab
Var
TAB= Tableau [0..N-1] de Entier
N,i : entier
Début
Lire (N)
Pour i de 0 à N-1 faire
Écrire ( TAB [ i ], " ")
FinPour
Fin

Traduction en langage C

#include <stdio.h>
#include <conio.h>

int main()
{
int TAB[10];
int Taille, i=0;
/*Avant d’afficher le tableau TAB il faut le remplir par des éléments*/
do
{
printf("Donner la taille de Tableau Tab : ");
scanf("%d",&Taille);

7
Abir BK, Karim H et Rym K
}
while(Taille<2 || Taille>10);
for(i=0 ; i<Taille ; i++)
scanf("%d",&TAB[i]);
/*Affichage de tableau TAB*/
for(i=0 ; i<Taille ; i++)
printf("%d\t",TAB[i]);
getch();
return 0;
}

1.3 Tableau bidimensionnels ou matrice

Un tableau à deux dimensions appelé également matrice est une structure de données
permettant d’organiser des informations de même type en lignes et en colonnes. Il est
caractérisé donc par son nombre de lignes et son nombre de colonnes.

1.3.1 Déclaration

A. Algorithmique

Var
M : Tableau [0..Nbr_Lig-1, 0..Nbr_Col-1] de Type_Élément

Ou bien

Var
M : Tableau [Nbr_Lig, Nbr_Col] de Type_Élément

 L’accès à un élément de la matrice ne peut se faire qu’avec deux indices : un


élément est identifié par son numéro de ligne et son numéro de colonne.

8
Abir BK, Karim H et Rym K
ème ème
 Si M est la matrice, M[I,J] désigne l’élément de M situé à la I Ligne et à la J
Colonne.

B. Langage C

En langage C, la syntaxe de la définition d’un tableau double dimensions est la suivante :

Type Nom _ Matrice [NombreLigneMax][NombreColMax] ;

 Type : définit le type d’élément que contient la matrice, c’est-à-dire définit la taille
d’une case de la matrice en mémoire.
 Nom _ Matrice: est le nom qu’on décide de donner à la matrice.
 NombreLigneMax: est un nombre entier qui détermine le nombre de lignes max de la
matrice.
 NombreColMax : est un nombre entier qui détermine le nombre de colonnes max de
la matrice.

1.3.2 Opérations de base sur une matrice :

Au niveau de cette section, on suppose manipuler une matrice M de type entier.

A. Initialiser une matrice

Algorithme Ini_matrice
Var
M : Tableau de [Nbr_Lig, Nbr_Col] Entier
Nbr_Lig, Nbr_Col ,I,J: entier
Début

Lire(Nbr_Lig)
Lire(Nbr_Col)

Pour I de 0 à Nbr_Lig-1 Faire


Pour J de 0 à Nbr_Col-1 Faire
M[I,J] 0
FinPour

9
Abir BK, Karim H et Rym K
FinPour
Fin

Traduction en langage C

#include<conio.h>
#include<stdio.h>

int main()
{
int M[5][5];
int Nbr_Lig, Nbr_Col, i, j;

do
{
printf("Donner le nombre de lignes dans [2..5] : ");
scanf("%d",&Nbr_Lig);
}
while(Nbr_Lig<2 || Nbr_Lig>5);

do
{
printf("Donner le nombre de colonnes dans [2..5] : ");
scanf("%d",&Nbr_Col);
}
while(Nbr_Col<2 || Nbr_Col>5);

for(i=0 ; i<Nbr_Lig ; i++)


for(j=0 ; j<Nbr_Col ; j++)
M[i][j]=0;

getch();
return 0;
}

10
Abir BK, Karim H et Rym K
B. Remplir une matrice

Algorithme Remplir_matrice
Var
M : Tableau [1..Nbr_Lig, 1..Nbr_Col] de Entier
Nbr_Lig, Nbr_Col ,I,J: entier
Début

Lire(Nbr_Lig)
Lire(Nbr_Col)

Pour I de 0 à Nbr_Lig-1 Faire


Pour J de 0 à Nbr_Col-1 Faire
Lire(M[I,J])
FinPour
FinPour
Fin

Traduction en langage C

#include<conio.h>
#include<stdio.h>

int main()
{
int M[5][5];
int Nbr_Lig, Nbr_Col, i, j;

do
{
printf("Donner le nombre de lignes dans [2..5] : ");
scanf("%d",&Nbr_Lig);
}
while(Nbr_Lig<2 || Nbr_Lig>5);

11
Abir BK, Karim H et Rym K
do
{
printf("Donner le nombre de colonnes dans [2..5] : ");
scanf("%d",&Nbr_Col);
}
while(Nbr_Col<2 || Nbr_Col>5);

for(i=0 ; i<Nbr_Lig ; i++)


for(j=0 ; j<Nbr_Col ; j++)
{
printf("Donner la valeur de la case M[%d][%d] : ",i+1,j+1);
scanf("%d",&M[i][j]);
}

getch();
return 0;
}

C. Parcourir une matrice

Algorithme Parcourir_matrice
Var
M : Tableau [1..Nbr_Lig, 1..Nbr_Col] de Entier
Nbr_Lig, Nbr_Col ,I,J: entier
Début

Lire(Nbr_Lig)
Lire(Nbr_Col)
Pour I de 0 à Nbr_Lig-1 Faire
Pour J de 0 à Nbr_Col-1 Faire
Lire(M[I,J])
FinPour
FinPour

12
Abir BK, Karim H et Rym K
Pour I de 0 à Nbr_Lig-1 Faire
Pour J de 0 à Nbr_Col-1 Faire
Ecrire(M[I,J], " ")
FinPour
RetourLigne()
FinPour

Fin

Traduction en langage C

#include<conio.h>
#include<stdio.h>

int main()
{
int M[5][5];
int Nbr_Lig, Nbr_Col, i, j;

do
{
printf("Donner le nombre de lignes dans [2..5] : ");
scanf("%d",&Nbr_Lig);
}
while(Nbr_Lig<2 || Nbr_Lig>5);

do
{
printf("Donner le nombre de colonnes dans [2..5] : ");
scanf("%d",&Nbr_Col);
}
while(Nbr_Col<2 || Nbr_Col>5);

13
Abir BK, Karim H et Rym K
for(i=0 ; i<Nbr_Lig ; i++)
for(j=0 ; j<Nbr_Col ; j++)
{
printf("Donner la valeur de la case M[%d][%d] : ",i+1,j+1);
scanf("%d",&M[i][j]);
}

for(i=0 ; i<Nbr_Lig ; i++)


{
for(j=0 ; j<Nbr_Col ; j++)
printf("%d\t",M[i][j]);

printf("\n\n");
}
getch();
return 0;
}

2. Le type chaîne de caractères


Une chaîne de caractères est une succession de n caractères avec n compris entre 0 et 255.
Pour éviter de confondre une chaîne de caractères du nom d’une variable, on la met entre
deux apostrophes qui délimitent son début et sa fin.

2.1 Déclaration
Algorithmique

Type
Nom_chaine = chaine [Taille_max]
Var
Nom_variable : Nom_chaine

Var
Nom_variable : chaine [Taille_max]

Avec :

14
Abir BK, Karim H et Rym K
 Taille_max désigne la taille maximale que peut avoir une chaîne de caractère ; il doit
être strictement positif.

Exemple :
Type
Nom = chaine [20]
Var
Nom1, Nom2 : Nom
On a déclaré une chaîne Nom qui est de taille maximale 20 et deux variables Nom1 et Nom2.
Langage C

Une chaîne de caractères n'est rien d'autre qu'un tableau de type char

char Nom_Chaine [Taille_Max] ;

La figure suivante vous donne une idée de la façon dont la chaîne « Salut » est stockée en
mémoire

Comme on peut le voir, c'est un tableau qui prend 5 cases en mémoire pour représenter le mot
« Salut ».

15
Abir BK, Karim H et Rym K
Toutefois, une chaîne de caractères ne contient pas que des lettres ! Le schéma de la fig.
suivante est en fait incomplet. Une chaîne de caractère doit impérativement contenir un
caractère spécial à la fin de la chaîne, appelé « caractère de fin de chaîne ». Ce caractère
s'écrit'\0'.

Par conséquent, pour stocker le mot « Salut » (qui comprend 5 lettres) en mémoire, il ne faut
pas un tableau de 5char, mais de 6 !

Chaque fois que vous créez une chaîne de caractères, vous allez donc devoir penser à prévoir
de la place pour le caractère de fin de chaîne.

2.2 Opération de base sur une chaine de caractères :

En Algorithmique

Lecture d’une chaîne de caractères :


Lire (Nom1, Nom2)

L’affichage :
Ecrire (Nom1, Nom2)

16
Abir BK, Karim H et Rym K
Initialisation :
Nom1 ‘’ (*chaîne vide*)
En C

C dispose un ensemble de fonctions prédéfinies pour faciliter la manipulation de ce type.


Parmi celles-ci, on cite :
 gets : permet de lire une chaîne de caractères à partir du clavier.
o char ch[20] ;
o gets (ch) ; //est une instruction équivalente à scanf(« %s »,ch)
 puts : permet d’afficher une chaîne de caractères sur l’écran.
o puts(ch) ; //est une instruction équivalente à printf(« %s »,ch)

2.3 Les fonctions prédéfinies sur les chaines de caractères :

Les langages de programmation comportent un jeu de fonctions prédéfinies sur le type chaîne
de caractère. On cite principalement les fonctions suivantes :
- La fonction LONG qui retourne la longueur d’une chaîne
- La fonction CONCAT qui rassemble plusieurs chaînes en une seule.
- La fonction POS qui retourne la position d’une sous chaîne dans une chaîne.
- La fonction MAJ qui rend une chaîne en majuscule.
- La fonction MIN qui rend une chaîne en majuscule.
- La fonction SUBSTR qui permet d’extraire une sous chaîne à partir d’une chaîne.

2.3.1 La fonction LONG :


Cette fonction lorsqu’elle est appliquée à une chaîne retourne sa taille réelle et non pas la
taille maximale.

Algorithmiquement, elle est notée : LONG (nom_chaine)

 Exemple :

CH : chaine

X : entier

CH ’isetjendouba’

17
Abir BK, Karim H et Rym K
X long (ch)

Ecrire (x)

Dans la variable x on va trouver la valeur 12.

 Remarque :

 La longueur d’une chaîne étant un entier, on ne peut pas la mettre isolée dans un
algorithme ; on doit l’affecter à une variable de type entier ou on doit le mettre
dans une primitive d’écriture.

2.3.2 La fonction CONCAT :

Cette fonction permet de concaténer plusieurs chaînes non nécessairement de même taille, en
une seule.

Algorithmiquement, elle est notée : CONCAT (CH1,CH2,CH3,..,CHN) ou CHi sont des


chaînes.

 Exemple :

Nom : chaîne

Prénom : chaîne

Etudiant : chaîne

Etudiant  CONCAT (Nom, Prénom)

Ecrire (CONCAT (Nom, Prénom))

Dans la variable Etudiant, on va trouver une chaîne contenant le nom et le prénom ensemble.

 Remarque :

 La concaténation de plusieurs chaînes est une chaîne, on ne peut pas la mettre isolée
dans un algorithme ; on doit l’affecter à une variable de chaîne ou on doit le mettre
dans une primitive d’écriture.

18
Abir BK, Karim H et Rym K
2.3.3 La fonction POS :

La fonction POS retourne la position à partir de laquelle une sous chaîne apparaisse dans une
chaîne Dans les cas où cette chaîne n’existe pas, elle retourne la valeur zéro.

Algorithmiquement, elle est notée POS et le résultat c’est un entier :

X POS (nom_chaine,nom_sous_chaine)

X prend comme valeur la position à partir de laquelle la sous chaîne apparaisse dans la chaîne.

 Exemple :

CH ‘isetjendouba’

CH1 ‘et’

X POS (CH,CH1)

On trouvera dans X la valeur 3 de même pour :

X POS (CH,’et’)

On trouvera le même résultat.

 Remarque :

 La position étant un entier, on ne peut pas la mettre isolée dans un algorithme ; on


doit l’affecter à une variable de type entier ou on doit la mettre dans une primitive
d’écriture.

2.3.4 Les fonctions MAJ et MIN :

Ces fonctions permettent de transformer une chaîne en majuscule ou minuscule,


respectivement en urne chaîne minuscule ou majuscule.

Algorithmique ment, on les note par : MAJ (CH) et MIN (CH).

 Exemple :

CH ‘isetjendouba’

CHMAJ (CH) dans ce cas CH prendra la valeur ‘ISETJENDOUBA’

CHMIN (CH) dans ce cas CH prendra la valeur ‘isetjendouba’.

19
Abir BK, Karim H et Rym K
2.3.5 La fonction SUBSTR :

Il s’agit d’extraire une sous-chaîne de taille P à partir d’une position dans une chaîne.

Algorithmiquement, elle est notée sous-chaîne. Pour faciliter son utilisation, on va utiliser la
convention du langage pascal qui est SUBSTR. Cette fonction retourne une chaîne de
caractères.

CH1 SUBSTR (CH,pos,p) avec :

- CH étant la chaîne principale à partir de laquelle on va faire l’extraction.

- Pos est la position à partir de laquelle on va procéder à l’extraction.

- P est la taille de la sous chaîne à extraire.

 Exemple :

CH ‘iset el jendouba’

CH1 SUBSTR (CH,2,3)

Dans CH1, on va trouver la sous-chaîne ‘set’.

2.4 La bibliothèque string.h en langage C

Cette bibliothèque fournit un ensemble de fonctions qui permettent de manipuler des chaînes
de caractères. En voici la liste :

strcat, strchr, strcmp, strcpy, strcspn, strlen, strncat, strncmp, strncpy, strpbrk, strrchr, strspn,
strtok.

Vous remarquerez que leurs noms commencent toujours par "str" pour string (chaîne en
anglais).

Nous détaillons le fonctionnement de :

 strcpy (chaîne1, chaîne2) : copie le contenu de « chaîne2 » dans « chaîne1 ».


L'ancienne valeur de chaîne1 est perdue.
 strlen (chaîne) : renvoie le nombre de caractères de la chaîne. Cette fonction compte
les caractères jusqu'à trouver le ‘\0'. La valeur renvoyée est le nombre de caractères
avant le ‘\0'

20
Abir BK, Karim H et Rym K
 strcat (chaîne1, chaîne2) : copie le contenu de chaîne2 à la fin de chaîne1.
 strcmp ( chaîne1 , chaîne2 ) : compare les deux chaînes, retourne 0 en cas d'égalité,
une valeur négative si « chaîne1 » est "avant" « chaîne2 » dans l'ordre
lexicographique, une valeur strictement positive sinon.
 strncat ( chaine1 , chaine2 , n ) : concatène au plus les « n » premiers caractères de «
chaine2 » à « chaine1 ». Si n est plus grand que la longueur de « chaine2 », la
longueur de « chaine2 » est utilisée à la place de n.
 strncpy ( chaine1 , chaine2 , n) : copie « n » caractères de « chaine2 » sur « chaine1
». Si « n » est inférieur à longueur de « chaine2 » « \0 » n'est pas ajouté en fin de «
chaine1 ». Si « n » est supérieur à longueur de « chaine2 », « chaine1 » est complétée
par des « \0 ».

Pour les opérations de copies, si la chaîne de caractères cible « chaîne1 » ne contient pas assez
de place pour contenir « chaîne2 » alors seuls les caractères que l'on peut copier le sont. On
dit que « chaîne2 » est tronquée.

3. Le type Enregistrement

Le type enregistrement est une structure de données permettant de regrouper en ensemble de


données de types différents sous une même variable. Un enregistrement est composé d’une ou
plusieurs variables non nécessairement de même type, appelées champs ou rubriques. Le
type enregistrement est dit également le type structure.

3.1 Déclaration
Algorithmique

Dans un algorithme, un enregistrement est déclaré comme suivant :

21
Abir BK, Karim H et Rym K
Type
Nom_Enreg : Enregistrement

Nom_champ1 : type_champ1
Nom_champ2 : type_champ2

Nom_champ n : type_champ n

Fin Enregistrement

Var
Nom_variable : Nom_Enreg

Exemples :
Type
Etudiant : Enregistrement
Nom : chaîne [30]
Prenom : chaîne [20]
Matricule : entier
Age : entier
Fin Enregistrement
Var
Etud : Etudiant

Type
Produit = Enregistrement
Quantité : Entier
Prix : Réel
Ref : chaîne[5]
Fin Enregistrement
Var
Pr :Produit

Type
Date = Enregistrement
Jour : Entier
Mois : Entier

22
Abir BK, Karim H et Rym K
Année : Entier
Fin Enregistrement
Var

Dn :Date

Langage C
Dans un programme en C, un enregistrement est déclaré avant la fonction main() comme
suivant :

typedef struct Nom_Enreg


{
Type_champ1 Nom_champ1 ;
Type_champ2 Nom_champ2 ;

Type_champN Nom_champN ;
} Nom_Enreg ;

int main()
{
Nom_Enreg Nom_Variable ;

}
Exemples :
#include<conio.h>
#include<stdio.h>

typedef struct Etudiant


{
char Nom[30];
char Prenom[20];
int Matricule;
int Age;
} Etudiant ;

int main()

23
Abir BK, Karim H et Rym K
{
Etudiant Etud;
....
getch();
return 0;
}

#include<conio.h>
#include<stdio.h>

typedef struct Produit


{
int Quantite;
float Prix;
char Ref[5];
} Produit ;

int main()
{
Produit Pr;
....
s getch();
return 0;
}

#include<conio.h>
#include<stdio.h>

typedef struct Date


{
int Jour;
int Mois;
int Annee;
} Date ;

int main()

24
Abir BK, Karim H et Rym K
{
Date Dn;
....
getch();
return 0;
}

3.2 Accès à un champ d’un enregistrement :

Pour accéder soit en lecture, soit en écriture à un champ d’enregistrement que ce soit dans un
algorithme ou un programme, on utilise la syntaxe suivante.

Nom_variable.Nom_champ

Exemples :

Etud.Nom
Etud.Prénom
Etud.CIN
Pr.Nom
Pr.Qte

3.2.1 Accès en lecture

Une variable de type enregistrement doit être lue champ par champ. Par exemple :
Var
P : Personne
C : Complexe
On ne peut pas faire lire(E) ou lire(C) mais il faut faire :

Lire(P.nom)
Lire(P.prénom)
Lire(P.CIN)
Lire(C.P_réel)
Lire(C.P_imag)

25
Abir BK, Karim H et Rym K
En langage C

scanf("%s", &P.nom) ;
scanf("%s", &P.prénom) ;
scanf("%d", &P.CIN) ;
scanf("%f", &C.P_réel) ;
scanf("%f", &C.P_imag) ;

3.2.2 Affichage

Une variable de type enregistrement doit être affichée champ par champ. Par exemple :
Var
P : Personne
C : Complexe
On ne peut pas faire écrire(E) ou écrire(C) mais il faut faire :

Ecrire(P.nom)
Ecrire(P.prénom)
Ecrire(P.CIN)
Ecrire (C.P_réel)
Ecrire (C.P_imag)

En langage C

printf("Nom = %s\n", P.nom) ;


printf ("Prenom = %s\n", P.prenom) ;
printf ("CIN = %d\n", P.CIN) ;
printf ("Partie réelle = %f\n", C.P_réel) ;
printf ("Partie imaginaire %f", C.P_imag) ;

3.2.3 Affectation

Une variable de type enregistrement doit être initialisée champ par champ. Par exemple :
Var
P1,P2 : Personne
D : Date

26
Abir BK, Karim H et Rym K
E : Etudiant
On ne peut pas faire D  ??? , mais il faut faire :

P1.nom  "Ben Mahmoud"


P1.prénom  "Ali"
P1.CIN  073215
P2.nom  P1.nom
P2.prénom  P1.prénom
P2.CIN  P1.CIN
E.age  E.age + 1
D.jour  15
D.mois  12
D.année  2006

Remarque :

 Il existe des variables de type enregistrement dont certains champs sont eux même
de type enregistrement donc on parle ici de l’enregistrement imbriqué ;

 Exemple :
Type
Date = Enregistement
Jour : Entier
Mois : Entier
Année : Entier
Fin Enregistrement
Type
Personne = Enregistement
Nom : chaîne[30]
Prénom : chaîne[20]
Date_Naissance : Date
Fin Enregistrement

Var
P : Personne

DEBUT

27
Abir BK, Karim H et Rym K
Lire(P.nom)
Lire(P.prénom)
Lire(P.date_naissance.Jour)
Lire(P.date_naissance.Mois)
Lire(P.date_naissance.Année)
FIN

4. Exercices d’application
Exercice 1

Ecrire un algorithme qui lit les dimensions L et C d'un tableau T à deux dimensions du type
entier (dimensions maximales : 50 lignes et 50 colonnes). Remplir le tableau par des valeurs
entrées au clavier et afficher le tableau ainsi que la somme de tous les éléments qui se
trouvent dans la même ligne.

Traduire cet algorithme en langage C

Exercice 2

Ecrire un algorithme qui lit deux chaînes de caractères CH1 et CH2 et qui copie la première
moitié de CH1 et la première moitié de CH2 dans une troisième chaîne CH3. Afficher le
résultat.
Traduire cet algorithme en langage C

Exercice 3

Ecrire un algorithme qui permet de gérer une association des joueurs de football, un joueur est
caractérisé par son nom, son prénom, sa date de naissance, sa nationalité, et son sexe.
Cet algorithme permet aussi d’afficher tous les joueurs qui ont un Age supérieur à 22 ans.

Traduire cet algorithme en langage C

28
Abir BK, Karim H et Rym K

Vous aimerez peut-être aussi