Chapitre 2 Notion et démarche algorithmique
2.1. Les étapes de résolution d’un problème
Face à un problème quelconque, nous devons nous poser au préalable un certain nombre de
questions. La réponse à ces questions facilitera la résolution du problème c'est-à-dire aboutir à
un résultat. Les étapes de résolution d’un problème sont les suivantes :
Comprendre l’énoncé du problème
Décomposer le problème en sous-problèmes plus simples à résoudre
Associer à chaque sous problème, une spécification :
o Les données nécessaires
o Les données résultantes
o La démarche à suivre pour arriver au résultat en partant d’un ensemble de données.
Elaboration d'un algorithme.
2.2. Le formalisme général d’un algorithme
Un algorithme est écrit en utilisant un Langage de Description d’Algorithme (LDA).
L’algorithme ne doit pas être confondu avec le langage proprement dit. Il comprend les parties
suivantes :
En-tête : nom de l’algorithme
Déclarations des constantes, des types et des variables.
Déclarations des fonctions, procédures
Corps de l’algorithme : il est constitué des actions du traitement. Il est délimité par les
termes Début et Fin.
2.2.1. L’entête
Il permet tout simplement d’identifier l’algorithme. La syntaxe est la suivante :
Algorithme <nom de l’algorithme> ;
Exemple d’entête : Algorithme Preparer_gateau ;
Autres exemples Algorithme Calcul_surface_cercle ; Algorithme somme_entier ;
2.2.2. Déclaration des constantes, types, variables
La déclaration : c’est une liste exhaustive des objets, grandeurs utilisés et manipulés dans le
corps de l’algorithme. Cette liste est placée en début d’algorithme.
a) Déclaration des constantes
Les constantes représentent des objets (nombre, caractères, …) dont la valeur ne peut pas être
modifiée pendant l’exécution de l’algorithme.
Le mot clé est const ou constante.
10
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
La syntaxe est la suivante : const <Nom de la constante> = Valeur ;
Exemple : const pi = 3.14 ;
const N = 100 ;
const MAX = 10 ;
b) Déclaration des types
C’est dans cette section qu’on fait la déclaration des types structurés. Exemple de types
structurés : les enregistrements.
Pour créer des enregistrements, il faut déclarer un nouveau type, basé sur d'autres types
existants, qu'on appelle type structuré. Après avoir défini un type structuré, on peut l'utiliser
comme un type normal en déclarant une ou plusieurs variables de ce type.
c) Déclaration des variables
Elles représentent les objets (des nombres, des caractères, des chaînes de caractères, des
booléennes ; …) dont la valeur peut être modifiée au cours de l’exécution de l’algorithme. Cette
instruction permettant de réserver de l’espace mémoire pour stocker des données. Elle dépend
du type des données : entier, réel, caractère, chaine de caractères, tableau, etc.
Le mot clé permettant d’effectuer la déclaration d’une variable est Var ou Variable. la syntaxe
est la suivante :
Var <Nom de la variable> : Type de la variable ;
Exemples : Var i : entier ;
Var nb : réel ;
Var lettre : caractère ;
Var trouve : booléen ;
Var rayon : réel ;
Var nom, prenom : chaine de caractères ;
Noms de variables
Un nom de variable est une séquence de lettres (a → z, A → Z) et de chiffres (0 → 9),
qui doit toujours commencer par une lettre.
Seules les lettres ordinaires sont autorisées. Les cédilles, les espaces, les caractères
spéciaux tels que $, #, @, etc. sont interdits, à l'exception du caractère _ (souligné).
2.2.3. Déclaration des fonctions, procédures
a) Déclaration de la fonction
Une fonction est un bloc d’instructions nommée et paramétrée, réalisant une certaine tâche. Elle
admet zéro, un ou plusieurs paramètres et renvoie toujours un résultat. La syntaxe de déclaration
d’une fonction est la suivante :
Fonction nom_fonction (parametre1 : type,…, parametren : type): type valeur ;
Début
….
11
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
nom_fonction …
Retourner (nom_fonction) ;
FinFonction ;
Exemple : Ecrire une fonction qui calcule la moyenne de trois notes.
Fonction moyenne (note1 : réel, note2 : réel, note3 : réel) : réel ;
Début
moyenne (note1 + note2 + note3) / 3 ;
retourner (moyenne) ;
FinFonction ;
b) Déclaration de la procédure
Tout comme une fonction, une procédure est un ensemble d’ordre accomplissant une tâche
particulière. Elle peut être utilisée pour calculer zéro ou plusieurs résultats.
La syntaxe de déclaration d’une procédure est la suivante :
Procédure nom_procédure (parametre1 : type, …, parametren : type) ;
Début
…
FinProcédure ;
Exemple :
Procédure moyenne2 (note1 : entier, note2 : entier, note3 : entier, var moy : réel) ;
Début
moy (note1 + note2 + note3) / 3 ;
FinProcédure
2.3. Langage algorithmique
Algorithme NomAlgorithme ;
/*Ceci est un commentaire*/
/*déclaration de constante*/
/*déclaration de types*/
/*déclaration de variables*/
/*déclaration de procédures, fonctions*/
Début
Instruction1 ;
.
.
Instructionn ;
Fin
Il faut avoir une écriture rigoureuse
Il faut avoir une écriture soignée
Il est nécessaire de commenter les algorithmes
12
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
Il existe plusieurs solutions algorithmiques à un problème posé : il faut rechercher
l’efficacité de ce que l’on écrit
NB : L’écriture algorithmique est un travail de programmation à visée universelle : un
algorithme ne dépend pas du langage dans lequel il est implémenté, ni de la machine qui
exécutera le programme correspondant.
2.4. Phase d’analyse
Elle consiste à extraire de l’énoncé du problème des éléments de modélisation.
Technique : Distinguer en soulignant de différentes couleurs :
Quel est le but du programme (traitement à réaliser)
Quelles sont les données en entrée du problème
Où vont se situer les résultats en sortie
Exemple d’énoncé d’un problème
On souhaite calculer et afficher le salaire brut d’un ouvrier. Le salaire brut dépend du nombre
total d’heures de travail effectué par l’ouvrier et le tarif par heure.
Analyse du problème
On souhaite calculer et afficher le salaire brut d’un ouvrier. Le salaire brut dépend du nombre
total d’heures de travail effectué par l’ouvrier et le tarif par heure.
Données en entrée
Données en sortie
13
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
Chapitre 3 Les structures algorithmiques
3.1. Les structures linéaires
Elles sont caractérisées par une suite d’instructions à exécuter successivement dans l’ordre
énoncé. Les actions successives sont mentionnées les unes après les autres.
Exemple d’algorithme : Ecrire un algorithme qui permet de calculer la soustraction de deux
nombres réels.
Algorithme Soustraction_Nombre ; // ici c’est le nom de l’algorithme
// déclaration des variables du problème
Var a, b : réel ;
s : réel ;
/* Maintenant nous allons débuter avec le déroulement de l’algorithme proprement dit avec le
mot clé Début*/
Début
Ecrire ("Saisir le nombre a ") ;
Lire (a) ;
Ecrire ("Saisir le nombre b ") ;
Lire (b) ;
s a - b ; //affectation d’une valeur à la variable s
Ecrire ("le résultat de la soustraction est : ", s) ; //Affichage de la valeur de s
Fin
3.2. Les structures de contrôle
Il en existe trois types principaux :
Les disjonctions permettent, en fonction de l’occurrence d’un certain évènement, de
spécifier plusieurs lignes différentes d’exécution d’un programme. En fonction de la
réalisation de l’évènement ou non, l’algorithme suit un cheminement différent dans
l’architecture du code.
Les boucles sont utilisées pour répéter un grand nombre de fois une série d’instructions
(on parle d’itération pour définir une passe dans la boucle).
Les débranchements permettent de quitter prématurément l’exécution d’une boucle
d’instructions.
Ces trois types d’instructions de contrôle sont alors combinés pour créer un algorithme
complexe.
3.2.1. Les disjonctions ou traitements conditionnels ou structure alternative simple
Si…Alors… Sinon
Dans cette structure, l’exécution d’une des deux actions distinctes ne dépend que du résultat
d’un test effectué sur la condition qui peut être une variable ou un événement. Elle comporte
trois parties :
14
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
Une condition, exprimée sous forme booléenne, et dont le résultat (vrai ou faux)
indiquera le branchement à suivre dans le programme. Il s’agit d’une expression
algébrique dont le résultat est un booléen.
Une liste d’instructions à exécuter lorsque la condition est remplie (Action1, ..,
Actionn).
Une liste alternative d’instructions à exécuter dans le cas contraire (Action1, ..,
Actionn)..
Syntaxes :
Si condition Alors
Action 1
…
Actionn
FinSi
Si condition Alors
Action 1
…
Actionn
Sinon
Action 1
…
Actionn
FinSi
Exemple d’application : algorithme qui calcule la valeur absolue d’un nombre réel (utilisation
de la structure alternative si...Alors…sinon).
Algorithme Valeur_absolue ;
Var x : réel ;
resultat : réel ;
Début
Ecrire ("Saisir le nombre x") ;
Lire (x) ;
Si (x < 0) Alors
resultat -1 * x ;
Sinon
resultat x ;
FinSi ;
Ecrire ("La valeur absolue de x est : ", resultat) ;
Fin
3.2.2. Disjonction multiple
On parle aussi de branchement multiple. Une disjonction multiple désigne une instruction du
type :
15
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
Si condition1 Alors
Action 1
…
Actionn
Si condition2 Alors
Action 1
…
Actionn
Si conditionn Alors
Action 1
…
Actionn
Sinon
Action 1
…
Actionn
FinSi
FinSi
…
FinSi
3.2.3. Les boucles ou structures répétitives ou itératives
Les structures répétitives sont encore désignées sous le nom de boucle.
a) La structure Répéter action Jusqu’à condition
La séquence d’actions est exécutée au moins une fois et est répétée tant que la condition reste
fausse.
On sort de la boucle dès lors que le test de la condition s’avère vraie.
Syntaxe :
Répéter
Action1
….
Actionn
Jusqu’à <condition>
Exemple : algorithme qui affiche les 5 premiers nombres naturels (utilisation de la boucle
Répéter….Jusqu’à).
Algorithme Affiche_Nombre ;
Const N = 5 ;
Var i : entier ;
16
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
Début
i0 ;
Répéter
Ecrire(i) ;
ii+1 ;
Jusqu’à i==N ;
Fin
b) La structure Tant que condition faire action
Contrairement à la boucle Répéter….Jusqu’à, la structure Tant que permet de tester d'abord la
condition et la séquence d’actions est exécutée tant que la condition est vraie.
Syntaxe :
Tant que <condition> faire
Action1
…
Actionn
FinTantque
Exemple d’application : algorithme qui affiche les 5 premiers nombres naturels (utilisation de
la boucle Tant que).
Algorithme Affiche_Nombre ;
Const N = 5 ;
Var i : entier ;
Début
i0 ;
Tant que i<N faire
Ecrire(i) ;
ii+1 ;
FinTantque ;
Fin
c) La structure : Pour variable de index_debut à index_fin [par <pas>] faire action
Dans ce cas, on connait à l’avance le nombre d’itérations. On a un index de début et un index
de fin. Pas est la valeur à ajouter à index_debut à chaque passage dans la boucle. L’instruction
pour :
Initialise une variable de boucle (le compteur)
Incrémente cette variable de la valeur de « pas »
Vérifie que cette variable ne dépasse pas la borne supérieure (index_fin)
Syntaxe :
Pour <variable> de index_debut à index_fin [par <pas>] faire
Action1
…
17
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
Actionn
FinPour ;
Exemple 1 : algorithme qui affiche les 5 premiers nombres naturels (utilisation de la boucle
Pour).
Algorithme Affiche_Nombre ;
Const N = 4 ;
Var i : entier ;
Début
Pour i de 0 à N faire //0 est l’index de début et N est l’index de fin
Ecrire(i) ;
FinPour ;
Fin
Exemple 2 : algorithme qui affiche les 12 premiers nombres naturels en sautant un nombre à
chaque fois (utilisation de la boucle Pour).
Algorithme Affiche_Nombre2 ;
Const N = 22 ;
Var i : entier ;
Début
Pour i de 0 à N par 2 faire //0 est l’index de début et N est l’index de fin, le pas c’est 2
Ecrire(i) ;
FinPour ;
Fin
3.2.4. Les débranchements de boucle
Il existe trois types de débranchement de boucle : les sorties de boucle, les passages à l’itération
suivante et les réitérations.
a) Les instructions de sorties de boucles (break et continue)
break permet de sortir directement de la boucle (pour, tant que ou répéter) la plus interne.
continue permet de passer directement à l'itération suivante de la boucle la plus interne.
Exemple
Algorithme test ;
Var i entier ;
Début
Pour i de 1 à 5 faire
Si i == 1 alors
continue ;
Finsi ;
Ecrire ("ok") ;
Si i == 3 alors
break ;
Finsi ;
18
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
Finpour ;
Fin
b) L’instruction aller à (goto)
L'instruction goto permet de brancher (inconditionnellement) à une ligne du programme. Celle-
ci doit avoir été étiquetée (précédée d'une étiquette constituée d'un identificateur suivi de :).
Syntaxe :
goto Etiquette ;
Fonctionnement :
Le système interrompt l'exécution séquentielle du programme, remonte ou descend à la ligne
appelée étiquette et poursuit l'exécution à partir de celle-ci.
Exemple :
Algorithme test2 ;
Var i entier ;
Début
i 0 ;
Ecrire (i) ;
goto message ;
i i+1 ;
Ecrire (i) ;
message : Ecrire ("Ok") ;
Ecrire ("Fin") ;
Fin // Le programme affiche 0, Ok, Fin
Remarque : goto a la réputation de rendre les programmes moins lisibles. Néanmoins, son
utilisation est importante dans des cas qui l'impose.
3.3. Structure conditionnelle à choix multiple
Syntaxe :
Selon <sélecteur> faire
<liste de valeurs1> : <traitement 1>
<liste de valeurs2> : <traitement 2> …..
…..
<liste de valeursN> : <traitement N>
[Sinon
<traitement N+1>]
FinSelon ;
Le sélecteur est un identificateur. <traitement i> est une séquence d’actions. <liste de valeurs
i> peut être une constante ou un intervalle de constantes de même type que sélecteur. La partie
sinon est facultative. Elle est exécutée si aucune des valeurs n’est égale au sélecteur.
Exemple 1 :
19
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
Ecrire un algorithme qui permet de lire un numéro de jour de la semaine (compris entre 1 et 7)
et d’afficher le nom du jour en toute lettre.
Algorithme Jour_Semaine ;
Var jour : entier ;
Début
Ecrire ("Entrer le numéro du jour de la semaine ") ;
Lire (jour) ;
Selon jour faire
1 : Ecrire (" Lundi ") ;
2 : Ecrire (" Mardi ") ;
3 : Ecrire (" Mercredi ") ;
4 : Ecrire (" Jeudi ") ;
5 : Ecrire (" Vendredi ") ;
6 : Ecrire (" Samedi ") ;
7 : Ecrire (" Dimanche ") ;
FinSelon ;
Fin
Exemple 2 :
Ecrire un algorithme qui permet de lire un caractère correspondant à une saison et d’afficher le
nom de la saison en toute lettre.
Algorithme Afficher_Saison ;
Var S : caractère ;
Début
Ecrire (" Entrer le caractère : ") ;
Lire(S) ;
Selon S faire
"E", "e " : Ecrire ("Été") ;
"A", "a " : Ecrire ("Automne") ;
"H", "h " : Ecrire ("Hiver") ;
"P", "p " : Ecrire ("Printemps") ;
Sinon
Ecrire ("saison introuvable ") ;
FinSelon ;
Fin
20
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine