Vous êtes sur la page 1sur 43

Algorithmique

Première Année du Cycle Préparatoire


ENSA Khouribga

Pr. SOUSSI Nassima


Année Universitaire: 2019/2020

Algorithmique nassima.soussi@gmail.com
Introduction

A quoi sert un algorithme?


Réponse:

À décrire les étapes de résolution d'un problème :


→ de façon structurée et compacte
→ à partir d'opérations de base
→ indépendamment d'un langage de programmation

Algorithmique 2
Introduction

Pourquoi apprendre l’algorithmique pour apprendre


à programmer ?

Réponse: Parce que l’algorithmique exprime les instructions


résolvant un problème donné indépendamment des
particularités de tel ou tel langage.

Algorithmique 3
Introduction

Notion d’algorithme

Dans la vie courante, un algorithme peut prendre la forme:


➢ d'une recette de cuisine,
➢ d'un mode d'emploi,
➢ d'une notice de montage,
➢ d'un itinéraire routier qu’on explique à un touriste perdu,
➢ ….

Algorithmique 4
Introduction: Exemples

Exemple 1: Mode d’emploi d’un télécopieur (Fax)


1. Insérez le document dans le chargeur automatique.
2. Composez le numéro de fax du destinataire à l’aide du pavé numérique.
3. Enfoncez la touche envoi pour lancer l’émission.

 Ce mode d’emploi précise comment envoyer un fax.


 Il est composé d’une suite ordonnée d’instructions (insérez …,
composez…, enfoncez…) qui manipulent des données (document,
chargeur automatique, numéro de fax, pavé numérique, touche
envoi) pour réaliser la tache désirée (envoi d’un document).

Algorithmique 5
Introduction: Exemples

Exemple 2: Trouver son chemin


Extrait d’un dialogue entre un touriste égaré et un autochtone
– Pourriez-vous m’indiquer le chemin de la gare, s’il vous plait ?
– Oui bien sûr : vous allez tout droit jusqu’au prochain carrefour, vous
prenez à gauche au carrefour et ensuite la troisième à droite, et vous verrez
la gare juste en face de vous.

 Dans ce dialogue, la réponse de l’autochtone est:


1. La description d’une suite ordonnée d’instructions (allez tout droit, prenez
à gauche, prenez la troisième à droite).
2. Les instructions manipulent des données (carrefour, rues)
3. But: réaliser la tâche désirée (aller à la gare).
Algorithmique 6
Introduction: Définitions

Un algorithme
=
Suite ordonnée d’instructions

Instruction 1
Données Instruction 2
Sortie

Instruction n

Algorithmique 7
Introduction: Définitions

Algorithme
Un algorithme est une suite ordonnée d’instructions qui
indique la démarche à suivre pour résoudre un problème.

➢ Quand on définit un algorithme, celui-ci ne doit contenir que


des instructions compréhensibles par celui qui devra l’exécuter.
➢ Dans ce cours, nous devrons apprendre à définir des
algorithmes pour qu’ils soient compréhensibles — et donc
exécutables — par un ordinateur.

Algorithmique 8
Introduction: Définitions

La représentation d’un algorithme (1)

Il existe deux façons pour représenter un


algorithme:
1. Organigramme:
▪ Représentation graphique avec des symboles
(carrés, losanges, etc.)
▪ Offre une vue d’ensemble de l’algorithme
▪ Représentation quasiment abandonnée
aujourd’hui.

Organigramme pour faire bouillir de l’eau


Algorithmique 9
Introduction: Définitions

La représentation d’un algorithme (2)

2. Pseudo-code:
➢ Représentation textuelle avec une série de conventions
ressemblant à un langage de programmation.
➢ Plus pratique pour écrire un algorithme.
➢ Représentation largement utilisée.

Algorithmique 10
Introduction: Définitions

La représentation d’un algorithme (3)


2. Pseudo-code: Exemple

Algorithmique 11
Introduction: Définitions

Algorithmique

L’algorithmique est la science des algorithmes

➢ L’algorithmique s’intéresse à l’art de construire des


algorithmes.
➢ Un algorithme est caractérisé par leur validité, leur
robustesse, leur réutilisabilité, leur complexité ou leur
efficacité.

Algorithmique 12
Algorithmique: caractéristiques d’un algorithme

1. Validité d’un algorithme


La validité d’un algorithme est son aptitude à réaliser exactement
la tache pour laquelle il a été conçu.

➢ Exemple: on reprend l’exemple 2 de l’algorithme de recherche du


chemin de la gare
L’étude de sa validité consiste à s’assurer qu’on arrive
effectivement à la gare en exécutant scrupuleusement les
instructions dans l’ordre annoncé.

Algorithmique 13
Algorithmique: caractéristiques d’un algorithme

2. Robustesse d’un algorithme


La robustesse d’un algorithme est son aptitude à se protéger de
conditions anormales d’utilisation.

➢ Exemple: on reprend l’exemple 2 de l’algorithme de recherche du


chemin de la gare
La robustesse de l’algorithme se pose par exemple si le chemin
proposé a été pensé pour un piéton, alors que le « touriste égaré »
est en voiture et que la « troisième à droite » est en sens interdit !!!!

Algorithmique 14
Algorithmique: caractéristiques d’un algorithme

3. Réutilisabilité d’un algorithme


La réutilisabilité d’un algorithme est son aptitude à être réutilisé
pour résoudre des taches équivalentes à celle pour laquelle il a été
conçu.
➢ Exemple: on reprend l’exemple 2 de l’algorithme de recherche du
chemin de la gare
L’algorithme de recherche du chemin de la gare est-il réutilisable tel
quel pour se rendre à la mairie ? A priori non, sauf si la mairie est
juste à coté de la gare.

Algorithmique 15
Algorithmique: caractéristiques d’un algorithme

4. Complexité d’un algorithme


La complexité d’un algorithme est le nombre d’instructions
élémentaires à exécuter pour réaliser la tâche pour laquelle il a été
conçu.
➢ Exemple: on reprend l’exemple 2 de l’algorithme de recherche du
chemin de la gare
Si le « touriste égaré » est un piéton, la complexité de l’algorithme
de recherche de chemin peut se compter en nombre de pas pour
arriver à la gare.

Algorithmique 16
Algorithmique: caractéristiques d’un algorithme

4. Efficacité d’un algorithme


L’efficacité d’un algorithme est son aptitude à utiliser de manière
optimale les ressources du matériel qui l’exécute.

➢ Exemple: on reprend l’exemple 2 de l’algorithme de recherche du


chemin de la gare
N’existerait-il pas un raccourci piétonnier pour arriver plus vite à la
gare ?

Algorithmique 17
Algorithmique

Algorithmique & programmation


➢ Un algorithme exprime la structure logique d’un programme
informatique indépendement du langage de programmation utilisé.
➢ La programmation consiste à « expliquer » à un ordinateur en détail
ce qu’il doit faire sous forme de programme.
➢ Un programme n’est rien d’autre qu’une suite d’instructions,
encodées en respectant un ensemble de conventions fixées à l’avance
par un langage informatique (Java, PHP, …).
➢ La machine décode alors ces instructions en associant à chaque
«mot» du langage informatique une action précise.
Algorithmique 18
Algorithmique

Cycle de développement d’un programme

Le cycle de développement d'un programme (ou d'une


application) informatique peut se résumer ainsi :

Problème Analyse Algorithme

Exécution Compilation Programme

Algorithmique 19
Algorithmique

Cycle de développement d’un programme

I. Problème :
Ex : donner le plus court chemin entre deux villes.
II. Analyse :
 phase de réflexion qui permet:
1. Identifier le problème : quelle(s) donnée(s), quel(s) résultat(s).
2. Découper le problème en une succession de tâches simples et
distinctes.

Algorithmique 20
Algorithmique

Cycle de développement d’un programme


III. Algorithme :
➢ Description des opérations à mettre en œuvre (en langage
algorithmique) expliquant comment obtenir un résultat à partir de données.
➢ Description compréhensible par un être humain de la suite des
opérations à effectuer pour résoudre le Problème.
➢ Néanmoins, ce langage algorithmique est suffisamment proche des
langages de programmation pour pouvoir être traduit aisément vers ces
derniers.

Algorithmique 21
Algorithmique

Cycle de développement d’un programme

IV. Programme  Code source


➢ Fichier résultant de la traduction de l'algorithme dans un langage
de programmation.
➢ Fichier texte des instructions et de leurs enchaînements
➢ Un ou plusieurs algorithmes utilisés.

Algorithmique 22
Algorithmique

Cycle de développement d’un programme

V. Compilation: désigne le processus de transformation d’un


programme écrit dans un langage lisible par un humain en un
programme exécutable par une machine.

VI. Exécution: est le processus par lequel un ordinateur ou


une machine virtuelle met en œuvre les instructions
d'un programme.

Algorithmique 23
Algorithmique

Quel sont les qualités demandé pour être bon en algorithmique ?

1. Rigueur: chaque fois qu’on écrit une série d’instructions, il faut se


mettre à la place de la machine qui va les exécuter, pour vérifier si le
résultat obtenu est bien celui escompté.
2. Intuition:
▪ Aucune recette ne permet de savoir a priori quelles instructions
permettront d’obtenir le résultat voulu.
▪ Alors on est plus ou moins intuitifs, mais les réflexes, cela
s’acquiert, et l’expérience finit par compenser largement des intuitions.

Algorithmique 24
Algorithmique

Caractéristiques d’un bon algorithme


➢ Systématique
➢ Bien structuré (et si possible simple à comprendre)
➢ Juste
➢ Eventuellement élégant
➢ Lisible :
▪ Retour à la ligne
▪ Commentaires ( cours + se limitent à l’explication
des idées essentielles ou des points délicats)

Algorithmique 25
Algorithmique

Caractéristiques d’un bon algorithme (suite)


➢ Pas trop long (décomposition en modules);
➢ Efficace
▪ Temps d’exécution
▪ Quantité d’espace mémoire
▪ Quantité d’espace disque
▪ Quantité d’information à lire/écrire
▪ Quantité d’information à transférer
▪ …
➢ Préférer parfois la récursivité

Algorithmique 26
Algorithmique: Outils de base

Outils de base de l’algorithmique

Algorithmique 27
Algorithmique: Outils de base

Outils de base d’un algorithme


Un algorithme informatique se ramène toujours à la
combinaison de 4 briques de base :
➢ Affectation de variables
➢ Lecture / écriture
➢ Les tests
➢ Les boucles

Algorithmique 28
Algorithmique: Outils de base

Les variables
➢ En informatique, l’essentiel du travail effectué par un programme
d’ordinateur consiste à manipuler des données.
➢ Ces données peuvent être très diverses et pour accéder à ces données, il
est pratique de les nommer plutôt que de connaître explicitement leur
adresse en mémoire.
➢ Une donnée apparait sous un nom de variable, on dit que la variable
dénote une valeur. Pour la machine, il s’agit d’une référence désignant une
adresse mémoire, ie un emplacement précis dans la mémoire vive où est
stockée une valeur bien déterminée qui est la donnée proprement dite.

Algorithmique 29
Algorithmique: Outils de base

Les variables
Définition: Une variable est un identificateur associant un nom à une
valeur qui peut éventuellement varier au cours du temps.
Le nom d'une variable ne doit comporter que:
▪ Des lettres non accentuées,
▪ Des chiffres (sauf en première position),
▪ Des tirets bas.
Il ne peut comporter:
▪ Les espaces,
▪ Signes de ponctuation,
▪ Signes arithmétiques,
▪ Caractères spéciaux.
Algorithmique 30
Algorithmique: Outils de base

Déclaration des variables


➢ Toute variable utilisée dans un programme doit faire l’objet d’une
déclaration préalable.
➢ En pseudo-code: la déclaration de variables est effectuée par la forme
suivante :
Variables liste_identificateurs : type
➢ Exemple:
Variables i, j, k : entier
x, y : réel
OK: booléen
Ch1, ch2 : chaîne de caractères

Algorithmique 31
Algorithmique: Outils de base

Les constantes
Définition: Une constante est une variable dont la valeur associée ne varie
pas au cours du programme.
➢ En pseudo-code:
Constante nom_identificateur = valeur : type
(par convention, les noms de constantes sont en majuscules)
➢ Exemple :
Constante PI=3.14 : réel, MAXI=32 : entier
➢ Une constante doit toujours recevoir une valeur dès sa déclaration.

Algorithmique 32
Algorithmique: Outils de base

L’affectation
Définition: L’affectation est l’opération qui consiste à attribuer une valeur à
une variable (variable  valeur).
Le membre de droite peut être:
➢ Une constante (Variable  Constante) : La constante peut être d’un
type quelconque (entier, réel, booléen, chaine de caractères, tableau, …).
Exemple: max  30, chaine  "salut ", reponse  Vrai
➢ Une expression évaluable (Variable  Expression) :
une opération arithmétique (x  3 + 2*9 - 6*7), un appel de fonction
(y sin(x)) ou toute autre combinaison évaluable.
Algorithmique 33
Algorithmique: Outils de base

L’affectation: Permutation de deux nombres


➢ Méthode fausse: x  y et y  x
Supposons que x = 10 et y = 20.
1. x  y : évalue y puis attribue la valeur de y (20) à x. x = 20 maintenant.
2. y  x : évalue x puis attribue la valeur de x (20) à y.
 x et y sont donc identiques et non permutées !
➢ Méthode juste: Pour effectuer la permutation, il faut utiliser une
variable temporaire (Ex: tmp) :
tmp  x
xy
y  tmp

Algorithmique 34
Algorithmique: Outils de base

Syntaxe générale de l’algorithme

Algorithme nom_algorithme
/* La partie déclaration des constantes et des variables */
Constantes var1←20 : entier
var2←"bonjour!" : chaîne Variables
Variables var3, var4 : réels
var5 : chaîne
Début
/* corps de l’algorithme  les instructions */
Fin
Algorithmique 35
Algorithmique: Outils de base

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←7
B ← 17
A←B
B ← A+5
C ← A +B
C ← B –A
Fin
Algorithmique 36
Algorithmique: Outils de base

Exercice 2
Donnez les valeurs des variables A et B après exécution des instructions
suivantes ?
Variables A, B : Entier
Début
A←6
B←2
A←B
B←A
Fin
Les deux dernières instructions permettent-elles d’échanger les valeurs
de A et B ?

Algorithmique 37
Algorithmique: Outils de base

Incrémentation vs. décrémentation

➢ Incrémentation : Ex: i = i + 1
On évalue d’abord le membre de droite (i +1) puis on attribue la
valeur obtenue au membre de gauche (i)
 on dit que i a été incrémenté de 1

➢ Décrémentation : Ex: i = i - 1
On évalue d’abord le membre de droite (i - 1) puis on attribue la
valeur obtenue au membre de gauche (i)
=> on dit que i a été décrémenté de 1

Algorithmique 38
Algorithmique: Outils de base

Entrées / Sorties
➢ L'instruction de lecture (Lire): interrompt le programme, attend que
l'utilisateur entre une valeur au clavier et stocke la valeur en mémoire dans la
variable désignée en paramètres.
Ex: Lire(x) ( x est une variable désignant l'endroit de la mémoire ou la
donnée qui sera lue devra être stockée).

➢ L'instruction d'écriture (Ecrire): affiche le contenu de l'expression en


paramètre. Une expression peut être une valeur, le contenu d'une variable, le
résultat d'un calcul, ou la concaténation de plusieurs expressions.
Ex: Ecrire(« Bonjour !! »)

Algorithmique 39
Algorithmique: Outils de base

Les types de base


Définition: Un type définit les valeurs que peut prendre une donnée
(en particulier une variable) et les opérateurs qui peuvent lui être
appliqués.
➢ Types de base:
▪ Entiers
▪ Réels
▪ Booléens (deux valeurs possibles, vrai et faux )
▪ Caractères (lettres, chiffres, ponctuation…)

Algorithmique 40
Algorithmique: Outils de base

Les types de base : Opérateurs de Calcul

➢ Opérateurs de calcul
▪ Entiers : + ; – ; * ; div ; mod
▪ Réels : + ; – ; * ; /
▪ Booléens : and ; or ; not
➢ Opérateurs de comparaison (le résultat est un booléen)
▪ Entiers, réels, caractères : = ; <= ; < ; >= ; > ; <>
▪ Booléens : = ; <>

Algorithmique 41
Algorithmique: Outils de base

➢ Exercice d’application
Ecrire un algorithme qui demande un nombre entier à
l'utilisateur, puis qui calcule et affiche le carré de ce nombre.

Algorithmique 42
Algorithmique: Outils de base

Correction
Algorithme Calcul_du_Carre
Variables A,C : Entier
Début
Ecrire("Veuillez saisir la valeur de A: ")
Lire(A)
C ← A*A
Ecrire("le carre de ", A, "est :", C)
Fin
NB: Théoriquement, toute instruction de lecture doit être précédée d'une instruction
d'écriture informative.

Algorithmique 43

Vous aimerez peut-être aussi