Vous êtes sur la page 1sur 14

Sciences Economiques – Semestre 4 – Cours d’Algorithmique

COURS ALGORITHMIQUE – PARTIE 1

SCIENCES ECONOMIQUES - SEMESTRE 4 – 2020/2021

A. DRISSI / I. MZILI / M. BENHADDOU


Sciences Economiques – Semestre 4 – Cours d’Algorithmique

Introduction

L'algorithmique est l’ensemble des règles et des techniques permettant de définir et de


concevoir des algorithmes.

En informatique, un algorithme est une sorte de « plan » composé d’une suite finie d’instructions
(écrites selon un format adapté aux langages compréhensibles par les ordinateurs) destinées à la
résolution d’un problème donné. Pour que ce plan (algorithme) soit transformé en un programme (qui
s’exécute sur un ordinateur), il suffit de réécrire ses instructions en un langage compréhensible par
l’ordinateur (comme les langages classiques : Pascal, C, Basic, Fortran, etc.). Une fois exécuté, le
programme conçu permet d’aboutir à une solution du problème posé.

De ce point de vue, l’algorithmique est une première étape nécessaire à la compréhension de la


logique de communication avec les ordinateurs, par le biais des langages de programmation (et parfois
même via les logiciels).

Un algorithme peut s’écrire indépendamment de tout langage de programmation mais doit


respecter la logique d’écriture des programmes, utilisée par l’essentiel des langages de programmation.

De ce fait, dans le présent cours, nos algorithmes seront écrits à l’aide d’un pseudo-langage (ou
pseudo-code) proche des langages de programmation classiques.

I- Les variables

Dotée d’un nom (X, A, Var, Truc, …), une variable est un espace qui permet de stocker une valeur
(numérique, logique, texte, etc.). Une variable doit être « déclarée » en début d’algorithme pour que
l’ordinateur puisse lui réserver l’espace nécessaire en mémoire. La déclaration d’une variable permet de
fixer son nom, son « type » (numérique, logique, texte, etc.) et éventuellement sa valeur initiale.

La forme générale d’un algorithme se présente comme suit :

Variables …
Début
Instruction 1
Instruction 2
….
Instruction n
Fin

Il est composé d’une partie déclarations et d’une partie corps de l’algorithme.

La partie déclarations commence par le mot clé Variables et permet de lister toutes les variables
que l’algorithme utilisera ainsi que leurs types. Par exemple :

Variable A en Numérique
Indique la déclaration d’une variable nommée A de type numérique. L’ordinateur va donc réserver un
espace en mémoire pour cette variable. La taille de cet espace est déterminée par le type (ici
Numérique). Bien sûr, certains types consomment plus d’espaces en mémoire que d’autres.

La partie corps de l’algorithme est délimitée par les mots clés Début et Fin. Elle est composée
d’une suite finie d’instructions, placées les unes après les autres. Chaque instruction est un ordre
donné à l’ordinateur. Il faut noter ici, que ces ordres seront exécutés de manière séquentielle : on
exécute d’abord l’Instruction 1, puis l’Instruction 2 … et enfin l’Instruction n.
Sciences Economiques – Semestre 4 – Cours d’Algorithmique

Exemple d’instruction : l’affectation

Il est important de noter qu’une variable, ne peut prendre qu’une valeur à la fois. Par contre,
cette valeur peut être modifiée à tout moment par une instruction de l’algorithme.

Une instruction de base permettant de modifier la valeur d’une variable est l’affectation. Dans
notre pseudo-code, l’affectation est représentée par le signe ←. Dans l’exemple Algorithme 1,
l’instruction :

A ← 10
demande à l’ordinateur d’affecter la valeur 10 à la variable A.

Algorithme 1 :
Variable A en Numérique
Début
A ← 10
Fin
Ici, la variable A est déclarée comme de type numérique. Cet algorithme lui affecte la valeur 10.

Algorithme 2 :
Variable A en Numérique
Début
A ← 10
A ← 20
Fin
Ici, la variable A est prend d’abord la valeur 10. Cette valeur est écrasée et est remplacée par la
valeur 20 après la deuxième instruction d’affectation.

Algorithme 3 :
Variables A, B en Numérique
Début
A ← 10
B←A
A ← 15
Fin
Ici, on déclare deux variables numériques A et B. La première instruction affecte la valeur 10 à A.
A ce moment, B n’a pas encore de valeur. La seconde instruction affecte à B, la valeur de A (donc
10). A ce moment, A et B ont tous les deux la valeur 10. La troisième instruction écrase la valeur
courante (10) de A par une nouvelle valeur (15). Donc en fin d’algorithme, A a la valeur 15 et B la
valeur 10.

Remarque :
Comme dans les langages de programmation, notre pseudo-code n’évalue que la partie droite de
l’affectation :

A ← 10 : Ici 10 est évaluée mais pas A. La valeur de 10 est 10 (bien sûr).


B← A : Ici A est évaluée (sa valeur à ce moment est 10) et c’est cette valeur qui est affectée à B.

De manière générale, une affectation est toujours de la forme :


X ← Expression
X est la variable à affecter. Sa valeur va être l’évaluation de Expression. Cette dernière est une
expression qui peut être composée d’une valeur, d’une variable ou d’un ensemble de valeurs et de
variables reliés par des opérateurs (exemple : 3 + Y – 2*Z)
Sciences Economiques – Semestre 4 – Cours d’Algorithmique

Quelques types de variables dans notre pseudo-code :

Numérique : regroupe les nombres de toutes sortes (entiers, réels, …)


Caractère : regroupe les lettres, les signes de ponctuation, les espaces et même les chiffres si on les
utilise comme caractère.
Chaîne : c’est un groupe de caractère. Les chaînes sont toujours notées en guillemets.
Booléen : type logique prenant les valeurs Vrai et Faux considérés comme 1 et 0.

Quelques opérateurs :

Opérateurs numériques :
Ce sont les quatre opérations arithmétiques, tout ce qu’il y a de classique.
+ : addition
- : soustraction
* : multiplication
/ : division

Remarque :
Il y a également le signe ^ qui signifie « puissance ». 9 au carré s’écrira donc 9 ^ 2.

Opérateurs logiques (ou booléens) : il s’agit du ET, du OU et du NON. (A voir plus tard)

Exercices
Exercice 1
Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?
Variables A, B, C en Numérique
Début
A←7
B←3
C←A+B
A←6
C←B–A
Fin

Exercice 2
Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
Variables A, B en Numérique
Début
A←7
B←A+3
A←A+8
B←A–2
Fin

Exercice 3 (à faire après avoir vu les instructions de lecture et d’écriture)


Ecrire un algorithme qui demande à l’utilisateur d’entrer les valeurs de deux variables A et B puis
échange ces deux valeurs (la valeur de A devient celle de B et la valeur de B devient celle de A). A la
fin, le programme affiche les nouvelles valeurs de A et B. Exemple : si au début de l’algorithme A vaut
3 et B vaut 5 alors, en fin d’algorithme, A doit valoir 5 et B doit valoir 3.
Sciences Economiques – Semestre 4 – Cours d’Algorithmique

II- Les instructions de lecture et d’écriture :

Afin de permettre une meilleure interaction entre l’ordinateur et l’utilisateur, les programmes permettent
souvent l’insertion de données via le clavier (dit entrée standard) ainsi que l’affichage des résultats sur
l’écran (dit sortie standard).

Pour cela il y a l’instruction de lecture :


Lire X, Y, …
Et l’instruction d’écriture :
Ecrire X, Y, …

Lire X, Y, … indique à l’ordinateur qu’il doit attendre de lire une valeur entrée par l’utilisateur du
programme (via le clavier) et l’affecter à la variable X. Ensuite, attendre de lire une deuxième valeur
entrée par l’utilisateur et l’affecter à Y, etc.

Ecrire X, Y, … indique à l’ordinateur qu’il doit afficher (à l’écran) la valeur de la variable X, puis celle
de la variable Y, etc. Il est important ici de noter que tout ce qui suit le mot clé Ecrire sera évalué (et
doit donc avoir une valeur au moment de l’exécution de l’instruction d’écriture). Si une variable n’a pas
encore de valeur au moment de l’exécution de l’instruction Ecrire, l’ordinateur va afficher une erreur
et le programme s’arrête.

Par exemple,

Variables A en Numérique
Début
A←7
Ecrire A
Fin

Cet algorithme affecte la valeur 7 à la variable A (instruction A ← 7) puis affiche 7 (valeur courante de
la variable A au moment de l’exécution de l’instruction Ecrire A).

Variables A en Numérique
Début
Ecrire A
A←7
Fin

Ici, l’ordinateur va afficher une erreur et s’arrêter. En effet, l’ordre d’afficher la valeur de la variable A
(Ecrire A) se fait avant que celle-ci n’ait une valeur. L’ordre séquentiel de l’exécution des instructions
est important !

Un autre point important de l’instruction d’écriture est l’utilisation des guillemets lorsqu’on souhaite
afficher une chaine de caractères (une lettre, un mot, une phrase …). Par exemple, l’instruction :
Ecrire « A »
indique à l’ordinateur qu’il doit afficher la lettre A à l’écran et non la valeur de cette variable.

Variables A en Numérique
Début
A←7
Ecrire A
Fin

affiche 7 à l’écran, alors que :


Sciences Economiques – Semestre 4 – Cours d’Algorithmique

Variables A en Numérique
Début
A←7
Ecrire « A »
Fin

affiche la lettre A à l’écran.

Autre exemple :

Variable P, N en Chaîne
Début
Ecrire « Entrez votre prénom »
Lire P
Ecrire « Entrez votre nom »
Lire N
Ecrire « Vous êtes : », «Monsieur », « », P, « », N
Fin

Cet algorithme est composé d’une suite d’instructions de lecture et d’écriture.

Ecrire « Entrez votre prénom »


affiche à l’écran la phrase : Entrez votre prénom (car cette phrase est indiquée entre guillemets).

Lire P
indique à l’ordinateur qu’il doit attendre que l’utilisateur entre quelque chose au clavier, puis mettre
cette chose dans la variable P. Comme cette dernière est de type chaîne, ce qui est entré au clavier doit
être une chaine de caractères (une lettre, un mot, une phrase …). C’est normal car on attend de mettre
un prénom (entré par l’utilisateur) dans cette variable.

Ecrire « Entrez votre nom »


affiche à l’écran la phrase : Entrez votre nom (car cette phrase est indiquée entre guillemets).

Lire N
indique à l’ordinateur qu’il doit attendre que l’utilisateur entre une chaine de caractères (au clavier)
pour la mettre dans la variable N.

Ecrire « Vous êtes : », «Monsieur », « », P, « », N


Ici, ce qui est entre guillemets sera affiché textuellement et ce qui ne l’est pas (les variables P et N)
sera affiché par valeur.

Pour mieux comprendre, imaginons que cet algorithme soit transformé en programme (via un vrai
langage de programmation) et exécuté sur un ordinateur. Voici le déroulement de l’exécution :
Sciences Economiques – Semestre 4 – Cours d’Algorithmique

Supposons que l’utilisateur entre au clavier : Khalid. Le programme va mettre ce texte dans la variable
P et poursuivra l’exécution de la commande suivante (Ecrire « entrez votre nom »). Après affichage de
cette nouvelle phrase, il va attendre à nouveau que l’utilisateur entre le nom au clavier.

Supposons que cette fois-ci l’utilisateur entre : Moussaoui. Le programme va mettre ce texte dans la
variable N et poursuivra l’exécution de la commande suivante (Ecrire « Vous êtes : », «Monsieur », « »,
P, « », N).
Sciences Economiques – Semestre 4 – Cours d’Algorithmique

Notez ici qu’à l’écran, ce qui est indiqué entre guillemets (« vous êtes : » et « Monsieur ») apparait
textuellement alors que pour le reste (variables P et N), ce sont les valeurs qui sont affichées (Khalid et
Moussaoui). De même, le « » indiqué après «Monsieur», au niveau la dernière instruction Ecrire,
explique à l’ordinateur qu’il faut placer un espace blanc après le mot Monsieur. Idem entre les mots
contenus dans les variables P et N. Si cet espace blanc n’est pas indiqué, l’ordinateur va afficher ces
deux mots collés (KhalidMoussaoui).

III- Le test SI

En reprenant le dernier exemple (cf. instructions de lecture/écriture) on se rend compte qu’il


considère toujours la personne comme étant un Monsieur ! Si par exemple l’utilisateur est une femme
qui entre les mots : Samira et Badri, on aura :

car l’algorithme n’a prévu que le cas « Monsieur ». Il serait judicieux de reformuler ce programme de
manière à ce qu’il puisse aussi identifier les femmes. Comme le concepteur de l’algorithme ne peut
prévoir à l’avance si l’utilisateur sera femme ou homme, il doit demander à celui-ci s’il est homme ou
femme avant d’afficher « Vous êtes Monsieur » ou « Vous êtes Madame ».

La modification consiste à inclure une variable Sexe (1 pour homme et 2 pour femme) et de répondre
« Monsieur » ou « Madame » en fonction du sexe annoncé par l’utilisateur. Grâce à une instruction
conditionnelle appelée « Si », on peut établir cette nouvelle version du programme :

Variable P, N en chaîne
Variable Sexe en Numérique
Début
Ecrire « Entrez votre prénom »
Lire P
Ecrire « Entrez votre nom »
Lire N
Ecrire « Entrez 1 si vous êtes homme et 2 si vous êtes femme »
Lire Sexe
Si (Sexe = 1) Alors
Ecrire « Vous êtes : », «Monsieur », « », P, « », N
Sinon
Ecrire « Vous êtes : », «Madame », « », P, « », N
Finsi
Fin
Sciences Economiques – Semestre 4 – Cours d’Algorithmique

La forme générale d’un test Si est comme suit :

Si condition Alors
Instructions1
Sinon
Instructions2
Finsi

où Instructions1 et Instructions2 sont des blocs d’instructions (une ou plusieurs instructions à la suite).
Instruction1 est dit « Bloc Alors » et Instructions2 est dit « Bloc Sinon ».

Parfois, s’il n’y a pas d’instructions2 à faire, on se contente de la forme réduite :

Si condition Alors
Instructions 1
Finsi

Fonctionnement : si la condition est vérifiée (c’est-à-dire : Vraie) on exécute les instructions1 sinon
(condition fausse) on exécute les instructions2.
L’expression ‘condition’ doit aboutir à vrai ou faux. Elle peut être simple ou composée.

Exemple de conditions : les conditions avec comparaison :


X = 23 (égalité), X > Z (strictement supérieur)…
On note les opérateurs : =, >, <, >= (supérieur ou égal), <= (inférieur ou égal), /= (différent).

Reprenant maintenant l’algorithme modifié (après y avoir inclus la variable Sexe et l’instruction Si).
L’exécution donnerait :

Grâce à l’instruction « Si », nous avons pu prévoir tous les cas possibles des utilisateurs et le programme
précise maintenant Madame ou Monsieur.
Sciences Economiques – Semestre 4 – Cours d’Algorithmique

Quelques remarques :

Tests imbriqués

Les blocs instructions1 et instructions2 peuvent eux-mêmes contenir un test « Si ». Dans ce cas, on parle
de tests imbriqués. Exemple :
Un programme qui affiche le repas associé à un moment donné de la journée :
Matin : Petit-déjeuner, Midi : Déjeuner et Soir : Diner.

Variable Mom en Numérique


Début
Ecrire « Choisir le moment : 1 pour Matin, 2 pour Midi et 3 pour Soir »
Lire Mom
Si (Mom = 1) Alors
Ecrire « Petit-Déjeuner »
Sinon
Si (Mom = 2) Alors
Ecrire « Déjeuner »
Sinon
Ecrire « Diner »
Finsi
Finsi
Fin

A l’exécution, cet algorithme affichera le repas en fonction du choix 1, 2 ou 3 entré par l’utilisateur.
Exemples d’exécutions :

Ici l’utilisateur a entré 2. La variable Mom prend alors la valeur


2. Dans le premier « Si » on évalue la condition (Mom = 1). Elle est fausse car Mom a pris la valeur 2
(différente de 1) dans cette exécution. L’ordinateur va alors exécuter le Bloc Sinon de ce « Si ». Ce bloc
est lui-même composé d’un autre « Si ». On évalue sa condition (Mom = 2). Cette fois la condition est
vraie car Mom = 2. L’ordinateur va donc exécuter le Bloc Alors de ce deuxième « Si » (Ecrire
« Déjeuner »). D’où le résultat affiché.
Sciences Economiques – Semestre 4 – Cours d’Algorithmique

Exercice 4 :
Un magasin de reprographie facture 0,10 Dhs les dix premières photocopies, 0,09 Dhs les vingt suivantes
et 0,08 Dhs au-delà. Ecrivez un algorithme qui demande à l’utilisateur le nombre de photocopies
effectuées et qui affiche le montant total à payer.
Par exemple, si l’utilisateur entre le nombre 35 (photocopies), le programme doit afficher 3,2 (car
10*0,1+20*0,09+5*0,08 = 3,2)

Conditions composées :

L’expression de certaines conditions exige parfois l’utilisation des connecteurs logiques classiques : ET,
OU et NON. Dans notre pseudo-code on va adopter la syntaxe :
Expression1 ET Expression2,
Expression1 OU Expression2,
NON(Expression),

Exemples :

La condition : X >23 ET X<45 traduit l’expression mathématique 23<X<45.


La condition : X<=23 OU X >=45 est équivalente à NON (X >23 ET X<45).
Le programme ci-dessous détermine le signe du produit de deux entiers (sans calculer ce produit) :

Variables X, Y en Numérique
Début
Ecrire "Entrez deux nombres : "
Lire X, Y
Si (X > 0 ET Y > 0) OU (X < 0 ET Y < 0) Alors
Ecrire "Le produit de ces deux nombres est positif"
Sinon
Ecrire "Le produit de ces deux nombres est négatif"
Finsi
Fin

Remarque : dans cet algorithme nous n’avons pas prévu le cas où X = 0 ou Y = 0. Si l’utilisateur
entre le nombre 0 (en X ou en Y), qu’affiche l’algorithme ?
Sciences Economiques – Semestre 4 – Cours d’Algorithmique

Exercice 5:

Un module est composé de deux matières. La condition de réussite est d’avoir une moyenne du
module supérieure ou égale à 10 sans avoir une note éliminatoire dans une des deux matières. La
matière Math a un coefficient de 2 et la matière Info a un coefficient de 1. La note éliminatoire est de
6/20.

Ecrire un algorithme qui lit les deux notes et qui affiche l’un des résultats suivants :
« Succès » : la moyenne est supérieure ou égale à 10 avec aucune note éliminatoire.
« Echec pour note éliminatoire » : la moyenne est supérieure ou égale à 10 mais il y a une note
éliminatoire.
« Echec » : la moyenne est strictement inférieure à 10.

Exemples d’exécution :
Sciences Economiques – Semestre 4 – Cours d’Algorithmique

Exercice 5 (variante 1) : reprendre l’algorithme de l’exercice précédent et le compléter pour afficher


les mentions :
- Echec si Moy < 10
- Echec pour note éliminatoire si Moy >= 10 avec une note éliminatoire
- Passable : 10<= Moy < 12 et pas de note éliminatoire
- A. Bien : 12<= Moy < 14 et pas de note éliminatoire
- Bien : 14<= Moy < 16 et pas de note éliminatoire
- T. Bien : 16 <= Moy et pas de note éliminatoire

Voici tous les cas possibles :

Cas Affichage
Moy < 10 Echec.
Moy >= 10, Math < 6, Info >= 10 Echec pour note éliminatoire.
Moy >= 10, Math >= 10, Info < 6 Echec pour note éliminatoire.
10<= Moy < 12, Math > 6, Info > 6 Succès avec la mention : Passable
12<= Moy < 14, Math > 6, Info > 6 Succès avec la mention : A. Bien
14<= Moy < 16, Math > 6, Info > 6 Succès avec la mention : Bien
16<= Moy, Math > 6, Info > 6 Succès avec la mention : T. Bien

Exemples d’exécution
Sciences Economiques – Semestre 4 – Cours d’Algorithmique

Question : l’algorithme proposé ci-dessous est-il valide pour cet exercice (exercice 5 variante 1) ?

Variables Math, Info, Moy en Numérique


Début
Ecrire "Entrez la note de Mathématique : "
Lire Math
Ecrire "Entrez la note d’informatique : "
Lire Info
Moy ← (2*Math+Info)/3
Si (Moy < 10) Alors
Ecrire "Echec"
Sinon
Ecrire " Succès avec la mention :"
Si (Moy < 12) Alors Ecrire « Passable »
Finsi
Si (Moy < 14) Alors Ecrire « A.Bien »
Finsi
Si (Moy < 16) Alors Ecrire « Bien »
Sinon Ecrire « T.Bien »
Finsi
Finsi
Fin

Exercice 5 (variante 2) : Ecrire un nouvel algorithme qui, après lecture des deux notes, affiche l’un
des résultats suivants (de la première session) :
- La mention en cas de succès : la moyenne est supérieure ou égale à 10 avec aucune note
éliminatoire.
- La ou les matière(s) à refaire lors du rattrapage, en cas d’échec ou d’échec pour note
éliminatoire.

Voici tous les cas possibles :


Cas Affichage
Moy < 10, Math < 10, Info < 10 Echec. Rattrapage en : Math Info
Moy < 10, Math < 10, Info >= 10 Echec. Rattrapage en : Math
Moy < 10, Math >= 10, Info < 10 Echec. Rattrapage en : Info
Moy >= 10, Math < 6, Info >= 10 Echec pour note éliminatoire. Rattrapage en : Math
Moy >= 10, Math >= 10, Info < 6 Echec pour note éliminatoire. Rattrapage en : Info
10<= Moy < 12, Math > 6, Info > 6 Succès avec la mention : Passable
12<= Moy < 14, Math > 6, Info > 6 Succès avec la mention : A. Bien
14<= Moy < 16, Math > 6, Info > 6 Succès avec la mention : Bien
16<= Moy, Math > 6, Info > 6 Succès avec la mention : T. Bien

Vous aimerez peut-être aussi