Cours Algorithme 2025
Cours Algorithme 2025
SOMMAIRE
La première définition du mot algorithme, dans son sens actuel, a été donnée par le mathématicien russe
Markov : « Tout ensemble de règles précises qui définit un procédé de calcul destiné à obtenir un résultat
déterminé à partir de certaines données initiales.» Les algorithmes sont constitués par un ensemble de règles
précises et compréhensibles par tous. Ils s’appliquent à des données qui peuvent changer et élaborent les
résultats en fonction des données initiales. (Microsoft Encarta 2008)
En d’autres termes, on peut définir l’algorithme comme étant la description non ambiguë en un nombre
d'étapes d'un calcul ou de la résolution d'un problème. Un programme est la traduction d'un algorithme
dans un langage de programmation (compréhensible) par une machine.
On peut déduire de cette définition celle de l’algorithmique : « l’algorithmique est la discipline qui traite
des méthodes permettant d’écrire des algorithmes c'est-à-dire les règles, les méthodes à observer pour
concevoir l’algorithme. L’algorithmique se penche sur la clarté, la lisibilité, le caractère non ambigu de
l’algorithme. »
MUHAMMAD IBN MUSA AL KHUWARIZMI (v. 780 - v. 850), mathématicien arabe, dont les
travaux sur l'algèbre, l'arithmétique et les tables d'astronomie ont considérablement fait progresser la
pensée mathématique.
Khuwarizmi fut bibliothécaire à la cour du Calife Ald Allah al-Ma'mun et astronome à l'observatoire de
Bagdad. Il fut le premier à utiliser à des fins mathématiques l'expression al jabr, dont est dérivé le mot
français algèbre. La version latine (par le traducteur italien Gérard de Crémone) du traité d'algèbre d'Al-
Khuwarizmi fut à l'origine de la connaissance mathématique en Europe médiévale. Ses travaux sur les
algorithmes, terme dérivé de son nom, permirent d'introduire la méthode de calcul utilisant les chiffres
arabes et la notation décimale. (Microsoft Encarta 2008)
Pourquoi apprendre l’algorithmique pour apprendre à programmer ? En quoi a-t-on besoin d’un langage
spécial, distinct des langages de programmation compréhensibles par les ordinateurs ?
Un ordinateur ne sait rien faire ; il ne fait que ce qu’on lui demande de faire, donc un automate ou une
marionnette sans ses fils. Pour qu’il puisse prendre vie, il doit mettre en œuvre des programmes. Pour créer
ces programmes, appelés logiciels, il faut formaliser le problème, exprimer les actions à exécuter sous la
forme d’algorithmes et les traduire dans un langage de programmation.
L’algorithme étant un ensemble de règles qui décrivent une séquence d’opérations en vue de résoudre un
problème donné bien spécifié, il doit répondre aux 5 caractéristiques suivantes :
• La finitude : Le nombre d’étapes d’un algorithme doit être fini. Le temps d’exécution pourra être
évalué.
• La précision : Chaque étape doit être parfaitement définie. Toutes les actions élémentaires doivent être
connues.
• Le domaine des entrées : Le champ des données d’entrée doit être spécifié.
• Le domaine des sorties : Un algorithme ayant un résultat, il faut donner les champs correspondants
aux résultats de sortie, ou du moins les relations entre les données d’entrée et les données de sortie.
• L’exécutable : Un algorithme doit déboucher sur un programme exécutable en un temps fini et
raisonnable.
[Link]. L’organigramme
Remarque : Cette méthode peut être utilisée pour des cas d’algorithme simple, mais l’objectif d’un
informaticien, développeur d’application est de construire des programmes conséquents avec des
algorithmes quelques fois complexes. L’utilisation d’organigrammes s’avère dès lors inappropriée.
Exemple : Organigramme illustrant l'algorithme qui élève un nombre N à un exposant entier P en effectuant
autant de multiplications successives que nécessaire. Microsoft Encarta
Exemple d’organigramme
[Link]. Le pseudo-code
Un algorithme peut être écrit en pseudo-code. Le pseudo-code est un langage simplifié proche du langage
naturel (humain), permettant d’écrire un programme à l’aide des mots simples. On parle aussi de langage
de description des algorithmes (LDA). Il possède :
• Une syntaxe : l’ensemble des règles d’écriture ;
• Une sémantique : qui constitue son interprétation, le sens donné au langage ;
• Une représentation : c’est l’alphabet utilisé pour construire les mots et les expressions du langage
provient de la langue française : les lettres majuscules et minuscules, les chiffres de 0 à 9, les caractères
spéciaux (signes mathématiques, ponctuations, …)
▪ L’en-tête : il est composé du mot clé Algorithme suivi du nom de l’algorithme donné par le
programmeur.
▪ La partie déclaration : c’est le lieu de déclarer les objets qui seront utilisés pour l’élaboration de
l’algorithme (constantes, variables, types, structures de données, fonctions, procédures). Cette
partie peut être vide s’il n’y a pas d’objet à déclarer.
▪ Le corps de l’algorithme : c’est le lieu de décrire les actions à effectuer pour la résolution du
problème. Il utilise les objets déclarés dans la partie déclaration. Il commence par le mot clé ‘Début’
et se termine par le mot clé ‘Fin’.
Un objet en algorithme est un élément abstrait portant un nom et permettant de sauvegarder les données
nécessaires aux traitements. On distingue particulièrement trois groupes : les constantes, les structures de
données et les variables. Chaque objet est défini par un identificateur, un type et éventuellement une valeur.
C’est le nom donné par le programmeur à l’objet dans l’algorithme. Un identificateur respecte les règles
suivantes :
- On utilise des lettres : caractère de 'a'..'z' ou 'A'..'Z' ou '_'.
- On utilise des chiffres : caractère de '0'..'9'.
- Un identificateur commence par une lettre.
- Il ne doit pas contenir d’espace, ni d’opérateur (/,=,+, etc.), ni tout autre symbole.
- Un identificateur doit être différent des mots clés encore appelés mots réservés qui permettent de
construire le langage algorithmique (Début, fin, répéter, lire, etc.).
Dagnogo amadou ingénieur de conception informatique Page 5 sur 33
COURS D’ALGORITHME 2025-2026
Exemples :
Le programmeur est libre d’attribuer les noms qu’il souhaite aux objets, variables, fonctions ou classes
qu’il utilise. Cependant, il ne doit jamais perdre de vue qu’un algorithme ou un programme doit être
lisible, clair et compréhensible non seulement par lui-même, mais également par toute autre personne
susceptible de le lire ou de le maintenir.
C’est pourquoi il est fortement déconseillé d’utiliser des identificateurs fantaisistes tels que « Grégoire »,
« Valérie » ou « Lulu », qui n’ont aucun sens dans le contexte du programme.
Un identificateur doit au contraire être mnémonique, c’est-à-dire formé à partir d’un ou plusieurs mots
contractés ou abrégés, mais qui conservent un sens explicite pour le concepteur et les futurs lecteurs du
code. Par exemple :
Le type d’un objet est l’ensemble des valeurs possibles que pourra prendre cet objet.
Le type d’une donnée manipulée dans un algorithme ou dans les langages de programmation, spécifie la
taille occupée par la donnée en mémoire, les opérations qui lui sont applicables ainsi que l’intervalle des
valeurs autorisées.
Exemples : le type entier, le type chaîne, le type réel, le type enregistrement
La valeur représente en fait le contenu de l’objet à un instant donné dans la vie du programme. Cette valeur
bien sûr sera d’un type compatible à l’objet au moment de sa déclaration. Justement à propos de déclaration,
passons-en aux détails sur les objets et voir de quoi il s’agit.
Nous avons vu plus haut que la première partie de l’algorithme est son en-tête composé du mot clé
Algorithme suivi de son identificateur c'est-à-dire le nom à lui donné par le programmeur. C’est en
quelque sorte un titre que vous donnez à un texte.
2.5. La constante
Remarque : dans un même algorithme, le mot clé const n’apparaît qu’une seule fois. Toutes les constantes
sont regroupées dans le même bloc. S’il n’y a pas de constante dans l’algorithme, le mot const n’apparaît
pas non plus.
2.5.3. La variable
Nous avons déjà défini ce qu’est un type. Néanmoins nous rappelons brièvement qu’un type représente
l’ensemble de valeurs que peuvent prendre les objets de l’algorithme. Ce paragraphe nous permettant dans
les détails de prendre connaissance des différents types de données que nous pouvons manipuler dans un
algorithme. Cela part des types simples (de base) aux types complexes.
• Le type entier
Le mot clé est « Entier ». Il est codé sur deux octets. L’intervalle des valeurs est : [- 32 768 ; + 32 767]
• Le type réel
Le mot clé est « Réel ». Le codage varie selon les documents et le langage de programmation utilisé. Il est
utilisé pour écrire les grands nombres ainsi que les nombres à virgule. Avec un codage de huit octets,
l’intervalle des valeurs sera :
[-3,40x1038 à -1,40x10-45] pour les valeurs négatives et [1,40x10-45 à 3,40x1038] pour les valeurs positives.
• Le type booléen
Un booléen est une variable particulière qui ne peut prendre que deux valeurs possibles : vrai ou faux. Le
mot booléen vient de George Boole (1815-1864), mathématicien et logicien anglais. En pratique un booléen
est codé sur un seul octet (0 pour faux et 1 ou tout autre valeur pour vrai).
Le mot clé est « Booléen ».
• Le type caractère
Un caractère représente une lettre quelconque de l’alphabet, un chiffre, un espace, un symbole. Il est codé
sur un(1) octet c'est-à-dire 8 bits. L’ors d’une initialisation ou affectation le caractère est placé entre deux
apostrophes comme par exemple ‘y’. On retrouve l’ensemble des caractères possibles dans un tableau dit
Table de codes ASCII. Arrêtons-nous un peut sur cette notion de codes ASCII. À ce propos voici un
article que nous vous proposons de parcourir…
L’ASCII (American Standard Code for Information Interchange) est un code normalisé qui associe des
valeurs numériques aux lettres, chiffres, signes et symboles, permettant ainsi aux ordinateurs d’échanger
des informations.
L’ASCII standard est universel, tandis que la version étendue varie selon les systèmes (IBM, Apple, etc.).
En dehors des types de base que nous venons de voir, qui sont des types dits prédéfinis parce que définis
par le langage algorithmique (ou le langage de programmation), le programmeur peut lui-même définir
d’autres types à partir des types de base. Ces types feront l’objet d’autres chapitres que nous aurons
l’occasion d’étudier par la suite. Ceux sont les types utilisateurs dont :
• Le type tableau
• Le type enregistrement
• Le type fichier
• Le type pointeur
Les opérateurs de comparaison permettent de comparer deux valeurs (nombres, chaînes de caractères,
etc.) et de renvoyer un résultat booléen :
Opérateurs Actions
= Égalité
> Supérieur
< Inférieur
<> Différent de
>= Supérieur ou égal
<= Inférieur ou égal
- Les opérateurs logiques (ou booléens)
Une expression logique est encore appelée condition. C’est une expression faisant partie des opérateurs de
comparaison et ayant pour résultat VRAI ou FAUX. Elle permet de comparer des valeurs de mêmes natures
à savoir 2 entiers, 2 réels, 2 caractères, 2 chaînes de caractères…
Opérateurs Actions
Non Non (négation)
Et Et logique
Ou Ou logique
XOR Ou exclusif
- La table de vérité
X Y Non X X Et Y X Ou Y X XOR Y
Vrai Vrai F V V F
Vrai Faux F F V V
Faux Vrai V F V V
Faux Faux V F F F
Une expression ET est à VRAI si les 2 conditions sont à VRAI
Une expression ET est à FAUX si une seule valeur est à FAUX
Une expression OU est à VRAI si une seule valeur est à VRAI et FAUX si les 2 sont à FAUX.
Le XOR est une rareté, dont il n’est pas strictement indispensable de s’encombrer en programmation.
La priorité des opérateurs dans une expression logique est : NON puis ET puis OU.
Pour éviter des confusions, on peut utiliser des parenthèses dans les expressions pour les clarifier,
sinon l’évaluation des expressions logiques s’effectue de la gauche vers la droite.
3.2. L’affectation
3.2.1. Définition
L’affectation est une opération qui consiste à placer dans la zone mémoire d’une variable (dont on précise
le nom), une valeur compatible avec le type de la variable. L’affectation est représentée par une flèche
vers la gauche « »
Exemple :
Algorithme Affectation
Const
Pu=1000
Var
valeur, qté : entier
Total : réel
Début
Qté 5
Valeur qté * pu
Total valeur + valeur*10/100
Fin
3.2.2. L’incrémentation
L’incrémentation est une affectation particulière mettant en jeu une et une variable apparaissant à la fois à
droite et à gauche du symbole d’affectation. On assigne à la variable son ancienne valeur augmentée d’une
constante numérique.
Exemple : A A +1
Si A valait 22, sa nouvelle valeur après cette opération sera 23.
3.2.3. La décrémentation
Quant à la décrémentation, On assigne à la variable son ancienne valeur diminuée d’une constante
numérique.
Exemple : An An – 2
Si An valait 20, sa nouvelle valeur après cette opération sera 18.
Proposition de solution :
Algorithme CalculPrixTotal
Var
PrixUnit, PrixTotal : réel
qté : entier
Début
(* Saisie des informations en entrée *)
Écrire (‘‘ Entrer le prix unitaire :’’)
Lire (PrixUnit)
Écrire (‘‘Entrer la quantité :’’)
Lire (qté)
(* calcul du résultat *)
PrixTotal PrixTotal * qté
(* affichage du résultat*)
Écrire (‘‘Le prix total est de :’’, PrixTotal )
Fin
Cela se traduit par : Si la condition est vraie Alors Exécuter les instructions.
Exemple : Écrire un algorithme qui permet de calculer et afficher la valeur absolue d’un nombre réel entré
au clavier.
Algorithme ValeurAbsolue
Var
nombre : réel
Début
Écrire (‘’Veuillez entrer un nombre réel au clavier :’’)
Lire (nombre)
Si nombre < 0 Alors
Nombre - Nombre
Fin si
Écrire (‘‘la valeur absolue est :’’, nombre)
Fin
Cela se traduit par : Si la condition est vraie Alors Exécuter instructions_1 Sinon Exécuter instructions_2.
Exemple : écrire un algorithme qui permet à un utilisateur de saisir un nombre entier quelconque et le
programme affiche sa valeur absolue.
Algorithme Valeur_Absolue2
Var nombre : entier
Début
Écrire (‘‘Veuillez entrer un nombre entier quelconque :’’)
Lire (nombre)
Si nombre < 0 Alors
Écrire (‘‘ la valeur absolue de ’’, Nombre, ‘’ est ‘’, - nombre)
Sinon
Écrire (‘‘ la valeur absolue de ’’, Nombre, ‘’ est ‘’, nombre)
Fin si
Fin
Dagnogo amadou ingénieur de conception informatique Page 14 sur 33
COURS D’ALGORITHME 2025-2026
Par exemple :
Voici un programme devant donner l’état de l’eau selon sa température doit pouvoir choisir entre trois
réponses possibles (solide, liquide ou gazeuse).
Algorithme Température
Var
Temp : Entier
Début
Ecrire (“Entrez la température de l’eau :”)
Lire Temp
Si Temp <= 0 Alors
Ecrire (“C’est de la glace’’)
Finsi
Si Temp > 0 Et Temp < 100 Alors
Ecrire (“C’est du liquide”)
Finsi
Si Temp > 100 Alors
Ecrire (“C’est de la vapeur”)
Finsi
Fin
Algorithme Température
Remarque:
➢ Afin de faciliter la lecture des algorithmes, il est important de façon générale d’indenter le programme.
Surtout les instructions du « Si » et « Sinon ».
➢ Un Si se rapporte toujours à un Fin Si.
Syntaxe
Selon variable Faire
Étiquette1 : instructions 1
Étiquette2 : instructions 2
…
…
ÉtiquetteN : instructions N
[ Sinon : instruction par défaut ]
Fin Selon
La structure de choix est utilisée lorsqu’il y a des choix à faire dans l’exécution d’un ensemble
d’instructions en fonction du choix de l’étiquette.
En cas d’égalité de la variable avec une étiquette, l’instruction associée à l’étiquette est exécutée.
Exemple
Programme Processus
Var étape, durée : entier
Arrêt : booléen
Début
Arrêt FAUX
Durée 0
Écrire (‘’ Entrer le N° de l’étape :’’)
Lire (étape)
Selon étape Faire
1 : Durée 15
2 : Durée 10
3 : Durée 25
4 : Durée 15
5 : Durée 0
Fin selon
Écrire (‘’étape’’, étape, ‘‘ de durée’’, durée)
Fin
3.8. La structure répétitive « Pour »
Syntaxe :
Exemple :
Remarque :
- Si la valeur du pas est 1 (valeur par défaut), on peut omettre cette option
Dans ce cas la syntaxe se résume à
Pour indice valeurInitiale à valeurFinale Faire
Dagnogo amadou ingénieur de conception informatique Page 17 sur 33
COURS D’ALGORITHME 2025-2026
Instruction(s)
Fin pour
Applications
1- Écrire un algorithme qui calcule la somme des nombres pairs sur la série des 10 premiers nombres
entiers.
Programme SommePaire
Var i, somme : entier
Début
Somme 0
Pour i 2 à 10 (par pas de 2) Faire
Somme somme + i
Fin pour
Écrire (‘‘ La somme des 10 premiers nombres pairs est :’’, somme)
Fin
2- Écrire un algorithme qui a pour objectif de rechercher le minimum et le maximum dans une série de N
valeurs entières. N doit être saisi positif. Afficher les résultats.
Algorithme MinimumMaximum
Const N=15
Var
nombre, i, Min, Max : entier
Début
Écrire (‘‘Entrer un nombre positif :’’)
Lire (nombre)
Min nombre
Max nombre
Pour i 2 à N Faire
Écrire (‘‘Entrer un nombre positif :’’)
Lire (nombre)
Si Min > nombre alors
Min nombre
Sinon
Si Max < nombre alors
Max nombre
Fin si
Fin Si
Fin pour
Écrire (‘‘La minimum est :’’, min)
Écrire (‘‘La maximum est :’’, max)
Fin
Dagnogo amadou ingénieur de conception informatique Page 18 sur 33
COURS D’ALGORITHME 2025-2026
Syntaxe :
Ceci se traduit par : tant que la condition est vraie, exécuter les instructions du bloc.
Il s’agit d’une répétition, d’une boucle. Le programme testera d’abord la condition avant d’exécuter
l’instruction. Lorsque la condition devient faux, la boucle se termine et le programme continue son
exécution après l’instruction qui suit le fin tant que.
Remarque :
➢ Avec cette structure, on exécute les instructions de 0 à n fois. En effet, on peut ne même pas rentrer
dans la boucle (donc 0 instruction), dans le cas où il s’avère que dès le premier test la condition a pour
valeur faux.
➢ La condition du tant que est appelée condition de continuation.
Exemples :
1- Nous souhaitons que l’utilisateur saisisse absolument une valeur positive. Pour s’en assurer, nous allons
boucler tant que la valeur saisie n’est pas correcte.
Algorithme ValeurPositive
Var
nombre : réel
Début
Écrire (‘‘Entrer un nombre positif :’’)
Lire (nombre)
Tant que (nombre < 0) faire
Écrire (‘‘Entrer un nombre positif :’’)
Lire (nombre)
Fin tant que
Écrire (‘‘Le nombre saisi est :’’, nombre)
Fin
Écrire un algorithme qui permet à un utilisateur de saisir une série de nombres entiers positifs ou négatifs.
La saisie s’arrête lorsque l’utilisateur tape la valeur 0 (zéro). Lorsque la saisie est terminée, l’algorithme
affiche la somme des valeurs.
Algorithme SommeDesValeurs
Var
valeur, somme : entier
Début
(* initialisons la variable de cumul à zéro *)
Syntaxe :
Répéter
Instructions
Jusqu’à condition
Cette instruction permet la répétition du bloc d’instructions jusqu’à ce que la condition soit vraie. Il s’agit
aussi d’une répétition, d’une boucle. Elle s’arrête dès que la condition exprimée devient vraie.
Remarque :
➢ Avec cette structure, on exécute les instructions de 1 à n fois. En effet, on exécute au moins une
fois les instructions prévues avant de tester la condition.
➢ La condition du « tant que » est appelée condition d’arrêt.
Exemples
1- Nous souhaitons que l’utilisateur saisisse absolument une valeur positive. Pour s’en assurer, nous allons
boucler tant que la valeur saisie n’est pas correcte.
Algorithme ValeurPositive
Var
nombre : réel
Début
Répéter
Écrire (‘’Enter un nombre positif :’’)
Lire (nombre)
Jusqu’à nombre >= 0
Écrire (‘‘Le nombre saisi est :’’, nombre)
Fin
2-Écrire un algorithme qui permet à un utilisateur de saisir une série de nombres entiers positifs ou
négatifs. La saisie s’arrête lorsque l’utilisateur tape la valeur 0 (zéro). Lorsque la saisie est terminée,
l’algorithme affiche la somme des valeurs.
Algorithme ContrôleBorne
Var BorneInf, BorneSup, valeur : entier
Début
Écrire (‘‘Entrer un entier comme borne inférieure :’’)
Lire (BorneInf)
Répéter
Écrire (‘‘Entrer la borne supérieure :’’)
Lire (BorneSup)
Jusqu’à (BorneSup > BorneInf)
Répéter
Écrire (‘‘Entrer un valeur comprise entre ’’, BorneInf , ‘‘et’’, BorneSup)
Lire (valeur)
Jusqu’à (valeur >= BorneInf) et (valeur <= BorneSup)
Écrire (‘‘ Vous avez saisie la valeur ’’, valeur)
Fin
2) Écrire un programme qui permet de débiter un stock de 50 pièces ou le réapprovisionner par lot de 100
unités si la quantité commandée, comprise entre 1 et 100, est supérieure à la quantité en stock (toujours
initialisée à 50).
3) Écrire un programme qui calcule le Plus Petit Commun Multiple (PPCM) entre une valeur A et une
valeur B de type entier saisies au clavier.
4) On sait que : l’eau gèle à 0° ; l’eau salée gèle à -3° ; le fuel gèle à -5° ; l’ordinaire gèle à -13° ; le
super gèle à -23°.
Écrire un programme qui demande une température et sort la liste des liquides qui gèlent à cette
température. Dans un deuxième temps, modifier le programme en utilisant des constantes nommées.
Exemple : l’utilisateur saisit : -7
Le programme affiche :
Eau gèle
Eau salée gèle
Fuel gèle
Un tableau est une structure de donnée linéaire qui permet de stocker sous le même nom un ensemble de
valeurs de même type. Les données sont placées de manière contiguë en mémoire. Chaque élément est
repéré et identifié par un (ou plusieurs) nombre entier(s). Le tableau est encore appelé variable indicée.
Le nombre qui, au sein d’un tableau, sert à repérer chaque valeur s’appelle l’indice. On distingue les
tableaux à une dimension et les tableaux à plusieurs dimensions.
Un tableau est dit unidimensionnel lorsque l’indice est unique.
Lorsqu’un traitement utilise plusieurs tableaux à une dimension, subissant le même traitement, on utilise
un tableau à deux dimensions. Cette nouvelle forme de tableau possède un identifiant unique. Chaque
élément est identifié par deux indices : l’un indiquant la ligne et l’autre la colonne.
4.2.1. Déclaration
La création d’un tableau consiste en un remplissage des différentes cases qui le constituent. Cette opération
peut se faire de deux manières :
Soit en renseignant les cases une à une à partir de la première.
Soit en adressent les cases directement.
Algorithme SaisieTableauV2
Var T: tableau[1..10] d’entiers
i : entier
Début
Pour i 1 à 10 faire
Écrire (‘entrer un entier :’)
Lire (T [i])
Fin pour
Fin
Algorithme EditionTableau
Var
T : tableau[1..10] d’entiers
i : entier
Début
(* création du tableau *)
Pour i 1 à 10 faire
Écrire (‘‘entrer un entier : ’’)
Lire (T [i])
Fin pour
(* affichage des éléments du tableau *)
Pour i 1 à 10 faire
Écrire (T [i])
Fin pour
Fin
Application 3
Calculer la somme, le produit et la moyenne de n nombres saisis au clavier.
Algorithme CalculSurTableau
Const n = 10
Var
T : tableau [1.. n] d’entiers
i, nombre, somme, produit : entier
Moyenne : réel
Début
Somme 0 Produit 1
(* création du tableau *)
Pour i 1 à n faire
Lire (nombre)
T[i] nombre
Fin pour
(* calcul de la somme, du produit et de la moyenne *)
Dagnogo amadou ingénieur de conception informatique Page 24 sur 33
COURS D’ALGORITHME 2025-2026
Pour i 1à n faire
Somme somme + T[i]
Produit produit *T[i]
Fin pour
Moyenne total /n
Écrire (‘‘SOMME =’’, somme)
Écrire (‘‘PRODUIT =’’, produit)
Écrire (‘‘MOYENNE = ’’, moyenne)
Fin
Application 4
Considérons que le tableau est déjà créé. On demande de rechercher les valeurs minimum et maximum
du tableau.
Algorithme RechercheMinMaxTableau
Const n = 10
Var
T : tableau[1.. n] d’entiers
Min, max, i : entier
Début
(* création du tableau *)
Pour i 1 à n faire
Lire (T[i])
Fin pour
Min T[1]
Max T[1]
Pour i 2 à n faire
Si T[i] < Min alors
Min T[i]
Sinon
Si T[i] > Max alors
Max T[i]
Fin si
Fin si
Fin pour
Écrire (‘‘Le minimum est ’’, Min)
Écrire (‘‘Le maximum est’’, Max)
Fin
La solution consiste à saisir le nom du client à rechercher. Le traitement commence à la première case
du tableau et s’arrête au plus tard à la 20e c'est-à-dire la dernière.
Il y a 2 conditions d’arrêt possibles :
- soit nous avons atteint la 20e case et nous avons trouvé le client ou pas
- soit nous l’avons trouvé avant la 20e
4.3.1. Déclaration
Var T : tableau [1..5, 1..4] d’entiers
Ici, nous avons déclaré un tableau à deux dimensions correspondant à 5 lignes sur 4 colonnes.
Le schéma est représenté comme suit :
1 2 3 4
1
2
3
4
5
Écrivons l’algorithme qui permet de créer notre tableau de 5 lignes sur 4 colonnes.
Algorithme TableauBiDim
Var T : tableau [1..5, 1..4] d’entiers
i, j : entier
Début
(* création du tableau *)
Pour i 1 à 5 faire
Pour j 1 à 4 faire
Écrire (‘‘entrer un entier : ’’)
Lire (T [i,j])
Fin pour
Fin pour
(* affichage des éléments du tableau *)
Pour i 1 à 5 faire
Pour j 1 à 4 faire
Écrire (T [i,j])
Fin pour
Fin pour
Fin
Application 6
Écrivez un algorithme remplissant un tableau de 6 sur 13, avec des zéros.
Algorithme Table2Dim
Const L=6
C=13
Var
Application 7
Considérons un tableau de 5 lignes et 4 colonnes contenant des entiers. Nous désirons compter le nombre
d’occurrences d’un nombre saisi au clavier.
Proposition de solution
Algorithme RechercheTableauBiDim
Var
T : tableau [1..5, 1..4] d’entiers
i, j, n, nombre : entier
Début
(* création du tableau *)
Pour i 1 à 5 faire
Pour j 1 à 4 faire
Écrire (‘‘entrer un entier : ’’)
Lire (T [i,j])
Fin pour
Fin pour
(* recherche des occurrences *)
Écrire (‘’ entrez le nombre à rechercher’’)
Lire (nombre)
N 0
Pour i 1 à 5 faire
Pour j 1 à 4 faire
Si (nombre=T [i,j]) alors
n n+1
fin si
Fin pour
Fin pour
Écrire (‘’le nombre’’, nombre, ‘’apparait’’, n,’’fois’’)
Fin
Énoncé : rechercher un nom saisi au clavier, à l’intérieur d’un tableau de 20 noms ordonnés.
Algorithme RechercheTri
Var TNom : tableau [1..20] de chaine
i : entier
xnom : chaine
Début
(* saisir ici le tableau et trier*)
- Soit t un tableau d'entiers de 1..n éléments rangés par ordre croissant par exemple.000000000
- On recherche le rang (la place) de l'élément X dans ce tableau. L'algorithme renvoie le rang (la valeur
-1 est renvoyée lorsque l'élément X n'est pas présent dans le tableau t). Au lieu de rechercher
séquentiellement du premier jusqu'au dernier, on compare l'élément X à chercher au contenu du milieu
du tableau. Si c'est le même, on retourne le rang du milieu, sinon l'on recommence sur la première
moitié (ou la deuxième) si l'élément recherché est plus petit (ou plus grand) que le contenu du
milieu du tableau.
Nous allons proposer deux versions d’algorithme dans la recherche dichotomique d’élément :
Algorithme itératif de recherche dichotomique
Algorithme rechercheDichotomiqV1
const N=10
var t : tableau[1..N] d’entier
i, gauche, droite, milieu, rang, x : entier
Début
(* on crée ici un tableau ordonné *)
Si (x = t [milieu]) alors
Écrire ('trouvé')
Sinon écrire ('pas trouvé');
Fin
1) Écrivez un algorithme permettant à l’utilisateur de saisir un nombre quelconque de valeurs, qui devront
être stockées dans un tableau. L’utilisateur doit donc commencer par entrer le nombre de valeurs qu’il
2) Écrivez un algorithme calculant la somme des valeurs d’un tableau (on suppose que le tableau a été
préalablement saisi).
4) Toujours à partir de deux tableaux précédemment saisis, écrivez un algorithme qui calcule le
schtroumpf des deux tableaux. Pour calculer le schtroumpf, il faut multiplier chaque élément du tableau
1 par chaque élément du tableau 2, et additionner le tout. Par exemple si l'on a :
Tableau 1: 4 8 7 12
Tableau 2: 3 6
Un tableau est ordonné lorsqu’il existe une relation d’ordre entre les éléments contenus dans chacune des
cases. Soit le tri est croissant soit il est décroissant. Il existe plusieurs méthodes de tri dont certaines peuvent
être complexes et très performantes. Pour d’autres, la performance varie en fonction de l’ordre original des
éléments à trier. Les algorithmes les plus connus sont :
- la méthode de tri par sélection du maximum ou du minimum
- la méthode de tri par insertion
- la méthode de tri par extraction
- la méthode de tri par bulles
Nous allons étudier quelques unes parmi elles.
4.6.1 à bulles
C’est le moins performant de la catégorie des tris par échange ou sélection, mais comme c’est un algorithme
simple, il est intéressant à utiliser pédagogiquement.
Principe du tri :
Ce tri consiste à prendre une série de nombres, puis en comparant les valeurs de la série 2 par 2, il effectue
des permutations éventuelles de manière à amener la valeur la plus grande de la liste à la fin de la série. On
Algorithme Tri_à_bulles
Const n=10
var t : Tableau [1..n] d’entiers
i, j, inter : entier
Échange : booléen
Début
Pour (i1 à n) faire (* saisie du tableau T *)
Écrire (‘entrer une valeur :’)
Lire (T[i])
Fin pour
(* boucle de traitement*)
Répéter
Échange faux
Pour( i 1 à (n-1))
Si (T[i] > T[i+1] ) alors
Échange vrai
Inter T[i]
T[i] T[i+1]
T[i+1] inter
Fsi
Fin pour
Jusqu’à non échange
(* Affichage du tableau T *)
Pour (i1 à n) faire
Écrire (T[i], ‘‘ ’’)
Fin pour
Fin
Algorithme tri_par_sélection
Const n=10
Var t : Tableau [1..n] d’entiers
i, j, iMin, temp : entier
Début
Le tri par insertion est le tri le plus efficace sur des listes de petite taille. C’est pourquoi il est utilisé par
d’autres méthodes comme le Tri rapide (ou Quicksort). Il est d’autant plus rapide que les données sont
déjà triées en partie dans le bon ordre.
Le principe de ce tri est de parcourir une liste non triée en la décomposant en deux parties, une partie déjà
triée et une partie non triée. La méthode est identique à celle que l’on utilise pour ranger des cartes que
l’on tient dans la main : on insère dans le paquet de cartes déjà rangées une nouvelle carte au bon endroit.
Algorithme Tri-Insertion
Const Max = 10
Type Table[1 : max] = tableau d’entiers
Var T : Table
i, j , tampon : entier
Début
(* création du tableau *)
Pour i 1 à n faire
Lire (T[i])
Fin pour