Académique Documents
Professionnel Documents
Culture Documents
STRUCTURES DE DONNEES
(octobre 2016)
U FORMATEC
Année académique 2016- 2017
AVANT-PROPOS
Le présent document est la propriété de l’auteur et ne peut être utilisé que dans le seul
but pour lequel il a été transmis et ce, dans le respect des règles de la confidentialité.
Il ne peut en aucun cas être reproduit partiellement ou en totalité, ni utilisé, ni inséré
dans quel que document que ce soit, sans l’accord préalable et écrit de l’auteur.
1
Objectifs du cours :
Adopter une démarche algorithmique pour faire face à des situations de
problèmes
2
NOTION D'ALGORITHME
OBJECTIFS DU CHAPITRE :
Appréhender la notion d'algorithme.
Connaître les composants d'une démarche algorithmique.
INTRODUCTION
Prenant l'exemple de la recette de cuisine, pour mieux réussir la préparation d'un repas,
on a besoin d'une recette complète et précise. Une bonne recette doit contenir :
- Le nom du repas à préparer (le résultat).
- Les ingrédients bien déterminés.
- Les étapes de préparation du repas numérotées.
RESUME
3
DEFINITION
Un algorithme est une suite finie des étapes à appliquer dans un ordre déterminé
agissant sur des données afin de résoudre un problème.
EXEMPLE
L'écriture (lorsqu'il a affiché les messages sur l'écran pour demander les nombres
et aussi, lorsqu'il a affiché la moyenne).
La lecture des nombres entrés à partir du clavier.
La mémorisation du calcul.
L'ordinateur fait chaque action dans un composant spécifique, on appelle ces actions : des
instructions. Ce schéma contient les instructions qu'on trouve souvent dans un
algorithme et les composants qui permettent d'exécuter ces instructions :
4
VARIABLES ET CONSTANTES
OBJECTIFS :
INTRODUCTION
Nous avons parlé dans le chapitre précédent des étapes, et nous avons dit que les étapes
agissent sur des données. Ces données peuvent varier, on utilise alors des variables pour
les stocker, ou bien elles restent constantes, dans ce cas on utilise des constantes pour
stocker ces données.
Les variables et les constantes ne sont que des zones dans la mémoire de l'ordinateur.
VARIABLES
On peut considérer la mémoire de l'ordinateur comme une armoire remplie de tiroirs. Une
variable est un tiroir de cette armoire dont le nom permet d'identifier son contenu. La
valeur de la variable est le contenu du tiroir (fichiers, objets…) et le type de variable est
le type du tiroir (tiroir des feuilles, tiroir des stylos…).
DEFINITION
Une variable est une zone mémoire dans laquelle on peut mémoriser de façon temporaire
une valeur pour une exploitation ultérieure. Son contenu peut varier durant le déroulement
de l'algorithme.
Chaque variable est essentiellement caractérisée par son nom, son type et sa valeur :
NOM :
Pour que le programme puisse distinguer une variable de l'autre, il faut la caractériser par
un nom.
Exemples : Variable age, Variable note, Variable prénom
VALEUR :
5
TYPE :
Le type sert à caractériser l'ensemble des valeurs que peut prendre la variable.
o TYPES NUMERIQUES :
- Entier (INT): c'est le type des nombres entiers relatifs qui appartient
à l’ensemble , ce type contient des nombres positifs et négatifs
comme : 5, -1, 0, -7, 2009… Exemple : Variable age est de type entier.
- Réel (REAL): les nombres réels sont les nombres de l'ensemble ,
ce type contient alors les nombres décimaux positifs et négatifs
comme : 4.2, -2.1, 5, 4987.1… Exemple : Variable note est de
type réel.
o TYPES ALPHANUMERIQUES :
- Caractère (CHAR): ce type peut contenir une lettre, un chiffre ou un
signe comme : a, G, +, 4… Exemple : Variable Lettre est de
type caractère, elle peut contenir un seul caractère de l'alphabet.
- Chaîne de caractères (STRING) : ce type contient un ensemble de
caractères comme : Mohamed45, Bonne journée…
Exemple : variable prénom est de type chaîne de caractères.
o Booléen (BOOLEAN):
Ce type peut contenir Vrai ou Faux, par exemple, pour 5 > 2 la variable
va contenir Vrai, et pour 0 < -2, la variable va contenir Faux.
Exemple : variable admis est de type booléen, si l'étudiant est admis,
cette variable va contenir Vrai, sinon, elle va contenir Faux.
DECLARATION
Pour écrire un algorithme correct, on doit déclarer les variables qu'on va utiliser dans
l'algorithme avant de commencer à écrire les étapes de l'algorithme.
La syntaxe de déclaration d'une variable est : VAR nom_de_variable : Type ;
N.B : On peut déclarer plusieurs variables sur une seule ligne si elles sont de même type.
Pour faire cela, on utilise des virgules.
Exemples :
- VAR Note1, Note2, Note3 : REAL ;
- VAR Lettre : CHAR ;
CONSTANTES
DEFINITION
Une constante est une zone mémoire dans laquelle on peut mémoriser une valeur qui ne
varie pas durant le déroulement de l'algorithme.
6
CARACTERISTIQUES D'UNE CONSTANTE
DECLARATION
7
INSTRUCTIONS DE BASE
OBJECTIFS :
INTRODUCTION
Nous avons déjà vu un exemple d'un algorithme (l'algorithme qui calcule la moyenne de
deux nombres), et nous avons remarqué que les étapes de cet algorithme se composent de
trois actions, l'écriture, la lecture et la mémorisation. Ces actions sont appelées des
instructions.
On distingue trois instructions principales dans les algorithmes :
- L'instruction de lecture ;
- L'instruction d'écriture ;
- L'instruction d'affectation (la mémorisation).
INSTRUCTION DE LECTURE
Définition
L'instruction de lecture permet à l'utilisateur de rentrer une valeur au clavier pour qu'elle
soit stockée dans une variable.
Syntaxe
On écrit l'instruction de lecture de cette façon : SAISIR (nom_de_variable) ;
N.B : On peut lire plusieurs valeurs dans une seule instruction en utilisant la virgule.
Exemples :
SAISIR (Note) ;
SAISIR (Note1, Note2) ; Dans ce cas, la première valeur saisie par l'utilisateur
sera stocker dans la variable Note1 et la deuxième dans la variable Note2.
INSTRUCTION D'ECRITURE
DEFINITION
SYNTAXE
8
- Pour afficher un message : AFFICHER ('message') ;
N.B : On peut afficher plusieurs messages et valeurs des variables dans une seule
instruction.
Exemples :
AFFICHER ('Donner la note : ') ;
SAISIR (Note) ;
AFFICHER (‘Votre note est : ‘, Note, ‘Merci !’) ;
INSTRUCTION D'AFFECTATION
DEFINITION
L'instruction d'affectation permet de stocker une valeur dans une variable. Si cette
variable contenait une autre valeur, celle-ci est perdue.
SYNTAXE
Exemples :
Prenom ‘Mohamed’ ;
Salutation ‘Bonjour‘ & Prenom ;
Note 15 + 3 / 2 ;
Note Note1 + Note2 / 2 ;
9
OPERATEURS ET STRUCTURE D'ALGORITHME
OBJECTIFS :
Utiliser les opérateurs arithmétiques et l'opérateur de chaînes de caractères.
Représenter correctement un algorithme.
OPERATEURS
INTRODUCTION
Jusqu'à présent, nous avons vu les trois instructions de base qui nous permettent de
manipuler des variables et des constantes dans un algorithme. Pourtant, pour faire des
calculs, il faut utiliser des opérations arithmétiques.
Une opération arithmétique se compose des opérandes reliés par des opérateurs. Ces
opérandes peuvent être des variables ou des valeurs.
Exemples :
3+2
A+2
A+B
Nous allons parler dans ce chapitre de deux types d’opérateurs : les opérateurs
arithmétiques et l'opérateur de chaînes de caractères.
OPERATEURS arithmétiques
Représentation
Opérateur arithmétique Exemple
algorithmique
Addition + 7+2=9
Soustraction - 7–2=5
Multiplication * 7 * 2 = 14
Puissance ^ 7 ^ 2 = 49
Division / 7 / 2 = 3.5
Division entière DIV 7 DIV 2 = 3
Modulo 7 MOD 2 = 1
MOD
(le reste de la division entière) (7 div 2 = 3 et reste 1)
10
Remarque
L'algorithme doit avoir une structure bien définie. Cette structure doit comporter :
- L'en-tête qui comprend le nom de l'algorithme pour identifier l'algorithme.
- Les déclarations des variables et des constantes.
- Le corps de l'algorithme qui contient les instructions.
Toutes les instructions doivent se situer entre le mot Début et le mot Fin, et chaque
instruction doit comporter un point-virgule à la fin.
DEBUT
Instruction_1 ;
Instruction_2 ;
Instruction_3 ;
Le corps
FIN
FALGO
11
Exemple : l'algorithme qui calcule la surface d'un disque
ALGO Surface_disque
VAR Rayon, Surface : REAL ;
CONST Pi = 3.14 ;
DEBUT
AFFICHER (‘Donner le rayon du disque : ‘) ;
SAISIR (Rayon) ;
Surface (Rayon ^ 2) * Pi ;
AFFICHER (‘La surface du disque est : ‘, Surface) ;
FIN
FALGO
12
STRUCTURES DE CONTROLE DE BASE
OBJECTIFS
INTRODUCTION
STRUCTURE SEQUENTIELLE
Dans une structure séquentielle, les instructions sont exécutées l'une après l'autre de façon
que :
l'ordre des instructions est respecté ;
aucune instruction n'est omise.
La structure séquentielle est la structure la plus simple que l'on puisse trouver dans un
algorithme.
Dans les exemples que nous avons déjà vus, nous avons utilisé seulement la structure
séquentielle. Cette structure ne va pas être utile dans le cas où nous avons plusieurs choix
possibles. Par exemple, si on veut calculer le résultat de la division de deux nombres, on
doit impérativement tester si le deuxième nombre est diffèrent de 0 afin que le résultat
soit correct.
o DEFINITION
La structure sélective permet d'exécuter des instructions en fonction des réponses à des
conditions.
13
o FORMAT GENERAL
SI (condition) ALORS
Instruction_1 ;
Instruction_2 ;
FSI ;
STRUCTURE ALTERNATIVE
o DEFINITION
Une structure alternative est une situation dans laquelle on ne peut choisir que deux
solutions possibles.
o FORMAT GENERAL
SI (condition) ALORS
Instruction_1 ;
Instruction_2 ;
SINON
Instruction_3 ;
Instruction_4 ;
FSI ;
o DEFINITION
La structure alternative imbriquée est une structure utilisée lorsqu'on a plus de deux cas
possibles
14
o FORMAT GENERAL
SI (condition_1) ALORS
SI (condition_2) ALORS
Instruction_1 ;
SINON
Instruction_2 ;
FSI ;
SINON
SI (condition_3) ALORS
Instruction_3 ;
SINON
Instruction_4 ;
FSI ;
FSI ;
o DEFINITION
La structure à choix multiples est utilisée lorsque plusieurs conditions portant sur la même
variable s'enchaînent.
o FORMAT GENERAL
o REMARQUE
L'instruction Sinon est facultative, dont l'action sera exécutée si aucune des conditions
évaluées n'a été remplie.
15
LES ITERATIONS (STRUCTURE REPETITIVE)
OBJECTIFS :
INTRODUCTION
L'itération permet d'exécuter plusieurs fois une suite d'instructions. Il existe deux grandes
catégories d'itérations :
Les itérations déterministes : le nombre d'itérations est défini à l'entrée de la
boucle ;
Les itérations indéterministes : l'exécution de la prochaine itération est
conditionnée par une expression booléenne.
Il existe une seule instruction permettant de faire des boucles déterministes, c'est
l'instruction POUR
SYNTAXE :
Dans ce cas, la variable utilisée prend successivement les valeurs comprises entre
valeur_début et valeur_fin.
TANT QUE :
L'instruction "TANT QUE" permet d'exécuter des instructions tant que l'expression
booléenne est vraie.
16
o SYNTAXE :
REPETER JUSQU'A :
o SYNTAXE :
REPETER
Instructions…;
JUSQU'A (condition) ;
o REMARQUE :
17
LES TABLEAUX
OBJECTIFS DU CHAPITRE :
Imaginons que dans un programme, nous ayons besoin de saisir les notes de 30 élèves et
de les conserver. Avec nos connaissances actuelles, la seule solution dont nous disposons
consiste à déclarer 30 variables, appelées par exemple note1, note2, note3, … jusqu’à
note30. Cette solution a des inconvénients car il faut trouver, déclarer et manipuler autant
de noms différents que l’on a de valeurs de même type à conserver (ex : 30 notes, 30
noms, 30 prénoms...). Pour représenter ce genre de variables on a recours aux tableaux.
DEFINITION
Un tableau est un ensemble de valeurs portant le même nom de variable et repérées par
un nombre appelé indice.
SYNTAXE
NB :
Les indices commencent généralement par 0, c’est-à-dire ; pour un tableau de 30
cases, les indices doivent être de 0 à 29. Si la dimension du tableau est nommée
par la variable dim, alors, « dim ← 30 », et les indices vont de 0 à dim-1.
Pour lire et écrire toutes les valeurs du tableau, on utilise la boucle déterministe
« POUR ».
Une des opérations importantes qu’on effectue souvent sur les tableaux est le tri des
valeurs. Il existe plusieurs méthodes pour le tria dont les plus simples sont : le tri par
sélection et le tri bulle.
18
TRI PAR SELECTION :
Le tri par sélection consiste à trouver l'emplacement de l'élément le plus petit du tableau,
c'est-à-dire l'entier « m » tel que tab[i] > tab[m] pour tout « i ». Une fois cet emplacement
trouvé, on échange les valeurs des composantes tab[1] et tab[m]. Puis on recommence ces
opérations sur la suite tab[2], tab[3], … , tab[n], ainsi on recherche la plus petite valeur
de cette nouvelle suite et on la met dans tab[2]. Et ainsi de suite.
TRI BULLE :
Le tri bulle est une variante du tri par sélection, il consiste à intervertir toute paire
d'éléments consécutifs (tab[i], tab [i+1]) non ordonnés par une boucle « POUR », et on
répète l’opération plusieurs fois tant qu’on trouve encore des valeurs non ordonnées.
19