CHAPITRE I
: NOTION ELEMENTAIRE
D’ALGORITHME
I- DEFINITION DES CONCEPTS ET DES NOTIONS D’ALGORITHME
A- DEFINITION DES CONCEPTS
L’algorithme est un ensemble de règles opératoires rigoureuses, ordonnant à un
processeur d’exécuter dans un ordre déterminé un nombre fini d’opérations élémentaires selon
une syntaxe bien définie.
On définit aussi l’algorithme comme étant une suite finie et ordonnée d’instructions
(ordres) permettant de résoudre un problème. Le résultat doit donc s’obtenir en un temps fini.
L’algorithmique est la science qui propose et étudie les méthodes de conception des
algorithmes, analyse et détermine l’efficacité des algorithmes et recherche les algorithmes les
plus efficaces pour résoudre un problème donné.
L’organigramme ou algorigramme est une représentation graphique des
algorithmes.
B- LES PROPRIETES D UN BON ALGORITHME
Un bon algorithme doit être :
- Compréhensible : car on n’écrit pas l’algorithme pour soit même mais pour les autres.
- Lisible: l’algorithme doit respecter une structure bien définie et doit être
compréhensible même par un non informaticien.
- De haut niveau : il ne doit pas faire appel à des notions techniques
- Précis: chaque élément de l’algorithme ne doit pas porter à confusion, il est donc
important de lever toute ambiguïté.
- Concis : tout algorithme ne doit pas dépasser une page. Si c’est le cas, l’on devrait
diviser le problème en plusieurs sous problèmes.
- Structuré : un algorithme doit être composé de différentes parties facilement
identifiables.
- Résoudre un problème
- Se termine toujours
En algorithmique, tout problème aussi complexe soit – elle se ramène toujours à une
combinaison plus ou moins de trois procédures :
1) Identification des données
Il s’agit de repérer les données nécessaires, voire indispensable à la résolution de
problème. Ces données peuvent être numériques, sous forme de texte(caractère ou chaîne de
caractères) ou de type logique(vrai ou faux).
2) Les opérations de traitement
Il s’agit de déterminer toutes les étapes de traitement à faire et des « instructions » à
donner pour une exécution manuelle ou automatique.
3) Les données en sortie
Les résultats obtenus peuvent être affichés sur un écran, ou être imprimés dans un papier
ou encore être conservés dans un fichier. Si on ne fait rien, les informations contenues en
mémoire jusqu’à la prochaine exécution seront perdus.
C- Base de la démarche algorithmique
Les étapes pour écrire un algorithme correct sont les suivantes :
Enoncer clairement les résultats à obtenir.
Remonter des résultats aux données.
Décomposer le traitement en niveaux hiérarchiques en allant du général au particulier et
en identifiant les blocs logiques (structures algorithmiques de base).
Construire un jeu d’essai pour vérifier si l’algorithme fonctionne et « faire tourner
l’algorithme à la main » c'est-à-dire le dérouler.
D- Les questions de bases
Avant de commencer la construction d’un algorithme, il convient d’analyser d’abord en détails
le problème posé. Cette analyse prend appui sur 03 questions de base qui sont les suivantes :
- Quel est le résultat cherché ?
- Qu’est – ce qui me faut pour résoudre le problème posé ?
- Comment résoudre le problème ?
- Faut – il afficher ou non les résultats ?
Exemple on désire écrie un algorithme permettant de calculer la surface du rectangle de
longueur L et de largeur l. et d’afficher le résultat à l’écran.
Le schéma du processus correspondant est :
L -Demander L
S Lxl -Demander l
-Calculer S=L x l
l pp
- Afficher S
II- STRUCTURE GENERALE D’UN ALGORITHME
A- LANGAGE DE DESCRIPTION D’ALGORITHME
Ce langage utilise un ensemble de mots clé et de structures permettant d’écrire de manière
complète, claire, l’ensemble des opérations à exécuter sur les données pour obtenir des
résultats ; on n’hésitera pas à agrémenter l’algorithme de nombreux commentaires.
Rque : l’avantage d’un tel langage est de pouvoir être facilement transcrit dans un langage
de programmation structuré (Pascal, C, Fortran….)
a) Les mots clé
Dans un LDA, certains mots sont réservés pour un usage bien défini, on les nomme les mots
clés. Ce sont les mots que le langage utilise pour son fonctionnement.
Rque : un mot clé ne peut être déclaré comme identificateur et il ne peut être utilisé comme
variable.
Dans un LDA, les mots clé commencent toujours par une majuscule et seront toujours
soulignés. Comme mots clés, on peut citer :
Algorithme :permet de définir ou de donner un nom à l’algorithme.
Début :marque le commencement de l’algorithme.
Fin algo : marque la fin de l’algorithme
Variable : c’est une partie de l’algorithme permettant de déclarer des variables. Une variable
est une case mémoire dont le contenu peut varier au cours de l’exécution d’un algorithme.
Constante : c’est la partie de l’algorithme permettant de déclarer les constantes. Une
constante est un objet ou case mémoire dont le contenu ne peut varier au cours de l’exécution
d’un algorithme.
Réel, Caractère, Entier, Chaîne…. : ce sont des mots clé permettant de définir des types.
Si, Finsi, Tantque, Fintantque, Pour, Finpour, Repéter, Jusqu’à… sont des mots clés
permettant de définir les structures itératives, conditionnelles…
b) Les commentaires
Comme tout langage, le LDA nous permet de faire des commentaires dans les algorithmes.
Un commentaire est un texte ou ensemble de textes explicatifs destinés au lecteur de
l’algorithme et qui n’ont aucune incidence sur son exécution. Les commentaires sont placés
entre les symboles /* et */. Ils (commentaires) peuvent apparaître à tout endroit de l’algorithme
et s’étendre sur une ou plusieurs lignes.
Exemple /* ceci est un commentaire */
c) Les identificateurs
Dans un programme, beaucoup d’éléments (variables, fonctions, types, …) sont désignés par
un nom qu’on appelle identificateur. Comme dans la plupart des langages, un tel identificateur
est formé d’une suite de caractères choisis parmi les lettres, chiffres ou caractères(-), le premier
caractère étant différent d’un chiffre.
Exemple valeur_5 ; Paul, _89 ; jean_paul_2
d) Les séparateurs
Dans le langage naturel, les mots sont séparés par un espace, un signe de ponctuation ou de fin
de ligne. Il en va de même pour un LDA. Les caractères séparateurs comprennent tous les
opérateurs (+, -, *, =, ==, …) ainsi que ( ) ; [ ] ; , ; . ; :….
B- STRUCTURE GENERALE D’UN ALGORITHME
L’entête Algorithme
Constantes(ou Const)
Liste des constantes ;
Variables (ou Var)
rtie déclaration des Constantes, des variables et des structures
Liste des variables ;
Structures (ou Struct)
Liste des structures ;
Fonction (ou Fonc)
Liste des fonctions ;
Procédure (ou Proc)
Liste des procédures ;
Partie déclaration des procédures et des fonctions
Début
Instruction1 ;
Instruction2 ;
……….
Instruction n ;
Corps de l’algorithme Fin algo
Rque : * L’entête : cette partie permet simplement de donner un nom à l’algorithme. Ce
nom n’influence en rien le bon déroulement de l’algorithme. En général, il faut donner des
noms parlant à nos algorithmes, ceci permettra au lecteur d’avoir une idée sur ce que fait cet
algorithme.
* Les parties déclaratives : C’est une liste exhaustive des objets, grandeurs utilisés
dans l’algorithme.
* Le corps : Dans cette partie, sont placées des tâches (instructions, opérations…)à
exécuter par notre algorithme.
* Tous les mots clés sont soulignés et commencent par une lettre majuscule.
III- LES TYPES DE BASE ET LES INSTRUCTIONS SIMPLES
A- Les TYPES DE BASE
Un type de base est un type primitif ie non décomposable pour le problème considéré. Un
type de base ne peut se décomposer en un assemblage de plusieurs types. On distingue cinq
principaux types de base :
1) Le type entier
La variable de type entier est une case mémoire dont le contenu ne peut être que des entiers
relatifs. ie 50 ; 1001 ; -150 ; -8730
Tout autre contenu différent du type entier sera refusé et par conséquent considéré comme une
erreur. Le mot clé utilisé est : Entier
2) Le type réel
La variable de type réel est une case mémoire dont le contenu ne peut être que des valeurs
numériques appartenant à R. Seules les valeurs de type booléens, caractère ou chaîne de
caractères seront considérées comme erreur. Le mot clé est Réel.
3) Le type booléen
Les variables de type booléens ne peuvent contenir que les valeurs vrai ou faux, oui ou non.
Le mot clé utilisé est Booléen.
4) Le type caractère
Les variables de type caractère n’acceptent qu’un seul caractère alphabétique ou numérique.
Exple ‘a’ ou ‘10’. Le mot clé utilisé pour leur déclaration est Caractère.
5) Le type chaîne de caractères
Les variables de ce type acceptent plusieurs caractères. Le mot clé est Chaîne.
6) Le type tableau
Un tableau de données est case mémoire pouvant contenir un ensemble de données de même
type.
Exple Tableau d’entiers, tableau de caractères. Le mot clé utilisé est tableau.
B- LES TYPES CONSTRUITS
Une variable de type construit est une case mémoire pouvant contenir des données de nature
différente. Par exemple une variable qui contient en même temps des informations comme le
nom, l’âge, la note d’un élève. Il faudrait donc définir un type propre qui englobe les
informations souhaitées et les différents types de base associés à chaque information. Ce
nouveau type de variable est appelé type construit ou Structure.
Rque une structure ou type construit est un type que l’on peut obtenir à partir de plusieurs
autres types.
Exple Type elev = Structure
Nom : Chaîne ;
Age : Entier ;
Sexe : Caractère ;
Note : Réel ;
Redoublant : Booléen ;
Fin structure.
elev est un type construit.
Rque : *- Un type construit peut faire appel à d’autres types construits
*- Soit e :elev (e est une variable de type elev) [Link] est de type Chaîne de
caractères.
C- LES INSTRUCTIONS SIMPLES
Une instruction est un ordre qui permet de spécifier à la machine l'action à effectuer. On
distingue plusieurs types d’instructions : les instructions simples et les structures de contrôle.
Comme instructions simples, on peut citer.
*- L’instruction de lecture
*- L’instruction d’écriture
*- L’instruction d’affectation.
1) L’instruction de lecture
Cette instruction permet d’entrer une donnée à partir du clavier. La machine attend que
l’utilisateur tape une valeur au clavier et valide. Le mot clé est Lire ( ).
Exple : Lire(x)
2) L’instruction d’écriture
Cette instruction permet l’affichage à l’écran du contenu de la variable. Le mot clé est
Ecrire ( ) ou Afficher ( ).
Exple : Pour la variable x contenant 10
Ecrire(x) on aura 10
Ecrire (″x″) aura x.
3) L’instruction d’affectation
L’affectation se fait à l’aide du symbole (qui signifie ″prend la valeur″)
La syntaxe est variable Expression.
Se lit :″ variable prend la valeur expression″ .
Exple x 8 signifie : x prend la valeur 8
4) L’instruction d’incrémentation
Cette instruction permet d’augmenter le contenu d’une variable d’une certaine.
Exple x x + a incrémente x de a
5) L’instruction de décrémentation
Cette instruction permet diminuer le contenu d’une variable d’une certaine.
Exple x x - a décrémente x de a
IV- LES OPERATEURS
Un opérateur est un symbole qui permet de réaliser une opération. Comme opérateur, on
distingue les opérateurs arithmétiques, les opérateurs relationnels et les opérateurs
logiques.
a- Les opérateurs arithmétiques
Ils permettent d’effectuer les calculs arithmétiques classiques.
Opérateur signification
+ Addition
- Soustraction
* Multiplication
/ Division
Div Division entière
Puissance
b- Les opérateurs relationnels
Ils permettent de comparer les expressions et sont beaucoup plus utilisés dans les structures
conditionnelles (si, sinon…).
Opérateur signification
> Strictement supérieur
< Strictement inférieur
≤ Inférieur ou égal
≥ Supérieur ou égal
= Egal
≠ Différent
c- Les opérateurs logiques
En algorithmique, on distingue trois principaux opérateurs logiques <<et>>, « ou », « non ».
mais ces trois peuvent être combinés. Ainsi, nous aurons « non et », « non ou ». de même que
les opérateurs relationnels, ils sont beaucoup plus utilisés dans les structures conditionnelles.
Leur description est la suivante :
- « et » est une opération binaire qui n’a de valeur de vérité vrai que si les deux
expressions de part et d’autre de l’opérateur sont vraies et faux sinon.
- « ou » est une opération binaire qui n’a de valeur de vérité vrai que si au moins l’une
des deux expressions de part et d’autre de l’opérateur est vraie.
V- LES STRUCTURES DE CONTROLES
Elles sont au nombre de 04 :
*-Les structures séquentielles
*-Les structures alternatives
*-Les structures de choix
*-Les structures itératives
1) Les structures séquentielles
Elles se caractérisent par une suite d’actions à exécuter successivement dans l’ordre énoncé.
On utilisera le séparateur ; entre les actions à exécuter. Une structure séquentielle se présente
comme suit :
Début
Action1 ;
Action2 ;
…….
Action n ;
Fin
2) Les structures alternatives
L’instruction Si permet de programmer une structure alternative, ceci en permettant de
choisir entre deux instructions, suivant la valeur d’une expression jouant le rôle de
condition. La seconde partie introduite par Sinon, est facultative, de sorte que l’instruction
Si présente deux formes.
On distingue 02 types de structures alternatives :
i) La structure alternative réduite
La syntaxe est : Si (condition) alors
Action ;
Fin si
La sémantique d’exécution de cette instruction est la suivante :
Le test de la condition est effectué.
Si le test est positif, l’action est exécutée.
Sortir de la structure.
ii) La structure alternative complète
La syntaxe est : Si (condition) alors
Action1 ;
Sinon
Action2 ;
Fin si
La sémantique d’exécution de cette instruction est la suivante :
Le test de la condition est effectué.
Si le test est positif, l’action1 est exécutée.
Si le test est négatif, l’action2 est exécutée.
Sortir de la structure.
3) La structure de choix
La syntaxe est la suivante :
Selon le cas de var faire
Valeur1 :action1 ;
Valeur2 :action2 ;
…………………
Valeur n : action n ;
Autre : action n+1 ;
Fin cas
La sémantique d’exécution de cette instruction est la suivante :
Si var=valeur1 alors exécuter l’action1 ; sinon
Si var=valeur2 alors exécuter l’action2 ; sinon
……………………………………………………
Si var=valeur n alors exécuter l’action n ; sinon exécuter l’action n+1
4) Les structures itératives ou répétitives
Une structure itérative ou boucle est une instruction permettant à la machine d’exécuter la
même action un certain nombre de fois. Sa forme dépend de la connaissance qu’on a du
nombre de répétition de l’action :
i) Le nombre de répétition de l’action n’est pas connu
On distingue 02 structures de base :
La structure répéter……jusqu’à
La structure Tant que…..faire
Dans la structure répéter……jusqu’à , l’action est exécuter une première fois puis sa
répétition se poursuit jusqu’à ce que la condition soit vérifiée. La syntaxe est :
Repeter
Action ;
Jusqu’à (condition)
La sémantique d’exécution de cette instruction est :
Exécuter l’action
Evaluer la condition
Si condition = vraie alors sortir de la structure sinon exécuter à nouveau
l’action.
Aller à la ligne 2
Sortir de la structure.
Rque L’action est exécutée au moins une fois dans la boucle répéter……jusqu’à
Dans la structure Tant que…..faire, on commence par tester la condition. Si elle est
vérifiée, on exécute l’action. La syntaxe est :
Tant que (condition) faire
Action ;
Fin tantque
La sémantique d’exécution de cette instruction est :
Evaluer la condition
Si condition = vraie alors exécuter l’action sinon ne plus exécuter l’action.
Aller à la ligne 2
Sortir de la structure.
Rque L’action peut ne jamais être exécutée.
ii) Le nombre de répétition de l’action est connu
Dans cette structure, la sortie de la boucle se fait lorsque le nombre souhaité de répétition est
atteint. On utilise donc une variable de contrôle d’itération de la boucle appelée indice
caractérisée par sa valeur initiale, sa valeur finale, son pas de variation. Cette instruction se
présente sous forme :
Pour indice allant de V1 à V2 pas n faire
Action ;
Fin pour
Deux cas de figure se présentent :
La valeur initiale de l’indice V1 est inférieure ou égale à la valeur finaleV2 de
l’indice. Dans ce cas, la structure est dite « Pour croissant »
La valeur initiale de l’indice V1 est supérieure ou égale à la valeur finaleV2 de
l’indice. Dans ce cas, la structure est dite « Pour décroissant »
VI- LES PROCEDURES ET FONCTIONS
Un algorithme écrit d’un seul tenant devient difficile à comprendre dès qu’il dépasse une ou 02
pages de texte. Une écriture modulaire permet de scinder en plusieurs parties appelées sous
algorithmes (sous programmes) un algorithme volumineux et complexe. Chacune de ces
parties peut d’ailleurs si nécessaire, être décomposée à son tour en module plus élémentaire ;
ce processus de décomposition peut être répété autant de fois que nécessaire.
En résumé, nous divisons un algorithme pour :
Des besoins de clarté et de maintenance
Des besoins de réduction du code machine.
Un sous algorithme est un ensemble d’instructions calculant un certains nombres de résultats
en fonction d’un certain nombre de données.
On distingue 02 types de modules : les procédures et les fonctions.
A- LES PROCEDURES
1) Définition
Une procédure est un sous algorithme assurant de manière autonome un traitement
particulier. Ce traitement peut alors être répété dans l’algorithme principal ou dans un autre
sous algorithme par un seul appel de la procédure.
2) Structure d’une procédure
La structure générale d’une procédure n’est pas très différente de celle d’un algorithme normal.
Une procédure comporte un entête, une partie déclarative et un corps de procédure.
L’entête de la procédure commence toujours par le mot clé PROCEDURE suivi du nom de
la procédure et d’une liste de paramètres placée entre parenthèses.
La structure d’une procédure est la suivante :
Procédure nom_de_la_procedure (liste des paramètres)
Déclaration des variables et constantes
Début
/* corps de la procédure*/
Fin procédure
i) Paramètre d’une procédure
Un paramètre est une variable d’entrée dans la procédure. Ces paramètres vont permettre
l’appel de cette procédure principale encore appelée procédure appelante. La déclaration de ses
variables se fait tel que présentée dans la déclaration des variables dans un algorithme.
Rques * pour une procédure ayant plusieurs paramètres, ceux-ci sont séparés par des
virgules.
* Une procédure peut ne pas avoir de paramètre.
ii) Déclaration et appel de procédure.
La déclaration d’une procédure se fait de la manière suivante :
Procédure nom_de_la_procedure (liste des paramètres)
Tout comme les algorithmes, les noms des procédures n’est qu’indicatif mais il est prudent
d’utiliser des noms parlants.
Exple Procédure Addition (x : réel, y : réel). Cette procédure s’appelle addition et prend 02
paramètres x et y qui sont des variables de type réel.
Lors de l’appel d’une procédure, les paramètres prennent le nom d’arguments. Un certains
nombre de règles doivent être respectés :
Le nombre d’arguments doit être le même que celui des paramètres.
Les arguments doivent apparaître dans le même ordre que celui des paramètres
qu’ils représentent.
Les arguments doivent être du même type que les paramètres qu’ils représentent.
Exple d’appel de procédure
Algorithme Toto
……………
Début
………
Addition (2,4) ;
…….
Fin
B- LES FONCTIONS
1- Définition
Une fonction est un sous algorithme similaire à la procédure mais qui calcule une valeur d’un
type donné.
Cette valeur sera retournée à l’algorithme appelant à travers le nom de la fonction. Le nom de
la fonction est donc un paramètre résultat.
La fonction diffère de la procédure par la valeur qu’elle retourne et son type de retour. De
même que la procédure, la fonction possède des paramètres. Sa structure générale est la même
que celle de la procédure. La déclaration d’une fonction se fait de la manière suivante :
Fonction nom_de_la_fonction (liste des paramètres) : type de retour
Le type de retour est choisi parmi les types de base ou construit.
Exple Fonction Addition (x : réel, y : réel) : Réel
Cette fonction fait l’addition de deux nombres réels et le résultat retourné(type de retour) est
un réel.
2- Appel
Il se fait comme celui de la procédure à la seule différence que le nom de la fonction peut
apparaître à droite d’une affectation.
Exple d’appel de fonction
Algorithme Toto
……………
Variable s : réel ;
Début
………
S Addition (2,4) /* cette fonction additionne 2 et 4
et met le résultat dans s*/
…….
Fin
C-PORTEE DES VARIABLES
Selon l’endroit où on déclare la variable, celle-ci pourra être accessible (visible) partout
dans l’algorithme ou seulement dans une partie de celle – ci (à l’intérieur de la fonction
uniquement). On parle de la portée (ou visibilité) de la variable.
On distingue 02 types de variables : les variables locales et les variables globales.
i) Les variables locales
Ce sont des variables déclarées généralement dans une procédure ou fonction et qui n’est
visible que dans cette procédure ou fonction.
ii) Les variables globales
Ce sont des variables déclarées généralement en dehors de toute fonction ou procédure, ou au
début du fichier principal et sont visibles pour toutes les fonctions de l’algorithme.
VII- LES TABLEAUX
D- LES TABLEAUX
E- Présentation d’un tableau
Un tableau est une variable pouvant contenir plusieurs données indépendantes de même
nature et indexées par un numéro appelé Indice. Un tableau est caractérisé premièrement par
son nom puis par son Indice.
L’indice dans un tableau permet d’indiquer la position d’une valeur au sein dudit tableau. La
déclaration d’un tableau se fait comme suit :
Variable nom_du_tableau : Tableau [indice minimale...Indice maximale] type des
données.
Un tableau se présentement comme suit :
Indices 0 1 2 …. ….
Données Valeur1 Valeur2 Valeur3 …. …..
Comme pour toute autre variable, on peut utiliser les instructions de lecture, d’écriture ou
d’affectation dans une case particulière du tableau.
Exple Var Tab : Tableau [1…10] d’entiers et se présente comme suit :
1 2 3 4 5 6 7 8 9 10
50 10 15 34 0 17 8 4 2 7
Tab
i) Lecture
Lire (Tab[i])
ii) Ecriture
Ecrire (Tab[i])
iii) Affectation
Tab[i] valeur