Vous êtes sur la page 1sur 20

ALGORITHMES ET

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.

Aucune information ou partie d’informations contenue dans le présent document ne


pourra être divulguée oralement ou par écrit, ni communiquée, par quelque moyen que
ce soit, à un tiers, qu’il s’agisse d’un indépendant, d’un employé non impliqué
directement, d’une société ou d’une filiale, sans le consentement préalable et écrit de
l’auteur.

La communication par l’auteur du présent document et des informations qu’il contient


ne saurait constituer et/ou conférer quel que droit de propriété intellectuelle et/ou
industrielle que ce soit dont l’auteur est titulaire.

1
Objectifs du cours :
Adopter une démarche algorithmique pour faire face à des situations de
problèmes

Notion d'algorithme et instructions de base


Objectif:
Construire un algorithme simple en utilisant les instructions de base.
Notion d'algorithme
Objectifs du chapitre :
 Appréhender la notion d'algorithme.
 Connaître les composants d'une démarche algorithmique.
Variables et Constantes
Objectifs du chapitre :
Savoir utiliser les variables et les constantes
Instructions de base
Objectifs du chapitre :
Savoir utiliser les instructions de base.
Opérateurs et structure d'algorithme
Objectifs du chapitre :
 Utiliser les opérateurs arithmétiques et l'opérateur de chaînes de caractères.
 Représenter correctement un algorithme.

Structures de contrôle et tableaux


Objectifs :
o Construire un algorithme en utilisant une structure sélective.
o Construire un algorithme en utilisant les itérations et les tableaux.

Structures de contrôle de base


Objectifs du chapitre :
Savoir utiliser la structure sélective
Les itérations (structure répétitive)
Objectifs:
Savoir utiliser la structure répétitive
Les tableaux
Objectifs du chapitre :
Savoir utiliser les tableaux en algorithmique

2
NOTION D'ALGORITHME

 OBJECTIFS DU CHAPITRE :
 Appréhender la notion d'algorithme.
 Connaître les composants d'une démarche algorithmique.

 INTRODUCTION

QU'EST-CE QU'UN ALGORITHME ?

Le mot algorithme provient du nom du célèbre mathématicien arabe de la première moitié


du 9ème siècle: Muhammad ibn Musa al Khawarizmi.
Sûrement, vous avez déjà fait de l'algorithmique, parce qu'on utilise tous des algorithmes
dans notre vie quotidienne, voici quelques exemples :
 Indiquer un chemin à un touriste égaré ;
 Faire chercher un objet à quelqu'un par téléphone ;
 Ecrire une recette de cuisine ;
 Résoudre une équation mathématique…
On peut dire que l'algorithme est une démarche à suivre pour résoudre un problème.
Alors ce que nous allons voir dans ce cours, c'est juste comment utiliser des algorithmes
en informatique afin de créer des programmes informatiques.

 COMPOSANTS D'UNE DEMARCHE ALGORITHMIQUE

LES COMPOSANTS D'UNE DEMARCHE ALGORITHMIQUE

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

Pour écrire un algorithme, on doit déterminer le résultat voulu et les données à


utiliser (ce sont les ingrédients dans notre cas), ensuite on doit écrire tous les étapes
nécessaires en respectant un ordre précis.

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

Soit un petit programme qui sert à calculer la moyenne de deux nombres :


Données : Les deux nombres.
Résultat : La moyenne de ces nombres.
Étapes :
 L'ordinateur écrit : "Entrez le premier nombre et appuyer sur Entrée" ;
 L'ordinateur lit le premier nombre entré à partir du clavier ;
 L'ordinateur écrit : "Entrez le deuxième nombre et appuyer sur Entrée" ;
 L'ordinateur lit le deuxième nombre à partir du clavier ;
 L'ordinateur calcule la somme des deux nombres et divise le résultat par
deux, ensuite il mémorise le résultat de l'opération ;
 L'ordinateur écrit : "La moyenne de ces nombres est :" et affiche ensuite
le résultat.
On peut dire que l'ordinateur a fait trois actions principales pour exécuter cet algorithme :

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 :

Savoir utiliser les variables et les constantes

 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.

CARACTERISTIQUES D'UNE VARIABLE

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 :

C'est la valeur stockée dans la variable à un moment donnée.


Exemples : Variable age contient la valeur 24, Variable note contient la valeur 15.5,
Variable prénom contient la valeur Ismail.

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

Une constante est caractérisée par son nom et sa valeur.

DECLARATION

La syntaxe de déclaration d'une constante est : CONST nom_constante = Valeur ;


Exemples :
- CONST Pi = 3.14 ;
- CONST Nombre_Lettres_FR = 26 ;

7
INSTRUCTIONS DE BASE

 OBJECTIFS :

Savoir utiliser les instructions de base.

 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

L'instruction d'écriture permet d'afficher à l'utilisateur des messages ou des résultats de


calculs sur l'écran.

SYNTAXE

La syntaxe de l'instruction d'écriture est :


- Pour afficher la valeur d'une variable : AFFICHER (nom_variable) ;

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

La syntaxe de l'instruction d'affectation est :


nom_variable_1 nom_variable_2 ;
Ou bien :
nom_variable expression ;

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

On utilise souvent sept opérateurs arithmétiques dans les algorithmes :

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

La multiplication, la division, la division entière, le modulo et la puissance s'effectuent


avant l'addition et la soustraction ; pour modifier cet ordre, on peut utiliser les
parenthèses.

OPERATEUR DE CHAINES DE CARACTERES

Pour concaténer deux chaînes de caractères, on doit utiliser l'opérateur de concaténation.


Cet opérateur se note avec le signe "&".
Exemples :
A ‘Bon’ ;
B ‘jour’ ;
C A & B ; La variable C contient maintenant la chaîne : ‘Bonjour’.

 STRUCTURE D'UN ALGORITHME

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.

ALGO nom_algorithme L’en - tête

VAR nom_variable : Type_variable ;


CONST nom_constante = valeur ; Les déclarations

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

Savoir utiliser la structure sélective

 INTRODUCTION

En algorithmique, les opérations élémentaires relatives à la résolution des problèmes


peuvent être organisées suivant trois familles de structures algorithmiques
fondamentales :
- la structure séquentielle ou linéaire ;
- la structure sélective ou conditionnelle ;
- la structure itérative ou répétitive.

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.

STRUCTURE SELECTIVE OU CONDITIONNELLE

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.

 STRUCTURE SELECTIVE (SI)

STRUCTURE SELECTIVE SIMPLE

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 ;

STRUCTURE ALTERNATIVE IMBRIQUEE

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 ;

 STRUCTURE SELECTIVE A CHOIX MULTIPLES (SELON QUE)

o DEFINITION

La structure à choix multiples est utilisée lorsque plusieurs conditions portant sur la même
variable s'enchaînent.

o FORMAT GENERAL

SELON QUE variable VAUT


Valeur_1 : instruction 1 ;
Valeur_2 : instruction 2 ;
SINON : instruction 3 ;
FSELON ;

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 :

Savoir utiliser la structure répétitive

 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.

 LES ITERATIONS DETERMINISTES (POUR)

Il existe une seule instruction permettant de faire des boucles déterministes, c'est
l'instruction POUR

SYNTAXE :

POUR (variable = valeur_début à valeur_fin) FAIRE


Instructions…
FPOUR ;

Dans ce cas, la variable utilisée prend successivement les valeurs comprises entre
valeur_début et valeur_fin.

 LES ITERATIONS INDETERMINISTES (TANT QUE, REPETER


JUSQU’A)

TANT QUE :

L'instruction "TANT QUE" permet d'exécuter des instructions tant que l'expression
booléenne est vraie.

16
o SYNTAXE :

TANT QUE (condition) FAIRE


Instructions…;
FTQ ;

REPETER JUSQU'A :

L'instruction "REPETER JUSQU'A" permet d'exécuter des instructions jusqu'à ce que


l'expression booléenne est vraie.

o SYNTAXE :

REPETER
Instructions…;
JUSQU'A (condition) ;

o REMARQUE :

A la différence de l'instruction "TANT QUE", dans l'instruction "REPETER


JUSQU'A" les instructions sont exécutées au moins une fois.

17
LES TABLEAUX

 OBJECTIFS DU CHAPITRE :

Savoir utiliser les tableaux en algorithmique

 UTILISATION DES TABLEAUX

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

Déclaration d’un tableau de 30 cases : TABLEAU Note[30] : INT;

Lecture de la valeur de la case 5: SAISIR (Note[5]);

Ecriture de la première valeur : AFFICHER (Note[0]);

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 ».

 TRI D'UN TABLEAU

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.

Cette méthode nécessite deux boucles « POUR » imbriquées, la première


« i » commence de « 0 » à « dim-2 », et la deuxième « j » de « i+1 » à « dim-1 ».

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

Vous aimerez peut-être aussi