Académique Documents
Professionnel Documents
Culture Documents
L’ALGORITHME
1
INTRODUCTION
L’écriture d’un programme informatique est une tâche exigeante dans sa rigueur. Les ordinateurs exigent
perfection et précision dans les instructions qui leur sont données car ils ne font que ce qu’on leur demande
de faire. Il ne viendrait à l’idée de personne de rédiger une dissertation sans au préalable construire un plan.
Des idées mêmes bonnes ne suffissent pas à faire une bonne rédaction, une structure est nécessaire à leur
cohésion. Il en est de même en informatique, faute de méthodes nombres de programmes ne fonctionnent
jamais ou le font très mal. Apprendre à programmer consistes plus à acquérir une démarche d’esprit, une
méthodologie, qu’à connaître les tours et détours d’un langage de programmation. Connaître un langage de
programmation n’est pas savoir programmer. Programmer, c’est définir précisément le problème à
résoudre, décrire peu à peu une solution et après seulement l’exprimer dans un langage de programmation.
Dans cette démarche l’activité la plus créative n’est pas le codage mais l’analyse du problème.
L’algorithmique doit être perçu comme un outil favorisant la réflexion, l’analyse d’un problème tout en
gommant les difficultés inhérentes aux langages de programmation.
2
CHAP 1 : NOTIONS DE BASES
1. Définitions
- Un algorithme est une suite d’opérations élémentaires permettant d’obtenir le résultat final
déterminé à un problème.
- Un algorithme est un pseudo-langage utilisé comme interface entre les langages d’humain et les
langages de machine.
2. Syntaxe générale
Var
Zone de déclaration
<Déclarations d’objets (Variables et autres) >
Debut
<Instruction 1
Instruction 2
…………………. Corps
Instruction n>
Fin
NB :
Nom_de_l’algorithme : C’est un identifiant symbolique que le programmeur donne à chacun de ses
algorithmes.
Ex : Algo somme
pour un algorithme calculant la somme de2 nombres
3. Les variables
Une variable est une structure de données utilisée pour stocker des données en mémoire.
La déclaration des variables correspond à la réservation en mémoire d’un espace pour toutes
les données utilisées dans notre programme. La syntaxe est la suivante :
Nom_de_la_variable : Type_de_la_variable
Type_de_la_variable, c’est le type de données d’une variable. Les types couramment utilisés
sont :
Var
op1 : Entier Var
op2 : Entier
Res : Entier op1, op2, Res : Entier
NB :
Quand plusieurs variables sont du même type, on peut faire la déclaration sur une même ligne.
Les constantes
Une constante est un objet dont la valeur (le contenu) ne change pas au cours du traitement, et donc son
Contenu reste identique durant tout le programme ; d’où le terme << constante>>.
Syntaxe : const nom_constante valeur
Exemple : const x 25
Val 3.5
Cat ‘c’
4. Les instructions
L’affectation
Elle est utilisée pour renseigner un espace mémoire préalablement réservé. Il s’agit d’affecter un contenu,
une valeur à une variable sans passer par le clavier.
Ex :
op14 (opérante 1 reçoit 4)
op25 (opérante2 reçoit 5)
Resop1 + op2 (Résultat reçoit « opérante1 + opérante2 »)
Opérateurs arithmétiques
Une instruction peut comporter des opérateurs arithmétiques
Addition +
Soustraction -
4
Multiplication *
Division /
Opérateurs relationnels
égal =
Supérieur >
Inférieur <
Différent <>
Opérateurs logiques
Un operateur logique est un operateur qui agit sur les variables de type booléen et le résultat est celui de la
table de vérité
ET OU(OU inclusif)
P Q P ET Q P Q P OU Q
V V V V V V
F V F F V V
V F F V F V
F F F F F F
P Q P OU Q
NON
V V F P NON P
F V V V F
V F V F V
5
F F F
Entrées et Les Sorties
Entrées
Pour entrer une valeur au clavier, on utilise l’instruction SAISIR. La syntaxe est la suivante
SAISIR(Nom_de_la_variable)
Exemple
SAISIR (op1)
SAISIR (op1, op2)
SAISIR (op2)
Sorties
Pour afficher quelque chose à l’écran on utilise l’instruction : AFFICHER. La syntaxe est la suivante :
Problème : Ecrire un algorithme qui calcule et affiche la somme de 2 entiers saisis au clavier par l’utilisateur
Op1 Entier
Op2 Entier
7
Etape4 : Ecrire l’algorithme
Algo Somme
Var
op1, op2, Res : Entier
Début
Fin
3 4 5 9
4 4 5 9 La somme est : 9
8
CHAP 2 : LES STRUCTURES DE BASES D’UN ALGORITHME
Les actions d’un algorithme s’articulent à l’aide de structures de base. Les structures de base sont :
La structure séquentielle (ensemble d’opérations à la suite les unes des autres) : C’est ce que nous
avons vu jusqu’à présent.
La structure conditionnelle (ensemble d’opérations soumises à une condition)
La structure répétitive (ensemble d’opérations répétées un nombre fini de fois)
Forme simple
Instruction(s)
FSI
Exemple :
Ecrire un algo qui permet de dire si un nombre réel saisi au clavier est négatif ou positif :
Algo positif_negatif
Var
nbre : Réel
Début
SAISIR (nbre)
FSI
FSI
FIN
9
Forme complexe
Instruction (s)
SINON
Instruction(s)
FSI
Algo positif_negatif
Var
nbre : Réel
Début
SAISIR (nbre)
AFFICHER (“Positif”)
SINON
AFFICHER(“Négatif”)
FSI
FIN
1
0
Forme imbriquée
Instruction(s)
SINON
Instruction(s)
FSI]
SINON
Instructions
SINON
Instructions
FSI]
FSI
Supposons que notre algo doive afficher aussi « nul » au cas où l’utilisateur saisi 0.
Algo positif_negatif
…………………………
Début
1 ……………………………………………
SI (nbre > 0) Alors
AFFICHER (“Positif”)
2 SINON
SI (nbre = 0)
3 AFFICHER(“Nul”)
SINON
1
2 3
AFFICHER(“Négatif”)
FSI
FSI 10
FIN
La structure de choix
Ecrire un algo qui affiche un message correspondant pour chaque valeur saisie.
Nombre Message
1 Minime
2 Cadet
3 Junior
4 Senior
Algo choix
Var
Choix : Entier
Début
AFFICHER (“Minime”)
FSI
SI (choix = 2)
AFFICHER (“Cadet”)
FSI
SI (choix = 3)
AFFICHER (“Junior”)
FSI
SI (choix = 4)
AFFICHER (“Senior”)
FSI
FSI
FIN
11
Remarque :
Lorsque le nombre de choix alternatif est plus grand que 3 et que la condition porte sur des nombres
entiers ou des caractères, les structures alternatives peuvent être avantageusement remplacées par la
structure de choix
Syntaxe 1 Syntaxe 2
FSELON FSELON
NB : Les cas non prévus ne sont pas pris en Compte, Notre algorithme devient alors :
Algo choix
Var
choix : Entier
Début
SAISIR (choix)
FSELON
FIN
12
2. Les structures répétitives
Un programme a presque toujours pour rôle de répéter la même action un certain nombre de fois. Pour ce
faire on utilise les structures répétitives, ou structures itératives ou encore boucles.
Instruction1
Instruction 2
………………….
FINTQE
Application
Ecrire un algorithme permettant d’afficher les 10 premiers multiples d’un entier saisi au clavier.
Analyse mathématique
Le nombre saisi au clavier
10 * 1 = 10
10 * 2 = 20
On compte de 1 à 10
…………
10 *10 = 100
On calcule le résultat à chaque tour
Objectifs
Besoins
Nbre Entier
Algo dix_premiers_multiples
13
Var
Nbre, Cpt, Res : Entier
Début
SAISIR (Nbre)
Cpt 1
Cpt Cpt + 1
FINTQE
FIN
Remarque :
La boucle TANTQUE ne s’exécute pas lorsque la condition d’entrée ne satisfait pas les conditions
d’itération
En l’absence de conditions de sortie, la boucle TANTQUE devient une boucle infinie.
La boucle TANTQUE peut ne jamais s’exécuter.
Condition d’entrée
REPETER
Instruction1
Condition de sortie
………………….
14
Application
Notre algorithme précédent devient :
Début
……….
Cpt 1
REPETER
CptCpt+1
FIN
Remarque :
La boucle REPETER s’exécute au moins une fois
NB :
Les boucles TANTQUE et REPETER sont utilisées lorsqu’on ne connait pas le nombre d’itération à effectuer
La boucle : POUR ............. FAIRE
Instruction(s)
FPOUR
Application
Début
……….
FPOUR
Fin
15
CHAP 3 : LES TABLEAUX
Les variables que nous avons utilisées jusqu’ici étaient ce que l’on nomme des variables scalaires(ou
simples) : à un instant donné, une variable de ce type contenait une seule valeur. La notion de structures de
données nous permet de manipuler des variables plus élaborées permettant de donner un nom, non plus à
une seule valeur, mais à un ensemble de valeurs. La structure de données la plus répandue est le TABLEAU.
Definition
Un tableau unidimensionnel est une variable complexe (structurée) formé par un ensemble de variables de
même type.
Ex : Notes ……………….
Déclaration
Syntaxe
Ex :
Notes 3 12 14 20 16 10 2 5 17 3
1 2 3 4 5 6 7 8 9 10
Indice du composant 1
TABLEAU Notes[10] : Réel
i : Entier
Notes [3] 14
Notes [10] 3
16
Saisie des composants d’un tableau à une dimension
Syntaxe
POUR i 1 à 10 FAIRE
SAISIR(Notes[i])
FPOUR
Syntaxe
POUR i 1 à 10 FAIRE
AFFICHER (Notes[i])
FPOUR
Application
Ecrire un programme qui permet de saisir 20 notes dans un tableau et de les afficher.
Résolution
Algo les_notes
Var
i : Entier
Début
POUR i 1 à 20 FAIRE
SAISIR (Notes[i])
FPOUR
AFFICHER (Notes[i])
FPOUR
Fin
17
La recherche dans un tableau
Dans nos algorithmes de recherche dans un tableau nous allons utiliser la technique de flag (drapeau). Ce
drapeau qui va rester baisé aussi longtemps que l’évènement attendu ne se produit pas. Et aussitôt que
cet évènement a lieu, le petit drapeau se lève (la variable booléenne change de valeur). Ainsi, la valeur
final du drapeau permet au programmeur de savoir s l’évènement a eu lieu ou non.
La recherche séquentielle
Ecrire un algo qui verifie si un entier saisi au clavier est composant d’un tableau donnée de 5 composants
entiers. Si la valeur fait partir du tableau, on indiquera également sa position.
Objectifs
Besoins
T[5] Entier
i Entier
Val Entier
Ecriture de l’algorithme
Algo recherche_sequentielle
Var
18
Début
1
AFFICHER (“Entrer 5 entiers différents”)
POUR i 1 à 5 FAIRE
SAISIR ( T[i] )
FPOUR
SAISIR(val)
Drapeau 0
1 Pos-1
POUR i 1 à 5 FAIRE
Drapeau 1
Pos i
FSI
FPOUR
SI ( drapeau = 1 ) ALORS
SINON
FSI
Fin
19
Les algorithmes de tri
Admettons que le but de notre exercice soit de trier un tableau de 10 éléments dans l’ordre décroissant. La
technique du tri par sélection est la suivante : on met en bonne position l’élément numéro 1 c'est-à-dire le
plus grand. Puis on met en bonne position l’élément suivant.Et ainsi de suite jusqu’au dernier.
Ex :
19 -4 16 0 12 1 27 3 4 18
27 -4 16 0 12 1 19 3 4 18
27 19 16 0 12 1 -4 3 4 18
27 19 18 0 12 1 -4 3 4 16
27 19 18 16 12 1 -4 3 4 0
27 19 18 16 12 4 -4 3 1 0
27 19 18 16 12 4 3 -4 1 0
27 19 18 16 12 4 3 1 -4 0
27 19 18 16 12 4 3 1 0 -4
20
Algo Tri_selection
Var
T[10] : Entier
Début
POUR i 1 à 10 FAIRE
SAISIR (T[i])
FPOUR
POUR i 1 à 9 FAIRE
Max i
max j
FSI
FPOUR
temp T[max]
T[m] T[j]
T[j] temp
FPOUR
POUR i 1 à 10 FAIRE
AFFICHER(T[i])
FPOUR
Fin
21
2. Les tableaux à 2 dimensions
Définition
Un tableau à 2 dimensions est interpréter comme un tableau à une dimension de L composants dont chaque
composant correspond lui-même à un tableau à une dimension de C composants. On appelle L le nombre de
lignes et C le nombre de colonnes du tableau. Un tableau à 2 dimension contient donc L*C composants.
L lignes
C colonnes
Déclaration
Ex :
i, j : Entier
POUR i 1 à 5 FAIRE
POUR j 1 à 3
SAISIR(A[i,j])
FPOUR
FPOUR
22
POUR i 1 à 5 FAIRE
POUR j 1 à 3 FAIRE
AFFICHER (A[i,j])
FPOUR
FPOUR
23