Cours - Algorithme de Base
Cours - Algorithme de Base
Cours - Algorithme de Base
Niveau : I
Par
Introduction
Dans la vie, l’homme est soumis à des difficultés qu’il doit surmonter afin de gérer son existence.
Pour résoudre ces problèmes il a besoin des méthodes structurées et bien détaillées. En d’autre
terme, il a besoin d’algorithmes. Ainsi, s’il vous déjà arrivée : de construire une maison, de traverser
la chaussée, de préparer un plat, de mettre en marche un ordinateur, de déchiffrer un mode
d’emploi pour faire fonctionner un appareil, d’indiquer un chemin à un touriste, de faire chercher
un objet à une personne par téléphone, … Alors vous avez déjà exécuté ou faire exécuté des
algorithmes.
I. Quelques définitions
1. Un algorithme est une suite finie et ordonnée d’instruction donc l’exécution séquentielle conduit
à la résolution d’un problème.
Ou encore, un algorithme est suite d’instructions ordonnées qui décrit les différentes étapes à
suivre par un automate (ou un processeur) pour résoudre un problème donné en un temps fini.
- Concevoir un algorithme de résolution d’un problème, c’est donner une méthode de résolution
dudit problème
- L’analyse de l’algorithme est l’étude mathématique des algorithmes dans le but de déterminer
leur efficacité (l’efficacité est une mesure du temps nécessaire à l’exécution de l’algorithme)
NB : C’est l’analyse qui permet de choisir entre plusieurs algorithmes celui qu’il est conseillé
d’utiliser.
Exemple1 : Akono achète au petit marché fougerole 5 Kg de viande sans os à 2850 F le kg. Quelle
est la dépense totale ?
Ce problème est soumis à 04 élèves lors d’un concours.
Elève1 : il effectue l’opération : 2850 *5=14250 F
Elève2 : il effectue l’opération : 5*2850 =14250 F
Elève1 Elève2
1) Appuyer sur la touche marquée ¨ON¨ 1) Appuyer sur la touche marquée ¨ON¨
2) Appuyer sur la touche marquée ¨1¨ 2) Appuyer sur la touche marquée ¨4¨
3) Appuyer sur la touche marquée ¨+¨ 3) Appuyer sur la touche marquée ¨*¨
4) Appuyer sur la touche marquée ¨2¨ 4) Appuyer sur la touche marquée ¨5¨
5) Appuyer sur la touche marquée ¨+¨ 5) Appuyer sur la touche marquée ¨÷¨
6) Appuyer sur la touche marquée ¨3¨ 6) Appuyer sur la touche marquée ¨2¨
7) Appuyer sur la touche marquée ¨+¨ 7) Appuyer sur la touche marquée ¨=¨
8) Appuyer sur la touche marquée ¨4¨
9) Appuyer sur la touche marquée ¨=¨ Le résultat s’affiche à l’écran : 10
Le résultat s’affiche à l’écran : 10
Une fois de plus pour ces deux méthodes nous obtenons exactement le même résultat. Chaque
méthode ici constitue donc un algorithme. A partir de ces deux exemples nous retenons que : pour
problème donné, on peut avoir plusieurs chemins pour atteindre la solution, et chaque chemin
constitue un algorithme.
1. L’analyse
Consiste à rechercher dans l’énoncé du problème les grandeurs connues, grandeurs cherchées et les
traitements :
b) Opérations de traitement : Les opérations de traitement sont des actions ou des tâches à effectuer
sur les données. Les opérations de traitement sont généralement identifiées par des verbes
d‘action.
c) les grandeurs cherchées : sont les résultats obtenus à la suite de l‘exécution d‘une instruction ou
d‘une succession d‘instructions.
Exemple1 : lire deux nombres, calculer la somme, la moyenne et le reste de la division du premier
par le second, puis afficher le résultat.
Analyse :
- données : les 2 nombres (1er nombre : a ; 2ème nombre : b)
- résultats : la somme (Somme), la moyenne (Moyenne) et le reste (Reste)
- traitements : lire 2 nombres, calculer la somme, calculer la moyenne, calculer le reste et afficher
les résultats.
NB : avant toute lecture de variable, il faut une instruction d’affichage demandant les variables à
lire.
Conception : les liens entre les variables ici sont les quatre opérations arithmétiques (=, +, /, mod).
Nous avons donc les relations suivantes : = a + b, = (a + b)/2 et = a mod b
Exemple2 : établir un code de la route afin de résoudre le problème des embouteillages dans la
circulation
Analyse : - données (entrées) : usagers de la route (véhicules, piéton, motos, …), feux de
signalisation, routes, panneaux de signalisation.
- résultats (sorties) : nouvelle règles de circulation
- établir le code de la route
Conception : - relation entre les entrées et les sorties : le respect des nouvelles règles de circulation
Elle consiste à choisir les structures de données et les structures de contrôles appropriées et à écrire
l’algorithme de résolution du problème posé. Une structure de données est un moyen permettant à
Tandisqu’une structure de contrôle est une instruction qui permet de tester si une condition est
vraie ou non.
Exemple : en considérant l’exemple 1 précédent nous pouvons produire l’étape de Mise en œuvre :
Algorithme operation
Variable a, b, somme, reste : entier ; moyenne : réel ; /*déclaration des objets en entrés et en
sorties*/
Début /*début de l’algorithme*/
Ecrire (" Entrer deux nombres SVP !") ;
Lire (a,b) ; /* lecture des deux nombres saisis au clavier*/
Somme a+b ;
Moyenne (a+b)/2 ;
Reste a mod b ;
Ecrire (somme, moyenne, reste) ; /*affichage des résultats à l’écran*/
Fin
4. L’essai de l’algorithme
5. La programmation
Un langage est un ensemble de symboles et de règle. En appliquant les règles aux symboles, nous
obtenons les mots du langage facilitant la communication. Un langage de programmation est donc
simplement un langage compréhensible par un ordinateur. Exemple: Pascal, Fortran, Html,
JavaScript, PHP, Visual Basic, Java, C++, Windev, Delphi, … Dans le cadre du cours d’algorithme,
on dira que le langage de programmation sert à traduire les algorithmes afin qu’il soit exécuté par
les ordinateurs. Schématiquement on a :
Programmation (traduction,
Analyse et conception interprétation)
Problème Algorithme de Programme
résolution du PB
Langue naturelle langage algorithmique (LDA) langage de programmation
(Française, anglaise, …) (Pascal, C, C++, Java, …)
L’écriture d’un algorithme se fait à l’aide d’un langage de définition d’algorithme (LDA). Il a pour
avantage d’être facilement transcrit dans un langage de programmation. Ce LDA fait appel à de
nombreuses notions telles que les mots clés, les commentaires, les séparateurs, les identificateurs :
2. Les identificateurs
Ce sont des noms qui désignent les éléments de l’algorithme (Constantes, Variables, Types,
Fonction, …). Un identificateur est formé d’une suite de caractères choisi parmi les lettres, les
chiffres, ou le caractère souligné (_), ne pouvant pas commencer par un chiffre, ne contenant pas
des lettres accentuées et différent des mots clés. Exemple : a, A, total, val_5, b7 sont des
identificateurs corrects ; 8z est identificateur incorrect
3. Les séparateurs
Dans le langage naturel, les mots peuvent être séparés par un espace, un signe de ponctuation ou
une fin de ligne. Il en est de même pour le LDA. Les séparateurs sont : les opérateurs (+, -, *, /, =,,
…), les caractères de ponctuation : ( ) , ; . : [ ] { } etc
4. Les commentaires
Un commentaire est un élément de l’algorithme ayant pour objectif d’éclaircir les éventuelles zones
d’ombre dans un code, il facilite le travail en équipe ainsi que la maintenance. Les commentaires
seront encadrés des symboles /* et */. Exemple : /* ceci est un commentaire*/
Un algorithme décrit une méthode pour la résolution d’un problème cette description est
généralement structurée suivant un squelette qui contient trois (03) parties :
- La zone de déclarations : comprenant une liste exhaustive des objets qui seront manipulés dans le
corps de l’algorithme. elle est structurée de la manière suivante :
La déclaration des types utilisateurs, elle se fait par l’usage du mot clé Type.
La déclaration des constantes, elle se fait en utilisant le mot clé Constante
La déclaration des variables : elle se fait par l’usage du mot clé Variable.
La déclaration des fonctions : elle se fait par l’usage du mot clé Fonction
La déclaration des procédures : elle se fait par l’usage du mot clés Procédure
- Le corps : contient les tâches (instructions, opérations) à exécuter. Les instructions comprises entre
les mots clés début et fin sont les seules qui seront exécutées par le processeur, d’où leur nom
d’instructions exécutables.
d) Il y’a-t-il une (ou des) opération(s) de traitement, si oui les quelles ou laquelle?
INTRODUCTION
Un algorithme opère sur des données d’entrée appelées objets. Un objet est un récipient utilisé par
le processeur pour garder (stocker) les informations nécessaires à la résolution d’un problème. Il est
caractérisé par son nom, son type, sa nature, son utilisation, sa valeur initiale et sa valeur finale.
Pour être utilisé dans la résolution du problème, Il doit être déclaré.
I. Les caractéristiques d’un objet
Elles permettent de comprendre sans ambigüité le rôle que cet objet joue dans l’algorithme.
I.1. Le nom d’un objet
Il permet d’identifier un objet dans l’algorithme. On l’appelle aussi identificateur. Il est composé
d’une suite finit de caractères alphanumériques commençant forcément par un caractère
alphabétique.
Remarque : - un identificateur peu avoir la barre de soulignement (Under score).
- Un identificateur ne doit jamais contenir de caractère accentué (^^^¨). Il est judicieux de choisir des
identificateurs significatifs.
I.2. Le type d’un objet
Il indique l’ensemble dans lequel l’objet prend ses valeurs (ensemble de définition), il indique aussi
implicitement les opérations qui pourraient être réalisés avec ce type d’objet. En algorithmique on
distingue les objets de type simple et de type composés.
Un objet de type simple est encore appelé objet de type prédéfinis. Parmi les types simples on
distingue :
-Le type entier : il est identifié par le mot clé entier. Un objet de ce type prend ses valeurs dans un
sous-ensemble des entiers relatifs (IZ). Les opérations possibles sur les entiers sont : +,-,*, div, mod
-Le type réel : un objet de ce type prend ses valeurs dans l’ensemble IR, la déclaration d’un réel se
fait en utilisant le mot clé réel. Les opérations possibles sur les réels sont :+,-,*, /
-Le type caractère : un caractère prend ses valeurs dans les ensembles suivants :
Les symboles de l’alphabet (“a"-“z" ; “A"-“Z")
Les chiffres de la numérotation décimale (“0"-“9")
Les caractères spéciaux (“$" ; “#" ;“@"…)
Remarque : le caractère ne peut prendre qu’un seul symbole comme valeur à un moment donné. La
déclaration d’un caractère se fait en utilisant le mot clé caractère
-Le type chaine de caractères : une chaine de caractères est une suite finie de caractères. Le mot clé
permettant de déclarer une chaine est string. Exemple : “123", “toto", “Paul", “bonjour"
Remarque : les caractères et chaine doivent toujours se placer entre apostrophes ou doubles
apostrophes.
-Les booléens. Un objet de type booléen ne peut prendre que deux valeurs : vrai ou faux. Un booléen
est déclaré dans un algorithme en utilisant le mot clé Booléen.
Compétences visées:
INTRODUCTION
Une instruction de base ou élémentaire est un ordre contenu dans le corps de l’algorithme que
l’ordinateur doit interpréter et exécuter afin de résoudre un problème encore appelée opération ou
primitive. Ainsi, pour résoudre un problème à l’aide d’un ordinateur, il faut connaitre la liste des
primitives ou instruction élémentaires de cet ordinateur. Dans la plupart des cas l’ordinateur sais :
Attribuer une valeur à un objet
Additionner, multiplier soustraire ou diviser les valeurs de deux objets
Obtenir la valeur d’un objet à partir de l’extérieur
Communiquer la valeur d’un objet à l’extérieur
Comparer la valeur de deux objets.
Un opérateur est un symbole permettant d’agir sur un objet ou d’effectuer des calculs. Or un
Opérande est une donnée utilisée par un opérateur. On distingue plusieurs types d’opérateurs :
1) les opérateurs arithmétiques :
Qui permettent d’effectuer des opérations arithmétiques entre opérandes numériques :
Addition (+), soustraction (-), multiplication (*), division (/), division entière (div), reste de la
division entière (mod). Exemple : 10/4 = 2.5, 10 div 4 = 2 et 10 mod 4= 2. ; La puissance ou exposant
(^ ou **) exemple : 3^2=3*3=9 ou 3**2=3*3=9
2) les opérateurs logiques :
Ce sont des opérations qui s’appliquent sur des objets de type booléen, ayant également un résultat
de type booléen. On distingue :
- L’opérateur unaire : “non" (négation)
- Les Opérateurs binaires : «ET» (conjonction), «OU» (disjonction)
Les opérateurs logiques peuvent être représentés dans la table suivante :
a b a ET b a OU b a OU b (exclusif) NON a
1 1 1 1 0 0
1 0 0 1 1 0
0 1 0 1 1 1
0 0 0 0 0 1
3) les opérateurs de comparaison :
Ils permettent de comparer deux opérandes et produisent une valeur booléenne. Ils peuvent être
appliqués sur tous les types simples :
Opérateur Description
= L’égalité
<> L’inégalité
> La supériorité stricte
>= La supériorité large
< L’infériorité stricte
<= L’infériorité large
4) L’opérateur de concaténation
Il permet de créer une chaîne de caractères à partir de deux chaînes de caractère en les mettant bout
à bout. Il noté «+». Exemple "b" + "a" = "ba" ; "Lycée Général" + "Leclerc" ="Lycée Général Leclerc".
5) Les opérateurs d’incrémentation et de décrémentation
- L’incrémentation est l'opération qui consiste à augmenter d’une unité le contenu d’une variable.
Elle se fait de manière suivante. Soit x la variable incrémentée. xx+1. Exemple si x = 10 alors
xx+1 = 11
- La décrémentation, est l'opération qui consiste à augmenter d’une unité le contenu d’une variable.
Elle se fait de manière suivante. Soit x la variable incrémentée. xx+1. Exemple si x = 10 alors xx-
1=9
Pour évaluer une expression on part de la gauche vers la droite en tenant compte de l’ordre de
priorité des opérateurs qui est (du plus prioritaire au moins prioritaire) : les parenthèses () ; la
puissance ^ ; la multiplication * et la division / ; le modulo % (qui retourne le reste de la division
entière entre deux entiers) ; l’addition + et la soustraction -. Exemple1 : 9+3*4 vaut 21. Exemple2 :
(9+3)*4 vaut 48
Ecrire un algorithme qui permet d’échanger les valeurs de deux variables entières (A et B) :
- En utilisant une variable intermédiaire
- Sans utilisant une variable intermédiaire
INTRODUCTION
Les opérations élémentaires relatives à la résolution d‘un problème, peuvent en fonction de leur
enchainement, être organisées suivant une famille de structures algorithmiques fondamentales
nommées structures de contrôle. Une structure de contrôle est une instruction qui permet de tester
si une condition est vraie ou non. On distingue : les structures séquentielles ; les structures
alternatives ; Les structures de choix ; et les structures itératives ou répétitives.
1/. Les structures séquentielles ou linéaires
Ici, les instructions sont écrites les unes après les autres et sont à exécuter successivement dans
l‘ordre leur apparition. Il n’y a aucune condition, ni répétition.
Syntaxe : se présente comme suit : Début
action1 ;
action2 ;
....
action n ;
Fin
Exemple : Début
x3;
y x+2 ;
z x+y ;
ecrire (x,y,z)
Fin
2/. Les structures alternatives
Elles permettent d’exécuter un bloc d’instructions en fonction de la réalisation d’une condition. On
en distingue deux : l’alternative réduite ou simple ; l’alternative complète.
2.1) L’alternative réduite ou simple (SI…)
Elle permet d'exécuter un bloc d'instructions si jamais une condition est réalisée.
Syntaxe : Si condition alors
action(s) ;
FinSi
Sémantique :
- les mots clés : Si, alors, Finsi sont reconnus par l’ordinateur ;
- le terme « condition » est un booléen c-a-d qu’il vaut soit vrai soit faux ;
- action(s) désigne une instruction ou une liste ordonnée d’instructions, ou une structure de
contrôleà exécuter.
Fonctionnement :