Module: ALGORITHMIQUE 1
Chapitre 1: Notions de bases de l'algorithmique
Niveaux: 1A
Equipe ALGO
Année universitaire: 2024/2025
1
Exemples Introductifs
EXEMPLE 1:
Problème: comment faire sortir une voiture du garage?
On veut écrire une séquence de règles à mettre en œuvre
pour résoudre ce problème simple
Voici un exemple de solution:
1. Ouvrir la porte du garage
2. Prendre la clef
3. Ouvrir la porte avant gauche de la voiture
4. Entrer dans la voiture
Cette suite d’actions élémentaire est un
5. Insérer la clé dans le contact
algorithme
6. Mettre le contact
...
2
Exemples Introductifs
EXEMPLE 2:
Soit le problème suivant: « afficher le carré d’un entier donné par l’utilisateur »
On veut écrire une séquence de règles à mettre en œuvre pour résoudre ce problème.
Voici un exemple de solution:
1. Lire la valeur de X
2. Calculer le produit X*X Cette suite d’actions élémentaire est un
3. Afficher le résultat sur l’écran algorithme
3
Définition
Algorithme: Une séquence d’actions permettant de résoudre un problème donnée.
⮚ L’algorithme ne peut pas être exécuté directement sur machine: l’ordinateur ne
comprend pas les instructions écrites en langage algorithmique.
⮚ L’algorithme doit être traduit en un programme écrit en langage machine
interprétable et compréhensible par la machine: l’ordinateur peut exécuter les
instructions écrites en un langage de programmation: Langage C, Pascal, Python,…
4
Cycle de Vie d’un Programme
Pseudo-code non #include <stdio.h>
exécutable sur machine …
{
Programme en C
Algorithme Carré_Entier Y=X*X;
Variable x , y : Entier …
}
Début Traduction en un
Exécutables sur machine
Ecrire ( ‘ Donner un entier ‘) langage de
PROGRAM CAREE;
Lire (x) programmation
USES WINCRT;
y ← x*x VAR
Ecrire ( ‘Le carré de cet entier est: ’ , y ) X : INTEGER; Programme en
Fin BEGIN Pascal
….
END.
5
Cycle de Vie d’un Programme
6
Qualité d’un bon algorithme
• LISIBLE
• Chacune de ses étapes (ou phases), et leurs entrées/sorties doivent être
claires et ne doivent conduire qu'à un seul sens.
• FIABLE
• Exécute correctement les tâches pour lesquelles il a été conçu.
• COMPLÉTUDE
• Considère tous les cas possibles et donne un résultat dans chaque cas.
• EFFICACITÉ
• Exécute sa tâche avec efficacité de telle sorte qu’il se déroule en un temps
minimal et qu’il consomme moins de ressources.
7
Structure générale d’un algorithme
Algorithme Nom_Algorithme
Entête Variable Var1, Var2 : TypeVar1
Var3, Var4 : TypeVar2
Début
🡪 Les actions doivent être finies.
Action1 🡪 Les actions doivent être
ordonnées.
Corps Action2 🡪 Les actions s’exécutent
séquentiellement
Traitement
…
Fin
8
Structure générale d’un algorithme
Nom de l’algorithme
Mots
clés
Algorithme Nom_Algorithme Noms des variables
utilisées
Variable Var1, Var2 : TypeVar1
et leurs types
Var3, Var4 : TypeVar2
Début
Action1
Action2
…
Suite d’actions
Fin
9
Exemple d’algorithme
Exemple d’Algorithme permettant de calculer le carré d’un entier donné par l’utilisateur
Algorithme Carré_Entier
Variable x , y : Entier
Début
Ecrire ( ‘ Donner un entier ’ )
Lire (x)
y ← x*x
Ecrire ( ‘ Le carré de cet entier est: ’ , y )
Fin
10
Structure général d’un algorithme
Entête de l’algorithme
composé de:
⮚ Nom de l’algorithme
Algorithme Calcul_Moyenne
⮚ Partie déclarative: Avant d'utiliser n'importe quel objet algorithmique, il faut le déclarer
au niveau de la partie déclarative de l'algorithme.
Variable i, j : Entier
x, y : Réel
11
Structure générale d’un algorithme
Le corps de l’algorithme: Partie traitement
Contient l’ensemble des actions applicables sur l’ensemble des objets algorithmiques déjà déclarés au
niveau de la partie déclarative.
Ces actions se divisent essentiellement en 4 catégories:
⮚ Les Actions simples: Entrée de données (Lecture), sortie de résultats (Ecriture) et Affectation (🡨).
⮚ Les Structures Conditionnelles: Ce sont des structures de contrôle permettant de choisir entre les
traitements. (Utiliser le SI et le SELON)
⮚ Les Structures Itératives (répétitives – Boucles): Ce sont des structures de contrôle permettant de répéter
un ensemble de traitements autant de fois qu’on veut. (Répéter, Tantque et Pour).
⮚ Les Appels de sous-programmes : Procédures et/ou Fonctions.
12
Les Constantes et les Variables
Constante:
Une constante est une variable dont la valeur reste inchangée lors de l'exécution d’un algorithme.
Une constante est caractérisée par :
• son nom (unique) respectant les règles de
l’identificateur.
• sa valeur.
Exemple :
Constante
Variable: Pi = 3.14
Une variable est un Objet qui peut prendre différentes valeurs lors de l'exécution d'un algorithme,
MAIS à un instant donné, elle ne peut contenir qu’une et une seule valeur.
Exemple : on a une variable x de type entier, les valeurs prises lors de l’exécution 0, -2, 5, 10, -3
Une variable est caractérisée par :
• son nom (unique) respectant les règles de l’identificateur.
• son type
• son contenu (valeur).
Remarque: il est préférable de donner toujours des noms significatifs aux variables.
13
Nommage de variables
Règles Exemple
Peut contenir un mélange de caractères et H2o
de nombres, cependant il DOIT
commencer par une LETTRE.
Le premier caractère doit être une lettre. Number1
_area
Peut être une combinaison de majuscules XsquAre
et de minuscules, y compris l’underscore my_num
(le tiret_bas)
Ne peut pas contenir d'opérateurs R*S+T
arithmétiques
…ni aucun symbole (sauf l’underscore). #@%!
ne DOIT pas contenir d'espace My height
14
Exercices d’application
Application-1: Lesquels de ces identifiants sont valides:
•xy
•x-y
•2Ttc
•tt_c
•t+c
•Xx1
•1234
•x’x
•Ma Moy
•mamoy
•ma&moy
•ma_moy
•MaMoy
15
Les types de données
⮚ Le type d'une variable permet de déterminer l’ensemble de valeurs possibles
que peut prendre cette variable (Mathématiquement, on parle de Domaine de
Définition), et l’ensemble des opérations applicables sur ces variables.
⮚ Un type est désigné par son nom qui doit respecter les règles de l’identificateur .
⮚ On distingue deux catégories de types : Types Simples et les Types Composés
16
Les types de données
⮚ Les types standard sont :
• Le type Entier, désignant les valeurs des nombres entiers relatifs.
Exemple: -12; 0; 125; etc.
• Le type Réel, désignant les valeurs des nombres réels.
Exemple: 3.14; 0.6; 12.13; etc.
• Le type Caractère, désignant les "valeurs" des caractères (les chiffres, les lettres minuscules
et majuscules et les symboles spéciaux).
Exemple: ‘b’; ‘X’; ’3’; ‘%’; etc.
• Le type Booléen, désignant les valeurs logiques.
Vrai; Faux
Remarque : Les types simples sont déclarés lors de la définition des variables.
17
Opérateur, opérande et expression
⮚ Une expression est une combinaison de variables, données et opérateurs (+,-,*,etc.)
Exemple: E=a+b+c-3
⮚ 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 évaluée durant l’exécution de l’algorithme, et possède une valeur
(son interprétation) et un type.
Par exemple: dans a + b :
a est l’opérande gauche
+ est l’opérateur
b est l’opérande droite
a + b est appelé une expression
Si par exemple a vaut 2 et b vaut 3, l’expression a + b vaut 5
Si par exemple a et b sont des entiers, l’expression a + b est un entier 18
Les Opérateurs
Généralement, il y a un ensemble d’opérateurs pour chaque type de données:
⮚ Les opérateurs arithmétiques: +, -, *, /, MOD, DIV
⮚ Les opérateurs logiques: AND, OR, NO
⮚ Les opérateurs relationnels: <, >, <=,>=, < >, =
⮚ Les opérateurs du type caractère
19
Les Opérateurs arithmétiques
⮚ Les opérateurs arithmétiques opèrent sur les données numériques:
✔ entières +, -, *, /, div et mod
✔ réelles +, -, *, /
Intitulé de l’opération Symbole Exemple : A=13 et B=5
Addition + A+B donne le résultat 18
Soustraction - A – B donne le résultat 8
Multiplication * A*B donne le résultat 65
Division entière / ou DIV A DIV B donne le résultat 2
Reste de la division % ou MOD A MOD B donne le résultat 3
entière
Puissance ^ ou ** A**B donne 371293
20
Les Opérateurs Logiques
⮚ Les opérateurs logiques opèrent sur des données logiques:
Non ; Et ; Ou ; Xor
A B Non (A) A Et B A Ou B A Xor B
Vrai Vrai Faux Vrai Vrai Faux
Vrai Faux Faux Faux Vrai Vrai
Faux Vrai Vrai Faux Vrai Vrai
Faux Faux Vrai Faux Faux Faux
21
Les Opérateurs Relationnels
⮚ Les opérateurs relationnels servent à comparer deux variables et à
fournir un résultat vrai ou faux:
Opérateur Signification Exemple
= égal à Réponse=Vrai
< inférieur à i<N
<= inférieur ou égal à Age≤25
> supérieur à Nbr>10
>= supérieur ou égal à Année≥2020
<> différent de N1≠N2
22
Les Opérations sur le type caractère
⮚ Les opérations de base sur le type caractère:
Le Type Caractère
Intitulé de l’opération Symbole Exemple
Obtention du caractère associé CHR(n) CHR(65) donne le caractère ‘A’
à un code numérique de la table
ASCII
Obtention du code numérique ORD(c) ORD(‘A’) donne la valeur 65
associé à un caractère donné
Obtention du suivant SUIV(c) SUIV(‘A’) donne le caractère ‘B’
Obtention du précédent PRED(c) PRED(‘B’) donne le caractère ‘A’
23
Exercices d’application
Application-2 : Donnez les valeurs des variables X, Y et Z après exécution de
l’algorithme suivant :
ALGORITHME Application-2
Action X Y Z
VAR X🡨13 13
Y🡨17
X, Y, Z: entier X🡨Y
13 17
17 17
DEBUT Y🡨X+15 17 32
Z🡨X+Y 17 32 49
X ← 13 Z🡨Y-X 17 32 15
Y ← 17 Z 🡨 (X+10-Y) +(Z-X)*2 -5 Quelle sera la valeur de Z ?
Z 🡨 (27-Y) +……..
X←Y Z 🡨 -5 + (Z-X)*2 -5
Z 🡨 -5 + (-2)*2 -5
Y ← X+15 Z 🡨 -5 + (-4) -5
Z 🡨 -9 + (-5)
Z←X+Y Z 🡨 -14
Z←Y–X
FIN 24
Priorité des Opérateurs
Pour éviter toute ambiguïté, les opérateurs sont munis de l’ordre de
priorité suivant:
Priorité Opérateurs
1 (la plus forte) ()
2 Non
3 ^ (puissance)
4 * / Mod Div Et
5 + - Ou Xor
6 < <= <> > >= =
25
L’opération d’affectation
• L'opération d’affectation consiste à placer une valeur à un objet.
objet ← valeur
On dit que objet reçoit valeur, ou bien valeur est affectée à objet.
• Par exemple l’affectation:
c←a+b
se comprend de la façon suivante :
On prend la valeur contenue dans la variable a
On prend la valeur contenue dans la variable b
On additionne ces deux valeurs
On met ce résultat dans la variable c
26
Les Entrées/Sorties
Un algorithme peut avoir des interactions avec l’utilisateur.
⮚ Il peut afficher un résultat (du texte ou le contenu d’une variable)
C’est l’action d’affichage: algorithmiquement on la représente par une écriture
⮚ demander à l’utilisateur de saisir une information afin de la mémoriser dans une
variable
C’est l’action de saisie: algorithmiquement on parle de lecture
27
Les Entrées/Sorties
⮚ Instruction de saisie (entrée d'information): permet d’introduire une valeur
Lire <identificateur1, identificateur2,..>
Exemple: Lire(x,y) est équivalent à Lire(x) Lire(y)
⮚ Instruction d'affichage: permet l’édition d'une valeur
Ecrire <expression1, expression2,...>
Exemples
Lire(Nom):L'ordinateur attend l'entrée du nom à partir du clavier.
Ecrire(Nb_car): L'ordinateur affiche le contenu de la variable Nb_car sur l ’écran.
28
Exercices d’application
Application-3:
Écrire un algorithme qui permet de lire:
• Le montant hors taxes d’un article: MontantHT (réel)
• Le taux TVA: TauxTVA (réel)
• Le nombre d’articles: NbArticles (entier)
puis affiche le montant total toutes taxes comprises TotalTTC sachant que:
TotalTTC = nbArticles * MontantHT * (1 + TauxTVA)
29
Exercices d’application
Corrigé :
Algorithme Calcul (* Calcul du Montant TTC d’une Facture*)
Variable
MHT, TVA, MTTC : Réel
NBART : Entier
DEBUT
Ecrire(‘Entrez le Montant HT : ‘)
Lire(MHT)
Ecrire(‘Entrez le Taux de la TVA : ‘)
Lire(TVA)
Ecrire(‘Entrez le Nombre d’Articles : ‘)
Lire(NBART)
MTTC 🡨 NBART* MHT * (1 + TVA)
Ecrire(‘Le Montant TTC est = ‘,MTTC)
FIN
30