STRUCTURE DES DONNEES
DEFINITION
Une structure de données est une manière d’organiser les
données pour faciliter les traitements. On distingue plusieurs types de
structure de données :
-Les structures linéaires : les tableaux,
les enregistrements, les listes, les piles et les files.
-Les structures non linéaires : les arbres
et les graphes
A-LES
TABLEAUX
Utilité des tableaux
Exemple de
l’algorithme de calcul de la moyenne de 12 notes.
Algorithme Moyenne
var n1,n2,n3,n4,n5,n6, n7,n8,n9,n10,n11,n12 :
réels ;
Début
Ecrire (« Entrer la première
note »), Lire (n1) ;
Ecrire
(« Entrer la deuxième note »), Lire (n2) ;
Ecrire
(« Entrer la troisième note »), Lire (n3) ;
Ecrire
(« Entrer laurée note »), Lire (n4) ;
Ecrire
(« Entrer la cinquième note »), Lire (n5) ;
Ecrire
(« Entrer la sixième note »), Lire (n6) ;
Ecrire
(« Entrer la septième note »), Lire (n7) ;
Ecrire
(« Entrer la huitième note »), Lire (n8) ;
Ecrire
(« Entrer la neuvième note »), Lire (n9) ;
Ecrire
(« Entrer la dixième note »), Lire (n10) ;
Ecrire
(« Entrer la onzième note »), Lire (n11) ;
Ecrire (« Entrer la douzième
note »), Lire (n12) ;
Moy ←
(n1+n2+n3+n4+n5+n6+n7+n8+n9+n10+N11+n12)/12 ;
Ecrire (« La moyenne des douze
notes est : », Moy) ;
Fin
On
comprend que si on a beaucoup de notes à calculer, le travail deviendra très
fastidieux. C’est pourquoi il faut rassembler toutes les variables en une
seule, au sein de laquelle chaque valeur sera désignée par un numéro d’où la
nécessité d’un tableau.
Définition
Un tableau est un regroupement de valeurs
portant le même nom de variable qui sont repérées par un numéro. Il permet de
ranger un nombre fini d’éléments de même
type et selon une disposition bien définie.
Tableau NOTES
Indice |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Valeur |
8 |
12 |
11 |
5 |
16 |
13 |
7 |
14 |
12 |
4 |
17 |
Le numéro qui permet de repérer chaque valeur
s’appelle l’indice (ici les indices
vont de 0 à 10).
Chaque fois que
l’on veut désigner un élément du tableau, on fait figurer le nom du tableau,
suivi de l’indice de l’élément, entre crochets.
On accède ainsi à la ième valeur d’un tableau en utilisant la syntaxe
suivante :
Syntaxe :
Nom_du_tableau [indice]
Exemple : NOTES [6] /* donne la
valeur 7 * /
L’accès à un élément du tableau se fait par
l’intermédiaire de son indice qui représente l’emplacement de l’élément dans le
tableau : c’est l’accès direct.
Elle se fait par adressage de chaque cellule. L’ordinateur se positionne
directement sur une valeur connaissant son adresse.
Pour
parcourir les éléments d’un tableau, il faut utiliser une boucle.
Déclaration
d’un tableau
La
formulation simple de la déclaration d’un tableau est la suivante :
Syntaxe :
nomTableau : Tableau [indice inférieure…indice supérieure] de type_de_données
Exemple :
Pour un tableau de 30
notes des élèves d’une classe, on note :
Tableau [1…30] de réel
Si tab est le nom du tableau, on
écrit :
tab : Tableau [1…30] de réel
Opérations
sur les tableaux
Saisie des
éléments d’un tableau
Si tab
est un tableau de 10 entiers
tab
[2] ←5 met la valeur 5 dans la deuxième case du tableau
En considérant le cas où a est une variable de
type entier, a←tab[2] met la valeur de la
deuxième case du tableau dans a c.-à-d. 5.
Pour
saisir les variables d’un tableau données par un utilisateur, on utilise la
syntaxe suivante
Syntaxe :
Lire
(tab[i]) ;
On peut utiliser une boucle
Exemple :
Algorithme SaisieNotes var tab : Tableau
[1…N] de réels var N, i :
entiers ; Début Pour i de 1 à N Faire Lire (tab[i]) ; FinPour FinSaisieNotes |
Afficher les
éléments d’un tableau
Syntaxe :
Afficher(T[i]) ;
Exemple :
Algorithme AfficherNotes var tab : Tableau
[1…N] de réels ; var N, i : entiers ; Début Pour i de 1 à N Faire Afficher
(tab[i]) ; FinPour FinAfficherNotes |
Recherche
dans un tableau
La
recherche séquentielle ou recherche linéaire est un algorithme pour trouver une
valeur dans une liste. L’accès dans une liste est dit séquentiel lorsqu’on
passe en revue tous les éléments de la liste pour avoir accès à l’élément
recherché.
Recherche
l’élément minimum d’un tableau.
On suppose que le tableau est déjà saisi.
Exemple :
Algorithme RechercheMinTableau const
n=10 ; tab : Tableau [1…N] de réels var
N, i : entier ; var
Min : entier ; Début Pour i de 1 à N Faire Min ← tab[i] ; Si tab[i] < Min
alors Min ← tab[i] ; FinSi FinPour Afficher (Min) ; FinRechercheMinTableau FinPour Retourner (Min) ; FinRechercheMin |
Trace
d’exécution :
Soit le tableau :
12 |
20 |
40 |
6 |
8 |
10 |
N°ligne |
Var |
Instruction |
Ecran |
|
|
|
Min=12 |
|
i=0 |
Tab[0]<12
FAUX |
Min=12 |
|
i=1 |
Tab[1]<12
FAUX |
Min=12 |
|
i=2 |
Tab[2]<12
FAUX |
Min=12 |
|
i=3 |
Tab[3]<12
VRAI |
Min=6 |
|
i=4 |
Tab[4]<6
FAUX |
Min=6 |
|
i=5 |
Tab[5]<6
FAUX |
Min=6 |
B-ENREGISTREMENTS
Définitions
Un enregistrement est un type de données
défini par l’utilisateur qui permet de regrouper un nombre fini d’éléments de
types éventuellement différents sous un nom commun.
Les éléments qui composent un
enregistrement sont appelés champs.
A la différence des tableaux, qui ne permettent que les éléments du même type,
les enregistrements permettent de combiner différents types de données.
Pour créer des enregistrements, il faut
déclarer un nouveau type dit type
structuré, basé sur d’autres types existants. Ce nouveau type peut être
utilisé comme un type normal en déclarant une ou plusieurs variables de ce
type.
Déclaration
d’un type structuré
Avant de déclarer une variable
enregistrement, il faut avoir au préalable définir son type, c-à-d le nom et le
type de champs qui le composent.
Syntaxe :
Type
Nom_Type=Enregistrement
Champ1 :
Type 1
Champ2 :
Type 2
….
Champ
N : Type N
FinNom_type
Exemple :
Type Personne : Enregistrement Nom : chaine Prenom :
chaine Age : Entier FinPersonne |
Définition
d’une variable de type structuré
Une fois qu’on a défini un type
structuré, on peut déclarer des variables enregistrements exactement de la même
façon que l’on déclare des variables d’un type primitif :
Syntaxe :
Varnom_variable : nom_enregistrement ;
Exemple : Déclaration de deux variables pers1 et
pers2 de type Personne
pers1, pers2 : Personne
Accès à un
champ d’un enregistrement
Alors que les éléments d’un tableau sont
accessibles à travers leur indice, les champs d’un enregistrement sont
accessibles à travers l’opérateur de champ qui est un simple point «.»
Syntaxe :
Nom_variable.Nom_champ
Exemple :
Pour
accéder à l’âge de la variable pers2, on écrit tout simplementpers2.age
Affectation
L’affectation de valeurs aux différents
champs d’une variable enregistrement se fait comme suit :
Syntaxe : variable.champ ←valeur ;
Exemple : pers1.Nom← « Fati »
Lecture
Syntaxe :Lire(variable.champ) ;
Ecriture
Syntaxe :
Ecrire (variable.champ) ;
Exemple : Soit un algorithme qui saisit des données
des élèves E1 et E2 et calcule la différence de leurs notes.
Remarques :
1-
Il n’existe pas de constante type enregistrement.
2-Les
seules opérations sur les enregistrements sont l’affectation et le passage
comme paramètre.
3-Les
seules expressions d’un type enregistrement sont les variables de ce type.
4-Il
n’y a pas de fonction (même prédéfinie) à résultat d’un type enregistrement.
EXERCICES
CONTROLE SE
CONNAISSANCES
1 :
Définir : structure de données, tableau.
2 : Quelles sont les limites d’un tableau ?
3 : Cite 04 structures de données linéaires.
4 : Cite 04 structures de données non linéaires.
5 : Citer 03 structures de contrôle.
EXERCICE I : On donne l’algorithme
suivant :
1. Algorithme
3. Variable i, S : entiers ;
4. Notes : Tableau [1…5] d’entiers ;
5. Début
6. S ← 0 ;
7. Pour i de 1 à 5 Faire
8. Ecrire « Entrer
la note n° » ;
9. Lire (Notes[i]);
10. S
← S +Notes[i];
11. FinPour
12. Ecrire (« Moyenne : »,
S/5 );
13. Fin
Questions
1. Que fait cet algorithme ?
2. Dire ce que fait la ligne N°4 de cet
algorithme.
3. Relève 02 instructions d’affection.
4. Donner la trace d’exécution de cet
algorithme pour le tableau : 12-8-14-6-10.
EXERCICE II :
1. Algorithme
2. var tab : Tableau [1…N] de réels
3. var
N, i, Min : entiers ;
4.
5. Début
6. Pour i de 1 à N Faire
7. Lire
(tab[i]) ;
10. FinPour
11.
12. Pour i de 1 à N Faire
13. Min ← tab[1] ;
14. Si tab[i] < Min alors
15 Min ← tab[i] ;
16. FinSi
17. FinPour
18. Afficher (Min) ;
19.
20. Pour i de 1 à N Faire
21. Afficher (tab[i])
22. FinPour
23. Fin
Questions :
1. Identifier le module de saisie du tableau tab.
2. Identifier le module d’affichage tableau tab.
3. Identifier une structure alternative.
4. Que fait la ligne N° 13 ?
5. Que fait cet algorithme ?
EXERCICE III : Dire ce que font les
algorithmes suivants :
1.Algorithme
Tableau [1…5] des entiers ;
var i entier ;
Début
Pour
i de 1 à 5 Faire
T[i] ←
0 ;
FinPour
Fin
2.Algorithme
T : Tableau [1….5] de caractères ;
Début
T
[0] ← « a » ;
T
[1] ← « e » ;
T
[2] ← « i » ;
T [3] ← « o » ;
T [4] ← « u » ;
T [5] ← « y » ;
Fin
3.Algorithme
Notes : Tableau [1…9] en numérique ;
i : entier ;
Début
Pour
i allant de 1 à 9 Faire
Ecrire
« Entrer la note numéro », i+1 ;
Lire
Notes[i] ;
FinPour
Pour
i allant de1 à 9 Faire
Ecrire
Notes[i] ;
FinPour
Fin
4.Algorithme
Nb : Tableau [5] d’entiers ;
Var i : entier ;
Début
Pour
i de 1 à 5 Faire
Nb [i]
← i*i ;
FinPour
Fin
CORRIGES
CONTROLE SE CONNAISSANCES
1- Une structure de données
est une manière d’organiser les données pour faciliter les traitements.
-Un tableau est un regroupement de valeurs
portant le même nom de variable qui sont repérées par un numéro. Il permet de
ranger un nombre fini d’éléments de même
type et selon une disposition bien définie.
2 -Limites des tableaux :
-les données sont du même type, on ne peut
pas utiliser les entiers et les caractères dans un même tableau.
-Les données présentes dans un tableau sont contigües c.-à-d. côte-à-côte
dans la mémoire, ce qui entraine que la taille du tableau est fixe.
-On ne peut ni ajouter une case à la fin d’un tableau, ni insérer une
case au milieu.
3 : Tableau, enregistrement, listes chainées, piles,
files.
4 : Graphes, arbres
EXERCICE
I :
1. Cet algorithmique calcule la somme
de 05 notes et fait la moyenne.
2. La ligne N°4 déclare un tableau.
3. S←0 et S←S+ Notes[i]
4.
Ligne |
i |
Instructions |
écran |
10 |
1 |
0+12 |
|
10 |
2 |
12+8 |
|
10 |
3 |
20+14 |
|
10 |
4 |
34+6 |
|
10 |
5 |
40+10 |
|
12 |
|
|
Moyenne=10 |
EXERCICE
II :
1. Lignes 6,7et10
2. Lignes 20,21 et 22.
3. Lignes 14,15 et 16.
4. La ligne initialise la variable
Min.
5. C’est un algorithme recherche le
minimum d’une liste.
EXERCICE
III :
1. initialise un tableau
2. déclare les 6 voyelles de l’alphabet
3. déclare et affiche un tableau de neuf
notes
4. calcule les carres des 5 premiers
nombres entiers.