Module Informatique 2
Dr SADOUNI Salheddine
Chapitre 1
Introduction aux Algorithmes
Algorithme Définition
• Le mot « Algorithme » خوارزمest un dérivé du nom
d’un illustre savant musulman Muhammad Ibn
• Musa Al Khawarizmi qui vécut au 9ème siècle (2ème
Hidjri), sous le règne du calife abbasside Al-Mamun.
• Al Khwarizmi a exposé les méthodes de base pour
l'addition, la multiplication, la division, l'extraction de
racines carrées ainsi que le calcul des décimales de π.
• Ces méthodes sont précises, sans ambiguïté,
mécaniques, efficaces, correctes.
• Ces méthodes sont des algorithmes!
L’algorithmique est l’art de construire des algorithmes !
Les étapes de résolution d'un
problème sont
• 1. Comprendre l'énoncé du problème
• 2. Décomposer le problème en sous-problèmes plus
simple à résoudre
• 3. Associer à chaque sous problème, une
spécification :
Les données nécessaires
Les données résultantes
La démarche à suivre pour arriver au résultat en
partant d'un ensemble de données.
• 4. Elaboration d'un algorithme.
Exemple: Informatiser une application,
facturation de la consommation d'eau
• c'est faire réaliser par ordinateur, une tâche qui
était réalisée par l'Homme.
• Pour cela il faut tout d'abord, détailler
suffisamment les étapes de résolution du
problème, pour qu'elle soit exécutable par
l'homme.
• Ensuite, transférer la résolution en une suite
d'étapes élémentaire et simple à exécuter.
• Toute suite d'étapes si élémentaire et simple à
exécuter s'appelle un ALGORITHME.
Caractéristiques d’un algorithme
• L'algorithme est un moyen pour le
programmeur de présenter son approche du
problème à d'autres personnes.
• En effet, un algorithme est l'énoncé dans un
langage bien défini d'une suite d'opérations
permettant de répondre au problème. :
Un algorithme doit donc être
• Lisible: compréhensible même par un non-
informaticien
• De haut niveau: l'algorithme doit pouvoir être traduit
en n'importe quel langage de programmation,
• Précis: chaque élément de l'algorithme ne doit pas
porter à confusion,
• Concis: un algorithme ne doit pas dépasser une page.
Si c'est le cas, il faut décomposer le problème en
plusieurs sous-problèmes
• Structuré: un algorithme doit être composé de
différentes parties facilement identifiables
La Structure d’un Algorithme
• une entête où apparaissent
• le nom de l’algorithme
• les déclarations des objets manipulés
• le corps de l’algorithme qui commence par
"Début" et se termine par "Fin ".
• Entre ces deux mots clés se trouvent les
actions ordonnées à exécuter par la machine.
Structure d’un Algorithme
Algorithme Nom_de_l’algorithme ;
Variables Entête
Liste des variables ;
Début
Action 1 ;
Action 2 ;
Action 3 ; Corps
….
Action n ;
Fin.
Notes :
! Chaque mot clé est souligné.
! Une marque de terminaison (;) est utilisée après chaque action.
variable et ses caractéristiques
• Une variable est une entité qui contient une information, elle
possède :
• Un nom (d’identifiant)
• Un type qui caractérise l’ensemble des valeurs que peut prendre la
variable :
Nombre Entier
Nombre flottant (réel)
Booléen (Vrai, Faux)
Caractère (alphabétique, numérique)
Chaine de caractères (mot ou phrase)
• A un type donné, correspond un ensemble d'opérations définies
pour ce type.
Opérateur, opérande et expression
• - Un opérateur est un symbole d’opération qui
permet d’agir sur des variables ou de faire des
“calculs”
• - Une opérande est une entité (variable,
constante ou expression) utilisée par un
opérateur
• - Une expression est une combinaison
d’opérateur(s) et d’opérande(s), elle est évaluée
durant l’exécution de l’algorithme, et possède
une valeur (son interprétation) et un type.
Les opérateurs numériques
• On retrouve tout naturellement +, -, *, /
• Avec en plus pour les entiers div et mod,
div : division entière
mod: le reste division entière
• L’opérateur d’égalité =
• l’opérateur d’inégalité ≠.
• les opérateurs de comparaison <, ≤, >, ≥
Les opérateurs booléens
• Les opérateurs sont non, et, ou, ouExclusif
• Associativité, Commutativité et Distributivité des
opérateurs "et" et "ou«
• Tout comme en arithmétique les opérateurs ont
des priorités. Par exemple
• * et / sont prioritaires sur + et -
• Pour les booléens, la priorité des opérateurs est
non, et, ouExclusif et ou
• Pour clarifier on peut utiliser des parenthèses
Actions de base
• 1- Action de Lecture
• Pour transmettre les valeurs des données de chez
l’utilisateur (l’être humain) vers la machine.
• Lecture : Utilisateur Machine
• Syntaxe
• Lecture d’une seule variable : Lire (Nom-variable);
• Lecture de plusieurs (n) variables : Lire (Nom-
variable-1, Nom-variable-2, …, Nom-variable-n) ;
Exemple de lecture
• Afin de résoudre une équation du second degré de la forme
• aX2 +bX +C=0
• les valeurs des coefficients a, b et c connues par l’utilisateur doivent
être transmises à l’ordinateur avant que la machine ne commence le
calcul ; à savoir le calcul du discriminant delta.
• Le seul moyen d’établir cette communication est le groupe
d’instructions :
• Lire (a) ;
• Lire (b) ;
• Lire (c) ;
• Qui peut être regroupé dans une seule instruction :
• Lire (a, b, c) ;
Action d’écriture (affichage)
• Pourquoi ?
• Pour transmettre les valeurs des résultats calculés par
la machine vers l’utilisateur (l’être-humain) ; ou
encore transmettre un message textuel.
• Ecriture : Machine Utilisateur
• Syntaxe
• Affichage d’une seule variable : Ecrire (Nom-variable) ;
• Affichage de plusieurs (n) variables : Ecrire (Nom-
variable-1, … , Nom-variable-n) ;
• Affichage d’un message : Ecrire ('Texte') ;
Exemple d’écriture
• La résolution d’une équation de second degré
dans les réels donne lieu soit à des valeurs de X1
et X2
• ou à un texte dans le cas où aucune valeur ne
peut être calculée :
• Dans le cas ou delta est supérieur ou égal à zéro :
Ecrire (X1, X2) ;
• Dans le cas ou delta est inférieur à zéro et donc
pas de solution dans R :
• Ecrire ('pas de solution dans R’)
Action d’affectation
• Pourquoi ?
• Pour donner une nouvelle valeur (contenu) à une variable ;
cette valeur peut être un résultat de calcul.
• Affectation : Machine Machine
• Syntaxe
• Affectation d’une valeur à une variable :
• Nom-variable valeur ;
• Affectation du résultat de calcul à une variable :
• Nom-variable nom-variable1 opérateur nom-variable2 ;
• Ou encore l’affectation du résultat de plusieurs calcul à une
variable :
• Nom-variable nom-variable1 opérateur1 nom-variable2…
opérateur-n nom-variable n ;
Exemple
• Exemple
• La résolution d’une équation de second degré se
fait par calcul du discriminant delta :
• delta b*b – 4*a*c ;
• Dans le cas de delta > 0 la machine réalise le
calcul des deux solutions X1 et X2 en exécutant
les instructions :
• X1 -b + √delta / 2*a ;
• X2 -b - √delta / 2*a ;
Exercices 01
• Ecrire un algorithme qui permet de multiplier
un nombre par 2, lui ajouter 7, diviser le
résultat par 2 et soustrait le nombre de départ
puis afficher le résultat
Solution Exercice 01
Algorithme Exo1 ;
Declaration
x, y : entier ;
Debut
Lire (x) ;
y x*2 ;
y y + 7 ;
y y – x ;
Ecrire (y) ;
Fin.
Exécution de cet algorithme pour la
valeur de x = 2 :
Exécution de cet algorithme pour la
valeur de x = 10 :
2- Soit l’algorithme suivant :
• Quel est le rôle de cet algorithme ?
Exécution de cet algorithme pour les
valeurs x = 2.5 et y = 6.0
• Pour répondre à cette question il est nécessaire
d’exécuter l’algorithme.
• Le résultat est x = 6.0 et y = 2.5
• Il parait que cet algorithme permet d’échanger les
valeurs de deux réels en utilisant une variable
intermédiaire z.
vérifier le rôle de cet algorithme
• Pour vérifier ce rôle il est impératif de faire au
moins une autre exécution avec d’autres valeurs.
• Prenons x = 101.67 et y = -18.3
• Le résultat est x = -18.3 et y = 101.67
Exemple d’algorithme
• 3- Ecrire un algorithme qui calcul le prix à
payer pour une marchandise à partir d’un prix
initial et d’une remise sur ce prix. La formule à
appliquer est PaP = PI – PI*R/100
• Exemple : Prix Initial (PI) = 100 da, Remise (R)
= 25 le Prix à payer (PaP) = 75 da
Solution de l’exemple
Chapitre 2
Les tests
Cours Algorithmique
Chapitre 2:
Par Monsieur SADOUNI Salheddine
Tests
• Toutes les actions ne sont pas réalisables à
chaque fois.
• En effet, s’il pleut l’action prendre le parapluie
a un sens sinon elle est annulée ou remplacée
par une autre comme prendre les lunettes de
soleil.
• Les actions de l’algorithmique peuvent, elles
aussi, dépendre de certaines conditions et il
existe plusieurs formes de tests en
algorithmique.
Conditions
• Une condition est une comparaison sous la forme
• Valeur opérateur-comparaison Valeur
• Les opérateurs de comparaison sont :
• - Egal (=)
• - Différent (≠)
• - Supérieur (>)
• - Inférieur (<)
• - Supérieur ou égal (≥)
• -Inférieur ou égal (≤)
Remarques
• La valeur peut être contenue dans une variable
déclarée.
• Attention aux raccourcis du langage naturel qui
peuvent regrouper dans une même phrase deux ou
plusieurs opérateurs ce qui est valide en mathématique
mais non en algorithmique. Exemple âge compris en 15
et 18
• en mathématique il est correct d’écrire 15 ≤ âge ≤ 18
• mais comme il y a deux (2) opérateurs (deux ≤) cela est
interdit dans une même condition algorithmique.
Actions conditionnelles
• Quand ?
• Il s’agit dans ce cas de conditionner un groupe
d’actions (qui peut contenir de une à plusieurs
instructions) selon un certain test.
• Si la condition est vérifiée alors le groupe
d’action est déclenché puis les actions suivantes
sont exécutées.
• Dans le cas où la condition est fausse (non
vérifiée) un saut est effectué vers les actions qui
suivent le groupe conditionné.
Syntaxe
Exemple
• Ecrire un algorithme qui calcul et affiche la
valeur absolue d’une valeur entière M.
Solution de l’exemple
Exécution d’algorithme
• L’exécution de cet algorithme pour la valeur
• x = 4 fait que les instructions :
• Lire (x)
• et Ecrire (x) sont les seules à être exécutées
• car l’évaluation de la condition x <0 rend faux.
• L’exécution de cet algorithme pour la valeur
• x = - 4 fait que toutes les instructions de
l’algorithme sont exécutées
• car la condition x < 0 est évaluée à vrai.
Actions alternatives
• Quand
• Il s’agit dans ce cas de conditionner deux groupes d’actions
(qui peuvent contenir chacun de une à plusieurs
instructions) selon un certain test.
• Si la condition est vérifiée alors le groupe d’action 1 est
déclenché puis les actions qui suivent le FinSi sont
exécutées.
• Dans le cas où la condition est fausse (non vérifiée) un saut
est effectué vers le groupe actions 2 qui sera exécuté puis
suivront les instructions qui suivent le FinSi.
• Il y a donc obligatoirement une exécution de l’un ou l’autre
des groupes d’action mais que si l’un est exécuté l’autre ne
l’est pas.
• Note :
• L’alternative n’admet que deux chemins (vrai ou faux)
Syntaxe
Exemple
• Ecrire un algorithme qui calcul et affiche la
nature (positive ou négative) d’un nombre
entier.
• Le zéro est considéré comme valeur positive.
Solution de l’exemple
Exécution de l’algorithme
• L’exécution de cet algorithme
• pour la valeur x = 6
• nous conduit à suivre le chemin avec les instructions:
• Lire (x)
• et Ecrire (‘Le nombre est positif’) de même que dans le
cas de x = 0 ;
• alors que l’exécution avec x = -4 le chemin comprend
les instructions
• Lire (x) et
• Ecrire (‘Le nombre est négatif’)
Tests imbriqués
• Quand ?
• Dans certains cas il existe plus d’une
alternative à une condition.
• Il s’avère alors que le test sur une valeur peut
avoir plus de deux chemins possibles
• et des tests sont inclus dans d’autres.
• Cette forme est celle des tests imbriqués.
Syntaxe
Exemple de tests Imbriqués
• Prenons le cas de l’algorithme de la nature
d’un nombre entier (Algorithme précédent)
• et que l’on considère que le zéro est une
valeur qui n’est ni positive ni négative mais
qu’il est déclaré nul.
• Ce changement implique qu’il y a trois
alternatives et non pas deux ce qui oblige
l’informaticien à la solution avec tests
imbriqués comme suit :
Solution de l’algorithme
Explication
• A l’exécution de cet algorithme un et un seul des trois chemins
(groupe d’actions) est suivi selon que la première condition est
vraie:
• Lire (x)
• Ecrire (‘Le nombre est négatif’)
• Ou si la première condition est fausse et que la deuxième est vraie :
• Lire (x)
• Ecrire (‘Le nombre est positif’)
• Ou encore si les deux premières conditions sont fausses :
• Lire (x)
• Ecrire (‘Le nombre est une valeur nulle’)
• Les tests imbriqués remplacent un ensemble d’actions
conditionnelles particulièrement lorsque les conditions portent sur
le (ou les) même(s) variables.
tests imbriqués portent sur des
égalités valeurs
• Dans le cas où les conditions des tests
imbriqués portent sur des égalités par rapport
à des valeurs précises ou des intervalles, ils
peuvent être modélisés avec le constructeur
Selon en suivant la syntaxe suivante :
tests imbriqués portent sur des
égalités Intervalle
• Dans le cas ou la variable est égale à la valeur 1
alors le groupe d’instruction 1 est le seul qui est
exécuté ; si elle est égale à la valeur 2 c’est le
groupe 2 et ainsi de suite.
• La syntaxe peut aussi suivre la forme suivante s’il
s’agit de tester l’appartenance de la variable à des
intervalles :
tests imbriqués portent sur des
égalités, autre
• Dans le cas ou il existe un groupe
d’instructions à exécuter en dernier recours (la
variable n’est égale a aucun(e) intervalle (ou
valeur) cité(e)) une ligne est rajoutée en fin
pour le cas autre selon la syntaxe :
Conditions composées
• Quand ?
• Comme déclaré précédemment certains problèmes exigent
parfois de formuler des conditions qui ne peuvent pas être
exprimées sous la forme simple désignée ci-dessus. Les
opérateurs Logiques (essentiellement et, ou, non) servent
alors à composer les conditions.
• L’exemple du test 15 ≤ âge ≤ 18 est alors formulé par la
condition
• Si (Age ≥ 15) et (Age ≤ 18) Alors
• Syntaxe
• Si (Condition 1) opérateur logique 1 (Condition 2)
opérateur logique 2 … (Condition n) Alors
Opérateur Et, Ou, non
• Pour l’opérateur « et » il est nécessaire que toutes les
conditions soient vraies pour que le test soit vrai.
• Dans le test ci-dessous il est nécessaire que l’Age appartient
à [15, 18] pour que le test soit vrai.
• Pour l’opérateur « ou » il suffit que l’une des conditions
soit vraie pour que le test soit vrai
• Dans le test Si (Age ≥ 15) ou (Age ≤ 18) Alors il suffit que
l’Age soit supérieur ou égal à 15 ou qu’il soit inférieur ou
égal à 18 pour que le test soit vrai.
• Pour l’opérateur « non » si la condition est vraie le test
devient faux et si elle est fausse alors le test sera évalué à
vrai.
• Dans le test Si Non (Age ≥ 15) Alors. Ce test est vrai si l’Age
est inférieur à 15 et faux dans le cas
Exemple
• Ecrire un algorithme qui affiche si le produit
de deux nombres est positif ou non sans
calculer le produit.
Autre Solution
Chapitre 3
Les Boucles
Les Boucles
• Dans un algorithme, certaines instructions
peuvent être répétées et il ne serait pas très
intelligeant de les réécrire.
• Les boucles sont alors apparues afin de
modéliser la répétition.
• Trois formes se présentent aux informaticiens,
• l’utilisation de l’une ou l’autre est en rapport
avec le test de répétition bien que la plus
utilisée soit celle du Tantque.
1- Boucle Tantque
• Une boucle Tantque permet de répéter
plusieurs fois le même bloc d’instructions
tant qu’une certaine condition reste vraie.
• La syntaxe est la suivante :
Explication
• Si la condition est vraie le groupe d’instructions est exécuté
puis le FinTantque remet l’exécution à la condition et ainsi
de suite jusqu’à ce que la condition soit évaluée à faux.
• Le groupe d’instruction peut ne jamais être exécuté si dès
le départ la condition de la boucle n’est pas satisfaite.
Attention donc aux boucles qui ne sont jamais exécutées.
• A l’intérieur de la boucle il est impératif de faire des
changements de manière à ce que le test soit erroné à un
moment ou l’autre sinon si la condition reste toujours vraie
on se retrouve dans une situation de boucle infinie qui est
complètement interdite en algorithmique.
Exemple
• Ecrire un algorithme qui calcul le nombre de
valeurs entières saisies pour aboutir à une
somme ne dépassant pas 500
Solution de l’exemple
2- Boucle Pour
• Lorsque le nombre de répétition est connu, la
boucle Pour utilise un compteur pour calculer
le nombre de fois qu’est répété le bloc
d’instructions de la boucle.
• La syntaxe est la suivante :
Explication
• Le compteur est initialisé à la valeur-initiale puis
le groupe d’instruction est exécuté.
• Une fois arrivée à la FinPour celle-ci remet
l’exécution à la ligne Pour en rajoutant,
automatiquement, la valeur du pas au compteur
puis sa valeur est comparée à la valeur-finale.
• Dans le cas où il n’a pas atteint cette valeur la
boucle est encore une fois exécutée
• mais si elle est atteinte la boucle Pour signale
que c’est la dernière fois qu’elle peut être
exécutée et donc arrivé à FinPour
• le retour n’est plus permis et l’exécution
continue avec le reste des instructions.
Notes
• ! Le pas, dont la valeur est entière,
• peut être positif (et le compteur est incrémenté
par cette valeur à chaque itération)
• ou négatif et c’est une décrémentation.
• ! Si le pas = 1 il est généralement omis.
• ! La valeur du compteur étant automatiquement
modifiée par la boucle Pour, il est strictement
interdit d’écrire à l’intérieur de la boucle des
instructions de lecture ou d’affectation de ce
compteur.
Exemple
• Ecrire un algorithme qui calcul la factorielle
d’un nombre entier positif selon la formule :
• Fact (x) = 1*2*3*….*x
Solution de l’Exemple
3- Boucle Repeter
• La répétition en utilisant Repeter répond aux mêmes
conditions que celles du Tantque
• sauf que la condition se trouve en fin de la boucle et non
pas au début.
• La différence entre les deux formes est qu’une boucle avec
Tantque peut ne jamais être exécutée car la condition peut
être fausse au départ
• alors que dans la boucle Repeter le groupe d’instructions
est exécuté au moins une fois pour arriver à la condition.
• La condition du Repeter est donc une condition de fin (la
répétition est terminée quand la condition est vraie)
• alors que la condition du Tantque est une condition de
répétition (la répétition est terminée quand la condition est
évaluée à faux).
Syntaxe de repeter
• !La boucle Repeter est particulièrement
recommandée pour les saisies contrôlées
Exemple
• Ecrire un algorithme qui calcul la division d’un
nombre réel par un entier selon la formule :
• z = x / y.
Solution de l’exemple
Autre Solution Tantque
• Lors de l’exécution de cet algorithme le passage à
l’instruction de calcul de z ne se fait que lorsque la saisie de
la valeur de y est différente du zéro.
• Une autre solution en utilisant la boucle Tantque est la
suivante :
• L’instruction de lecture est alors écrite deux fois :
• la première pour tester la condition
• et la deuxième pour répéter la lecture jusqu’à saisie d’une
valeur non nulle.
Deuxième solution