Introduction à l'Algorithmique
Introduction à l'Algorithmique
Module : Algorithmes et
Programmation python
Chapitre 1 : Partie 1
Introduction à l’algorithmique
Pr: [Link]
Introduction à l'Algorithmique
Algorithmique:
L'algorithmique est une discipline fondamentale en informatique qui consiste à concevoir,
analyser et optimiser des algorithmes. Un algorithme est une suite finie et ordonnée
d'instructions permettant de résoudre un problème ou d'accomplir une tâche spécifique. En
d'autres termes, c'est une méthode systématique pour transformer des données d'entrée en
résultats souhaités.
Un algorithme est une suite finie d’instruction à suivre pour aboutir à un résultat;
Un algorithme définit les instructions (étapes) à effectuer pour résoudre un problème donné.
2. Structures de contrôle : Les algorithmes utilisent des structures comme les boucles
(répétition), les conditions (décisions) et les séquences (enchaînement d'instructions).
Prenons l'exemple d'un algorithme pour trouver le maximum entre deux nombres :
Instructions :
Sinon, afficher B.
Organigramme:
Représentation graphique d’un algorithme avec des symboles (carrés, losanges,
rectangle etc.)
Simple Exemple:
Ecrire un algorithme qui permet d’afficher le message : « Bonjour tout le monde »
Autre Exemple:
1. Définition du problème
2. Structure générale
3. Développement
4. Validation de l’algorithme
5. Le codage
6. Mise au point
Corriger les erreurs commises à l’étape précédente. Les étapes 5 et 6 font aussi
partie de la compilation d’un programme. Le compilateur n’est rien d’autre qu’un
gros programme qui, ayant reçu un autre programme écrit dans un langage évolué,
l’analyse(détermine les erreurs de syntaxe, mais pas de conception et de logique) et
le traduit en un langage machine; il traduit donc le code source en un exécutable.
Chaque langage de programmation possède donc un compilateur.
Définition :
Une variable est une entité (emplacement mémoire) qui contient une information , qui sert
à stocker la valeur d’une donnée dans un langage de programmation.
Elle est caractérisée par :
Un nom, on parle d’identifiant : (identification ou désignation de l’emplacement
mémoire de la variable) qui la différencie des autres et permet l’accès à sa valeur.
Une valeur (c’est le contenu actuel de l’emplacement mémoire de la variable).
Un type : qui spécifie le domaine de valeurs que peut prendre la variable. (entier, réel,
booléen, caractère, chaîne de caractères, …).
Règles d’identificateurs
Le nom d’une variable 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 lettres, de chiffres et du soulignement (« _ ») (Éviter les
caractères de ponctuation et les espaces)
valides: Info2011, Info_2011
invalides: Info 2011,Info-2011,Info;2011
Doit être différent des mots réservés du langage (par exemple en C: int, float, double, switch,
case, for, main, return, …) ;
La longueur du nom doit être inférieure à la taille maximale spécifiée par le langage utilisé.
Pour la lisibilité du code choisir des noms significatifs qui décrivent les données manipulées .
Algorithmique Algorithmes et Programmation python 16
Variable : Règles d’identificateurs
Règles d’identificateurs
Remarque : Dans les langages de programmation, une variable sert à stocker la valeur
d’une donnée, elle désigne en fait un emplacement mémoire dont le contenu peut changer
au cours d’un programme (d’où le nom variable)
Déclaration de variable
Toute variable utilisée dans un programme doit avoir fait l’objet d’une déclaration
préalable
Exemple:
Var i, j, k : entier
x, y : réel
VRAI: booléen
Ch1, ch2 : chaîne de caractères
Définition
Une constante est une variable dont la valeur ne change pas au cours de l'exécution
du programme, elle peut être un nombre, un caractère, ou une chaine de caractères.
Syntaxe:
Constante ID =valeur : type
i ← 0
J ← i+15
x ← 1.5
c ← 'A'
ch ← "Bonjour"
Remarque: La variable et la valeur dans une affectation doivent être de même type.
Exercice corrigé:
Donnez les valeurs des variables A et B après exécution des instructions suivantes :
Algorithme Affectation
Debut
A 1
B 2
A B
B A
Fin
Exercice 1:
Donnez les valeurs des variables A, B et C après exécution des instructions suivantes ?
Algorithme Ex1
Variables A, B, C: Entier
Début
A ← 3
B ← 7
A ← B
B ← A+5
C ← A + B
C ← B – A
Fin
Exercice 2:
1. Donnez les valeurs des variables A et B après exécution des instructions suivantes ?
Algorithme Ex2
Variables A, B : Entier
Début
A ← 1
B ← 2
A ← B
B ← A
Fin
Exercice 3:
Définition
Un opérateur est un symbole qui représente une opération.
En pseudo-langage, les opérateurs sont :
Opérateurs arithmétiques : + addition
- soustraction
* multiplication
/ division
% modulo
^ puissance
Définition
Expressions logiques
Ce sont les expressions dont le résultat est vrai ou faux
Les opérateurs : et, ou, non, <, ≤, >, ≥, =, ≠
Exemple : Formulation de la condition de réussite des étudiants en fonction de la moyenne
générale (m) et de la note de l’option de l’étudiant (Nop).
(m ≥ 10 et Nop > 12) ou (m >12 et Nop > 7)
Expressions de chaînes de caractères
Ce sont les expressions qui opèrent sur les chaînes de caractère. Parmi les opérations
appliquées sur les chaînes de caractère on peut citer :
Concaténation(ch1, ch2) : concaténation des deux chaînes ch1 et ch2.
Inverse(ch1) : inverser la chaîne ch1
Algorithmique Algorithmes et Programmation python 30
Expression : Exercice
Exercice 4
A, B, C, D, E, X et Y sont des variables de type Entier
N, M et L sont des variables de type Booléen
Soient les instructions d’affectation suivantes :
A 20 B 5 C -10 D 2 X 12 Y 15 N VRAI
M FAUX
b) Commenter les instructions suivantes en indiquant les nouvelles valeurs des variables
modifiées dans chaque cas
(1) AA+(X+5)
(2) AA*C+(X-D)
(3) AA Mod D+1
(4) EA Div 6+B
(5) BA*A-A
(6) LNON(N)
(7) MNON(N)ET (NOM(M))
l’affectation de variable ;
la lecture et/ou l’écriture ;
les tests ;
les boucles.
C’est une opération qui consiste à attribuer une valeur de l’extérieur, par une unité d’entrée
(ex. clavier, capteur de grandeurs physique, etc.), à une variable.
Notation : LIRE(x) ou LIRE(x,y,...).
Exemple :
x, t : réel
p : entier
lire(x)
lire(t,p)
Pour un programme exécutable, la saisie de la valeur se fait généralement à partir du
clavier. Et cette instruction arrête le programme jusqu'à ce que la valeur saisie soit
validée
Algorithmique avec la touche ENTREE.
Algorithmes et Programmation python 34
Entrée / Sortie : Ecrire
Son rôle est de faire sortir l’information à l’extérieur par un périphérique de sortie. Cette
information peut être numérique, chaîne de caractères,...
Notation : Ecrire(information1,information2,...).
Ecrire(x) : écrit la valeur de la variable x.
Ecrire(‘’Salut’’) : affiche ou écrit le message : Salut (le texte doit être toujours entre deux
apostrophes).
Pour afficher un caractère il faut le délimiter par ‘ et ’. par exemple Ecrire(‘c’)
Pour afficher une chaîne de caractère il faut la délimiter par ” et ”. Par exemple
Ecrire(”Bonjour”)
Algorithmique Algorithmes et Programmation python 35
Entrée / Sortie : Ecrire
Exercice 5
Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui calcule
et affiche le double de ce nombre
Exercice 6
Ecrire un algorithme qui vous demande de saisir votre nom puis votre prénom et
qui affiche ensuite votre nom complet
Définition
Forme 1 Organigramme
oui
SI <condition> ALORS condition instruction
instructions
FSI non
Fin
Si la condition <condition> est vraie, alors exécuter les instructions; sinon on ne fait
rien. On passe à l’exécution de l’instruction suivante (qui est juste après FSI)
Forme 2 Organigramme:
SI <condition> ALORS
oui
Instructions 1 condition instruction1
SINON non
Instructions 2
FSI instruction2
Si la condition <condition> est vraie, alors exécuter les instructions 1; sinon exécuter
les instructions 2.
Syntaxe:
Si condition Alors
Tâche 1
Tâche 2
...
Sinon
Tâche A
Tâche B
...
FinSi
Exemple 1:
Ecrire un algorithme qui permet d'afficher la valeur absolue d'un réel donnée
Correction :
Algorithme : valeur_absolue_1
Var n: Réel
Debut
Si ( n > 0 ) Alors
Ecrire("la valeur absolue de ", n, " est ", n)
Sinon
Ecrire("la valeur absolue de ", n, " est ", -n)
FinSi
Fin
Si la condition est VRAI, la suite d'instruction séquence est exécutée, sinon rien ne se passe
Algorithmique Algorithmes et Programmation python 44
Structure Conditionnelle : Si
Exemple 2:
l’algorithme suivant compare les variables x et y. La variable z contient la
différence x-y si x est supérieure ou égale à y, sinon z contient y-x. Ensuite
affiche la valeur absolue de x - y
Correction :
Algorithme : AbsDdiff_xy
Var x,y,z : entier
Debut
lire(x,y)
Si (x > y) Alors
z = x – y
Sinon
z = y – x
FinSi
Une condition composée est une condition formée de plusieurs conditions simples
reliées par des opérateurs logiques: ET, OU, OU exclusif (XOR) et NON
Exemples:
Remarque
L’instruction après ALORS ou SINON est quelconque et peut être une instruction
SI. Dans ce cas, on dit qu’on a des SI imbriqués.
Exemple 1:
Si (a = 0) Alors
Si (b = 0) Alors
x = x/2 ;
FinSi
Sinon
x = 2*x ;
FinSi
Exemple 2 – version 1:
Algorithme SigneNbre
Variable
n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si (n < 0) Alors
Ecrire ("Ce nombre est négatif")
Sinon
Si (n = 0) Alors
Ecrire ("Ce nombre est nul")
Sinon
Ecrire ("Ce nombre est positif")
Finsi
FinSi
Fin
Algorithmique Algorithmes et Programmation python 48
Structure Conditionnelle : Si- Composé
Exemple 2 – version 2:
Algorithme SigneNbre
Variable
n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si (n < 0) Alors Ecrire ("Ce nombre est négatif")
Finsi
Si (n = 0) Alors Ecrire ("Ce nombre est nul")
Finsi
Si (n > 0) Alors Ecrire ("Ce nombre est positif")
Finsi
Fin
Dans la version 2 on fait trois tests systématiquement alors que dans la version 1,
si le nombre est négatif on ne fait qu'un seul test.
Algorithmique Algorithmes et Programmation python 49
Structure Conditionnelle : Si Imbriquée
Si <condition1> alors
Si <condition 11> alors
<instructions A>
Sinon
<instructionsB>
FinSi
Sinon
Si condition2 alors
<instructionsC>
FinSi
FinSi
Exercice 7:
Exercice 8:
non break
valeur == oui
instruction2
v2
non break
valeur == instruction3
autrement
Fin 52
Algorithmique Algorithmes et Programmation python
Structure Conditionnelle : Selon
Syntaxe:
Selon <variable> faire
cas v1 : Instructions 1
cas v2 : Instructions 2
cas v3 : Instructions 3
Cas v4 : Instructions 4
.
.
Autrement : traitement par défaut
FinSelon
Exemple :
Couleur code
Etablissement de correspondance entre une couleur et un Rouge 1
code. L’algorithme doit saisir un code entre 1 et 6 et affiche la Vert 2
Bleu 3
couleur correspondante. Le tableau suivant montre les couleurs Jaune 4
possibles et les codes correspondants. Blanc 5
Noir 6
Introduction
Les structures répétitives aussi appelées boucles, permettent de répéter un traitement autant
de fois qu'il est nécessaire: soit un nombre déterminé de fois, soit tant qu'une condition est
vraie.
Il existe trois grands types principaux de structures répétitives:
la structure Pour qui permet de répéter une instruction un certain nombre de fois ;
la structure Tant que…Faire, qui permet d'effectuer une instruction tant qu'une condition
est satisfaite ;
la structure Répéter…Jusqu'à, qui comme son nom l'indique, permet de répéter une
instruction jusqu'à ce qu'une condition soit satisfaite.
Organigramme:
Début
initialisation
oui
condition != 0 instruction
non modification
Algorithmique Fin
Algorithmes et Programmation python 57
Structures Répétitives : Pour
Debut
Debut
Ecrire("Bonjour tout le monde ") Pour i 1 à 300 faire
Ecrire("Bonjour tout le monde ")
. 300 fois Ecrire("Bonjour tout le monde ")
.
Ecrire("Bonjour tout le monde ") FinPour
.
Fin
Fin
Exemple 1
Version 1
Var
x, puiss : réel
n, i : entier
Début
Ecrire (" Entrez la valeur de x ")
Lire (x)
Ecrire (" Entrez la valeur de n ")
Lire (n)
puiss ← 1
Pour i allant de 1 à n
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Algorithmique Fin Algorithmes et Programmation python 59
Structures Répétitives : Pour
Exemple 1
Exemple 2
Exemple 3
La somme des entiers de 1 à n
Var
i, n, s : entier ;
DEBUT
s = 0;
lire(n);
POUR i = 1 à n FAIRE
s = s + i;
FinPOUR
écrire(s);
FIN
Exercice 9
Calculer la somme des entiers de 1 à 1000
Exercice 10
Afficher tous les multiples de 4 qui sont inférieur à 100
Exercice 11
Ecrire un algorithme permettant de calculer la somme de tous les nombres
impairs entre deux valeurs N et M.
Exercice 12
Ecrire un programme qui calcule la somme suivante :
i n
S
i 1
( 1) i (i 2 i )
La boucle « Tant que … Faire » permet de répéter un traitement tant qu'une expression
conditionnelle est vraie. Si la condition n'est pas vraie, le traitement ne sera pas exécuté.
Le nombre d’itération n’est pas connu à priori. La boucle tantque fonctionne de la
manière suivante :
• Evaluer une expression logique
• Vraie : elle fait le bloc et recommence
• Fausse : elle sort
On note qu’on évalue d’abord la condition < condition> ; si elle est vraie on exécute les
instructions « instructions » et on retourne pour réévaluer la condition. Dès que la
condition est fausse on exécute l’instruction qui suit la boucle TANT QUE ... FAIRE…
Organigramme:
Début
oui
condition != 0 instruction
non
Exemple 1 :
Contrôle de saisie d'une lettre majuscule jusqu’à ce que le caractère entré soit valable
Algorithme ControleChar
Var
C : caractère
Debut
Ecrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z')
Ecrire ("Saisie erronée. Recommencez")
Lire (C)
FinTantQue
Ecrire ("Saisie valable")
Fin
Exemple 2 :
Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N
dépasse strictement 100
version 1
Var som, i : entier
Debut
i←0
som← 0
TantQue (som <=100)
i ← i+1
som ← som+i
FinTantQue
Ecrire (" La valeur cherchée est N= ", i)
Fin
Version 2
Attention à l'ordre des instructions et aux valeurs initiales
Var som, i : entier
Debut
som ← 0
i←1
TantQue (som <=100)
som ← som + i
i ← i+1
FinTantQue
Ecrire (" La valeur cherchée est N= ", i-1)
Fin
On observe qu’il faut initialiser les variables i et s à 0 (au début du programme les
variables contiennent des valeurs quelconques).
Remarque : La condition peut ne pas être remplie dès le départ. Dans ce cas aucune
instruction, à l’intérieur de la boucle, ne sera exécutée.
Algorithmique Algorithmes et Programmation python 68
Structures Répétitives : Tant que
Exemple
Dans l’algorithme suivant la boucle n’a pas d’effet sur la variable entière y vu que
la condition de la boucle est toujours fausse. Donc y contient à la fin la valeur 0.
Var
x : booléen
y : entier
DEBUT
x = FAUX
y=0
TANT QUE ( x = VRAI ) FAIRE
y=y+1
FinTantQue
écrire(y);
FIN
Exercice 13:
Exercice 14:
Écrire un algorithme qui permet de saisir une phrase caractère par caractère en
utilisant la boucle Tant que. . La fin de la phrase est identifiée par le caractère ‘.’
Exercice 14:
n
Cette boucle sert à répéter une instruction jusqu'à ce qu'une condition (expression booléenne)
soit vraie.
Le traitement est exécuté, puis la condition est vérifiée.
Si elle n'est pas vraie, on retourne au début de la boucle et le traitement est répété.
Si la condition est vraie, on sort de la boucle et le programme continue séquentiellement.
Organigramme: Début
instruction
condition != 0 oui
non
Fin
Algorithmique Algorithmes et Programmation python 72
Structures Répétitives : Jusqu’à
Syntaxe:
Répéter
instruction1
.
. Bloc d’instructions
.
instruction n
Jusqu’à <condition d’arrêt>
Exemple : un algorithme qui détermine le premier nombre entier N tel que la somme
de 1 à N dépasse strictement 100 (version avec répéter jusqu'à)
Var
som, i : entier
Debut
som ← 0
i←0
Répéter
i ← i+1
som ← som+i
Jusqu'à ( som > 100)
Ecrire (" La valeur cherchée est N= ", i)
Fin
Exercice 15:
n
Structures conditionnelles:
Si condition Alors
Tâche 1
Sinon
Tâche 2
FinSi
FinSelon
Boucles:
Tant que <condition> faire Pour Comp val_init à val_final
faire
Bloc d’instructions
Bloc d’instructions
I suivant
FinTantQue
FinPour
Répéter
Bloc d’instructions
Algorithme : table_de_multiplication
Pour i 1 a 10
Ecrire(N, "x" ,i, "=",N*i)
i Suivant
FinPour
Fin
Algorithme : table_de_multiplication
Fin
Debut
Sinon
Ecrire("le produit est negatif")
Fin
Algorithmique Algorithmes et Programmation python 82