Vous êtes sur la page 1sur 42

1-1-Définitions du terme « algorithme »:

Le mot algorithme signifie étymologiquement le nom d’un


mathématicien arabe du moyen âge : Al-Khawarizmi, il a été le
premier a décrire une méthode claire pour la résolution
d’équation en 825.

Cours 2 : bases d’algorithmique


1-2-Définitions de l’algorithme :

Un algorithme est une séquence finie d’instructions faite pour


être exécutée dans le but de résoudre un problème précis, nous
retiendrons qu’un algorithme est une séquence d’instructions
exécutées de façon logique mais non intelligente.

Cours 2 : bases d’algorithmique


1-4- Les avantages de l’utilisation d’algorithme :

Un algorithme sert à transmettre un savoir faire.


Il décrit clairement les étapes à suivre pour réaliser un travail.
Il permet d'expliciter clairement les idées de solution d'un
problème indépendamment d'un langage de programmation.

Cours 2 : bases d’algorithmique


2-1- Convention d’écriture :

Un algorithme doit être lisible et compréhensible par plusieurs


personnes, donc, chaque algorithme doit être composé des
Titre décrivant
éléments suivants: l’utilité de
Algorithme nom_de_algorithme l’algorithme
Variables:
Liste et type de toutes
Liste des variables utilisées dans l’algorithme. Le traitement a
les variables utilisées
effectuer par
Début par l’algorithme
l’algorithme (bloc
Instructions d’instruction)
Fin Cours 2 : bases d’algorithmique
2-2-Variables – définition:

Le premier concept nécessaire pour concevoir un algorithme est


celui de variable, une variable est l’adresse d’un emplacement
dans la mémoire ou est stockée une valeur, une variable porte
un nom, ce nom est laisse au choix du concepteur de
l’algorithme, il doit commencer par une lettre et ne pas
comporter d’espace, on se sert du nom d’une variable pour lire
sa valeur ou bien pour la modifier.
Cours 2 : bases d’algorithmique
2-2- Variables (exemples):

étudiant
Note2
ESTC
étudiant universitaire
2017Info

Cours 2 : bases d’algorithmique


2-2- Variables – les types :

Nous manipulerons les types couramment rencontrés dans les


langages de programmation :
Naturel:
Entier:
Réel:
booléen:
caractère, chaîne,…...
Cours 2 : bases d’algorithmique
2-2- Variables – les types (exemple):

Vérifiez si les opérations suivantes sont possible, quel type donne le résultat :
naturel
……………….……← naturel + naturel
entier
……………….……← entier - entier
réel
……………….……← réel * réel
réel
……………….……← naturel / entier
réel
……………….……← entier + réel
réel
………………….…← naturel / réel
chaine de caractères
……………….……← caractère + caractère
chaine de caractères
………………….…← caractère + chaine de caractères
impossible
………………….…← caractère – chaine de caractères

Cours 2 : bases d’algorithmique


2-2- Variables - les opérations :

L'affectation est une opération permettant de modifier la valeur


d’une variable, la syntaxe de l'affectation est la suivante :
nomvariable ← valeur
nomvariable est le nom de la variable dont on souhaite
modifier la valeur, valeur est la valeur que l’on veut placer dans
l’emplacement de la variable, notez bien que cette valeur doit
être de même type que la variable.
Cours 2 : bases d’algorithmique
2-2- Variables - les opérations :
On prend la valeur contenue dans la
variable A.
On prend la valeur contenue dans la
variable B.
A ← 5 (affectation)On additionne ces deux valeurs.
On met ce résultat dans la variable C.
A ← A+1 (incrémentation)
place la valeur 5 dans la variable A, si A contenait préalablement
une valeur, celle-ci est écrasée.
On peut aussi affecter à une variable la valeur d’une autre
variable : A←5
C ← A+B
Cours 2 : bases d’algorithmique
2-2- Variables - les opérations :

Operations arithmétiques:
+ , - , * , / : concernant les variables de type numériques (naturel, entier, réel,…..).
Operations de comparaisons:
<, =, >, ≤, ≥, ≠ : concerne les variables de possédant un ordre (numérique ou caractère).
Operations logiques:
Non, et, ou, ouExlusif : s’applique aux operateurs logiques (booléens).
Operations sur les caractères et les chaines de caractères:
+ : la concaténation.

Cours 2 : bases d’algorithmique


2-2- Variables - les opérations (exemple):

Quelles sont les valeurs des variables après l’exécution des


instructions suivantes ? instruction A B C D
Début ni ni ni ni
A←1
A←1 1 ni ni ni
B←2 Pour exécuter manuellement les B←2 1 2 ni ni
C←3 instructions, on construit un tableau C←3 1 2 3 ni

D ←A nous montrant les valeurs des D ←A 1 2 3 1

A ← C+1 variables au fil des exécutions : A ← C+1 4 2 3 1


B ← D+C 4 4 3 1
B ← D+C
C ← D+1 4 4 2 1
C ← D+1

Cours 2 : bases d’algorithmique


2-2- Variables – booléens :

La table de vérité des fonctions logiques :

Non Et Ou ouEx

Cours 2 : bases d’algorithmique


2-2- Variables – booléens :
Tout comme en arithmétique les
opérateurs booléens ont des priorités, la
Rappels sur la logique booléenne : priorité des opérateurs est:
Valeurs possibles :Vrai ou Faux.
( ) > non > et > ouEx > ou
Encas d’égalité de la priorité, l’évaluation
Associativité des opérateurs et et ou : a et (b et c) = (a et b) et c s’effectue de gauche a droite.
Commutativité des opérateurs et et ou : a et b = b et a
a ou b = b ou a
Distributivité des opérateurs et et ou : a ou (b et c) = (a ou b) et (a ou c)
a et (b ou c) = (a et b) ou (a et c)
Loi de Morgan : non (a ou b) = non a et non b
non (a et b) = non a ou non b

Cours 2 : bases d’algorithmique


2-3- Lisibilité :

Algorithme Démonstration
variables:
A, B, C : numériques. La lisibilité des algorithmes est un critère de qualité important,
t : chaine de caractères.
un algorithme correct mais indéchiffrable est aussi efficace
Début
qu’un algorithme faux, donc c’est un algorithme faux, vous
devrez par conséquent soigner particulièrement vos
A←1
algorithmes, ils doivent être faciles a lire, et rédigés de sorte
B ← A+1
qu’un lecteur soit non seulement capable de l’exécuter, mais
C ←A
aussi capable de le comprendre rapidement.
A ← A+1
t ← ‘exemple1’ + ‘exemple2’
Fin
Cours 2 : bases d’algorithmique
3-1- Les entrées/sorties :

De nombreux algorithmes ont pour but de communiquer avec


un utilisateur, cela se fait dans les deux sens, les sorties sont des
envois de messages a l’utilisateur, les entrées sont des
informations fournies par l’utilisateur. >>Donne moi les données
que vous voulez traiter?

>> Données saisies


Affichage des résultats
>> Voila le résultat:

Utilisateur computer

Cours 2 : bases d’algorithmique


3-1- Les entrées/sorties :

Lecture :
Il est possible de demander à un utilisateur du programme de saisir une
valeur, la syntaxe de la saisie est la suivante : Lire(nomvariable)
La saisie interrompt le programme jusqu’a ce que l’utilisateur ait saisi une
valeur au clavier, une fois cela fait, la valeur saisie est placée dans la variable
nomvariable, il est possible de saisir plusieurs variables a la suite :
lire(A,B,C) place trois valeurs saisies par l’utilisateur dans les variables A, B
et C.
Cours 2 : bases d’algorithmique
3-1- Les entrées/sorties :

Ecriture :
Pour afficher un message a destination de l’utilisateur, on se sert de la
commande: écrire(message)
Cette instruction affiche le message a l’utilisateur, par exemple
écrire(‘bonjour’) affiche bonjour sur l’écran, (les guillemets sont très
importantes), il est aussi possible d'afficher le contenu d’une variable :
écrire(A) affiche l’écran le contenu de la variable A.

Cours 2 : bases d’algorithmique


3-1- Les entrées/sorties :

Ecriture :
On peut mélanger les messages et les valeurs des variables, par exemple,
les instructions: écrire(‘la valeur de A est :’)
écrire(A)
ont le même effet que l’instruction
écrire(‘la valeur de A est :’,A)
Lorsque l’on combine messages et variables dans les instructions
d'affichage, on les sépareCours
par des virgules.
2 : bases d’algorithmique
3-1- Les entrées/sorties (exemple) :

Cet algorithme demande a l’utilisateur de saisir un entier, ensuite il affiche la valeur saisie puis la même valeur incrémentée de 1.
Algorithme Affichage_incrément
>>Saisissez une valeur numérique
variables :
>> 12
a: entier
>> vous avez saisi la valeur : 12
Début
>> a+1 = 13
écrire(‘Saisissez une valeur numérique’)
lire(a) computer
écrire(’Vous avez saisi la valeur:’, a)
écrire(‘ a+1 =’,a+1)
Fin Cours 2 : bases d’algorithmique
3-2- Traitements conditionnels :

On appelle traitement conditionnel un bloc d’instructions dont l’exécution est soumise à la vérification d’un
test.
si ... alors Si la variable A, au moment du test, a
une valeur nulle, alors l’instruction
La syntaxe d’un traitement conditionnel est la suivante :
écrire(‘La valeur de la variable A est
Si condition alors nulle’) est exécutée, sinon, elle est
Instructions ignorée.
fin si
Les instructions ne sont exécutées que si condition est vérifiée, par exemple:
Si A = 0 alors
écrire(‘la valeur de la variable A est nulle’)
fin si Cours 2 : bases d’algorithmique
3-2- Traitements conditionnels :

Condition:
Une condition est une comparaison, son résultat est de type booléen, et prend donc deux
valeurs: vrai ou faux.
L’évaluation de la condition s’effectue de la même manière que l’évaluation d’une
expression booléenne, exemple: On peu ajouter une autre condition:
Lire(moyenne) Lire(moyenne, sanction_disciplinaire)
Si moyenne ≥ 10 et non sanction_disciplinaire
Si moyenne ≥ 10 alors alors
écrire(‘étudiant admis’) écrire(‘étudiant admis’)
finsi
finsi
Cours 2 : bases d’algorithmique
3-2- Traitements conditionnels :

Conditions
Une condition peut être tout type de test, par exemple:
A=2 La condition A= 2 est vérifiée si la valeur contenue dans A est 2.
A=B A= B est vérifiée si les valeurs contenues dans A et dans B sont les
A = B et B ≠ 7 mêmes.
B ≠ 7 est vérifiée si B contient une valeur différente de 7.
2 >7 2> 7 est vérifiée si 2 est supérieur a 7, donc jamais, cette
Not A et B condition est donc fausse et ne dépend pas des valeurs des
variables.

Cours 2 : bases d’algorithmique


3-2- Traitements conditionnels :

Si étendue
Le traitement conditionnel peut être étendu de la sorte :
si condition alors
si condition est vérifiée, les instructions
instructions
sont exécutées, dans le cas contraire, donc
sinon si condition n’est pas vérifiée, alors ce sont
autres instructions les autres instructions qui sont exécutées.
finsi

Cours 2 : bases d’algorithmique


3-2- Traitements conditionnels (exemple):

Dans l’exemple ci-dessus, la condition a= b est évaluée, si a ce


Algorithme Valeurs_Distinctes_variables moment-la les variables a et b contiennent la même valeur,
a,b: entiers. alors la condition a= b sera vérifiée, dans ce cas, l’instruction
écrire(‘Vous avez saisi deux fois la même valeur, a savoir’, a)
Début sera exécutée. Si la condition a= b n’est pas vérifiée, donc si
écrire(‘Saisissez deux valeurs numériques’) les variables a et b ne contiennent pas la même valeur au
lire(a,b) moment de l’évaluation de la condition, c’est alors
l’instruction écrire(‘Vous avez saisi deux valeurs différentes,
si a = b alors ‘,a,‘et ‘, b) qui sera exécutée.
écrire(‘Vous avez saisi deux fois la même valeur, a savoir’, a)
Sinon
écrire(‘Vous avez saisi deux valeurs différentes’, a,’et’,b)
finsi
Fin
Cours 2 : bases d’algorithmique
3-2- Traitements conditionnels :

Imbrication
Il est possible d’imbriquer les si a volonté :
si a < 0 alors Si par exemple a et b sont tous deux positifs,
si b < 0 alors alors aucun des deux tests ne sera vérifiées, et
écrire(‘a et b sont négatifs’) c’est donc le sinon du sinon qui sera exécuté,
sinon a savoir écrire(‘a et b sont positifs’).
écrire(‘a est négatif, b est positif ‘)
finsi
sinon
si b < 0 alors
écrire('b est négatif, a est positif')
sinon
écrire('a et b sont positifs')
finsi
Cours 2 : bases d’algorithmique
finsi
3-2- Traitements conditionnels (exemple) :

Algorithme Signe_du_produit
variables :
a,b: entiers L’instruction écrire(‘positif ou nul’) sera
Début exécutée si au moins une des deux conditions
écrire(‘Saisissez deux valeurs numériques‘)
suivantes est vérifiée :
a≤0 et b≤0
lire(a, b)
a≥0 et b≥0
écrire(‘Le produit de‘, a,‘par’, b,‘est :’)
si (a ≤ 0 et b ≤ 0) ou (a ≥ 0 et b ≥ 0) alors
écrire(‘positif ou nul’)
sinon
écrire(‘négatif’)
finsi
Cours 2 : bases d’algorithmique
fin
3-2- Traitements conditionnels :

Suivant cas
Lorsque qu'on souhaite conditionner l’exécution de plusieurs ensembles d’instructions par la valeur que prend
une variable, plutôt que de faire des imbrications de si a outrance, on préférera la forme suivante:
Suivant variable faire
cas valeur1 instructions1 suivant la valeur que prend la variable, le bloc
cas valeur2 instructions2 d’instructions a exécuter est sélectionnée, par
exemple, si la valeur de variable est valeur1, alors le
... bloc instructions1 est exécutée. Le bloc autres cas est
cas valeur n instructions n exécuté si la valeur de variable ne correspond a aucune
autres cas instructions des valeurs énumérées.
finsuivant
Cours 2 : bases d’algorithmique
3-2- Traitements conditionnels (exemple) :

Ecrivons un algorithme demandant a l’utilisateur le jour de la semaine, affichons ensuite


le jour correspondant au lendemain.

Cours 2 : bases d’algorithmique


Algorithme Lendemain
variables :
Erreur: booléen
jour, lendemain : chaine de caractères
Début
écrire(‘Saisissez un jour de la semaine’)
lire( jour)

3-2- Traitements conditionnels (exemple) :


erreur ← 0
suivant jour faire
cas ‘dimanche’ lendemain ← lundi
cas ‘lundi’ lendemain ← mardi
cas ‘mardi’ lendemain ← mercredi
cas ‘mercredi’ lendemain ← jeudi
cas ‘jeudi’ lendemain ← vendredi
Vous remarquez que si on avait voulu
cas ‘vendredi’ lendemain ← samedi
écrire le même algorithme avec des
si, on utilise plusieurs imbrications.
cas ‘samedi’ lendemain ← dimanche
autres cas erreur ← 1
finsuivant
si erreur alors
écrire(‘Erreur de saisie’)
sinon
écrire(‘Le lendemain du’, jour,’est’, lendemain)
finsi
Fin
Cours 2 : bases d’algorithmique
3-3- L’algorigramme :

C’est une représentation graphique de l’algorithme, pour le construire, on utilise des symboles
normalisés, ici on présente quelques symboles utilisés dans la construction d’un algorigramme :
Symbole Désignation et rôle Symbole Désignation et rôle
Symbole de traitement Symbole auxiliaire
Symbole général Début, fin, interruption
Opération ou groupe d’opérations sur des données, Début, fin ou interruption d’un algorigramme.
instructions, pour laquelle il n’existe aucun symbole
normalisé.
Entrée-Sortie Commentaire
Mise à disposition d’une information à traiter ou Symbole utilisé pour donner des indications sur les
enregistrement d’une information traitée. opérations effectuées.
Test Les différents symboles sont reliés entre eux par des lignes de liaisons.
Exploitation de conditions variables impliquant un
choix parmi plusieurs.
Sens conventionnel des liaisons
Le sens général des lignes de liaison doit être :
 De haut en bas.
 De gauche à droite.
Cours 2 : bases d’algorithmique
3-3- L’algorigramme (exemple):
Début

écrire(‘Saisissez A et
Algorithme comparaison B:’)
Variables:
A,B : entiers. Lire(A,B)
DEBUT
écrire(‘Saisissez A et B:’)
lire(A, B) Si A > B non
alors
Si A > B alors
écrire(‘A est supérieur a B’) oui
Sinon écrire(‘A est écrire(‘B est
écrire(‘B est supérieur a A’) supérieur a B’) supérieur a A’)
fin si
FIN
Fin

Cours 2 : bases d’algorithmique


3-4- les boucles :

Comment on peut calculer la suite suivante:


1+2+3+……..+1000 ???!!
Une boucle permet d’exécuter plusieurs fois de suite le même sous bloc
d’instructions, chaque exécution du corps d’une boucle s’appelle une itération,
on va voir deux types de boucles :
Tant que
Pour
Chacune de ces boucles a ses avantages et ses inconvénients que nous verrons dans
les planches suivantes. Cours 2 : bases d’algorithmique
3-4- les boucles – tant que :

La syntaxe dune boucle tant que est la suivante:


tant que condition L’avantage de cette boucle est qu’on est pas obliger de connaitre le
nombre d’itération a l’avance.
instructions L’ inconvénient est le risque d’entrer dans une boucle infinie si on
ne gère pas bien la condition.
Fin tant que
La condition est évaluée avant chaque itération, a chaque fois quelle est
vérifiée, on exécute les instructions de la boucle, une fois que la condition
n’est plus vérifiée, l’exécution se poursuit après le fin tant que.
Cours 2 : bases d’algorithmique
3-4- les boucles – tant que (exemple):

Affichons par exemple tous les nombres de 1 à 5 dans l’ordre croissant :


Algorithme de1a5
variables : Cet algorithme initialise i a 1 et tant que la valeur de i ne dépasse pas 5, cette
i : entier valeur est affichée puis incrémentée, les instructions se trouvant dans le corps
de la boucle sont donc exécutées 5 fois de suite.
Début
La variable i s’appelle un compteur, on gère la boucle par incrémentations
i←1 successives de i et on sort de la boucle une fois que i a atteint une certaine
tant que i ≤ 5 valeur, l’initialisation du compteur est très importante, si vous n’initialisez pas
écrire (‘la valeur de i est de :’,i ) i explicitement, alors cette variable contiendra n’importe quelle valeur et
i ← i+1 votre algorithme ne se comportera pas du tout comme prévu.
fin tant que
Fin Cours 2 : bases d’algorithmique
3-4- les boucles – pour :

La syntaxe d’une boucle pour est la suivante:


pour variable de premierevaleur a dernierevaleur [par pas de pas]
L’avantage de cette boucle est qu’on est pas obliger de gérer le
instructions compteur (condition d’ arrêt).
L’ inconvénient est qu’on doit connaitre a l’avance le nombre
Fin pour d’itérations a effectuer.
La boucle pour fait varier la valeur du compteur variable entre premièrevaleur et dernièrevaleur, le pas est
optionnel et permet de préciser la variation du compteur entre chaque itération, le pas par défaut est 1 et
correspond donc a une incrémentation.
La boucle pour initialise le compteur variable a la premièrevaleur, et tant que la dernièrevaleur n’a pas été
atteinte, les instructions sont exécutées et le compteur incrémenté automatiquement.
Cours 2 : bases d’algorithmique
3-4- les boucles – pour (exemple):

On reprend l’exemple précédent :


Algorithme pour1a5
variables :
Ici on remarque que l’initialisation et l’incrémentation du compteur i se fait
i : entier
automatiquement par la boucle.
Début A chaque itération la boucle fait le test sur la valeur de i, si i ≤ 5 alors les
pour i de 1 a 5 instructions se trouvant dans le corps de la boucle sont donc exécutées.

écrire(‘la valeur de i est de :’,i )


fin pour
Fin
Cours 2 : bases d’algorithmique
4-1- le tableau d’exécution :

Pour une exécution facile et sans ambigüité d’un algorithme, on introduit


la notion de tableau d’exécution, ce tableau contiendra les valeurs de
toutes les variables utilisées dans l’algorithme ainsi que les messages
échangés entre l’utilisateur et l’algorithme à travers les instructions
d’entrées sorties. instruction Variable 1 …….. Variable i Entrée Sortie
Début ni ni ni / /
Instruction 1
Instruction 2
…….
Instruction n

Fin Cours 2 : bases d’algorithmique


4-1- le tableau d’exécution (exemple):

instruction i Entrée Sortie


On exécute l’algorithme suivant pourDébutla valeur de Nni= 4/ ? /
i←1 1 / /
Algorithme pour1aN
écrire(‘la valeur de i est de :’,i) 1 / la valeur de i est de : 1
variables : i←2 2 / /

i : entier écrire(‘la valeur de i est de :’,i) 2 / la valeur de i est de : 2


i←3 3 / /
Début
écrire(‘la valeur de i est de :’,i) 3 / la valeur de i est de : 3
pour i de 1 a N i←4 4 / /

écrire(‘la valeur de i est de :’,i) écrire(‘la valeur de i est de :’,i) 4 / la valeur de i est de : 4

i←5 5 / /
fin pour écrire(‘la valeur de i est de :’,i) 5 / la valeur de i est de : 5
Fin fin / /
Cours 2 : bases d’algorithmique
4-1- le tableau d’exécution (exemple):

On exécute l’algorithme suivant? instruction


Début
nb
ni
nbcarre
ni
Entrée
/
Sortie
/
Algorithme carre nb ← 1 1 ni / /
Variables : nbcarre ← nb * nb 1 1 / /

nb, nbcarre : entiers écrire(nb, ‘^2 = ‘, nbcarre) 1 1 / 1^2 = 1


nb ← nb + 1 2 1 / /
Debut
nbcarre ← nb * nb 2 4 / /
nb ← 1
écrire(nb, ‘^2 = ‘, nbcarre) 2 4 / 2^2 = 4
Tant que nb ≤ 3
nb ← nb + 1 3 4 / /
nbcarre ← nb * nb nbcarre ← nb * nb 3 9 / /
écrire(nb, ‘^2 = ‘, nbcarre) écrire(nb, ‘^2 = ‘, nbcarre) 3 9 / 3^2 = 9
nb ← nb + 1 nb ← nb + 1 4 9 / /
Fin / /
fin tant que Cours 2 : bases d’algorithmique
Fin
Exercices

Cours 2 : bases d’algorithmique