Vous êtes sur la page 1sur 38

STRUCTURES DE DONNEES ET

ALGORITHMES FONDAMENTAUX

 Semestre I, II

 Niveau :
 Licence 1 Informatique
 DUT 1 Informatique de Gestion
 DUT 1 Informatique Maintenance

Année académique 2021-2022


STRUCTURES DE DONNEES ET ALGORITHMES FONDAMENTAUX

CONTENU DU MODULE

Introduction générale sur les structures de données

Chapitre 6 : Les tableaux

Chapitre 7 : Les chaînes de caractères (en C++)

Chapitre 8 : Les enregistrements (structures) et énumérations

Chapitre 9 : Les fichiers

13/04/2023 2
 Prérequis
- Maîtriser les bases de l’algorithmique (Cours Introduction à l’algorithme)

 Objectifs
1. Travailler sur des données de plus en plus nombreuses et complexes.

2. Vous fournir une boîte à outils contenant:


o des structures de données permettant d’organiser et d’accéder efficacement
aux données;
o les algorithmes les plus populaires;
o des méthodes génériques pour la modélisation, l’analyse et la résolution de
problèmes algorithmiques;

3. Les projets visent à vous familiariser à la résolution de problèmes.

13/04/2023 3
STRUCTURES DE DONNEES ET ALGORITHMES
FONDAMENTAUX

Introduction générale sur les


Semestre I
Niveau 1 Année:
structures de données
Licence Info
DUT Info IG
DUT Info Maintenance
1. Définition d’une structure de données
 Une structure de données est une méthode particulière de stocker et d’organiser des
données dans un ordinateur (en mémoire centrale) de façon à pouvoir être utilisées
efficacement.

Rappel : La mémoire centrale n’est autre que la RAM de notre ordinateur

 Une structure de données regroupe :


 un certain nombre de données à gérer, et
 un ensemble d’opérations (Traitements) pouvant être appliquées à ces données.

13/04/2023 5
1. Définition d’une structure de données
 Dans la plupart des cas, il existe
 plusieurs manières de représenter les données et
 différents algorithmes de manipulation.
On distingue généralement l’interface des structures de leur implémentation.

Un type de données abstrait (TDA) représente l’interface d’une structure de données.


Un TDA spécifie précisément :
la nature et les propriétés des données
les modalités d’utilisation des opérations pouvant être effectuées.

 En général, un TDA admet différentes implémentations (plusieurs représentations


possibles des données, plusieurs algorithmes pour les opérations).

13/04/2023 6
2. Structure de données et algorithmes en pratique
La résolution de problème algorithmiques requiert presque toujours la combinaison de
structures de données et d’algorithmes sophistiqués pour la gestion et la recherche dans ces
structures.
D’autant plus vrai qu’on a à traiter des volumes de données importants.

Quelques exemples de problèmes réels :


Routage dans les réseaux informatiques
Moteurs de recherche
Alignement de séquences ADN en bio-informatique

Structure de données et algorithmes

13/04/2023 7
STRUCTURE DE DONNEES ET ALGORITHMES
FONDAMENTALS

Chapitre 6: Les tableaux


Semestre I
Niveau 1 Année:
Licence Info
DUT Info IG
DUT Info Maintenance
Sommaire

1. Introduction, Définition et déclaration d’un tableau

2. Accès à un élément du tableau

3. Création d’un tableau

4. Edition d’un tableau

5. Les différentes opérations possibles sur les tableaux

6. Les tableaux à deux dimensions (Matrices)

13/04/2023 9
1. Introduction, définition et déclaration d’un tableau
Jusqu’à présent nous n’avons manipulé que des variables simples.
Imaginez que l’on veuille attribuer 15 valeurs représentant l’âge
de 15 personnes. Pour ce faire, nous déclarons 15 variables de
type entier et nous passons à la saisie des valeurs.

Maintenant imaginez refaire ce même travail pour 1000 voire 2000 personnes

Pour effectuer des traitements plus complexes avec un maximum d’efficacité, il est nécessaire d’utiliser
des types de données plus évolués parmi lesquels les tableaux que nous développerons dans ce
chapitre.
13/04/2023 10
1. Introduction, définition et déclaration d’un tableau
Définition :
Un tableau est un ensemble de données qui sont toutes de même type, possèdent un
identificateur unique ( le nom du tableau) et se différencient les unes des autres, dans ce
tableau, par leur numéro d’indice.
Un tableau est déclaré comme un type particulier de données. Nous lui donnons un nom,
une valeur d’indice minimale et valeur d’indice maximale correspondant au nombre
maximal de cases le composant. Nous déclarons également l’indice qui permet d’adresser
les différentes cases. L’indice doit être obligatoirement un entier et l’indice minimale
est strictement inferieur à l’indice maximale.
Autre Définition :
Un tableau (Vecteur) est une suite de cases contiguës en mémoire centrale ayant un
identifiant unique telle que :
le nombre d'éléments du tableau (dimension ou taille) est constant,
l'accès aux éléments s'effectue directement par la clé,
les valeurs minimum et maximum des clés sont des constantes.
13/04/2023 11
1. Introduction, définition et déclaration d’un tableau
Syntaxes de déclaration: Il existe plusieurs façon de déclarer un tableau:

<nom_du_tableau> (indice_minimale : indice_maximale) : Tableau de <Type_données>

<nom_du_tableau> : Tableau [indice_minimale…indice_maximale] de <Type_données>

<nom_du_tableau>[indice_maximale] Tableau de <Type_données>


Exemple: Notes (1:10) : Tableau de réels
Ages : Tableau [1…100] d’entiers
Alphabet [26] Tableau de caractères
Dans le premier exemple, nous déclarons un tableau appelé « Notes », d’indice minimale 1,
d’indice maximale 10 pouvant donc contenir 10 valeurs de type réel.
 L’indice maximale représente la Taille du tableau il ne peut pas être changé.
Note: Un tableau peut être initialisé en même temps qu’il est déclaré:
Ages(1:10) Tableau d’entiers
13/04/2023 Exemple: Ages := { 17, 21,18, 28, 12, 19, 14, 30, 19, 16} 12
1. Introduction, définition et déclaration d’un tableau
Représentation graphique:
Indice Min Indice Max

1 2 3 …….. …….. …….. N

Nom du tableau

Valeurs

Note: Si l’indice Min du tableau est à 0, alors sa taille est : Indice Max – Indice Min + 1

Cas de l’exemple 1:

Indice

1 2 3 4 5 6 7 8 9 10

Notes 19 3,5 9,75 8,00 17,45 8,25 1 7 0,75 14

13/04/2023 Valeur 13
2. Accès à un élément du tableau
L’accès à un élément du tableau ne se fait que par son approche numérique (Accès direct),
en indiquant entre parenthèses ou crochets le rang de l’élément à lire ou à écrire ; c’est-à-
dire son indice.
Pour accéder à un élément du tableau nommé TAB d'indice i, on écrit:
TAB(i) ou TAB[i]

Exemple: Pour accéder aux éléments du tableau Notes


0 1 2 3 4 5 6 7 8 9

Notes 19 3,5 9,75 8,00 17,45 8,25 1 7 0,75 14

Notes[o] = 19 Notes[3] = 8,00


Notes[1] = 3,5 …
Notes[2] = 9,75 Notes[9] = 14

13/04/2023 14
3. Création d’un tableau (Saisie)
La création d’un tableau consiste en un remplissage des différentes cases qui le
constituent. Cette opération peut se faire de deux manières différentes:
en renseignant les cases une à une à partir de la première,
en adressant les cases directement, et ce dans un ordre quelconque.

Exemple: Algorithme Saisie_Tableau


une série de 10 nombres est saisie au clavier. Var:
Nous voulons les stocker dans un tableau pour Nombre (1:10): Tableau d’entiers
pouvoir rechercher le plus petit et le plus grand i: entier
Début
d’entre eux.
pour (i:=1 à 10 ) faire
L’ordre de saisie n’ayant aucune incidence écrire (‟Entrez un nombre”)
pour la suite du traitement, nous stockons le lire (Nombre (i) )
premier nombre saisie dans la 1ere case, le Finpour
deuxième nombre saisie dans la seconde, et Fin
ainsi de suite. FinAlgo

Remarque: Le nom d’un tableau n’est jamais utilisé seul: Dans toutes les instructions (Saisie, Affichage,
Calcul, Test), il est toujours suivi d’un indice entouré de parenthèses ( ) ou de crochets [ ].
13/04/2023 15
4. Edition d’un tableau (Affichage)
On parcourt les différentes cases du tableau en faisant varier l’indice et on affiche leur
contenu au fur et à mesure.

Exemple: Algorithme Affichage_Tableau


Editer le tableau « Nombre » de l’exemple Var:
précédant. Nombre (1:10): Tableau d’entiers
i: entier
Début
pour (i:=1 à 10 ) faire
écrire (Nombre(i))
Finpour
Fin
FinAlgo

13/04/2023 16
5. Les différentes opérations possibles sur les tableaux
Dans un tableau de données, il est possible de faire plusieurs sortes de opérations, nous
pouvons ajouter, rechercher, modifier et supprimer les éléments d’un tableau. Il existe
aussi d’autre opérations plus complexe.

Opération somme des éléments d’un tableau :


Pour calculer la somme des nombres contenus dans un tableau par exemple, il faut ajouter un à un
le contenu des cases, depuis la première jusqu’à la dernière. Nous utilisons une variables pour
stocké le cumul intermédiaire.

Soit un tableau d’entier « Ages » de taille 10, contenant les âges de personnes. Nous voulons
calculer l’âge cumulé de ces dix personnes.

13/04/2023 17
5. Les différentes opérations possibles sur les tableaux
Opération somme des éléments d’un Algorithme Somme_Elément_Tableau
Variables:
tableau :
Ages(1:10): Tableau d’entiers
somme, i: entiers
Début
{Saisie des éléments du tableau}
pour (i:=1 à 10 ) faire
écrire (‟Entrez un nombre”)
lire (Ages (i) )
Finpour

{Initialisation de la somme}
somme  0

{Boucle de calcul des somme intermédiaire}


pour (i:=1 à 10 ) faire
somme  somme + Ages(i)
Finpour

{Edition du résultat}
écrire (‟ La somme est ”, somme)
Fin
13/04/2023 18
FinAlgorithme
Algorithme Recherche_Elément_Tableau
5. Les différentes opérations Variables:
N: entier { Taille du tableau }
possibles sur les tableaux TAB [1: N ] : Tableau d’entiers
val : entier { Valeur à rechercher dans le tableau }
i: entier
trouve : booléen
Opération de recherche d’un élément: Début
{Initialisation}
 Recherche séquentielle Trouve  FAUX
i1
La recherche consiste à partir du début d’un
{Recherche de l’élément val}
tableau, à comparer l’élément rencontré à celui Tantque (i < = N) ET (trouve = FAUX) faire
que l’on cherche. Si ce dernier est différent Si ( TAB [i] = = val ) Alors
alors on passe à l’indice suivant ; sinon on trouve  VRAI
Sinon
arrête l’opération car l’information recherchée
i  i+1
est trouvée. FinSi
FinTantque
{Affichage du résultat}
Si (trouve) Alors
Ecrire (‟ l’élément val existe dans ce tableau ”)
Sinon
Ecrire (‟ l’élément val n’existe pas dans ce tableau ”)
Finsi
Fin
FinAlgorithme
13/04/2023 19
Algorithme Recherche_Elément_Tableau
5. Les différentes opérations Variables:
TAB [ N ] : Tableau d’entiers { ordonné par ordre croissant }
possibles sur les tableaux val : entier
borneInferieur, borneSuperieur, milieu: entier
trouve : booléen
Début
Opération de recherche d’un élément: { Initialisation des variables }
borneInferieur  1
 Recherche dichotomique borneSuperieur  N
Trouve  FAUX
{Recherche de l’élément val}
Le principe de la recherche dichotomique Tantque (trouve = FAUX) ET (borneInferieur <= borneSuperieur) faire
réside dans la division successive de milieu  (borneInferieur + borneSuperieur) / 2
Si ( TAB [milieu] = = val ) Alors
l’espace de recherche en deux dans un trouve  VRAI
vecteur ordonné sur le critère de Sinon Si ( TAB [milieu] < val ) Alors
borneInferieur  milieu + 1
recherche. Sinon
borneSuperieur  milieu – 1
FinSi
FinSi
FinTantque
{Affichage du résultat}
Si (trouve) Alors
Ecrire (‟ l’élément val existe dans ce tableau ”)
Sinon
Ecrire ( ‟ l’élément val n’existe pas dans ce tableau ”)
Finsi
Fin
13/04/2023 FinAlgorithme 20
5. Les différentes opérations possibles sur les tableaux
Opération d’ajout d’un élément:
Cette opération ne peut se faire qu’au cas où il y a de l’espace libre dans le vecteur. Il faut au
moins une cellule non utilisée pour la réaliser.
Algorithme Ajout_Elémént_Tableau
Variables:
TAB [ N ] : Tableau d’entiers
val, i : entier { val: valeur à insérer, compteurs des boucles }
Nbre_Elmt, pos : entier {position de l’élément à ajouter}
Début
Si (Nbre_Elmt < N) alors
Nbre_Elmt  Nbre_Elmt +1
pour ( i allant de Nbre_Elmt à pos -1 ) faire
TAB [i+1]  TAB [i]
Finpour
TAB[pos]  val
Sinon
Ecrire ("Saturation du tableau")
Finsi
Fin
FinAlgorithme
13/04/2023 21
5. Les différentes opérations possibles sur les tableaux
Opération de suppression d’un élément:

L’utilisateur donnera l’indice de la valeur qu’il souhaite supprimer. Attention, il ne s’agit pas de remettre une
valeur à zéro, mais bel et bien de la supprimer du tableau lui-même ! Si le tableau de départ était :
 

13/04/2023 22
5. Les différentes opérations possibles sur les tableaux
Opération de suppression d’un élément:
Algorithme Suppression_Elémént_Tableau
Variables:
TAB [ N ] : Tableau d’entiers
i : entier { compteurs des boucles }
pos : entier {position de l’élément à supprimer}
Début
Si (pos > N) alors
Ecrire(" Position incorrecte ")
Sinon Si (N = 0) alors
Ecrire("Tableau vide")
Sinon
pour ( i allant de pos à N-1 ) faire
TAB [i]  TAB [i+1]
Finpour
N  N-1
FinSi
Finsi
Fin
FinAlgorithme
13/04/2023 23
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau:

Le tri est une opération qui consiste à classer des données selon un ou plusieurs critères ou selon un certain
ordre. L’opération de tri est très importante et très utilisée dans les programmes informatiques utilisant les
algorithmes de recherche.
Imaginez que l’on dispose d’un dictionnaire non trié, comme il serait fastidieux de trouver un mot. Combien
de temps nous faudra-t-il pour retrouver le mot que l’on cherche ?

Il existe plusieurs algorithmes de tri. Les plus courants sont :


 tri par sélection
 tri par insertion
 tri à bulles

Au niveau des algorithmes qui vont suivre, nous supposerons que nous disposons d’un Tableau nommée TAB
de taille N (de type entier) remplie et non trié, l’indice minimum est à 0.

13/04/2023 24
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau: 1. Tri par sélection
Méthode :

 on cherche l’élément de plus petite valeur pour l’échanger avec l’élément en première position ;
 puis on cherche l’élément ayant la deuxième plus petite valeur pour l’échanger avec  l’élément en deuxième
position ;
 et ainsi de suite.

Il faut :
• 1 boucle pour parcourir le tableau et sélectionner tous les éléments ;

• 1 boucle pour rechercher le minimum parmi les éléments non triés.

13/04/2023 25
5. Les différentes opérations possibles sur les tableaux
Algorithme Tri_Sélection_Tableau
Les algorithmes de tri d’un tableau: Variables:
TAB [ N ] : Tableau d’entiers { Tableau à trié}
1. Tri par sélection
i, j: entier { compteurs des boucles }
min : entier { indice du minimum du tableau}
aux : entier { Variable auxiliaire utilisé pour la permutation }
Début
pour (i allant de 0 à N-1) faire // Sélection d’un élément
min  i
pour (j allant de i+1 à N) faire // Recherche du min
Si ( TAB [j] < TAB [min]) Alors
min  j
FinSi
Finpour

{Permutation}
aux  TAB [i]
TAB [i]  TAB [min]
TAB [min]  aux
Finpour
Fin
13/04/2023 FinAlgorithme 26
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau: 2. Tri par insertion
Méthode :
on considère les éléments les uns après les autres en insérant chacun à sa place parmi les éléments déjà triés.

Il faut :
• 1 boucle pour parcourir le tableau et sélectionner l’élément à
insérer ;
• 1 boucle pour décaler les éléments plus grands que l’élément à
insérer ;
• insérer l’élément.

13/04/2023 27
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau:
2. Tri par insertion Algorithme Tri_Insertion_Tableau
Variables:
TAB [ N ] : Tableau d’entiers { Tableau à trié}
i, j: entier { compteurs des boucles }
mem : entier { le minimum du tableau}

Début
pour (i allant de 1 à N-1) faire // Sélection d’un élément à inséré
mem  TAB [i]
ji
Tantque (j > 0 et TAB [j-1] > mem) faire // Décalage éléments plus grands
TAB [j]  TAB [j-1])
j  j-1
FinTanque

TAB [j]  mem // Insertion

Finpour
Fin
13/04/2023 FinAlgorithme 28
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau: 3. Tri à bulle
Méthode :
On parcourt le tableau en comparant deux éléments consécutifs ; s’ils sont mal placés, on les permute. Cela
revient à faire remonter le plus grand élément à chaque parcours. Comme une bulle d’air qui remonte à la
surface de l’eau, d’où le nom de tri à bulles. (Il est aussi appelé tri par permutation ou tri par échanges).

Il faut :
• 1 boucle pour parcourir tout le tableau et sélectionner les éléments un à un ;
13/04/2023 • 1 boucle pour permuter les éléments adjacents. 29
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau:
3. Tri à bulle Algorithme Tri_Bulle_Tableau
Variables:
TAB [ N ] : Tableau d’entiers { Tableau à trié}
i, j: entier { compteurs des boucles }
aux : entier {variable intermédiaire pour les permutation}

Début
pour (i allant de N-1 à 0) faire // Sélection de l’élément à inséré
pour (j allant de 1 à i+1) faire // Décalage éléments plus grands
Si (TAB [j-1] > TAB [j]) alors
aux  TAB [j-1]
TAB [j-1]  TAB [j]
TAB [j]  aux
Finsi
Finpour
Finpour
Fin
13/04/2023 FinAlgorithme 30
6. Les tableaux à deux dimensions (Matrices)
Les tableaux manipulé jusqu’à présent dans ce chapitre sont de dimension un. Et
lorsqu’un traitement utilise plusieurs tableaux à une dimension, ayant le même nombre
d’éléments et subissant le même traitement, on utile un seul tableau à deux dimensions.
Cette nouvelle forme de tableau possède un identifiant unique. Chaque élément est
identifié par deux indice: l’un indiquant la ligne et l’autre la colonne.

Syntaxes de déclaration: Il existe plusieurs façon de déclarer une matrice:

<nom_du_tableau>(indice_ligne_minimale : indice_ligne_maximale,
indice_colonne_minimale : indice_colonne_maximale ) :
Tableau de <Type_données>
<nom_du_tableau> : Tableau [indice_ligne_minimale…indice_ligne_maximale]
[indice_colonne_minimale…indice_colonne_maximale]
de <Type_données>

<nom_du_tableau>[indice_ligne_maximale] [indice_colonne_maximale] Tableau de


13/04/2023
<Type_données> 31
6. Les tableaux à deux dimensions (Matrices)
Exemple: Notes (1:3, 1:10) : Tableau de réels
Ages : Tableau [1…50] [1…50] d’entiers
Alphabet [4] [7] Tableau de caractères
Dans le premier exemple, nous déclarons un tableau de réel appelé « Notes », de 3 lignes et 10 colonnes.

13/04/2023 32
6. Les tableaux à deux dimensions (Matrices)
Représentation graphique:
Indice col Max
Indice col Min
Colonne
Ligne 0 1 2 …….. …….. M

Indice lig Min 0


1
Nom du tableau
…..
Indice lig Max N

éléments

Note: ici, nous avons représenté un tableau à deux dimensions de N lignes et M colonnes donc
pouvant contenir ( N x M ) éléments tous de même types.

13/04/2023 33
6. Les tableaux à deux dimensions (Matrices)
Exemple: Ages : Tableau [4][7] d’entiers
0 1 2 3 4 5 6
0 25 12 30 6 8 32 1
1 2 77 4 0 20 99 10
Ages 2 7 3 100 6 1 1 26
3 29 5 2 43 0 15 9

Ages est une matrice d’entier de (4 x 7) éléments.

Tout comme pour un tableau à une dimension, l’accès aux éléments d’un tableau à plusieurs dimensions
se fait de façon direct, ont indiquant le nom du tableau suivit de l’indice de la ligne et celle de la colonne
entre les crochets, comme le montre l’exemple ci-dessous :

Ages[0][0] = 25 Ages[3][1]= 5
Ages[1][3] = 0 …
Ages[2][2] = 100 Ages[3][6] = 9
13/04/2023 34
6. Les tableaux à deux dimensions (Matrices)
Algorithme Remplissage_Affichage_Matrice
Opération sur les matrices: Var:
Toute les opérations vues sur les tableaux à une N, M : entier
Nombre [N][M]: Tableau d’entiers
dimensions sont aussi valables pour les matrices.
i, j : entier
Début
{Remplissage éléments de la matrice}
Remplissage et affichage d’une matrice : pour (i := 0 à N-1 ) faire
pour (j := 0 à M-1 ) faire
écrire ‟Entrez un nombre”
lire ( Nombre[i][j] )
Finpour
Finpour

{Affiche éléments de la matrice}


pour (i := 0 à N-1 ) faire
pour (j := 0 à M-1 ) faire
écrire( Nombre[i][j] )
Finpour
Finpour
Fin
13/04/2023 FinAlgo 35
6. Les tableaux à deux dimensions (Matrices)
Recherche d’un élément dans une matrice :

Algorithme RechercheElément_Matrice
Var:
N, M : entier
Nombre [N][M]: Tableau d’entiers
i, j, val: entier
Début
écrire (‟ Entrez l’élément à rechercher ”)
lire (val)
pour (i := 0 à N-1 ) faire
pour (j := 0 à M-1 ) faire
si ( Nombre[i][j] = val ) Alors
écrire ( ‟ Le nombre ”, val, ‟ existe”)
sinon
écrire (‟ Le nombre ”, val, ‟ existe”)
Finsi
Finpour
Finpour
Fin
FinAlgo
13/04/2023 36
6. Les tableaux à deux dimensions (Matrices)
Note:
On peut également déclaré des tableaux de dimension supérieur à 2.

Syntaxe:
<nom_du_tableau>[dimension_1] [dimension_2] … [dimension_N] Tableau de <Type_données>

Exemple: Notes[4][3][5] est un tableau de dimension 3 donc peut contenir (4 x 3 x 5) élément.


Le principe de manipulation d’un tableau à plusieurs dimensions est le même que pour un tableau à deux
dimensions. Si on utilise des boucles imbriquées pour parcourir le tableau, la 1 ere boucle correspondra à
« dimension_1 », la 2nde à « dimension_1 », … , et la Néme à « dimension_N ».

Par principe il n’est pas conseiller de manipuler les tableaux à plus de 3 dimensions, si vous n’ete pas
un bon mathématicien, car cela relève du domaine de la modélisation dans hyperespace.

13/04/2023 37
Conclusion
 Avantages : accès direct au iéme élément.

 Inconvénients : les opérations d’insertion et de suppression sont impossibles


osauf si on crée un nouveau tableau, de taille plus grande ou plus petite (selon l'opération).
Il est alors nécessaire de copier tous les éléments du tableau original dans le nouveau
tableau. Cela fait donc beaucoup d'opérations.

13/04/2023 38

Vous aimerez peut-être aussi