Introduction à l’algorithmique et programmation
Aicha Karite
Business school
Université Euro-Méditerranéenne de Fès
1ère année EBS, AU: 2020-2021
I- Objectif
II- Introduction
III- Notion d’algorithme
IV- Notions et Instructions de base
2020-2021 Algorithmique et programmation 2
I- Objectif
I Apprendre les concepts de base de l’algorithmique et de la
programmation.
I Être capable de mettre en oeuvre ces concepts pour analyser
des problèmes simples et écrire les programmes correspondants.
2020-2021 Algorithmique et programmation 3
II- Introduction
Définition.1
I Un programme correspond à la description d’une méthode de
résolution pour un problème donné.
I Cette description est effectuée par une suite d’instructions
d’un langage de programmation.
I Ces instructions permettent de traiter et de transformer les
données (entrées) du problème à résoudre pour aboutir à des
résultats (sorties).
I Un programme n’est pas une solution en soi mais une méthode
à suivre pour trouver les solutions.
2020-2021 Algorithmique et programmation 4
Langages informatiques
Définition.2
Un langage informatique est un code de communication,
permettant à un être humain de dialoguer avec une machine en lui
soumettant des instructions et en analysant les données matérielles
fournies par le systéme.
I Le langage informatique est l’intermédiaire entre le
programmeur et la machine.
I Il permet d’écrire des programmes (suite consécutive
d’instructions) destinés à effectuer une tâche donnée
I Exemple : un programme de résolution d’une équation du
second degré
2020-2021 Algorithmique et programmation 5
Langages de programmation
I Deux types de langages :
I Langages procéduraux : Fortran, Cobol, Pascal, C, ...
I Langages orientés objets : C++, Java, Python ...
Le choix d’un langage de programmation n’est pas facile, chacun a
ses spécificités et correspond mieux à certains types d’utilisations
2020-2021 Algorithmique et programmation 6
III- Notion d’algorithme
Définition.3
I Un programme informatique permet à l’ordinateur de résoudre
un problème
I Avant de communiquer à l’ordinateur comment résoudre ce
problème, il faut en premier lieu pouvoir le résoudre nous
même.
I Un algorithme peut se comparer à une recette de cuisine
I Le résultat c’est comme le plat à cuisiner
I Les données sont l’analogues des ingrédients de la recette
I Les règles de transformations se comparent aux directives ou
instructions de la recette
2020-2021 Algorithmique et programmation 7
Algorithme informatique
I Un algorithme est une suite d’instructions ayant pour but de
résoudre un problème donné. Ces instructions doivent être
exécutées de façon automatique par un ordinateur.
Exemples :
I préparer une recette de cuisine
I montrer le chemin à un touriste
I etc...
2020-2021 Algorithmique et programmation 8
Algorithme et programme
I L’élaboration d’un algorithme précède l’étape de
programmation
I Un programme est un algorithme
I Un langage de programmation est un langage compris par
l’ordinateur
I L’élaboration d’un algorithme est une démarche de résolution
de problème exigeante
I La rédaction d’un algorithme est un exercice de réflexion qui se
fait sur papier
I L’algorithme est indépendant du langage de programmation
I Par exemple, on utilisera le même algorithme pour une
implantation en Java, ou bien en C++ ou en Visual Basic
I L’algorithme est la résolution brute d’un problème informatique
2020-2021 Algorithmique et programmation 9
Algorithmique
I algorithme = méthode de résolution
I algorithme vient du nom du célèbre mathématicien arabe Al
Khawarizmi (Abu Ja’far Mohammed Ben Mussa Al-Khwarismi)
I L’algorithmique désigne aussi la discipline qui étudie les
algorithmes et leurs applications en Informatique
I Une bonne connaissance de l’algorithmique permet d’écrire des
algorithmes exacts et efficaces
2020-2021 Algorithmique et programmation 10
IV- Notions et Instructions de base
Instructions de base
I Un programme informatique est formé de quatre types
d’instructions considérées comme des petites briques de base :
I l’affectation de variables
I la lecture et l’écriture
I les tests
I les boucles
2020-2021 Algorithmique et programmation 11
Notion de variable
I Une variable sert à stocker la valeur d’une donnée dans un
langage de programmation
I Une variable désigne un emplacement mémoire dont le
contenu peut changer au cours d’un programme
I Chaque emplacement mémoire a un numéro qui permet d’y
faire référence de façon unique : c’est l’adresse mémoire de
cette cellule.
I Règle : La variable doit être déclarée avant d’être utilisée, elle
doit être caractérisée par :
I un nom (Identificateur)
I un type qui indique l’ensemble des valeurs que peut prendre la
variable (entier, réel, booléen, caractère, chaîne de caractères,
...)
I Une valeur
2020-2021 Algorithmique et programmation 12
Identificateurs : règles
Le choix du nom d’une variable est soumis à quelques règles qui
varient selon le langage, mais en général :
I Un nom doit commencer par une lettre alphabétique
Exemples : E1 (1E n’est pas valide)
I doit être constitué uniquement de lettres, de chiffres et du
soulignement (" _ ") (éviter les caractères de ponctuation et
les espaces)
Exemples : S1, S_1 (S 1, S-1, S ;1 : sont non valides)
I doit être différent des mots réservés du langage (par exemple
en C : int, float, double, switch, case, for, main, return, ...)
2020-2021 Algorithmique et programmation 13
Identificateurs : conseils
Conseil :
pour la lisibilité du code choisir des noms significatifs qui décrivent
les données manipulées.
Exemples : NoteEtudiant, Prix, Somme...
Remarque
en pseudo-code algorithmique, on va respecter les règles citées,
même si on est libre dans la syntaxe.
2020-2021 Algorithmique et programmation 14
Types des variables
Le type d’une variable détermine l’ensemble des valeurs qu’elle peut
prendre. Les types offerts par la plus part des langages sont :
I Type numérique (entier ou réel)
I Byte (codé sur 1octet)
I Entier court (codé sur 2 octets)
I Entier long (codé sur 4 octets)
I Réel simple précision (codé sur 4 octets) : précision d’ordre
10−7
I Réel double précision (codé sur 8 octets) : précision d’ordre
10−14
2020-2021 Algorithmique et programmation 15
I Type logique ou booléen : deux valeurs VRAI ou FAUX
I Type caractère : lettres majuscules, minuscules, chiffres,
symboles,..
Exemples : "A","b", "1", " ?", ...
I Type chaîne de caractère : toute suite de caractères
Exemples : " ", " Nom, Prénom", "code postale : 1000", ...
2020-2021 Algorithmique et programmation 16
Déclaration des variables
Rappel
toute variable utilisée dans un programme doit avoir fait l’objet
d’une déclaration préalable.
I En pseudo-code, la déclaration de variables est effectuée par la
forme suivante :
Variables liste d’identificateurs : type
I Exemple :
Variables i, j, k : entier
x, y : réel
OK : booléen
Ch1, ch2 : chaîne de caractères
2020-2021 Algorithmique et programmation 17
Constante
I 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.
I En pseudo-code, Constante identificateur=valeur : type (par
convention, les noms de constantes sont en majuscules)
I Exemple : pour calculer la surface des cercles, la valeur de pi
est une constante mais le rayon est une variable.
Constante PI=3.14 : réel
I Une constante doit toujours recevoir une valeur dès sa
déclaration.
2020-2021 Algorithmique et programmation 18
Affectation
I L’affectation consiste à attribuer une valeur à une variable
(c’est-à-dire remplir ou modifier le contenu d’une zone
mémoire).
I En pseudo-code, l’affectation est notée par le signe ←
Var ← e : attribue la valeur de e à la variable Var
I e peut être une valeur, une autre variable ou une expression
I Var et e doivent être de même type ou de types compatibles
I l’affectation ne modifie que ce qui est à gauche de la flèche
Exemples : i ← 1 , j ← i, k ← i + j
x ← 10.3, OK ← FAUX
(avec i, j, k : entier ; x :réel ; OK :booléen)
2020-2021 Algorithmique et programmation 19
I Les langages de programmation C, C++, Java, ... utilisent le
signe égal = pour l’affectation ←
Remarques
I Lors d’une affectation, l’expression de droite est évaluée et la
valeur trouvée est affectée à la variable de gauche. Ainsi,
A ← B est différente de B ← A
I Certains langages donnent des valeurs par défaut aux variables
déclarées. Pour éviter tout problème il est préférable
d’initialiser les variables déclarées.
2020-2021 Algorithmique et programmation 20
Syntaxe générale de l’algorithme
Algo exemple
/* La partie déclaration de l’algorithme /
Constantes (les constantes nécessitent une valeur dès leur
déclaration)
var 1 ← 20 : entier
var 2 ← ”bonjour !” : chaîne
Variables ( les variables proprement dites)
var3, var4 : réels
var5 : chaîne
Début (corps de l’algorithme)
/* instructions */
Fin
2020-2021 Algorithmique et programmation 21
Affectation : exercices
Exercice 1 :
Donnez les valeurs des variables A, B et C après exécution des
instructions suivantes ?
Variables A, B, C : Entier
Début
A←5
B←3
A←B
C ←A+B
A←2
C ←B −A
Fin
2020-2021 Algorithmique et programmation 22
Exercice 2 :
Quelles seront les valeurs des variables A, B et C après exécution
des instructions suivantes ?
Variables A, B, C : Entier
Début
A←3
B ← 10
C ←A+B
B ←A+B
A←C
Fin
2020-2021 Algorithmique et programmation 23
Exercice 3 :
Quelles seront les valeurs des variables A et C après exécution des
instructions suivantes ?
Variables A, B : Entier
Début
A←5
B←2
A←B
B←A
Fin
2) les deux dernières instructions permettent-elles d’échanger les
deux valeurs de B et A ? Si l’on inverse les deux dernières
instructions, cela change-t-il quelque chose ?
2020-2021 Algorithmique et programmation 24
Exercice 4 :
Ecrire un algorithme permettant d’échanger les valeurs de deux
variables A et B.
2020-2021 Algorithmique et programmation 25
Expressions et opérateurs
I Une expression peut être une valeur, une variable ou une
opération constituée de variables reliées par des opérateurs
Exemples : 1, b, a*2, a+ 3*b-c, ...
I L’évaluation de l’expression fournit une valeur unique qui est le
résultat de l’opération
I Les opérateurs dépendent du type de n, ils peuvent être :
I des opérateurs arithmétiques : +, -, *, /, % (modulo), ˆ
(puissance)
I des opérateurs logiques : NON( !), OU(| |), ET (&&)
I des opérateurs relationnels : =, <, >, <=, >=
I des opérateurs sur les chaînes : & (concaténation)
I Une expression est évaluée de gauche à droite mais en tenant
compte des priorités des opérateurs.
2020-2021 Algorithmique et programmation 26
Expression : remarques
I On ne peut pas additionner un entier et un caractère
I Toutefois dans certains langages on peut utiliser un opérateur
avec deux opérandes de types différents, c’est par exemple le
cas avec les types arithmétiques (4 + 5.5)
I La signification d’un opérateur peut changer en fonction du
type des opérandes
I l’opérateur + avec des entiers effectue l’addition, 3+6 vaut 9
I avec des chaînes de caractères il effectue la concaténation
"bonjour" + " tout le monde" vaut "bonjour tout le monde"
I x+y/z : est une expression arithmétique dont le type dépend
des types de x, y et z
2020-2021 Algorithmique et programmation 27
I (x>y) | | !(x=y+1) : est une expression booléenne (| | dénote
l’opérateur logique ou et ! Dénote la négation)
I Avant d’utiliser une variable dans une expression, il est
nécessaire qu’une valeur lui ait été affectée.
I La valeur de l’expression est évaluée au moment de
l’affectation
I x ←4
I y ←6
I z ←x +y
I Ecrire(z)
I y ← 20
I Ecrire(z)
2020-2021 Algorithmique et programmation 28
Priorité des opérateurs
I Pour les opérateurs arithmétiques donnés ci-dessus, l’ordre de
priorité est le suivant (du plus prioritaire au moins prioritaire) :
I () : les parenthèses
I ˆ : (élévation à la puissance)
I * , / : (multiplication, division)
I % : (modulo)
I + , - : (addition, soustraction)
Exemples : 9 + 3 * 4 vaut 21
I En cas de besoin, on utilise les parenthèses pour indiquer les
opérations à effectuer en priorité
Exemples : (9 + 3) * 4 vaut 48
I A priorité égale, l’évaluation de l’expression se fait de gauche à
droite
2020-2021 Algorithmique et programmation 29
Les opérateurs booléens
I Associativité des opérateurs "et" et "ou"
a et (b et c) = (a et b) et c
I Commutativité des opérateurs "et" et "ou"
a et b = b et a a ou b = b ou a
I Distributivité des opérateurs "et" et "ou"
a ou (b et c) = (a ou b) et (a ou c)
a et (b ou c) = (a et b) ou (a et c)
I Involution (homographie réciproque) : non non a = a
I Loi de Morgan : non(a ou b)=non a et non b
non (a et b) = non a ou non b
2020-2021 Algorithmique et programmation 30
Tables de vérité
2020-2021 Algorithmique et programmation 31
Les instructions d’entrées et sorties : lecture et écriture
I Les instructions de lecture et d’écriture permettent à la
machine de communiquer avec l’utilisateur
I La lecture permet d’entrer des donnés à partir du clavie
En pseudo-code, on note : lire (var)
La machine met la valeur entrée au clavier dans la zone
mémoire nommée var
I Remarque : Le programme s’arrête lorsqu’il rencontre une
instruction Lire et ne se poursuit qu’après la saisie de l’entrée
attendue par le clavier et de la touche Entrée (cette touche
signale la fin de l’entrée)
I Conseil : Avant de lire une variable, il est fortement conseillé
d’écrire des messages à l’écran, afin de prévenir l’utilisateur de
ce qu’il doit frapper
2020-2021 Algorithmique et programmation 32
I L’écriture permet d’afficher des résultats à l’écran (ou de les
écrire dans un fichier)
I En pseudo-code, on note :écrire (liste d’expressions)
la machine affiche les valeurs des expressions décrite dans la
liste.
Ces instructions peuvent être des variables ayant des valeurs,
des nombres ou des commentaires sous forme de chaines de
caractères.
I Exemple : écrire(a, b+2, "Message")
2020-2021 Algorithmique et programmation 33
Exemple
Ecrire un algorithme qui demande un nombre entier à l’utilisateur,
puis qui calcule et affiche le carré de ce nombre
Algorithme Calcul_du_Carre
Rôle : calcul du carre
Données : un entier
Résultats : le carre du nombre
variables A, B : entier
Début
écrire("entrer la valeur de A ") lire(A)
B ←A∗A
écrire("le carre de ", A, "est :", B)
Fin
2020-2021 Algorithmique et programmation 34
Exercice : lecture et écriture
Ecrire un algorithme qui permet d’effectuer la saisie d’un nom, d’un
prénom et affiche ensuite le nom complet.
2020-2021 Algorithmique et programmation 35
Corrigé
Algorithme AffichageNomComplet
variables Nom, Prenom, Nom_Complet : chaîne de caractères
Début
écrire("entrez le nom")
lire(Nom)
écrire("entrez le prénom")
lire(Prenom)
Nom_Complet ← Nom&””&Prenom
écrire("Votre nom complet est : ", Nom_Complet)
Fin
2020-2021 Algorithmique et programmation 36
Tests : instructions conditionnelles
I Définition : une condition est une expression écrite entre
parenthèse à valeur booléenne.
I Les instructions conditionnelles servent à n’exécuter une
instruction ou une séquence d’instructions que si une condition
est vérifiée
I En pseudo-code :
Si condition alors
instruction ou suite d’instructions1
Sinon
instruction ou suite d’instructions2
Finsi.
2020-2021 Algorithmique et programmation 37
2020-2021 Algorithmique et programmation 38
I Remarques :
I la condition ne peut être que vraie ou fausse
I si la condition est vraie alors seules les instructions1 sont
exécutées
I si la condition est fausse seules les instructions2 sont exécutées
I la condition peut être une expression booléenne simple ou une
suite composée d’expressions booléennes
I La partie Sinon est optionnelle, on peut avoir la forme
simplifiée suivante :
Si condition alors
instruction ou suite d’instructions1
Finsi
2020-2021 Algorithmique et programmation 39
Si...Alors...Sinon
Exemple
Algorithme ValeurAbsolue1
Rôle : affiche la valeur absolue d’un entier
Données : la valeur à calculer
Résultat : la valeur absolue
Variable x : réel
Début
Ecrire (" Entrez un réel : ")
Lire (x)
Si x < 0 alors Ecrire ("la valeur absolue de ", x, "est :",-x)
Sinon
Ecrire ("la valeur absolue de ", x, "est :",x)
Finsi
Fin
2020-2021 Algorithmique et programmation 40
Exercice (tests)
I Ecrire un algorithme qui demande un nombre entier à
l’utilisateur, puis qui teste et affiche s’il est divisible par 7 ou
non.
2020-2021 Algorithmique et programmation 41
Corrigé
I Algorithme Divsible_par7
Variable n : entier
Début
Ecrire (" Entrez un entier : ")
Lire (n)
Si (n%7=0) alors
Ecrire (n," est divisible par 7")
Sinon
Ecrire (n," n’est pas divisible par 7")
Finsi
Fin
2020-2021 Algorithmique et programmation 42
Conditions composées
I 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
I Exemples :
I x compris entre 2 et 6 : (x >= 2) ET (x < =6)
I n divisible par 3 ou par 2 : (n%3=0) OU (n%2=0)
I deux valeurs et deux seulement sont identiques parmi a, b et
c : (a=b) XOR (a=c) XOR (b=c)
I L’évaluation d’une condition composée se fait selon des règles
présentées généralement dans ce qu’on appelle tables de vérité
2020-2021 Algorithmique et programmation 43
Tests imbriqués
I Les tests peuvent avoir un degré quelconque d’imbrications
2020-2021 Algorithmique et programmation 44
Tests imbriqués : exemple 1
2020-2021 Algorithmique et programmation 45
Tests imbriqués : exemple 2
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
I Remarque : dans l’exemple 2 on fait trois tests
systématiquement alors que dans l’exemple 1, si le nombre est
négatif on ne fait qu’un seul test
I Conseil : utiliser les tests imbriqués pour limiter le nombre de
tests et placer d’abord les conditions les plus probables
2020-2021 Algorithmique et programmation 46
Tests imbriqués : exercice
I Le prix de disques compacts (CDs) dans espace de vente varie
selon le nombre à acheter :
5 DH l’unité si le nombre de CDs à acheter est inférieur à 10,
4 DH l’unité si le nombre de CDS à acheter est compris entre
10 et 20 et 3 DH l’unité si le nombre de CDs à acheter est
au-delà de 20.
I Ecrivez un algorithme qui demande à l’utilisateur le nombre de
CDs à acheter, qui calcule et affiche le prix à payer
2020-2021 Algorithmique et programmation 47
Tests imbriqués : corrigé
2020-2021 Algorithmique et programmation 48