Vous êtes sur la page 1sur 11

COURS

ALGORITHME
EFC - 2019
I. Qu’est-ce qu’un algorithme ?
De façon intuitive, un algorithme décrit un enchaînement d’opérations permettant, en un temps
fini, de résoudre toutes les instances d'un problème donné.
Partant d’une instance du problème (les données en entrée), il fournit un résultat correspondant
à la solution du problème sur cette instance.
L’algorithme est une suite d’instructions précises alignés les unes après les autres, conduisant
à un résultat. (C’est les étapes à suivre pour la résolution du problème donné).
Il n’y a pas d’algorithme si on n’a pas de problème.

Remarques :
Un algorithme décrit un traitement sur un nombre fini de données structurées. Ces données
peuvent avoir une structure élémentaire (nombres, caractères, etc.), ou une structure plus
élaborée (liste de nombres, annuaire, etc.).

Un algorithme doit toujours se terminer après exécution et donner un résultat.

Ainsi, un (vrai) algorithme doit être indépendant du langage de programmation utilisé par la
suite.

Le mot « Algorithme » est inventé par le mathématicien « Muhammad ibn Musa


AL-KHAWARISMI » (Bagdad).

I.1 Les instructions :


Ce sont les opérations ou les actions qui constituent le corps d’un algorithme. Elles sont
principalement entre le mot-clé « début et fin ».
Les instructions doivent être données dans un langage qui va être copris par l’exécuteur.
Contrairement en un langage courant que l’exécuteur doit être un humain, en langage binaire
l’exécuteur est une machine (ordinateur).

I.2 Structure d’un algorithme

Il n’existe pas de langage universel dédié à l’écriture des algorithmes. En règle générale, on
utilisera donc un langage « communément accepté » permettant de décrire les opérations de
base et les structures de contrôle (qui précisent l’ordre dans lequel doivent s’enchaîner les
opérations) nécessaires à l’expression des algorithmes, et ce de façon rigoureuse.
Un algorithme se découpe en trois phases :

▪ Les données (les entrées) :


Est la partie déclarations permettant de déclarer les données qui sont utilisées par le
programme. Les données sont représentées par des variables. (Elles proviennent de
l’extérieur pour être utilisées dans le programme).

▪ Le traitement (quelles opérations à apporter aux données fournis) :


Cette partie d’instructions constitue le programme principal. Les instructions sont exécutées
les unes après les autres par l’ordinateur pour transformer les données.

▪ Le résultat (les sorties) :


C’est le retour de la solution.

Pour résoudre un problème à l’aide d’un algorithme on a trois facteurs à respecter :


1. Analyse du problème
2. Ecriture de l’algorithme
3. Traduction dans un langage de programmation

II. Qu’est-ce qu’une variable ?


Une variable peut être vue comme une zone dans la mémoire (vive) de l’ordinateur qui est
utilisée pour conserver les données qui seront manipulées par l’ordinateur.
Une variable est caractérisée par quatre informations :
Son rôle : il indique à quoi va servir la variable dans le programme.
Par exemple, on peut utiliser une variable pour conserver le prix unitaire d’un article.

Son nom : il est composé uniquement de lettres minuscules, majuscules, de chiffres et du


caractère souligné, il permet d’identifier la variable. On parle d’« identificateur ». Ce nom doit
être significatif (refléter le rôle de la variable). Exemple : une variable qui représente le prix
unitaire d’un article. (pua ou p_u_a ou pUA).

Son type : Un type est utilisé pour caractériser l’ensemble des valeurs qu’une variable peut
prendre. Par exemple le prix unitaire représente le prix d’un article exprimé en euros. On peut
considérer qu’il est représenté par un réel. Il ne peut alors prendre que ce type de valeurs.

Sa valeur : La variable contient une information qui peut varier au cours de l’exécution d’un
programme. C’est cette information que l’on appelle valeur de la variable.
La valeur d’une variable doit correspondre au type de la variable. Ainsi, une variable quantité
de type entier pourra prendre successivement les valeurs de 10, 25 et 3. La valeur d’une variable
n’existe que lorsque le programme est exécuté. Les autres informations (nom, rôle et type) sont
définies lors de la conception du programme, pendant la construction de l’algorithme.

III. Qu’est-ce qu’une constante


Certaines informations manipulées par un programme ne changent jamais. C’est par exemple
le cas de la valeur de PI, du nombre maximum d’étudiants dans une promotion, etc.
Ces données ne sont donc pas variables mais constantes.
Exemple :
PI = 3.1415 -- Valeur de PI
INTITULE = "Algorithmique et programmation"

IV. Expressions
Définition : Une expression est « quelque chose » qui a une valeur. Ainsi, en fonction de ce
qu’on a vu jusqu’à présent, une expression est une constante, une variable ou toute combinaison
d’expressions en utilisant les opérateurs arithmétiques, les opérateurs de comparaison ou les
opérateurs logiques.

V. Types fondamentaux

Définition : Un type caractérise les valeurs que peut prendre une variable. Il définit également
les opérations, généralement appelées opérateurs, qui pourront être appliquées sur les données
de ce type.
Les types ont deux intérêts principaux :

III.1 Les entiers :

Le type Entier caractérise les entiers relatifs.

Exemple de représentants des entiers (20, 0, –4 etc.)


Les opérations sont : +, -, *, /, Abs (valeur absolue),
III.2 Les réels :

Le type Réel caractérise les réels.


Exemple de représentants des réels (10.0, 0.0, 2.1 etc.)
Les opérations sont : +, -, *, /, Abs (valeur absolue),
III.3 Les booléens
Le type Booléen caractérise les valeurs booléennes qui ne correspondent qu’à deux valeurs
VRAI ou FAUX.
Les opérations sont Et, Ou et Non qui sont définies par la table de vérité suivante :

A B A Et B A Ou B Non A

VRAI VRAI VRAI VRAI FAUX

VRAI FAUX FAUX VRAI FAUX

FAUX VRAI FAUX VRAI VRAI

FAUX FAUX FAUX FAUX VRAI

II.4 Les caractères


Le type Caractère caractérise les caractères.
Exemple de représentants des caractères :
’a’ -- le caractère a
’\’’ -- le caractère ’
’\\’ -- le caractère \
’\n’ -- retour à la ligne
’\t’ -- Caractère tabulation

II.5 Les chaînes de caractères


Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire
c’est ni plus ni moins que du texte encadré par des apostrophes (single quote) ou des guillemets
(double quote) :

Les deux déclarations suivantes sont équivalentes :

Avec des « single quote » :

maChaine = 'mon message numéro 1'

Avec des « double quote » :


maChaine = "mon message"
Exemple d’un algorithme :
Problème : On se demande d’écrire un algorithme qui calcule la somme de deux entiers a et b.
Les entrées : on demande à l’utilisateur d’entrer deux valeurs qui seront stockés dans les
variables a et b.
L’affectation : on calcule la somme de (a et b) et on attribue le résultat dans une nouvelle
variable r.
Les sorties : on fait afficher à l’écran le contenu de la variable r.
Langage naturel :
Entrer a
Entrer b
r prend la valeur a+b
Afficher r

Langage machine (LARP) :


DÉBUT
\\ Les entrées
Ecrire "Entrer a"
Lire a
Ecrire "Entrer b"
Lire b
\\ L'affectation
r = a+b
\\ Les sorties
Ecrire r
FIN

IV. Les fonctions en programmation :


« Un bon informaticien est un informaticien fainéant ! »
Cela veut dire tout simplement, qu’il ne faut jamais faire 2 fois le même travail. Un bon
informaticien doit savoir réutiliser quelque chose déjà existant plutôt que de le refaire à
nouveau.
Une fonction désigne en programmation un « sous-programme » permettant d'effectuer des
opérations répétitives. Au lieu d'écrire le code complet autant de fois que nécessaire, on crée
une fonction que l’on appellera pour l'exécuter, ce qui peut aussi alléger le code, le rendre plus
lisible.
L'utilisation des fonctions permet de « factoriser » le code, c'est-à-dire d’offrir des procédures
générales, partagées par le programme et placées à un endroit précis où l’on pourra les retrouver
facilement pour les modifier ou les adapter.
On appelle fonction avec paramètres, une fonction qui reçoit une ou plusieurs informations
provenant de l’extérieur pour pouvoir interagir et modifier l’état de ses instructions en
retournant une ou plusieurs informations.

Les informations renvoyées par la fonction sont appelées résultat.

Exemple :
Si je dois calculer l’âge de plusieurs personnes, je vais réaliser l’opération suivante :

annee_calcul = 2050;
annee_naissance = 2000;
prenom = "Pierre";
age= annee_calcul - annee_naissance;
Ecrire "En", annee_calcul,",", prenom, "aura",age,"ans !";

annee_calcul = 2050;
annee_naissance = 1991;
prenom = "Caroline";
age= annee_calcul - annee_naissance;
Ecrire "En", annee_calcul,",", prenom, "aura",age,"ans !";

fonction calculSomme(entier a, entier b)

retourner (a + b)

fin de fonction

V. Les structures de contrôle


Dans cette nouvelle partie, nous allons étudier et comprendre l’intérêt des structures de contrôle.
Une structure de contrôle est un ensemble d’instructions qui permet de contrôler l’exécution du
code.
Il existe différents types de structures de contrôle. Les deux types les plus connus et les plus
utilisés sont les structures de contrôle conditionnelles qui permettent d’exécuter un bloc de code
si une certaine condition est vérifiée et les structures de contrôle de boucle qui permettent
d’exécuter un bloc de code en boucle tant qu’une condition est vérifiée.

V.1 Les structures de contrôle conditionnelles


Les structures de contrôle conditionnelles (ou plus simplement conditions) vont nous permettre
d’exécuter différents blocs de code selon qu’une condition spécifique soit vérifiée ou pas.
Par exemple, on va pouvoir utiliser les conditions pour afficher un message de bienvenue
différent sur notre site selon que l’utilisateur soit connu ou un simple visiteur qui ne s’est jamais
inscrit sur notre site.
Nous allons très souvent utiliser les conditions avec des variables : selon la valeur stockée dans
une variable, nous allons vouloir exécuter un bloc de code plutôt qu’un autre.

La condition if (SI) :
La condition if permet d’exécuter une suite d’instructions uniquement si un test donné est
vérifié. Par exemple :

DEBUT
a = 5
SI ( a > 15 ) ALORS
ECRIRE a, "est supérieur à : ", 15
FINSI
FIN

Ce qui se trouve entre les parenthèses qui suivent le SI s’appelle le test de la condition.
Un test est une expression dont le calcul doit arriver soit à la valeur true, soit à la valeur false.
Tout ce qui se trouve dans les accolades suivant le SI sera traité uniquement si le test de la
condition est vérifié (sa valeur calculée vaut true).
Les instructions du bloc d’instructions suivant le SI seront soient toutes exécutées, soit aucune.

Utilisation du else (SINON)


Il est possible d’exécuter des instructions dans le cas où le test du SI a échoué (le test vaut
false). Il faut pour cela utiliser le mot-clef SINON :

DEBUT
a = 5
SI ( a > 15 ) ALORS
ECRIRE a, "est supérieur à : ", 15
SINON
ECRIRE a, "est inferieur à : ", 15
FINSI
FIN

Conditions imbriquées
Il est tout à fait possible d’imbriquer les conditions mais en gardant à l’esprit que le premier
test SI (expression) ne se fera que si une condition SI (expression) est vérifiée.
DÉBUT
maxi = 0
x = 2
y = 5
z = 4

SI (x > y) ALORS
ECRIRE "x est supérieur à y"
SI (x > z) ALORS
ECRIRE "x est la plus grande valeur des trois"
maxi = x
SINON
ECRIRE "z est la plus grande valeur des trois"
maxi = z
FINSI
SINON
ECRIRE "y est supérieur à x"
SI (Y > z) ALORS
ECRIRE "y est la plus grande valeur des trois"
maxi = y
SINON
ECRIRE "z est la plus grande valeur des trois"
maxi = z
FINSI
FINSI
FIN

Remarque :
Lorsque beaucoup de SI et de SINON s’enchaînent, il est préférable d’utiliser des SINON SI
successifs plutôt que de multiplier les imbrications de blocs d’instructions.
C’est-à-dire, au lieu de :

DÉBUT
x = 500

SI(x < 0) ALORS


ecrire ("x est négatif")
SINON
SI(x < 10) ALORS
ecrire ("x est inférieur à 10")
SINON
SI(x < 100) ALORS
ecrire ("x est inférieur à 100")
SINON
ecrire ("x est supérieur ou égal à 100")
FINSI
FINSI
FINSI
FIN
Il est préférable d’écrire :

DÉBUT
x = 5

SI(x < 0) ALORS


ecrire ("x est négatif")
SINON SI(x < 10) ALORS
ecrire ("x est inférieur à 10")
SINON SI(x < 100) ALORS
ecrire ("x est inférieur à 100")
SINON
ecrire ("x est supérieur ou égal à 100")
FINSI
FIN

La forme générale du SI est donc la suivante :

SI( test ) ALORS


instruction
instruction
...
SINON
instruction
instruction
...
FINSI

Opérateurs de comparaison

Opérateur Signification

A == B vaut true ssi l’expression A a la même valeur calculée que B

A === B vaut true ssi l’expression A a le même type et valeur calculée que B

A != B true ssi A est différent de B

A<B true ssi A est inférieur à B

A>B true ssi A est supérieur à B

A <= B true ssi A est inférieur ou égal à B

A >= B true ssi A est supérieur ou égal à B


Dans une telle expression, on peut combiner plusieurs comparaisons en une seule en utilisant
des opérateurs logiques :

Opérateur Signification

A and B vaut true si à la fois A et B ont la valeur true

A or B vaut true si A ou B ou les deux ont la valeur true

A xor B vaut true si A ou B ont la valeur true, mais pas les deux à la fois

A && B comme and

A || B comme and

!A non(A) : vaut true si A est false et réciproquement

L’utilisation de && et || est déconseillée car moins facilement lisible, bien que courante.
Pour éviter tout problème de priorité entre les opérateurs, c’est-à-dire quels opérateurs agissent
en premier, il est conseillé d’entourer les expressions avec des parenthèses :
Par exemple :

SI( ( (x > 100) and (x > 200) ) or (x > 500) ) ALORS


ecrire("100 < x < 200 ou bien x > 500");
FINSI

Vous aimerez peut-être aussi