Notion d’Algorithmique
Algorithme
• Algorithme vient du nom du mathématicien « Al-Khawarizmi » latinisé en
Algoritmi. Née en 780 et mort vers 850 à Bagdad
• Al-Khawarizmi a vécu au 9ème siècle et était membre de l’académie des sciences
à Bagdad.
• Définition : Un algorithme est :
• une suite finie d’instructions que l’on applique à un nombre fini de données
dans un ordre précis pour arriver à un résultat.
• une suite ordonnée d’instructions qui indique la démarche à suivre pour
résoudre une série de problèmes équivalents.
Algorithme
Rôle fondamental de l'Algorithme:
• Il prend des données en entrée.
• Il exprime un traitement particulier.
• Il fournit des données en sortie.
Comment trouver un algorithme ?
Questions préliminaires à se poser avant la conception d’un algorithme :
• Quel est le résultat recherché ?
• Quelles sont les données disponibles ou les informations d’entrée ?
• Quelles sont instructions à appliquer à ces données pour aboutir au résultat attendu ?
Algorithme
• Un algorithme ne peut pas être exécuté directement par une machine :
• il est écrit dans un langage abstrait et conceptuel,
• il n’est pas exprimé sous la forme de codes binaires que le processeur peut
interpréter.
• Un algorithme doit être traduit dans un langage de programmation
• Définition : Un programme est :
• la traduction d’un algorithme dans un langage informatique particulier et
parfaitement précis.
• une série d’instructions qui réalise (implémente) un algorithme
• Un programme n’est pas directement interprété par la machine, il doit être t
raduit en langage machine. Cette traduction est faite automatiquement par un
programme appelé « COMPILATEUR » ou « INTERPRETEUR »
Processus de résolution de problèmes
Problème Analyse Algorithme Implémentation Programme Exécution Résultats
Algorithme
• L’écriture algorithmique est un travail de programmation à visée universelle.
• Un algorithme ne dépend pas du langage dans lequel il est implanté.
• Un algorithme ne dépend pas de la machine qui exécutera le programme
correspondant.
• L'algorithmique permet d’expliquer comment faire un travail sans la moindre
ambiguïté, en utilisant un langage simple composé d'instructions élémentaires.
Propriétés et Qualités d’un Algorithme
Un algorithme doit obligatoirement :
• Avoir un nombre fini d’étapes.
• Avoir un nombre fini d’opérations par étape.
• Se terminer après un nombre fini d’opérations.
• Fournir un résultat.
• Chaque opération doit être définie rigoureusement et sans ambiguïté.
• Chaque opération doit être effective (réalisable par une machine).
Algorithmique
L’algorithmique s’intéresse à l'art de construire des algorithmes et à caractériser
leurs qualités :
• Validité : Aptitude à réaliser exactement la tâche pour laquelle il a été conçu.
• Robustesse : Aptitude à se protéger des conditions anormales d’utilisation.
• Efficacité : Aptitude à utiliser de manière optimale les ressources du matériel qui
l’exécute.
• Réutilisabilité : Aptitude à être réutilisé pour résoudre des tâches équivalentes.
• Complexité : Le nombre d’instructions élémentaires à exécuter pour réaliser la
tâche. Cette notion s'intéresse à l'espace et au temps nécessaire pour que
l'algorithme atteigne le résultat escompté.
Structure générale d’un algorithme
La représentation d'un algorithme se fait
généralement en pseudo-code. Un
algorithme comporte trois parties
principales :
Algorithme Nom_algorithme L’entête de l’algorithme
• L’en-tête : Sert à donner un nom à
l’algorithme, précédé du mot Algorithme.
Constantes: déclaration des constantes La partie declaration
• La partie déclarative : On y déclare les Variables: Déclaration des variables
différents objets que l’algorithme utilise
(constantes, variables).
Début La partie traitement
• Le corps de l’algorithme : Contient les Bloc d’instructions
instructions. Il est délimité par les mots Fin
Début et Fin.
Structure générale d’un algorithme
Algorithme Nom_algorithme L’entête de l’algorithme Algorithme surface_cercle
Constantes: déclaration des constantes La partie declaration Constantes: pi ← 3,14
Variables: Déclaration des variables Variables: rayon,surface : Réel
Début La partie traitement Début
Bloc d’instructions Ecrire( " Veuillez saisir le rayon ")
Fin
Lire ( rayon)
surface ← rayon* rayon*pi
Ecrire(surface)
Fin
Variables
• Une variable est un emplacement mémoire (boîte étiquetée).
• Son contenu peut changer au cours d’un programme.
• Règle fondamentale : La variable doit être déclarée avant d’être utilisée.
Déclaration des Variables :
• Elle doit comporter le nom (identificateur) et le type.
• Syntaxe : Variable identificateur : type.
• Identificateur : Nom donné à une variable . Il doit obligatoirement commencer par une
lettre, suivie d’une suite de lettres et de chiffres, sans contenir d’espace.
• Type : L’ensemble des valeurs qu’une variable peut prendre (ex: le type logique/booléen
peut prendre Vrai ou Faux).
Variables
• Une variable est un emplacement mémoire (boîte étiquetée).
• Son contenu peut changer au cours d’un programme.
• Règle fondamentale : La variable doit être déclarée avant d’être utilisée.
Déclaration des Variables :
• Elle doit comporter le nom (identificateur) et le type:
Syntaxe : Variable identificateur : type
• Identificateur : Nom donné à une variable . Il doit obligatoirement commencer par une
lettre, suivie d’une suite de lettres et de chiffres, sans contenir d’espace.
• Type : L’ensemble des valeurs qu’une variable peut prendre
Types de Variables
Cinq types de base:
• Le type entier (Positif et négatif)
• Le type réel
• Le type booléen (vrai, faux)
• Le type chaine de caractères
• Le type caractère ( une lettre, un chiffre ou un symbole)
Types de Variables
Type Description
Entier Désigne les nombres entiers positifs et négatifs.
Réel Désigne les valeurs numériques réelles.
Logique / Booléen (BOOLEEN) Vrai ou Faux (True ou False, 1 ou 0).
Caractère (CARACTERE) Un seul caractère.
Chaîne de Caractères (CHAINE) Séquence de caractères.
Les Constantes
• Une constante correspond aussi à un emplacement mémoire.
• Sa valeur stockée ne sera jamais modifiée au cours du programme.
• Syntaxe :
Constante NOM_DE_LA_CONSTANTE = valeur
• Exemple : Constante PI = 3.14.
Affectation
• L’affectation est l’opération la plus utilisée dans un algorithme, elle permet
d’attribuer une valeur à une variable ou une constante
• Elle est symbolisée en algorithmique par ←.
Syntaxe : Variable ← valeur
• À gauche de la flèche, un nom de variable, et uniquement cela
• À la droite de la flèche on trouve soit une valeur ou une expression
• Exemples:
• pi ← 3,14
• message ← " Bonjour " NB : En informatique, une variable possède à un
• rayon ← 5 moment donné une valeur et une seule.
• reponse ← Vrai
• Choix ← " N "
Exercice 1 :
• Trouver les valeurs des variables A, B et C après exécution des
instructions suivantes pour les deux algorithms suivants :
Variables: A, B, C : Entier
Début Variables: A, B :Entier
A←6 Début
A← 5
B←4
B ←A+ 4
C←A+B A←A+1
A ←3 B ←A– 4
C←B–A Fin
Fin
Exercice 2 :
• Trouver les valeurs des variables A et B après exécution des instructions suivantes :
Variables A, B :Entier
Début
A←5
B←2
A←B
B ←A
Fin
• Est-ce que les deux dernières instructions permettent-elles d’échanger les deux
valeurs de B et A?
Exercice 3:
• Ecrire un algorithme permettant d’échanger les valeurs des variables A, B,
et C, ce quel que soit leur contenu préalable:
Solution Exercice 3
Variables A, B :Entier
Début
C←A
A← B
B←C
Fin
Les opérateurs
Opérateurs arithmétiques
Symbole Opération
Exemple:
+ Addition Variables: A, B en Entier
- Soustraction Début
A←7
* Multiplication B←3
C ← A div B
/ Division
D ← A mod B
Div Quotient de la division entière. Fin
Mod Modulo (reste de la division euclidienne).
^ Puissance.
• Utiliser les parenthèses, avec les mêmes règles qu’en mathématiques.
• La multiplication et la division ont la priorité sur l’addition et la soustraction.
• Les parenthèses ne sont ainsi utiles que pour modifier cette priorité naturelle.
Opérateurs de comparaison –Relationnels-
Symbole Signification
= Égal
<> Différent
< Inférieur
<= Inférieur ou égal
> Supérieur
>= Supérieur ou égal
Le résultat d’une opération de comparaison est de type booleen
Opérateurs de concaténation -sur les Chaînes-
• L'opérateur & permet de concaténer deux chaînes de caractères
Algorithme concatener
Variables: nom,prenom,nom_prenom : chaine
Début
nom ← " Alice "
prenom ← " Bob "
nom_prenom ← nom&prenom
Fin
Opérateurs Logiques
ET , OU , NON , OU exclusif (XOR)
X Y X OU Y
X Y X ET Y
0 0 0 X Y X XOR Y
0 0 0
0 1 1 0 0 0
0 1 0
1 0 1 0 1 1
1 0 0
1 1 1 1 0 1
1 1 1
1 1 0
X NON X
0 1
1 0
Les fonctions d’entrées – sorties
“Lecture-écriture”
• Pour assurer la communication entre l’homme et la machine, les algorithmes ont
besoin de données à traiter qui seront communiquées au programme par
l’intermédiaire du clavier, Les résultats trouvés doivent être affiché à l’écran. à
Ces deux opérations sont assurées par les 2 fonctions: Lire et Ecrire
Instruction Lire
La fonction Lire permet au programme de lire les données à partir du clavier.
• Syntaxe:
Lire (variable1,variable2,….)
➢Dès que le programme rencontre une instruction lire, l’exécution s’arrête en
attendant la saisie d’une valeur au clavier
Instruction Ecrire
• Elle permet d’afficher des informations à l'écran.
• Il est conseillé d’écrire des libellés à l’écran avant de lire une variable, pour
prévenir l’utilisateur de ce qu’il doit saisir.
Syntaxe : Ecrire (expression)
• expression : peut être une valeur, un résultat, un message, ou le contenu d'une
variable
Exercice
• Ecrire un algorithme qui demande un nombre à l’utilisateur, puis qui
calcule et affiche le carré de ce nombre.
Solution
Algorithme calcul_carre
Variables: nb,carre : Réel
Début
Ecrire( " Veuillez saisir un nombre ")
Lire ( nb)
carre ← nb* nb
Ecrire( " le carré de ", nb, " est : ", carre )
Fin
Les structures conditionnelles:
Si
• La structure conditionnelle Si permet d’exécuter certaines instructions
uniquement si une condition donnée est vraie. Elle peut éventuellement inclure
une partie Sinon pour exécuter d’autres instructions lorsque la condition est
fausse.
• Structure de base :
Si condition Alors
instructions_si_vrai
Sinon
instructions_si_faux
FinSi
• condition : expression qui peut être vraie ou fausse.
• instructions_si_vrai : exécutées si la condition est vraie.
• instructions_si_faux : exécutées si la condition est fausse.
Exemple 1
• Ecrire un algorithme qui affiche la valeur absolue d’un réel x
Solutions
Algorithme valeur_absolue Algorithme valeur_absolue
Variables: x,y : Reel Variables: x,y : Reel
Début Début
Ecrire( " Veuillez saisir un nombre") Ecrire( " Veuillez saisir un nombre")
Lire ( x) Lire ( x )
Si (x > 0) alors
y←x
y←x
Si (x<0) alors
Sinon
y←-x
y←-x
Finsi Finsi
Ecrire( " La valeur absolue de " , x , " est " , y) Ecrire( " La valeur absolue de " , x , " est" , y)
Fin Fin
Exemple 2
• Ecrire un algorithme qui affiche le max de deux réel x et y.
Solution
• Algorithme max_valeur
• Variables: x , y, max : Reel
• Début
• Ecrire( " Veuillez saisir 2 nombres")
• Lire ( x , y )
• Si (x >= y) alors
• max ← x
• Sinon
• max ← y
• Finsi
• Ecrire( " le max est " , max)
• Fin
Autre forme de SI
Si (Condition 1) alors
Si (Condition 2) alors
Bloc d’instructions A
Sinon
Bloc d’instructions B
Finsi
Sinon
Si (Condition 3) alors
Bloc d’instructions C
Finsi
Finsi
Exemple
• Ecrire un algorithme qui demande à l’utilisateur de saisir un chiffre et affiche
ensuite, si le nombre est positif, négatif ou nul
Algorithme signe
Variables: x: Réel
Solution Début
Ecrire( " Veuillez un nombre")
Lire ( x )
Si (x > 0 ) alors
Ecrire( " Positif")
Sinon
Si (x = 0 ) alors
Ecrire( " Nul")
Sinon
Ecrire( " Négatif")
Finsi
Finsi
Fin
Exercice
• Ecrire un algorithme qui affiche le max de 3 réel x , y et z
Algorithme max_valeur
Variables: x , y, z , max : Reel
Début
Solution Ecrire( " Veuillez saisir 3 nombres")
Lire ( x , y , z )
Si (x >= y) alors
Si (x >= z) alors
max ← x
Sinon
max ← z
Finsi
Sinon
Si (y >= z) alors
max ← y
Sinon
max ← z
Finsi
Finsi
Ecrire( " le max est " , max)
Fin
Structure conditionnelle Selon
• comparer une seule variable à une liste de valeurs connues à l'avance
• La variable de la structure de selon ne peut pas être de type Réel
• Syntaxe :
Selon Variable
Valeur 1 : Instruction1
Valeur 2 : Instruction2
…………………………………
…………………………………
…………………………………
Valeur n : Instruction n
Autrement : autre instruction
Finselon
Exemple
• Ecrire un algorithme qui demande à l’utilisateur de saisir un entier
compris entre 1 et 7 et affiche ensuite le jour correspondant
Solution:
Algorithme Jour_semaine
Variables: x: entier
Début
Ecrire( " Veuillez saisir un nombre compris entre 1 et 7")
Lire ( x )
Selon x
1 : Ecrire( " Lundi")
2 : Ecrire( " Mardi")
3 : Ecrire( " Mercredi")
4 : Ecrire( " Jeudi")
5 : Ecrire( " Vendredi")
6 : Ecrire( " Samedi")
7 : Ecrire( " Dimanche")
Autrement : Ecrire( " Le nombre doit etre compris entre 1 et 7")
Finselon
Fin
Organigramme
• Un organigramme est une représentation graphique de l’algorithme.
• La norme adoptée dans ce cours est : ISO5807
Symboles de l’organigramme
Organigramme de la valeur absolu