Vous êtes sur la page 1sur 23

L’ESSENTIEL DE

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

Algo <Nom_de_l’algorithme > Entête

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

 Nom_de_la_variable est un identifiant symbolique utilisé par le programmeur pour désigner


chaque variable dans son programme.

Ex : pour une variable exprimant par exemple :


 Le résultat Res
 L’opérant 1 op1
3
 L’opérant 2 op2

 Type_de_la_variable, c’est le type de données d’une variable. Les types couramment utilisés
sont :

 Types simples : Entier, Réel, Caractère, Booléen


 Types complexes : Chaîne de caractères, Tableau, Enregistrement,…
NB :
Le choix des noms de variables est soumis à quelques règles qui varient selon le langage, mais en général :
Un nom doit commencer par une lettre alphabétique
Exemple valide : A1 Exemple invalide : 1A
Doit être constitué uniquement de lettre, de chiffre et soulignement
(Eviter les caractères de ponctuation et les espaces)
Valides : var2019_2020, var_2021 invalides : var 2019, var-2019, var;2019

Exemple de déclaration de variables :

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 :
op14 (opérante 1 reçoit 4)
op25 (opérante2 reçoit 5)
Resop1 + 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 /

Quotient Div (division entière, ex : 7 Div 2 = 3)

Reste Mod (ex : 7 Mod 2 = 1)

 Opérateurs relationnels

égal =

Supérieur >

Supérieur ou égal >=

Inférieur <

Inferieur ou égal <=

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

XOU (OU exclusif)

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 :

 AFFICHER (“message à afficher ”)


 AFFICHER(Nom_de_la_variable)
 AFFICHER (“message à afficher ”, Nom_de_la_variable)
Exemple :
AFFICHER (“Entrez deux nombres”)
AFFICHER (”La somme est : ”, Res)

5. Démarche de résolution d’un problème

Problème : Ecrire un algorithme qui calcule et affiche la somme de 2 entiers saisis au clavier par l’utilisateur

 Etape 1 : L’Analyse mathématique


Faire une représentation mathématique de la solution si possible
Résultat = operant1 + opreant2

 Etape 2 : Les objectifs


Décrire le ou les besoins à atteindre
 Saisir 2 entiers au clavier
 Calculer la somme des 2 entiers
 Afficher le résultat

 Etape3 : Les besoins


Dresser la liste des besoins (données/variables/ objets que le programmes va utiliser)

Variables Type Règle de calcul

Op1 Entier

Op2 Entier

Res Entier Resop1+op2

7
 Etape4 : Ecrire l’algorithme

Algo Somme
Var
op1, op2, Res : Entier
Début

AFFICHER (“Entrez 2 entiers SVP !”)

SAISIR (op1, op2)

Res  op1 + op2

AFFICHER (“La somme est : ”, Res)

Fin

 Etape 5 : Faire la trace


Cette action consiste à exécuter le programme à la main. Il s’agit de simuler et prévoir à la main le
comportement de la machine.

N° Op1 Op2 Res Ecran

1 // // // Entrez 2 entiers SVP !

2 4 5 4 (OK : Touche Entrer du clavier) 5 (OK)

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)

1. Les structures conditionnelles


 La structure alternative
Les structures alternatives traduisent les situations dans lesquelles l’exécution d’une ou plusieurs
instructions est conditionnée. Nous avons 3 formes de structures alternatives.

 Forme simple

SI (Expression logique est V) Alors

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

AFFICHER (“Entrer un nombre non nul SVP !”)

SAISIR (nbre)

SI (nbre > 0) Alors


1
AFFICHER (“Positif”)

FSI

SI (nbre < 0) Alors


1
AFFICHER (“Négatif”)

FSI

FIN

9
 Forme complexe

Elle est utilisée lorsqu’on a exactement 2 alternatives complémentaires.

SI (Expression logique est V) Alors

Instruction (s)

SINON

Instruction(s)

FSI

Notre algorithme précédent devient :

Algo positif_negatif
Var
nbre : Réel
Début

AFFICHER (“Entrer un nombre non nul SVP !”)

SAISIR (nbre)

SI (nbre > 0) Alors

AFFICHER (“Positif”)

SINON

AFFICHER(“Négatif”)

FSI

FIN

1
0
 Forme imbriquée

Elle est utilisée lorsqu’on a plus de 2 alternatives.

SI (Expression logique 1 est V) Alors

[SI (Expression logique 2 V) Alors

Instruction(s)

SINON

Instruction(s)

FSI]

SINON

[SI (Expression logique 3 V) Alors

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

Autres Choix non prévu

Algo choix
Var
Choix : Entier
Début

AFFICHER (“Faire un choix entre 1 et 4 SVP !”)


SAISIR (choix)
SI (choix = 1)

AFFICHER (“Minime”)

FSI

SI (choix = 2)

AFFICHER (“Cadet”)

FSI

SI (choix = 3)

AFFICHER (“Junior”)

FSI

SI (choix = 4)

AFFICHER (“Senior”)

FSI

SI (choix < 1 OU choix > 4)

AFFICHER (“Choix non prévu”)

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

SELON (choix) FAIRE SELON (choix) FAIRE

Cas choix 1 : Instruction(s) Cas choix 1 : Instruction(s)

Cas choix 2 : Instruction(s) ………………………..

…………………………… Cas choix n : Instruction(s)

Cas choix n : Instruction(s) Cas SINON : Instruction(s)

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

AFFICHER (“Faire un choix entre 1 et 4 SVP !”)

SAISIR (choix)

SELON (choix) FAIRE

Cas 1 : AFFICHER (“Minime”)

Cas 1 : AFFICHER (“Cadet”)

Cas 1 : AFFICHER (“Junior”)

Cas 1 : AFFICHER (“Senior”)

Cas SINON AFFICHER (“Choix non prévu”)

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.

 La boucle : TANT QUE ............ FAIRE

condition d’entrée Conditions d’exécution des itérations

TANT QUE (Condition est vraie) FAIRE

Instruction1

Instruction 2

………………….

Instruction n  condition de sortie

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

 Saisir un entier au clavier

 Afficher ses 10 premiers multiples

Besoins

Variables Type Règle de calcul

Nbre Entier

Cpt Entier Cpt 1

Res Entier ResNbre * Cpt

Algo dix_premiers_multiples

13
Var
Nbre, Cpt, Res : Entier
Début

AFFICHER (“Entre le nombre : ”)

SAISIR (Nbre)

Cpt  1

TANT QUE (Cpt <= 10) FAIRE

Res Nbre * Cpt

AFFICHER (Nbre,“*”,Cpt,“=”, Res)

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.

 La boucle : REPETER ..........JQA (Condition soit fausse)

Condition d’entrée

REPETER

Instruction1
Condition de sortie
………………….

Instruction n Condition d’itérations

JQA (Condition soit fausse)

14
Application
Notre algorithme précédent devient :
Début

……….

Cpt  1

REPETER

Res Nbre * Cpt

AFFICHER (Nbre,“*”,Cpt,“=”, Res)

CptCpt+1

JQA (Cpt > 10)

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

POUR compteurValeur_début à Valeur_fin PAS DE k FAIRE (k ε Z)

Instruction(s)

FPOUR

Application

Début

……….

POUR Cpt1 à 10 FAIRE

Res Nbre * Cpt

AFFICHER (Nbre,“*”,Cpt,“=”, Res)

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.

1. Les tableaux à une dimension ou vecteur

 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

TABLEAU Nom_du_tableau [nombre de composants] : Type_des_composants

Ex : TABLEAU Notes [10] : Réel

 Accès aux composants d’un tableau

Dans un tableau à une dimention un composant est répéré par un indice

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

Notes[i] représente la composante d’indice i .

16
 Saisie des composants d’un tableau à une dimension

Syntaxe

POUR i 1 à 10 FAIRE

SAISIR(Notes[i])

FPOUR

 Afficher les composants d’un tableau à une dimension

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

TABLEAU Notes [20] : Réel

i : Entier

Début

AFFICHER (“Entrez les 20 notes”)

POUR i 1 à 20 FAIRE

SAISIR (Notes[i])

FPOUR

AFFICHER (“Voici les composants du tableau dans l’ordre”)

POUR i1 à 20 FAIRE

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

 Saisir les 5 composant du tableau

 Saisir la valeur à rechercher

 Verifier si le valeur fait partir du tableau. Si oui, indiquer sa position.

Besoins

Variables Type Règle de calcul

T[5] Entier

i Entier

Val Entier

Pos Entier Posi (si la valeur existe, la


position égal à la valeur actuelle
du compteur)

Drapeau Drapeau Drapeau0 (le drapeau est baisé


au départ)

Ecriture de l’algorithme

Algo recherche_sequentielle

Var

TABLEAU T[5] : Entier

i , val , pos , drapeau : Entier

18
Début
1
AFFICHER (“Entrer 5 entiers différents”)

POUR i 1 à 5 FAIRE

SAISIR ( T[i] )

FPOUR

AFFICHER (“Entrer la valeur à rechercher”)

SAISIR(val)

Drapeau 0
1 Pos-1

POUR i  1 à 5 FAIRE

SI ( T[i] = val ) ALORS

Drapeau  1

Pos  i

FSI

FPOUR

SI ( drapeau = 1 ) ALORS

AFFICHER (val,“ est à la position ”, Pos ,“du tableau”)

SINON

AFFICHER (val, “ n’est pas dans le tableau”)

FSI

Fin

19
 Les algorithmes de tri

 Tri par selection

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

i, j, max, temp : Entier

Début

AFFICHER (“Entrer 10 entiers”)

POUR i 1 à 10 FAIRE

SAISIR (T[i])

FPOUR

POUR i 1 à 9 FAIRE

Max  i

POUR j i+1 à 10 FAIRE

SI (T[j] > T[max]) ALORS

max  j

FSI

FPOUR

temp  T[max]

T[m] T[j]

T[j]  temp

FPOUR

AFFICHER (“Le tableau trié dans l’odre décroissant est : ”)

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

TABLEAU Nom_du_tableau[Nombre_de_lignes,Nombre_de_colonnes] : Type_des_composants

Ex :

TABLEAU A[10,5] : Entier

TABLEAU B[3,3] :Booléen

 Saisie des éléments d’un tableau à 2 dimensions

TABLEAU A[5,3] : Réel

i, j : Entier

POUR i 1 à 5 FAIRE

POUR j  1 à 3

SAISIR(A[i,j])

FPOUR

FPOUR

 Affichage des éléments d’un tableau à 2 dimensions

22
POUR i  1 à 5 FAIRE

POUR j  1 à 3 FAIRE

AFFICHER (A[i,j])

FPOUR

FPOUR

23

Vous aimerez peut-être aussi