FACULTE DES SCIENCES AIN CHOCK عي الشق كلية العلوم ن
ن
UNIVERSITE HASSAN II DE CASABLANCA الثان بالدار البيضاء
ي جامعة الحسن
Algorithmique
INITIATION À L’ALGORITHMIQUE
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 1
Introduction
Qu’est ce qu’un ordinateur?
une machine (dispositif électronique) qui manipule des données.
il a la capacité de stocker, récupérer et traiter des données.
capable d’effectuer un grand nombre de tâches.
Un système de traitement de l'information qui fonctionne par la lecture
séquentielle d'un ensemble d'instructions, organisées en programmes, qui lui font
exécuter des opérations logiques et arithmétiques.
Exécute très rapidement et sans erreurs les ordres qu'on lui donne.
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 2
Qu’est-ce qu’un programme ?
• Ensemble et enchaînement d’instructions élémentaires,
• Écrit dans un langage de programmation,
• Exécuté par un ordinateur afin de traiter les données d’un problème et renvoyer un ou plusieurs
résultats.
Données initiales Programme (Traitements) résultats
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 3
Résolution d’un problème
Pour résoudre un problème de manière informatique il y a un cheminement méthodique à
respecter :
Enoncé du problème
Spécification
Cahier des charges
Analyse
Algorithme
Traduction en langage
Programme source
Compilation
Programme exécutable
Tests et modifications
Version finale et résultats
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 4
Algorithmique
Différentes appellations:
langage algorithmique
pseudo-langage de programmation
pseudo-code
Un algorithme correspond à la description d’un processus logique écrit en langage
naturel décrivant une succession d’opérations à exécuter dans un certain ordre et
sous certaines conditions, pour passer des données de base aux résultats.
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 5
Algorithmique
Comment exécuter un algorithme sur un ordinateur ?
Algorithme → Programme
Il faut traduire l’algorithme à l’aide d’un langage de programmation connu par
l’ordinateur.
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 6
Organisation d’un programme
Algorithme monProgr
/* Constantes: initialisation obligatoire */
CONST CONST1 <- 10 : entier
CONST2 <- "bonjour!" : chaîne
déclarations
// les variables au sens strict
variable varReel1, varReel2 : réels
varChaine : chaîne
DEBUT
Instruction1
Instruction2 Corps du programme
…
FIN
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 7
Organisation d’un programme
Quelques Remarques:
• Il faut avoir une écriture rigoureuse
• Il faut avoir une écriture soignée: respecter l'indentation
• Il est important de commenter les algorithmes
• Il existe plusieurs solutions algorithmiques à un problème posé, il faut
rechercher l'efficacité de ce que l'on écrit.
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 8
Notion de variable
Les données : ensemble des informations manipulées par un programme
Les données d'un programme sont mémorisées en mémoire centrale dans des
variables (sortes de cases).
Une variable possède :
une valeur contenue par la case mémoire
un identificateur : nom unique par lequel on peut accéder à son contenu
un type qui définit la taille de la place occupée
Ne pas confondre la variable et son contenu
une variable est un contenant (case ou boîte)
le contenu d'une variable est une valeur numérique, alphanumérique…
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 9
Notion de variable
Une variable (variable) est donc :
une « boite/zone de mémoire » dans laquelle on met une valeur (un nombre, un
mot…)
peux changer (si l’utilisateur modifie la valeur par exemple)
Les variables dont la valeur ne change pas au cours de l'exécution du programme sont
appelées variables constantes (CONST)
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 10
Déclaration de variable
Toute variable doit être déclarée avant de pouvoir l'utiliser
Déclarer une variable :
réserver une place en mémoire
attribuer l'identificateur à cette place
Si plusieurs variables ont le même type, on peut les déclarer sur la même ligne
séparées par des virgules.
Syntaxe
La déclaration indique :
variable maVar : type
l’identificateur
le type
Exemple :
variable age : entier
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 11
Déclaration de variable
À propos de l’identificateur :
L’identificateur ou le nom de la variable (appelé aussi Etiquette) est une chaine de
caractère constituée de lettres ('a'..'z' ; 'A'..'Z'), chiffres ('0'..'9'), et du caractère '_'
(souligné / underscore)
Le nom de la variable ne peut pas commencer avec un chiffre !
On évitera les caractères accentués dans les noms de variables
Le nom de la variable doit être différent d'un des mots clé
A noter que l'on peut utiliser comme noms pour les variables a, b, c, x, etc… il reste
cependant préférable d'utiliser des noms significatifs
Exemple:
Variable V, Rayon, Surface: Réel
n : Entier
nom, prenom : Chaine de caractères
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 12
Déclaration de variable
Types :
Entier: les nombres entiers (ex: 2 10 205)
Réel: les nombres réels (ex 3,14 15,2)
Booléen: deux valeurs possible soit vrai, soit faux
Caractère: lettres, chiffres, ponctuation, code des opérations, espace, retour
chariot,… (ex: ‘a’ ‘+’ ‘/’)
Chaîne de caractères: suites de caractères (ex: "bonjour" )
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 13
Exemple de variables
Mémoire centrale
(mémoire vive)
◦ Identificateur : X
◦ Type : entier
◦ Valeur : 25
X 25
◦ Identificateur : Y
◦ Type : réel
Y 3,7
◦ Valeur : 3,7
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 14
Les opérateurs
Les opérations possibles sur les variables dépendent de leur type
On ne peux pas multiplier des mots…
Réels :
opérations possibles symbole ou mot clé
addition +
soustraction -
multiplication *
Division /
Comparaisons <, ≤, >, ≥, =, <> ou !=
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 15
Les opérateurs
Les opérations possibles sur les variables dépendent de leur type
On ne peux pas multiplier des mots…
Entiers :
opérations possibles symbole ou mot clé
addition +
soustraction - Si on a 2 entiers, A=3, B=4
A / B =0
Multiplication *
Division entière / ou DIV Si on a 2 entiers, A=17 et B=10
Modulo MOD (ou %) A mod B = 7
Comparaisons <, ≤, >, ≥, =, <> ou !=
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 16
Les opérateurs
Les opérations possibles sur les variables dépendent de leur type
On ne peux pas multiplier des mots…
Caractères :
opérations possibles symbole ou mot clé
comparaisons <, ≤, >, ≥, =, <> ou !=
(exemple ‘a’ < ‘z’)
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 17
Les opérateurs
Les opérations possibles sur les variables dépendent de leur type
On ne peux pas multiplier des mots…
Chaîne de caractères :
opérations possibles symbole ou mot clé
Concaténation &
Longueur Longueur (chaîne)
Extraction Extraction (sous-ch, ch)
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 18
Les opérateurs
Les opérations possibles sur les variables dépendent de leur type
On ne peux pas multiplier des mots…
Booléens :
opérations possibles symbole ou mot clé
comparaison =, <> ou !=
(9 > 7) et (3<4) est Vrai
négation NON (9 < 7) ou (3<4) est Vrai
conjonction ET
disjonction OU
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 19
Les opérateurs
Les tables de vérité:
C1 C2 C1 ET C2 C1 C2 C1 OU C2
VRAI VRAI VRAI VRAI VRAI VRAI
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX
C1 NON C1
VRAI FAUX
FAUX VRAI
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 20
Les opérateurs
Ordre des opérateurs:
Les opérateurs suivants sont ordonnés du plus prioritaire au moins prioritaire dans l'évaluation d'une
expression arithmétique:
1. Les parenthèses
2. Les opérateurs de multiplication " * " et de division " / " et le modulo "mod"
3. Les opérateurs d'addition " + " et de soustraction " - "
Remarque:
Si l'ordre entre les opérateurs dans une expression est le même, l'expression est évaluée de gauche à
droite.
Exemples:
• 3*2+4 = 6+4 =10
• 3*(2+4) = 3*6 =18
• 25 mod 10 * 3 =(25 mod 10) * 3= 5 * 3= 15
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 21
Les instructions
Une Instruction est un ordre que peut exécuter l'ordinateur
Les instructions élémentaires :
Affectation: le fait de donner une nouvelle valeur à une variable (mettre un
nombre dans une boite).
Saisie: Permet à l’ordinateur de récupérer ce que l’utilisateur tape au clavier.
Affichage: Permet à l’ordinateur d’afficher sur l'écran.
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 22
Les instructions
Une Instruction est un ordre que peut exécuter l'ordinateur
Les instructions élémentaires :
Affectation: Syntaxe
Exemples:
var <- valeur
x <- 10
y <- 2.5
z <- x (la variable z va prendre la valeur de la variable x)
resultat <- x * y + 100
nom <- ‘‘Mohamed’’
var <- ‘a’
test <- vrai
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 23
Les instructions
Une Instruction est un ordre que peut exécuter l'ordinateur
Les instructions élémentaires :
Saisie / Lecture: Syntaxe
lire ( var1 [,varN,…])
- Permet à un utilisateur de communiquer des données au programme
- Assigne une valeur entrée au clavier dans une variable
- Tant que l'utilisateur n'entre rien au clavier, le déroulement du programme est stoppé
Exemples:
Lire(age)
Utiliser le même programme pour des données différentes
Lire(a, b)
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 24
Les instructions
Une Instruction est un ordre que peut exécuter l'ordinateur
Les instructions élémentaires :
Affichage / Ecriture: Syntaxe
ecrire ( var1 [,varN,…])
- Permet de fournir des résultats à l'utilisateur à travers l'écran
- Permet d’afficher des valeurs intermédiaires
- Permet de guider l’utilisateur
Exemples:
ecrire(age) On peut afficher plusieurs trucs
à la suite grâce à la virgule !
ecrire(a, b)
ecrire("Bonjour")
ecrire ("La somme de a et b est: ", a+b)
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 25
Les instructions
Exemple complet:
Algorithme bonjour
CONST bj <- "Bonjour" : chaîne
mr <- "Monsieur " : chaîne
variable varNom, ch : chaîne
DEBUT
ecrire ("Quel est votre nom ?")
lire (varNom)
ch <- mr & varNom
ecrire (bj, ch)
FIN
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 26
Les instructions
Exemple complet:
Algorithme votreAge
Variable age: entier
DEBUT Affiche
ecrire ("Saisir votre âge:") Saisir votre âge :
lire (age) Attend que l'utilisateur rentre une valeur
exemple : 20
ecrire ("Vous avez rentré la valeur : ", age)
Affiche
FIN
Vous avez rentré la valeur : 20
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 27
TD1
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 28
Structures de contrôle
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 29
Structure alternative: Si … Alors … Sinon … Finsi
Pour exprimer le fait que des instructions vont être exécutées dans un cas alors que
d’autres instructions peuvent être exécutées dans l’autre cas, on utilise une structure
alternative.
Syntaxe
Si condition alors
Instruction 1
Instruction 2 Bloc d’instructions
…
Finsi
- Si la condition prend la valeur Vrai, le bloc d'instructions est exécuté.
- Si elle prend la valeur Faux, rien n'est fait.
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 30
Structure alternative: Si … Alors … Sinon … Finsi
Pour exprimer le fait que des instructions vont être exécutées dans un cas alors que
d’autres instructions peuvent être exécutées dans l’autre cas, on utilise une structure
alternative.
Syntaxe
Si condition alors
Instruction 1
Instruction 2 Bloc d’instructions 1
…
Sinon
Instructions … Bloc d’instructions 2
Finsi
- Si la condition prend la valeur Vrai, le bloc d'instructions 1 est exécuté.
- Si elle prend la valeur Faux, le second bloc (bloc d'instructions 2) est exécuté
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 31
Structure alternative: Si … Alors … Sinon … Finsi
• Exemple 1: algorithme qui affiche le résultat Admis ou Ajourné selon la note. Admis si
la note est supérieure ou égale à 10 et Ajourné dans le cas contraire.
Algorithme resultats
variable note : réel
DEBUT
Si note>=10 Alors
Ecrire("Admis")
Sinon
Ecrire("Ajourné")
Finsi
FIN
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 32
Structure alternative: Si … Alors … Sinon … Finsi
• Exemple 2 (structure alternative imbriquée): algorithme qui affiche "Mention : Très
Bien" si la note est supérieure à 16 et "Mention : passable" si elle est supérieure à 10 et
inférieure à 16.
Algorithme mention
variable note : réel
DEBUT
Si note>=16 Alors
Ecrire("Mention: très bien")
Sinon Si note>=10 Alors
Ecrire("Mention : passable")
Finsi
Finsi
FIN
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 33
Structure alternative: Si … Alors … Sinon … Finsi
• Exercices d’application :
1- Ecrire un algorithme qui donne la valeur absolue d'un réel saisit par l'utilisateur.
Algorithme ValAbs
variable nb : réel
DEBUT
Ecrire("Saisir un nombre réel:")
Lire(nb)
Si nb>=0 Alors
Ecrire("La valeur absolue de ",nb, "est: " , nb)
Sinon
Ecrire("La valeur absolue de ",nb, "est: " , -nb)
Finsi
FIN
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 34
Structure alternative: Si … Alors … Sinon … Finsi
• Exercices d’application :
2- Ecrire un algorithme qui demande un nombre à l’utilisateur, et l’informe ensuite si ce
nombre est positif (>=0) ou négatif (<0).
Algorithme signe_nombre
variable nb : réel
DEBUT
Ecrire("Saisir un nombre réel:")
Lire(nb)
Si nb>=0 Alors
Ecrire(nb," est positif")
Sinon
Ecrire(nb," est négatif")
Finsi
FIN
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 35
Structure alternative: Suivant Cas
L’instruction Suivant cas constitue une structure alternative à la forme en bloc [Si … Alors
…Sinon…] et permet de formuler de manière plus simple le choix du groupe d’instructions.
Syntaxe
Sivant Cas variable Faire
Cas valeur 1:
Action 1
Cas valeur 2, valeur 3, valeur 4:
Action 2
Cas valeur 5 à valeur 7:
Action 3
…
…
Sinon Cas
Action N
Fin Suivant Cas
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 36
Structure alternative: Suivant Cas
• Remarque:
- Le sélecteur (la variable) doit avoir le même type que les valeurs devant les cas.
- Dans le cas d'utilisation d'une liste de valeurs, les listes doivent être disjointes.
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 37
Structure alternative: Suivant Cas
• Exemple: algorithme qui affiche la mention en fonction de la note.
DEBUT
Suivant Cas note Faire
Cas note >= 16:
Ecrire("Mention: très bien")
Cas note >= 14:
Ecrire("Mention : bien")
Cas note >= 12:
Ecrire("Mention : assez bien")
Cas note >= 10:
Ecrire("passable")
Sinon Cas :
Ecrire("Ajourné")
Fin suivant cas
FIN
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 38
Structure alternative: Suivant Cas
• Exercice d’application: Ecrire l'algorithme qui permet de saisir un numéro de couleur de l'arc-
en-ciel et d'afficher la couleur correspondante :
1: rouge, 2 : orange, 3 : jaune, 4 : vert, 5 : bleu, 6 : indigo et 7 : violet.
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 39
Structure alternative: Suivant Cas
Algorithme arc_en_ciel
Variable num: entier
DEBUT
Ecrire("Saisir le numéro de la couleur:")
Lire(num)
Suivant Cas num Faire
Cas 1: Ecrire("rouge")
Cas 2: Ecrire("orange")
Cas 3: Ecrire("jaune")
Cas 4: Ecrire("vert")
Cas 5: Ecrire("bleu")
Cas 6: Ecrire("indigo")
Cas 7: Ecrire("violet")
Sinon Cas :
Ecrire("code inconnu")
Fin suivant cas
FIN
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 40
TD2
AZBEG KEBIRA - ALGORITHMIQUE - 2022/2023 41