Vous êtes sur la page 1sur 5

Algorithmique et structure de données II

1e année LBC, 2020/2021

TD2 : Enregistrements

Définition :
Un enregistrement est un type de données défini par l'utilisateur et qui permet de
grouper un nombre fini d'éléments de types éventuellement différents.
Un enregistrement, appelé aussi structure, est une variable complexe qui permet de
désigner sous un seul nom un ensemble de valeurs pouvant être de types différents
(simples ou complexes).
Chaque élément de l’enregistrement est nommé champ.
L’accès à un champ se fait par son nom dans l’enregistrement.
Puisque l'enregistrement est un nouveau type, on commence par sa déclaration. Lors
de la déclaration de l’enregistrement, on définit un modèle où on indique les champs
de l’enregistrement, c'est-à-dire le type et le nom des variables qui la composent.
Puis la déclaration des objets (variables).

Exercice 1 :

Algorithme GesP 
Type
Spoint : Enregistrement
x : Entier
y : Entier
Fin Spoint
 Variables
Sp1, Sp2, Sp3 : Spoint
Produit1, Produit2 : entier
Début
Ecrire («Donner l’abscisse de premier point »)
Lire(Sp1.x)
Ecrire («Donner l’ordonnée de premier point »)
Lire(Sp1.y)
Ecrire («Donner l’abscisse de deuxième point »)
Lire(Sp2.x)
Ecrire («Donner l’ordonnée de deuxième point »)
Lire(Sp2.y)
Ecrire («Donner l’abscisse de troisième point »)
Lire(Sp3.x)
Ecrire («Donner l’ordonnée de troisième point »)
Lire(Sp3.y)
Produit1<- (Sp2.x- Sp1.x)*( Sp3.y- Sp1.y)
Produit2<- (Sp3.x- Sp1.x)*( Sp2.y- Sp1.y)
Si (Produit1= Produit2)
Ecrire («les trois points sont alignés)
fin

Exercice 2 :

1
Algorithmique et structure de données II
1e année LBC, 2020/2021

1. Définir un enregistrement Spers contenant l’âge, la taille et le sexe d’une personne.


Type
Spers : Enregistrement
age: Entier
taille : Entier
sexe : chaine
Fin Spers
2. Déterminer la procédure saisipers qui permet de saisir les informations d’une personne.

Procedure saisipers (var P : Spers) 


Début
Ecrire ("Les informations de personne : ") 
Ecrire("age : ") Lire(P.age) 
Ecrire("Taille : ") Lire(P.taille) 
Ecrire("Sexe : ") Lire(P.sexe)
Fin
3. Créer une procédure saisigroupe qui permet de remplir un tableau de N personnes.

Procédure saisigroupe (var Pers : TabPers, N :entier) 


Var
i : Entier 
Début
Pour i de 1 à N faire
Saisipers(Pers[i])
FinPour
Fin

4. Déterminer la femme la plus jeune dans le tableau Pers.


Algorithme Personne
type
TabPers : tableau [1…50] de SPers

Var
N, k, i, S: Entier ;
Persf, Pers: TabPers ;
Tf, T:Pers ;
moy :reel ;
Début
/***** création d’un tableau de femme Persf */
k=1
pour i de 1 à N faire
Si (Pers[i].age>18 Et Pers[i].sexe="feminin") alors
Persf[k]=Pers[i]
FinSi
K++
FinPour

/*** rechercher la femme la plus jeune dans Persf */


PerMin Persf[1]
Pour i de 2 à k-1 faire
Si(Persf[i].age<PerMin.age) alors
PerMin Persf[i]
FinSi

2
Algorithmique et structure de données II
1e année LBC, 2020/2021

FinPour
Ecrire("le nom de la femme la plus jeune est ", PerMin.nom)
S <--0
Pour i de 1 à N faire
Si(Pers[i].age<18 et Pers[i].taille<=160 et Pers[i].taille>=100)
     S <--S+1
Finsi
Finpour
Moy <-- S/N
Ecrire(‘la  moyenne des éléments du tableau est :‘,Moy)
Fin

Exercice 3 :

Algorithme Habitant
Type
Date = enregistrement
jour, mois, annee : entier
Fin
Adresse = enregistrement
Num : entier
Rue, Gouver, Ville: chaine de caractères
Code :entier
Fin
Resident= enregistrement
Nom, prenom : chaine [20]
Date_naiss : Date
adr : Adresse
Fin
var
T :Tableau [1..100] de Resident
TH :Tableau[1..24] de entier
I,j,N,A :entier
Debut
Repeter
Ecrire(‘Donner N’)
Lire(N)
jusqu’à N>0 et N≤100
/* remplir le tableau T de N habitants
Pour i de 1 à N Faire
Lire (T[i].Nom, T[i].Prenom)
Lire(T[i].Date_naiss.jour,T[i].Date_naiss.mois,
T[i].Date_naiss.annee)
Lire(T[i]. adr.Num,T[i]. adr.Rue,
T[i].adr.Ville, T[i].adr.Gouver, T[i].adr.Code)
FinPour
/*affichage des adresses des habitants nés avant une année A
Ecrire (‘Donner une Année’)
Lire(A)
Pour i de 1 à N Faire
Si (T[i].Date_naiss.annee=A) alors
Ecrire(T[i].adr.Num,T[i].adr.Rue, T[i].adr.Ville, T[i].adr.Gouver)
FinSi

3
Algorithmique et structure de données II
1e année LBC, 2020/2021

FinPour
/*affichage des noms et des dates de naissance des habitants de
ville "tunis"
Pour i de 1 à N faire
Si T[i].adr.Ville="tunis" alors
Ecrire("Nom :", T[i].Nom)
Ecrire("Date de naissance", T[i]. Date_naiss.jour,
T[i].Date_naiss.mois, T[i]. Date_naiss.annee)
Finsi
FinPour
/*TW inclut nombre d’habitants par gouvernorat (24 gouvernorats)
Pour i de 1 à 24 Faire //TH
TH[i]←0
Pour j de 1 à N faire
Si(T[j].adr.code =i) alors
TH[i] TH[i]+1
FinSi
FinPour
FinPour
//////
/*affichage
Pour i←1 à 24 Faire
Ecrire("Gouvernorat ",i, ":",TH[i])
FinPour
Fin

Exercice 4

1)Type
livre=enregistrement
id :entier
titre, couleur, auteur :chaine de caractères
Nbp: entier
Prix : réel
Fin
2) 3)/Nouvelle structure après décomposition du identifiant :

Algorithme Bibliotheque
Type
ID=enregistrement
Prefixe, chiffre, code_e, code_z, code_t : entier
Fin
livre=enregistrement
id :ID
titre, couleur, auteur :chaine de caractères
Nbp: entier
Prix : réel

Fin
var
TL, TEF :Tableau[1..100] de livre
TW : Tableau[1..30] de entier
i,N,A :entier
4
Algorithmique et structure de données II
1e année LBC, 2020/2021

C : chaine de caractères
Debut
Repeter
Ecrire("Donner N")
Lire(N)
jusqu’à N>0 et N≤50
/*remplir le tableau des livres TL
Pour i de 1 à N Faire
Lire(TL[i].id.prefixe, TL[i].id.code_z, TL[i].id.code_e,
TL[i].id.code_t, TL[i].id.chiffre)
Lire(TL[i].titre, TL[i].auteur, TL[i].couleur, TL[i].prix,
TL[i].nbp)
finPour
Ecrire("Donner une couleur") Lire(C)
Pour i de 1 à N Faire
Si(TL[i].couleur=C )alors
ecrire("code éditeur", TL[i].id.code_e)
ecrire("titre", TL[i].titre)
ecrire("auteur", TL[i].auteur)
ecrire("prix", TL[i].prix)
Fin si
Finpour
K1
Pour i de 1 à N Faire
Si(TL[i].id.code_e=2 )alors
TEF[k]TL[i]
Kk+1
Fin si
Finpour

Remarque :
 La lecture et l’affichage doit se faire champ par champ
 L’affectation peut se fait champ par champ ou d’une manière totale :
- Champ par champ : nomVariab1.champ1 nomVariab2.champ1
- D’une manière totale : nomVriabl1 nomVariabl2