Vous êtes sur la page 1sur 74

UNIVERSITE PROTESTANTE DE LUBUMBASHI

UPL

COURS D’ALGORITHMIQUE ET METHODES


DE PROGRAMMATION I

Année Académique 2022-2023

Document de travail, Ruphin NYAMI


Cours d’Algorithmique I 1
BAC1 RT & ISI 2023

Si, naturellement, vous êtes organisé ce qui est souhaitable pour le programmeur
que vous serez, vous procédez généralement de façon méthodique pour réaliser vos tâches. En
d’autres termes, chaque fois que vous souhaitez effectuer un travail ou solutionner un
problème, vous suivez une certaine logique, une méthode relativement rigoureuse. Même dans
les cas les plus simples et routiniers comme « mettre vos chaussures » ou « préparer du fufu »,
vous disposez d’une méthode ou logique de travail. Pour preuve, vous traiterez de « déphasé »
celui qui met ses chaussures après ses chaussettes ou celle qui mélange la farine à l’eau avant
d’allumer le feu.
Le domaine de la programmation n’échappe pas à la règle. Au contraire, il
l’amplifie, comme vous avez pu le découvrir dans le cours d’Algorithmique de Premier
Graduat.…
L’Algorithmique constitue une illustration de la nécessité d’une telle convergence
de disciplines et de techniques ; c’est en effet à partir d’algorithmes que les informaticiens
pourront élaborer les logiciels utilisant au mieux les matériels informatiques de plus en plus
évolués mis à leur disposition par les progrès de la technique électronique.

J. GIRERD

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 2
BAC1 RT & ISI 2023

TABLE DES MATIERES


TABLE DES MATIERES .......................................................................... 2
PLAN DU COURS ................................................................................ 3
BIBLIOGRAPHIE ................................................................................. 3
INTRODUCTION ................................................................................. 4
1. Généralités....................................................................................................................... 4
2. Définition des quelques concepts clés ........................................................................ 6
3. Niveau d’abstraction ...................................................................................................... 7
4. Algorithme et langage de programmation ................................................................. 7
5. Avantages d’un langage algorithmique....................................................................... 9
CHAPITRE Ier : CONCEPTION D’UN ALGORITHME .......................................... 13
I.1. GENERALITES ............................................................................................................... 13
I.2. ANALYSE DESCENDANTE ............................................................................................ 13
I.3. DEMARCHE DE CONCEPTION D’UN PROGRAMME ................................................... 14
EXERCICES ...................................................................................... 16
CHAPITRE II : LES VARIABLES ET LES CONSTANTES ....................................... 21
II.1. INTRODUCTION .......................................................................................................... 21
II.2. DECLARATION DES VARIABLES ................................................................................. 22
II.3. SYNTAXE DE LA DECLARATION D’UNE VARIABLE .................................................. 27
II.4. OPERATION D’AFFECTATION ................................................................................... 28
II.5. LA DECLARATION DES CONSTANTES ....................................................................... 30
II.6. LES EXPRESSIONS ET LES OPERATEURS .................................................................. 30
EXERCICES ....................................................... Erreur ! Signet non défini.
CHAPITRE III : LES ENTREES ET LES SORTIES .............................................. 34
III.1. INTRODUCTION ......................................................................................................... 34
III.2. LA PRIMITIVE D’ENTREE ......................................................................................... 35
III.3. LA PRIMITIVE DE SORTIE .......................................................................................... 35
CHAPITRE IV : LES STRUCTURES DE CONTROLE ........................................... 38
IV.1. LA SEQUENCE (la structure séquentielle)........................................... 38
IV.1.1. LA STRUCTURE D’UN PSEUDO-CODE ............................................................. 38
IV.1.2. SYNTAXE D’UN ALGORITHME .......................................................................... 40
IV.2. LA SELECTIVE (la structure alternative) .............................................................. 40
IV.3. L’ITERATIVE (la structure itérative ou la répétition)........................................ 46
CHAPITRE V : LES TABLEAUX ................................................................ 57
V.1. CONCEPT DE TABLEAU.............................................................................................. 57
V.2. DECLARATION DES TABLEAUX ................................................................................. 58
V.3. TRAITEMENTS ITERATIFS SUR LES TABLEAUX ....................................................... 60
CHAPITRE VI : LES PROCEDURES ET LES FONCTIONS ..................................... 68
VI.1. FONCTIONS PERSONNALISEES ................................................................................. 68
VI.2. PASSAGE D’ARGUMENTS .......................................................................................... 69
VI.3. SOUS-PROCEDURES .................................................................................................. 70

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 3
BAC1 RT & ISI 2023

PLAN DU COURS

INTRODUCTION
CHAPITRE Ier : CONCEPTION D’UN ALGORITHME
CHAPITRE II : LES VARIABLES ET LES CONSTANTES
CHAPITRE III : LES ENTREES ET LES SORTIES
CHAPITRE IV : LES STRUCTURES DE CONTROLE
CHAPITRE V : LES TABLEAUX
CHAPITRE VI : LES PROCEDURES ET FONCTION

BIBLIOGRAPHIE
1. B. MUYER, Méthodes de programmation, Ed. Eyrolles, Paris, 1978.

2. Chantal RICHARD, Patrice RICHARD, Initiation à l’algorithmique 85


exercices corrigés, Ed. Belin, Paris, Juin 1981.

3. Charles CORGE, Eléments d’informatique Informatique et démarche de


l’esprit, Larousse, Paris, 1975.

4. Jean Pierre LAURENT, Jacqueline AYEL, Exercices commentés d’analyse et


de programmation, Ed. Dunod, Paris, 1985.

5. L. ALBERT, P. GASTIN, B. PETAZZONI, A. PETIT, N. PUECH, P. WEIL, Cours


et exercices d’informatique, Ed. Vuibert, Paris, 1998.

6. P. LIGNELET, Algorithmique niveau avancé, Ed. Masson, Paris, 1981.

7. SEYMOUR LIPSCHUTZ, Les structures de données cours et problèmes, Série


Schaum, Hill inc, Paris, 1987.

8. Yves GRANJON, Informatique Algorithmiques en Pascal et en langage C,


Ed. Dunod, Paris, 1999.

Document de travail, Ruphin NYAMI


Ass. Ruphin NYAMI
M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 4
BAC1 RT & ISI 2023

INTRODUCTION
1. Généralités
L’algorithme est la description d’un traitement automatisé de données
destiné à être réalisé sur un ordinateur, après avoir traduit cette description dans
un langage de programmation. Il est aussi défini comme une méthode de résolution
des problèmes suivant un enchaînement, déterminé des règles opératoires.
Construire un algorithme revient parfois à construire une suite
possédant une propriété invariante intéressante, grâce à laquelle on pourra
déterminer le(s) résultat(s) de l’algorithme à partir du premier terme de la suite
possédant une propriété supplémentaire particulière : qu’il s’agisse d’un terme
donné de la suite (« terme d’ordre n »), de la limite de la suite, ou du premier
terme tombant dans un domaine fixé à l’avance.
L’algorithmique est la discipline qui consiste, après analyse du
problème à résoudre, à définir cette description du traitement, et ce, de manière
totalement indépendante du langage qui sera choisi pour la programmation.
La résolution d’un problème posé suppose une méthode. Par exemple :
il faudrait tracer des canevas pour les activités que nous aurons à effectuer dans la
journée, les courses que nous ferons en ville, les différentes actions que nous devons
mener pour atteindre un certain but, etc. tout en essayant de maximiser les profits,
et de minimiser les dépenses.
Cet ensemble d’actions qui doivent être réalisées en vue de satisfaire
une spécification donnée est appelé ALGORITHME.

2. Aperçu historique
Les premiers algorithmes dont on a retrouvé des descriptions datent
des Babyloniens, au IIIe millénaire av. J.-C. Ils décrivent des méthodes de calcul
et des résolutions d’équations à l’aide d’exemples. Un algorithme célèbre est celui qui
se trouve dans le livre 7 des Éléments d’Euclide, et appelé algorithme d’Euclide. Il
permet de trouver le plus grand diviseur commun, ou PGCD, de deux nombres. Un
point particulièrement remarquable est qu’il contient explicitement une itération et
que les propositions 1 et 2 démontrent sa convergence.
Ce mot vient d’un célèbre mathématicien arabe Abû Abdallah
Mohammed ibn Musã AL KHWARIZMI Al-Magusi (780-850) qui l’écrivit dans son

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 5
BAC1 RT & ISI 2023

œuvre ‘‘Hisab al-jabr w’al-muqabala’’ en 825 qui veut dire « L’action de faire
passer et d’agencer les parties d’un tout » ou « l’action de reconstituer un vase
brisé » en d’autres termes la description d’une suite finie d’actions permettant
d’aboutir à un résultat déterminé.
Les premiers algorithmes dont on a retrouvé des descriptions datent
des Babyloniens, au IIIe millénaire av. J.-C. Ils décrivent des méthodes de calcul
et des résolutions d’équations à l’aide d’exemples. Un algorithme célèbre est celui qui
se trouve dans le livre 7 des Éléments d’Euclide, et appelé algorithme d’Euclide. Il
permet de trouver le plus grand diviseur commun, ou PGCD, de deux nombres. Un
point particulièrement remarquable est qu’il contient explicitement une itération et
que les propositions 1 et 2 démontrent sa convergence.
Le savant arabe Averroès (1126-1198) évoque une méthode de raisonnement
où la thèse s’affine étape par étape, itérativement, jusqu’à une certaine convergence
et ceci conformé- ment au déroulement d’un algorithme. À la même époque, au XIIe
siècle, le moine Adelard de Bath introduit le terme latin de algorismus, par référence
au nom d’Al Khuwarizmi. Ce mot donne algorithme en français en 1554.
L’algorithme est une suite d’instructions, qui, une fois exécutée
correctement, conduit à un résultat donné. Chaque action qui constitue
l’algorithme, doit comporter la désignation des objets sur lesquels elle doit porter.
Il est encore défini comme un énoncé qui décrit une action à réaliser susceptible
d’être comprise par un processeur.
Un algorithme suppose l’existence d’un processeur (Abstrait ou réel)
capable de comprendre et d’exécuter les actions qui le compose.
Généralement, un ingénieur software (ingénieur logiciel), pour un
problème donné, écrit une suite d’algorithmes successifs s’adressant à une suite des
processeurs abstraits de moins en moins compétents. Cette suite d’algorithmes
successifs amène l’ingénieur software à décomposer de façon répétitive chacune des
actions à réaliser en actions plus simples tels que :
 Le premier algorithme se limite généralement à définir avec précision la
spécification globale, et s’adresse à un processeur abstrait très compétent,
Le dernier algorithme ne contiendra que des actions suffisamment simples,
atomiques, primitives ou élémentaires pour être exécuté directement par le
processeur réel disponible.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 6
BAC1 RT & ISI 2023

2.1. Définition des quelques concepts clés


On appelle processeur une entité capable de comprendre, et
d’exécuter des algorithmes. Il est caractérisé par :
 les objets sur lesquels il agit,
 les actions réalisées directement sur ces objets.
On appelle objet manipulé, un objet sur lequel le processeur sait
directement réaliser une action.
On appelle action élémentaire ou primitive ou atomique, l’action que
le processeur sait réaliser directement dès qu’elle lui est donnée.
On appelle abstraction, un concept qui consiste à construire des
couches des machines abstraites de plus en plus puissantes jusqu’à ce que
l’utilisateur à la limite n’ait besoin que d’une seule instruction pour exprimer une
idée. C’est aussi la capacité qu’a un système de cacher sa complexité interne.
L’algorithmique établit un ensemble de règles et techniques nécessaires
à la définition et à la conception d’algorithmes. L’algorithmique est l’étude de la
résolution de problèmes par la mise en œuvre des suites d’opérations élémentaires
selon un processus défini aboutissant à une solution.
L’algorithmique est :
- la science des algorithmes;
- l’art de créer de bons algorithmes, c’est-à-dire des algorithmes permettant de
résoudre efficacement un problème ou une classe de problèmes spécifiques ;
- l’étude mathématique de la construction des algorithmes.
L’algorithmique étudie la façon de décrire et décomposer des actions/calculs
complexes en actions/calculs simples. Un algorithme est une telle décomposition.
Par contre, un algorithme est un jeu de règles ou de procédures bien
définies qu’il faut suivre pour obtenir la solution d’un problème dans un nombre
finis d’étapes. Un algorithme peut comprendre les procédures et instructions
algébriques, mathématique et logiques et autres…. Les algorithmes fondamentaux
dans la recherche d’une solution par voie d’ordinateur, parce que l’on doit donner
à un Ordinateur une série d’instructions claires et nettes pour conduire à une
solution.
 Un algorithme prend en entrée des données et fournit un résultat
permettant de donner la réponse à un problème.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 7
BAC1 RT & ISI 2023

 Un algorithme = une série d’opérations à effectuer :


- Opérations exécutées en séquence ⇒ algorithme séquentiel.
- Opérations exécutées en parallèle ⇒ algorithme parallèle.
- Opérations exécutées sur un réseau de processeurs ⇒ algorithme
réparti ou distribué

3. Niveau d’abstraction
La difficulté majeure dans la conception d’un algorithme résulte dans
la grande différence qui existe entre le niveau de complexité de l’action que l’on
veut faire réaliser, et le niveau très élémentaire, constitué des actions primitives
que le processeur est en mesure de réaliser. De ce fait, l’écriture de l’algorithme
final s’avère impossible dans un premier temps. Sa conception nécessite de passer
par un certain nombre d’étapes intermédiaires dont chacune permet de cacher une
partie de la complexité.
La finalité à atteindre étant la même, chaque étape intermédiaire la
décrit en utilisant les actions primitives disponibles de ce niveau, qu’un
processeur abstrait de ce même niveau supposé plus intelligent que le processeur
final serait en mesure de réaliser.
Ainsi, chacune des étapes intermédiaires de la réalisation de
l’algorithme final, s’exprime elle-même sous forme d’un algorithme. Les
algorithmes intermédiaires sont constitués d’actions abstraites supposées exécutées
par des processeurs abstraits, tandis que l’algorithme final ne comporte que les
actions primitives du processeur visé pour l’exécution.

4. Algorithme et langage de programmation


L’algorithme se construit simplement à partir de mots clés et de
conventions, en français, en utilisant un certain nombre de principes directeurs.
Un langage de programmation à l’opposé de la conception d’un
algorithme peut être considéré comme un niveau final d’abstraction, et qu’il existe
déjà des actions primitives déterminées à l’avance. C'est-à-dire les étapes
intermédiaires ne sont pas représentées dans un langage de programmation.
Sous le vocable programmation se cachent deux activités. L’une
consiste à faire l’analyse du problème à traiter, afin d’élaborer un algorithme
approprié, l’autre est la traduction de cet algorithme dans un langage de

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 8
BAC1 RT & ISI 2023

programmation compréhensible par l’ordinateur, qui pourra se charger de


l’exécuter.
Pour pouvoir concevoir un bon programme, trois étapes sont essentielles
:
1. Analyser le problème: définir avec précision les résultats à
obtenir, les informations dont on dispose ;
2. Déterminer les méthodes de résolution: il s’agit de
déterminer la suite des opérations à effectuer pour obtenir la solution au problème
posé à partir des données. Cette suite d’opérations constitue un algorithme. Parmi tous
les algorithmes fournissant la solution, il faudra choisir le plus efficace. Ensuite, il
faut formuler l’algorithme définitif ; il s’agit de faciliter la résolution sur
ordinateur par l’expression de l’algorithme dans un formalisme adéquat (langage de
description d’algorithme : LDA, pseudo-code, algorigramme, arbre programmatique, ...).
3. Programmer la solution: Traduire l’algorithme dans un
langage de programmation adapté.
Un langage de programmation se définit par une syntaxe et une
sémantique. La syntaxe est l’ensemble des règles à respecter pour écrire (et lire) un
programme (donc sa grammaire). Elle peut se comparer à la grammaire d’une langue
naturelle. Exemple : en C, les instructions se terminent par un point-virgule. La
sémantique donne le « sens » du programme, c’est-à-dire ce que signifie les éléments
du programme. Exemple : en C, deux instructions successives sont exécutées
séquentiellement. Un programme peut être syntaxiquement correct et ne pas faire ce
qu’on veut (être « sémantiquement incorrect »), mais l’ordinateur ne peut pas le
détecter.
Le langage algorithmique est un langage générique permettant de traiter
des problèmes par une suite d’instructions élémentaires. Il est à la base de tous les
langages de programmation.
Par rapport aux langages de programmation, le langage algorithmique
offre aux programmeurs les avantages suivant :
1. Raisonner par niveaux d’abstraction décroissante
2. Séparer l’analyse du problème de l’implémentation réelle dans un
langage de programmation,
3. Concevoir la solution indépendamment des idiosyncrasies des

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 9
BAC1 RT & ISI 2023

langages de programmation,
4. Unifier la conception de la solution pour l’ensemble de langages
de programmation.

5. Qualités d’un bon algorithme

Pour obtenir un bon programme il faut partir d’un algorithme qui doit
posséder entre autres, les qualités suivantes :
- La clarté: Un bon algorithme doit être clair, facile à comprendre par tous ceux
qui le lisent.
- La généricité: Un bon algorithme doit être le plus général possible pour
répondre au plus grand nombre de cas possibles.
- L’abstraction: Un bon algorithme doit pouvoir être traduit en n’importe quel
langage de programmation, il ne doit donc pas faire appel à des notions
techniques relatives à un langage particulier ou bien à un système d’exploitation
donné.
- La facilité d’utilisation: Un bon algorithme doit être d’une utilisation
aisée même par ceux qui ne l’ont pas écrit.
- La performance: Un bon algorithme doit être conçu de manière à limiter le
nombre d’opérations à effectuer et la place occupée en mémoire.

6. Expression des algorithmes


Les algorithmes peuvent être exprimés au moyen de différentes
notations : les langues naturelles (anglais, français, kiswahili, ...), le pseudo-code,
les Flowcharts, les langages de programmation, les tables de contrôle, etc. Les
expressions des algorithmes langues naturelles sont, en général, trop verbeuses et
ambiguës, d’où ils ne sont rarement utilisés dans le cas des algorithmes complexes.
Les langages de programmation sont avant tout destinés à exprimer des algorithmes
dans une forme directement exécutable par les ordinateurs, d’où ils ont une syntaxe
très stricte. Le pseudocode, les flowcharts et les tables de contrôle sont un moyen
structuré d’exprimer des algorithmes tout en évitant l’ambigüité des langues
naturelles ainsi que la rigueur des langages de programmation. Ils représentent alors
un choix intermédiaire entre les deux techniques de représentation. Nous utiliserons
plus couramment le pseudocode pour exprimer nos algorithmes.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 10
BAC1 RT & ISI 2023

6.1. Pseudo-langage
Un pseudocode est une description informelle haut niveau, mais
structurée du fonctionnement d’un algorithme. Dans un pseudocode, on utilise les
conventions structurelles d’un langage de programmation, mais cela est destiné à
faciliter la lecture par un hu- main plutôt que par une machine. La syntaxe d’un
pseudocode est donc moins stricte que celle d’un vrai langage de programmation.
Étymologiquement, pseudocode signifie un faux code. Dans le vocabulaire
de la programmation informatique, on appelle code source ou code tout court la
description littérale d’un programme dans un langage de programmation donné. Un
pseudocode est donc une description semblable à celle d’un vrai code dans un vrai langage
de programmation, sauf que le pseudocode est plus simplifié syntaxiquement.
Le but d’utiliser un pseudocode pour exprimer un algorithme plutôt
qu’un vrai langage de programmation est que le pseudocode est plus facile à comprendre
par un être humain, parce qu’il est plus clair que le code source d’un programme.
On a besoin d’un langage formel minimum pour décrire un algorithme.
Un langage de programmation (Java, C, Pascal, etc.) est trop contraignant. Dans la
littérature, les algorithmes sont décrits dans un pseudo langage qui ressemble à un
langage de programmation (le pseudo langage utilisé dépend donc de l’auteur et
peut être spécifié par celui-ci en début d’ouvrage).
Tous les pseudos langages recouvrent les mêmes concepts :
- Variables, affectation
- Structures de contrôle : séquence, conditionnelle (sélection), itération ou
boucles
- Découpage de l’algorithme en sous-programmes (fonctions, procédures).
- Structures de données simples ou élaborées (tableaux, listes, dictionnaires,
etc.)
Aujourd’hui avec le développement des sciences et des technologies,
ème
nous sommes parvenus au monde de la programmation à la 4 génération. Nous
sommes passés du binaire à l’assembleur puis des langages procéduraux aux
langages événementiels et objets.
Derrière toutes ces innovations, aussi complexes qu’elles soient, nous
répétons toujours le même processus pour résoudre un problème en informatique.
Cette résolution peut être schématisée ainsi qu’il suit :

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 11
BAC1 RT & ISI 2023

Figure 1: processus de résolution de problème

Nous pouvons retenir que la résolution d’un problème en informatique


passe par la production d’un texte appelé algorithme. Ce dernier décrit l’ensemble
des opérations élémentaires qui seront exécutées par un ordinateur via un langage
de programmation pour obtenir la solution informatique.

6.2. . Structure générale d’un algorithme

Algo ou Algorithme ou Programme Nom_Algo


Constante ou Const nom_constante = Valeur
Type
% définition de type de données %
Variable ou Var
% liste des variables %
Procédure Nom_Procédure1 (donnée Nom_Var1 : Type1 ; Résultat
Nom_Var2 : Type2)
Début
% Instruction %
FinProcédure

Fonction Nom_Fonction (donnée Nom_var i : Type i) : Type de


résultat
Début
% Instruction %
Nom_Fonction = Valeur retour
FinFonction

% PROGRAMME PRINCIPAL %
Début
% Instruction %
FIN ou FinAlgo ou FinAlgorithme ou FinProgramme

Un algorithme commence toujours par les mots réservés suivants :


Algo, Algorithme ou Programme suivi de son Nom. Son nom est un identificateur;
il permet de nommer l’algorithme.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 12
BAC1 RT & ISI 2023

Un bloc est toujours constitué d’une partie déclarative et d’une partie


instruction. Il est subdivisé en quatre(04) sous parties :
- Déclaration de constantes.
- Déclaration de types.
- Déclaration de variables.
- Déclaration de procédures et de fonctions.
Tous les algorithmes doivent se terminer par :
 FIN
 FinAlgo s’ils débutent par Algo.
 FinProgramme s’ils débutent par Programme.
 FinAlgorithme s’ils débutent par Algorithme.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 13
BAC1 RT & ISI 2023

CHAPITRE Ier : CONCEPTION D’UN ALGORITHME


I.1. GENERALITES
Dans la résolution d’un problème, il est nécessaire et obligatoire de
présenter tous les cas possibles de façon exhaustive, des détails même les moindres
que l’énoncé donne.
Ainsi, il s’agit d’un travail extrêmement difficile, laborieux et
minutieux pour les débutants, qui n’ont aucune chance de réussir sans une méthode
rigoureuse et systématique qui permet de :
 Simplifier le problème à résoudre, et
 Rendre rigoureuse la démarche de conception d’un programme.

I.2. ANALYSE DESCENDANTE


Toute conception d’un algorithme nécessite de raisonner simultanément
sur les actions à réaliser (qu’il s’agit de décomposer), et sur les objets à mettre
en œuvre (qu’il s’agit de déterminer). Le rôle d’une méthode de conception est de :
 Faciliter la créativité du programmeur ;
 Permettre de contrôler cette créativité.
Ainsi,
 On définit en premier lieu avec précision l’action ABSTRAITE
qu’il s’agit de réaliser (propriétés qu’elle doit vérifier, objet
sur lesquels elle porte). C’est la SPECIFICATION ;
 On décompose chaque action abstraite en actions plus simples.
C’est la DECOMPOSITION. Cette décomposition permet de
définir un nouvel algorithme portant le nom de RAFFINAGE ;
 On recommence les deux premières étapes jusqu’à l’obtention
d’actions primitives.
La décomposition de chaque action abstraite peut se réaliser à travers
trois modèles de décomposition à savoir LA SEQUENCE, L’ALTERNATIVE et la
REPETITION.
Ces trois schémas de décomposition sont suffisants pour écrire n’importe
quel algorithme.
Tout langage de programmation sera capable de le coder, et tout
processeur de ce niveau devra être capable de le comprendre et de l’exécuter.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 14
BAC1 RT & ISI 2023

Par ailleurs, un algorithme bien conçu, doit répondre aux cinq


caractéristiques suivantes :
 FINITUDE : Il doit avoir un point d’arrêt. Un nombre d’étapes bien connu,
 PRECISION : Il doit être sûr du résultat obtenu. Chaque instruction doit être
spécifiée,
 DOMAINE DES ENTREES : Il doit être spécifié,
 DOMAINE DES SORTIES : Il doit être connu,
 EXECUTABILITE : Il doit déboucher sur un programme exécutable en un temps fini
et raisonnable.
L’analyse descendante consiste à décomposer de façon répétitive chaque
action en sous actions en se posant à chaque étape trois sortes de questions :
1. Que veut-on faire ?
2. Comment le faire ?
 L’action est décomposée en sous actions,
 Quelle méthode abstraite peut-on employer pour réaliser l’action ?
 Quel modèle de décomposition devons-nous effectuer pour réaliser cette
action à l’aide de la méthode choisie ?
 Quels sont les objets nécessaires pour permettre cette décomposition ?
(Variables, types, domaines,…),
3. Fait-on bien ce que l’on voulait ? (Preuve de validité).

I.3. DEMARCHE DE CONCEPTION D’UN PROGRAMME


La conception d’un programme qui doit résoudre un problème donné doit
suivre la démarche ci-après :

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 15
BAC1 RT & ISI 2023

Enoncé du problème

Analyse

Algorithme

Codage

Programme source Erreur syntaxique Erreur sémantique

Compilation

Programme exécutable

Exécution

Résultat

La phase d’analyse et celle de la traduction sont des opérations


intellectuelles humaines, tandis que la phase de compilation et celle d’exécution
sont réalisées automatiquement par la machine.
Une erreur syntaxique est une faute d’orthographe ou de grammaire. Elle
est commise dans la phase de codage et elle est signalée par le compilateur quand
il ne sait pas interpréter une instruction du programme source afin de la traduire
dans le langage machine (Langage assembleur). Pas de programme exécutable.
Une erreur sémantique est une faute très grave qui est due à une mauvaise
conception de la méthode suivie pour résoudre ce problème (phase d’Analyse). Là
nous avons un programme exécutable mais qui ne répond pas aux attentes du client,
d’où l’algorithme doit être corrigé à partir de la phase d’analyse.
NB : chaque programme (algorithme) devra avoir un nom et doit avoir trois parties :
 L’entête
 La partie déclarative
 Le corps du programme.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 16
BAC1 RT & ISI 2023

EXERCICES
1. Ecrire la suite d’instructions qui nous permet de calculer et d’afficher la
somme de deux nombres lus au clavier.

Solution 1

a.
 ACTIONS EN ENTREE
- Avoir les deux nombres

 TRAITEMENTS A EFFECTUER
- Calculer la somme de deux nombres

 RESULTATS A AFFICHER
- Afficher la somme de deux nombres

Au niveau 1, nous pouvons décrire l’algorithme comme présenté ci-


haut. Seulement il faut préciser que veut dire avoir les deux nombres, et calculer
la somme de deux nombres :

b.
- Lire le premier nombre
- Lire le deuxième nombre
- Calculer la somme de deux en additionnant le premier nombre au
deuxième nombre
- Afficher la somme obtenue

2. Ecrire les instructions nous permettant de déterminer le bénéfice obtenu par


un commerçant connaissant le coût d’achat de sa marchandise et le prix de
vente.

Solution 2

a.
 ACTIONS EN ENTREE
- Avoir le coût d’achat de la marchandise
- Avoir le prix de vente de la marchandise

 TRAITEMENTS A EFFECTUER
- Calculer le bénéfice

 RESULTATS A AFFICHER
- Afficher le bénéfice

Au niveau 1, l’algorithme peut être décrit de la manière suivante.


Seulement il convient de préciser que veut dire calculer le bénéfice. L’algorithme
du second niveau pourra s’écrire de la manière suivante :

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 17
BAC1 RT & ISI 2023

b.
- Lire le coût d’achat de la marchandise
- Lire le prix de vente de la marchandise
- Calculer le bénéfice en soustrayant du prix de vente le coût d’achat
- Afficher le bénéfice obtenu

3. Un examen comporte deux groupes d’épreuves. Chacun des deux groupes


d’épreuves est décomposé en épreuves d’enseignement général et en
épreuves d’enseignement professionnel.
Le règlement de l’examen stipule :
 Les candidats ayant obtenu, à la fois, une note moyenne égale ou
supérieure à 10 sur 20 aux épreuves d’enseignement général et une
note moyenne égale ou supérieure à 8 sur 20 aux épreuves
d’enseignement professionnel sont admis à subir les épreuves du
second groupe.
Les candidats non autorisés à passer les épreuves du second groupe sont
éliminés.

Les candidats admis à passer le deuxième groupe sont dispensés des


épreuves d’enseignement général du deuxième groupe, si leur
moyenne dans ces disciplines au premier groupe d’épreuves est
supérieure ou égale à 12.
Si on s’intéresse au traitement d’un seul candidat, quel est l’algorithme
correspondant à ce texte.

Solution 3

a.
 ACTIONS EN ENTREE
- Avoir les cotes

 TRAITEMENTS A EFFECTUER
- Tester les cotes
 RESULTATS A AFFICHER
- Admettre le candidat avec dispense des épreuves d’enseignement
général du deuxième groupe
- Admettre le candidat sans dispense
- Eliminer le candidat

Au niveau 1 l’algorithme peut être considéré comme suit. Il sied de


décomposer l’action AVOIR LES COTES et TESTER LES COTES. Nous aurons :

b.
- Lire la note obtenue aux épreuves d’enseignement général
- Tester si la cote lue est inférieure ou égale à 20
- Lire la note obtenue aux épreuves d’enseignement professionnel
- Tester si la cote lue est inférieure ou égale à 20
- Tester si la cote obtenue aux épreuves d’enseignement général est égale
ou supérieure à 10 et si la cote obtenue aux épreuves d’enseignement
professionnel est supérieure ou égale à 8

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 18
BAC1 RT & ISI 2023

Si oui : Admettre le candidat à passer les épreuves du second groupe

Si non : Eliminer le candidat

Nous constatons que le candidat qui est admis dans le deuxième peut ou ne
pas avoir de dispense. Par conséquent nous aurons à tester pour le candidat
ayant réussi au premier groupe si il peut avoir une dispense. Ainsi, nous
aurons :
c.
- Lire la note obtenue aux épreuves d’enseignement général
- Tester si la cote lue est inférieure ou égale à 20
- Lire la note obtenue aux épreuves d’enseignement professionnel
- Tester si la cote lue est inférieure ou égale à 20
- Tester si la cote obtenue aux épreuves d’enseignement général est égale
ou supérieure à 10 et si la cote obtenue aux épreuves d’enseignement
professionnel est supérieure ou égale à 8

Si oui :
- Tester si la cote obtenue aux épreuves d’enseignement
général est égale ou supérieure à 12

Si oui : Afficher le candidat est dispensé des épreuves


d’enseignement général du deuxième groupe

Si non : Afficher le candidat n’est pas dispensé des épreuves


d’enseignement général du deuxième groupe

Si non : Eliminer le candidat

4. le règlement intérieur d’une entreprise prévoit l’attribution d’une prime de


vacances selon les modalités suivantes :
 pour les salariés ayant plus de deux ans d’ancienneté et au moins deux
enfants, la prime est de 4% du salaire brut du mois de novembre;
 pour les salariés ayant plus de deux ans d’ancienneté et moins de deux
enfants, la prime est de 2% du salaire brut du mois de novembre;
 pour les autres salariés, cette prime est de 1,5% du salaire brut du
mois de novembre.

Ecrire la suite d’instructions nous permettant de résoudre cet énoncé.

Solution 4

a.
 ACTIONS EN ENTREE
- Avoir l’ancienneté
- Avoir le nombre d’enfants
- Avoir le salaire brut du mois de novembre
 TRAITEMENTS A EFFECTUER
- Tester l’ancienneté
- Tester le nombre d’enfants

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 19
BAC1 RT & ISI 2023

- Calculer la prime

 RESULTATS A AFFICHER
- Afficher la prime de l’agent

Au niveau 1 l’algorithme peut être écrit comme ci-haut. Il faut préciser


que veut dire tester l’ancienneté, tester le nombre d’enfants et calculer la prime.
Il est à signaler que la prime se calcule de 3 manières différentes. Nous aurons :

b.
- Lire l’ancienneté (nombre d’années de travail)
- Lire le nombre d’enfants que l’agent possède
- Lire le salaire brut de l’agent du mois de novembre
- Tester si l’ancienneté est supérieure à 2
Si oui : Tester si le nombre d’enfants est supérieur ou égal à 2

Si oui : Calculer la prime en multipliant le salaire brut du mois de


novembre par 0.04

Si non : Calculer la prime en multipliant le salaire brut du mois


de novembre par 0.02

Si non : Calculer la prime en multipliant le salaire brut du mois de


novembre par 0.015
5. la coopérative de l’association sportive du Grand-Paris accepte les
commandes par correspondance et les traite selon la procédure suivante : « Si
le stock du produit commandé est suffisant, la commande est préparée :
rédaction du bon de livraison et emballage de l’article ; cependant avant de
préparer la commande il faut vérifier si le client est membre de l’association.
Dans le cas où le client n’est pas membre sa commande est mise en attente
et le service des adhésions est averti. Si le stock est insuffisant, la commande
est mise en attente pour un traitement ultérieur.

Ecrire l’algorithme pour le traitement de la commande d’un client,


correspondant à ce texte.

Solution 5

a.
 ACTIONS EN ENTREE
- Avoir la commande
- Avoir le stock
- Avoir l’état du client (Membre ou non membre)

 TRAITEMENTS A EFFECTUER
- Traiter la commande

 RESULTATS A AFFICHER
- Rédiger le bon de livraison

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 20
BAC1 RT & ISI 2023

- Emballer l’article
- Placer la commande en attente et avertir le service des adhésions
- Placer la commande en attente pour un traitement ultérieur

Faites la suite.

6. Ecrire un algorithme qui calcule le PGCD de deux entiers lu par la méthode


d’Euclide ; cette méthode opère de la manière suivante : lire deux nombres
N1 et N2. Assigner à N1 la valeur de N2 et à N2 la valeur du reste de la division
de N1 par N2. Puis recommencer jusqu’à ce que la division soit nulle. A ce
moment, N1 contient le PGCD.

7. On désire connaître le nombre de kilomètres parcourus par un véhicule


pendant une semaine. Sachant que le véhicule est conduit pendant 5 jours
par semaine, écrire les instructions qui nous permettront de calculer et
d’afficher ce nombre.

8. Ecrire les instructions nous permettant de déterminer la somme d’argent


perçu dans une boutique pendant un jour.

9. Ecrire la suite d’instructions de manière à calculer le pourcentage obtenu par


un étudiant sachant qu’il y a 14 cours pondérés de la même manière.

10. A partir du rayon d’un cercle lu, écrire une suite d’instructions qui nous
permet de calculer et d’afficher la surface et la circonférence de ce cercle.

11. Même question que le précédent (si le rayon est exprimé en mètre, calculer
cette surface et cette circonférence en décimètre, et en centimètre).

12. Un fermier possède 40 têtes de bétails composés des boucs, des pintades et
des poissons. Ecrire les instructions de manière à lui permettre de déterminer
le nombre de pattes, sachant que les boucs ont chacun 4 pattes, les pintades
ont chacune 2 pattes et les poissons n’ont pas de pattes.

13. Ecrire les instructions qui pourront permettre de déterminer le montant total
d’une facture, sachant que ont doit lire pour chaque article payé sur la
facture, le prix unitaire et la quantité.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 21
BAC1 RT & ISI 2023

CHAPITRE II : LES VARIABLES ET LES CONSTANTES

II.1. INTRODUCTION
Lors de l’exécution d’un programme, nous constatons qu’une valeur peut
être utilisée plusieurs fois et parfois à des moments différents. Par exemple :
- La longueur d’une maison peut être utilisée pour calculer le périmètre,
pour calculer la superficie.
- Le prix unitaire d’un article peut être utilisé pour calculer le prix total
(en faisant quantité multipliée par le prix unitaire), il peut encore être
utilisé pour calculer le prix total de la facture (en faisant la sommation
des prix totaux des articles achetés)
Il convient de conserver pour le premier exemple la longueur de la maison
parce qu’elle ne doit pas changer pour le calcul du périmètre et de la superficie, et
pour le deuxième exemple il faut conserver momentanément le prix unitaire de
l’article. Il est à noter que la longueur d’une maison A ne sera pas la même que la
longueur d’une maison B, de même le prix unitaire d’un article X, n’est pas toujours
égal au prix unitaire de l’article Y.
Ainsi, il s’avère donc nécessaire d’avoir en permanence besoin de stocker
provisoirement des valeurs qu’un utilisateur peut donner à la machine (Saisies au
clavier) où que la machine peut donner à l’homme (résultat d’une opération).
Le souci permanent de conserver temporairement des valeurs lors de
l’exécution d’un programme informatique conduite à l’usage des variables.
Une variable est considérée comme une boîte que le programme va
repérer par un nom collé dessus. Pour avoir accès au contenu de la boîte, il suffit
de la designer par son nom.
Physiquement, dans la mémoire de la machine, une VARIABLE est un
emplacement repéré par une adresse binaire.
Le langage machine (ASSEMBLEUR) on utilise les adresses binaires
composées de 0 et 1 pour représenter une adresse (variable), tandis que dans un
langage évolué on épargne au programmeur la gestion fastidieuse des emplacements
mémoire et de leurs adresses, en permettant au programmeur de donner des noms
à son gré aux variables.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 22
BAC1 RT & ISI 2023

Une constante sera considérée comme une zone mémoire telle que la
valeur placée à l’intérieur ne peut pas changer. C'est-à-dire le contenu de cette
zone mémoire ne varie pas (ne change pas) tout au long du processus
Exemple on demande ce calculer la surface d’un cercle et sa
circonférence, sachant que la surface est trouvée en multipliant le rayon au carré
par la valeur pi, et la circonférence en multipliant le double du rayon par pi.
Dans tous les cas la valeur de pi sera toujours de 3.1416 et ne change pas
de valeurs peu importe le lieu, la grandeur du cercle,…

II.2. DECLARATION DES VARIABLES


En considérant une variable comme étant une boîte, nous remarquerons
que la boîte devra au préalable se retrouver dans la mémoire avant d’y mettre une
quelconque information. Ceci veut dire : « la première de chose à faire avant de
pouvoir utiliser une variable serait de la CREER et de lui ATTRIBUER un nom, c’est
ce qu’on appelle « LA DECLARATION DES VARIABLES ». Cette opération doit se faire
au début de l’algorithme ».

a. Nom de la variable
Les identificateurs sont des mots qui servent à désigner, à nommer et
à identifier les entités, les objets, les actions, les procédures et les fonctions
manipulés dans un programme.
Les identificateurs ne se créent pas n’importe comment car ils
doivent respecter l’ordre des diagrammes syntaxiques encore appelés
diagrammes de CONWAY : un identificateur débute toujours par une lettre ou
un caractère de soulignement qui peut être suivi de lettres, de chiffres ou de
caractères de soulignement de façon optionnelle.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 23
BAC1 RT & ISI 2023

Figure 2 : diagramme syntaxique d’un identificateur


Pour nommer une variable, chaque langage a ses lois. D’une manière
générale, nous observons les règles suivantes :
 Un nom de variable peut comporter les lettres et les chiffres (de A à Z, de a à
z, de 0 à 9),
 Il doit toujours commencer par une lettre,
 Il exclut la plupart des signes de ponctuation ( ? , . ; : !...) des caractères
spéciaux (¨, ^, *, ~, - ,+ , « , » , ‘, = , %, …) et des symboles (#, @, &, (, ), /,
π, Ω, ∑, λ, β, θ, £, $, …)
 Il ne doit pas avoir le caractère blanc « espace »,
 Il peut admettre le caractère blanc souligné uniquement ( _ ) enderscore
 Il est préférable de ne pas utiliser les accents sur les différentes lettres.

Exemple Contre exemple

Nombre Nombre-entier
Nbre Nbre?
a1C 1Ac
PrixDeVente Prix de vente
Elie Elisée
Quantite NombreD’Elève
Nombre_Eleve Nombre, Enfant
JourPreste Jour#Preste
A 4
pi π
Nbre4 λ
Pourc %

Exemple :
Ecrire la suite d’instructions qui nous permet de calculer et d’afficher la
somme de deux nombres lus au clavier.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 24
BAC1 RT & ISI 2023

- Lire le premier nombre


- Lire le deuxième nombre
- Calculer la somme de deux en additionnant le premier nombre au deuxième nombre
- Afficher la somme obtenue

Solution.
Dans la première action on a besoin d’un nombre qu’on peut appeler Nbre1
Dans la deuxième action on a besoin d’un nombre qu’on peut appeler Nbre2
Dans la troisième action on a besoin de trois variables le Nbre1, le Nbre2 et la Som
Dans la quatrième action on a besoin de la variable Som
Ainsi, on aura :
- Lire Nbre1
- Lire Nbre2
- Calculer Som égal Nbre1 plus Nbre2
- Afficher la Som

Lors de la déclaration d’une variable, la machine fait une réservation en


mémoire tout en allouant un emplacement à cette variable.
Ainsi, pour que cette opération s’effectue correctement, il faut que la
déclaration de la variable soit complète c’est-à-dire en spécifiant le nom de la
variable et son type.

b. Type de la variable
Le type permet de préciser quelle sorte de valeur, la variable peut
contenir. Ceci permet au processeur de réserver dans la mémoire de la machine un
espace suffisant pour contenir cette valeur.
Nous distinguons plusieurs types de variables. Le type de variable choisi
pour une valeur va déterminer :
 Les valeurs maximales et minimales des nombres ou des lettres
pouvant être stockées dans la variable,
 La précision de ces nombres.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 25
BAC1 RT & ISI 2023

1. Type numérique
Pour ce type, nous avons pour les entiers :
Les entiers sont les éléments de l’ensemble N (entier naturel positif) et de Z (Z est
l'ensemble des nombres entiers relatifs, c'est à dire positifs, négatifs ou nuls : Exemple
: …, -100, …, -12, -11, -10, …, -5, -4, -3, -2,- 1, 0, 1, 2, 3, 4,
5, … 10, 11, 12, …, 100, … ∈Z
 OCTET (byte) : ce type prend les entiers qui peuvent être codés sur
un octet soit 8 bits.
28 = 256 de 0 à 255
 ENTIER SIMPLE : ce type prend les entiers qui peuvent être codés
sur 2 octets soit 16 bits
216 = 65536 de 0 à 65535.
 ENTIER LONG : ce type prend des entiers qui peuvent être codés sur
4 octets soit 32 bits.
232 = 4.294.967.296 de 0 à 4.294.967.295.
L'ensemble N est inclus dans l'ensemble Z (car tous les nombres entiers naturels font
partie des entiers relatifs). Tout nombre dans N est aussi dans Z.

Entier Réel (ensemble R)


R est l'ensemble des nombres réels, c'est à dire tous les nombres qui peuvent exister
réellement,
NB : Lorsque nous avons des valeurs positives et négatives, le premier bit de chaque
type sera consacré au signe (1 pour les valeurs positives et 0 pour les valeurs
négatives).
Pour ce type, nous avons :
TYPE NUMERIQUE PLAGE
0 à 255 Octet non signé
OCTET - 128 à +127 Octet signé
0 à 65536 Entier simple non signé
ENTIER SIMPLE -32768 à +32767 Entier simple signé
0 à 4.294.967.295 Entier long non signé
ENTIER LONG -2.147.483.648 à +2.147.483.647 Entier long signé
-3,40.1038 à -1,40.10-45 pour les valeurs négatives
REEL SIMPLE 1,40.10-45 à 3,40.1038 pour les valeurs positives
-1,79.10308 à -4,94.10-324 pour les valeurs négatives
REEL DOUBLE 4,94.10-324 à 1,79.10308 pour les valeurs positives

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 26
BAC1 RT & ISI 2023

2. Types alphanumériques
Ces types nous permettent de stocker ou désigner les valeurs qui sont des
lettres ou des caractères, des signes de ponctuations, l’espace ou même de chiffres.
Nous avons : CARACTERE : qui ne contient qu’un seul caractère,
 CHAINE ( ) : peut contenir plusieurs caractères. Le nombre des caractères est
à préciser dans les parenthèses.
N
1. Toutes les valeurs de type caractère ou chaîne seront représentées
toujours dans les guillemets,
Ex : ’’ GAN, ’’ Je suis Ingénieur ‘’, ‘‘1200’’
Si dans un algorithme un nom est entouré des guillemets, il est considéré comme
une valeur dans le cas contraire, il est considéré comme une variable

Ex. Nombre c’est une variable


‘‘Nombre’’ c’est une valeur
2. Le nombre à mettre dans les parenthèses du type chaîne doit toujours
être un entier, car il indique une taille.
Ex : CHAINE(10)
Contre-exemple : CHAINE(5,6)
3. Pour un caractère l’espace réservé en mémoire est de 1 octet, pour le
type chaîne le nombre d’octets réservé est égal à la valeur mise dans les
parenthèses,
4. Une variable du type chaîne (n) peut prendre une valeur qui a une
longueur inférieure ou égale à n.
Ex : une variable déclarée du type CHAINE(6) peut prendre des
valeurs de longueur 1, 2, 3, 4, 5, 6
3. Type booléen
Ce type ne manipule que des variables qui ne peuvent prendre que 2
valeurs logiques du genre vrai ou faux, oui ou non.

Ces notions abstraites de vrai ou faux peuvent être représentées par tout
ce qu’on veut : true et false, 0 et 1, oui et non, masculin et féminin,…
Une variable déclarée de ce type occupe un seul bit en mémoire.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 27
BAC1 RT & ISI 2023

4. Type Date
Ce type est utilisé pour des valeurs du type date telles que la date du
jour, une date d’entrée de la marchandise.

II.3. SYNTAXE DE LA DECLARATION D’UNE VARIABLE


La syntaxe de la déclaration d’une variable est la suivante :
Variable <Nom de la variable> : <type>
Exemple 1 : variable A : entier
Exemple 2 : Variable prixtotal : reel

N 1. Lorsque nous avons plus d’une variable à déclarer dans un


algorithme, nous n’écrirons qu’une seule fois le mot Variable
avant la première variable à déclarer. Ainsi, nous aurons :
Variable <NomDeLaVariable1> : <type1>
<NomDeLaVariable2> : <type2>
...
<NomDeLaVariableN> : <type n>

Exemple : variable NomEtud : Chaine (15)


Taille : Réel
Sexe : Booléen
Age : Octet
NbreEtudiant : Entier
Prenom : Chaine (15)
Poids : Réel
2. Lorsque nous avons plus d’une variable qui ont le même type à
déclarer dans un algorithme, nous pouvons les écrire sur une même
ligne en les séparant par des virgules.
Ainsi, nous aurons :
Variable <Nom de la variable1>, …, <Nom de la variable n> : type

Exemple : Variable NomEtud, Prenom : Chaine (15)


Taille, Poids : Réel
Age : Octet
NbreEtudiant : Entier
Sexe : Booléen

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 28
BAC1 RT & ISI 2023

II.4. OPERATION D’AFFECTATION


Si la déclaration est considérée comme une réservation, ceci veut dire
qu’une fois la variable déclarée, il ne reste qu’à l’utiliser c'est-à-dire lui ATTRIBUER
une valeur ou lui AFFECTER une valeur.
L’affectation est une opération qui consiste à attribuer à une variable
une valeur.
En pseudo code, l’instruction d’affectation se note avec le signe et
la syntaxe d’une opération d’affectation serait :
Syntaxe < Variable>  <Valeur>
Exemple1 : Nom_Poisson  « Thomson »
NbreCours  16

La ligne de code devra être lue de droite vers la gauche


 Attribue la valeur Thomson à la variable Nom_Poisson
 Attribue la valeur 16 à la variable NbreCours.

N
1. La valeur à affecter ou à attribuer à une variable doit être
nécessairement du même type que la variable.
Exemple :
ALGO ExempleVariable
Var somme, Som : Réel
Prix : Entier
prixUnit : Octet
Nom, NomPropre : Chaine(25)
DEBUT
Somme  65,56
Prix  150
Nom  « Tantale »
Som  89
PrixUnit  12
NomPropre  « 2000 »

FINALGO
ALGO Contrexemple
VAR somme, Som : Réel
Prix, prixUnit : Entier
Nom, NomPropre : Chaine(7)
DEBUT

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 29
BAC1 RT & ISI 2023

Prix  150,38
Nom  « Tantale Joviale »
Som  « Au total j’ai 250 »
PrixUnit  540

FINALGO

2. L’usage des guillemets (« ») pour les valeurs alphanumériques


permet d’éviter toute ambiguïté entre la valeur et le nom de
variable.
Exemple :
Variable Banane, Orange, Pomme : Chaine(10)
Banane  « Papaye»
Orange  «Banane»
Pomme  Banane

La variable Orange contiendra la valeur « Banane »


La variable Pomme contiendra la valeur « Papaye »
3. La valeur à affecter dans une variable peut être le résultat d’une
expression.
Dans ce cas, l’expression se trouvant à droite du signe d’affectation
devra d’abord être évaluée avant de faire l’affectation.
Exemple :
Variable A, B, C : Reel
A  3,56
B 8
C A*B
La variable C après affectation aura la valeur 3,56 * 8 qui équivaut à 28,48.
Exemple :
Variable A, B, C : Chaine(20)
A  ‘‘Informatique’’
B  ‘’Gestion’’
C  A +’’ de ‘’ + B
La variable C après affectation aura la valeur ‘’Informatique de Gestion’’.
4. Une instruction d’affectation ne modifie que ce qui se trouve à
gauche du signe d’affectation
Exemple :
variable A, B, C : réel
A  4,5
B 3

Document de travail, Ruphin NYAMI


C  4,5 + 3 = 7,5
D  4,5 – 1 = 3,5
Ass. Ruphin NYAMI
A  7,5 * 3 + 4,5 = 27
M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 30
BAC1 RT & ISI 2023

C  A+B
D A-1
A C*B+A

II.5. LA DECLARATION DES CONSTANTES


Ce sont des identificateurs qui gardent toujours la valeur qu’on
leur a attribué durant tout l’algorithme. Leur valeur ne peut être modifiée.

Pour un emplacement mémoire tel que sa valeur ne doit pas changée tout
au long de l’algorithme, on aura à le déclarer de la manière suivante :
Syntaxe
Constante <Nom de la constante>=<Valeur>
Exemple :
Constante Pi=3.14
Dans ce cas la constante Pi ne pourra plus changer de valeurs

Si dans un algorithme nous avons plus d’une constante à déclarer,


on placera une seule fois avant la première constante à déclarer le
NB
: mot Constante. Généralement on déclare les constantes après les
variables

II.6. LES EXPRESSIONS ET LES OPERATEURS


Elles sont formées par une combinaison d’opérateurs et d’opérandes.
Les opérandes peuvent être des constantes, variables, chaînes de caractères. Les
opérateurs sont arithmétiques, logiques et booléens, de chaînes de caractères,
d’ensemblistes, etc.

Nous trouvons dans une instruction d’affectation deux parties.


La partie se trouvant à gauche du signe d’affectation et la partie se
trouvant à droite du signe d’affectation.
 A gauche nous trouvons uniquement le nom de la variable,
 A droite une valeur.
La valeur se trouvant à droite du signe d’affectation peut être une valeur
directe, une valeur se trouvant dans une variable ou le résultat d’une expression.
< Variable>  <Valeur>

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 31
BAC1 RT & ISI 2023

Exemple :

A « 12 »
B A
C 89
D 12+3.14*C

Une expression est un ensemble de valeurs, reliées par des opérateurs,


et équivalent à une seule valeur.
La valeur trouvée à la résolution d’une expression doit être du même type
que la variable se trouvant à gauche du signe d’affectation.
Un opérateur est un signe qui relie deux valeurs pour produire un
résultat.
Les opérateurs à utiliser dépendent des valeurs à manipuler.

1. Opérateurs numériques
Ce sont les opérateurs appliqués sur les valeurs numériques. Nous avons :
+ : Pour l’addition,
- : Pour la soustraction,
* : Pour la multiplication,
/ : Pour la division,
Mod : Pour le modulo ou le reste de la division modulaire
^ ou ** : Pour la puissance
Div ou \ : Pour la division entière.
L’évaluation d’une expression se fait de la gauche vers la droite en suivant
l’ordre de priorité qui est le suivant :
 La puissance,
 La multiplication, la division, la division entière et le modulo,
 L’addition et la soustraction.
L’usage des parenthèses dans une expression permet de forcer l’ordre de
N
priorité.
Exemple : (A + B) + C A + (B + C)
Les opérateurs d’addition et de soustraction peuvent être utilisés avec
N
les valeurs du type date

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 32
BAC1 RT & ISI 2023

2. Opérateur alphanumérique
Cet opérateur agit sur les valeurs du type chaîne de caractère ou
caractère. Nous avons :
& ou + (esperluette) : pour faire la concaténation des chaînes.
Exemple :
Nom  ’’GAN’’ & ’’ SYNTH’’ Résultat : ’’GANSYNTH’’
Nom  ’’GAN’’ &’’ ‘’ &’’SYNTH’’ Résultat : ’’ GAN SYNTH’’
3. Opérateurs de comparaison
Ces opérateurs s’appliquent sur les valeurs du type numérique ou sur les
valeurs du type alphanumérique.
< : Inférieur,
> : Supérieur,
<= : Inférieur ou égal,
>= : Supérieur ou égal,
<> : Différent,
= : Egal.

4. Opérateurs logiques
Ces opérateurs agissent sur des valeurs booléennes (Vrai, Faux), (True,
False), (1, 0). Parmi ces opérateurs nous avons :
1) Opérateur OU
OU est Vrai si au moins l’une des valeurs de l’expression est vraie, et
OU est faux si toutes les valeurs de l’expression sont fausses. La table de vérité
de l’opérateur OU se présente de la manière suivante :
A A OU B B
VRAI VRAI VRAI
FAUX VRAI VRAI
VRAI VRAI FAUX
FAUX FAUX FAUX

2) Opérateur ET
ET est Vrai si toutes les valeurs de l’expression sont vraies, et ET est
faux si au moins l’une des valeurs de l’expression est fausse. La table de vérité de
l’opérateur ET se présente de la manière suivante :
A A ET B B
VRAI VRAI VRAI
FAUX FAUX VRAI
VRAI FAUX FAUX

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 33
BAC1 RT & ISI 2023

FAUX FAUX FAUX

3) Opérateur NON
NON est Vrai si la valeur booléenne est fausse, et NON est Faux si la
valeur booléenne est vraie. La table de vérité de l’opérateur NON se présente de
la manière suivante :
NON A A
VRAI FAUX
FAUX VRAI

Porte NON ET

• Est constituée par un inverseur à la sortie d'une porte ET

A B A ET B NON (A ET B)
FAUX FAUX FAUX VRAI
FAUX VRAI FAUX VRAI
VRAI FAUX FAUX VRAI
VRAI VRAI VRAI FAUX

Portes NON OU
Une négation à la sortie d'une porte OU constitue une fonction NON OU (NOR NOT OR)

A B A OU B NON (A OU B)
FAUX FAUX FAUX VRAI
FAUX VRAI VRAI FAUX
VRAI FAUX VRAI FAUX
VRAI VRAI VRAI FAUX

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 34
BAC1 RT & ISI 2023

CHAPITRE III : LES ENTREES ET LES SORTIES

III.1. INTRODUCTION
Dans un ordinateur, nous trouvons plusieurs sortes d’unités parmi
lesquelles nous pouvons citer :
 Les unités de sortie,
 Les unités d’entrée, et
 L’unité de traitement.

Flux des informations


en entrée

Unité
d’entrée

Unité de
HOMME
traitement

Unité de
sortie

Flux des informations


en sortie
Les unités d’entrées ou périphériques d’entrée permettent à l’utilisateur
d’introduire les données dans l’ordinateur.
Les unités de sorties ou périphériques de sortie permettent à l’ordinateur
de restituer les informations à l’utilisateur.
L’unité de traitement permet à l’ordinateur de traiter les données ou les
informations qui lui sont données à travers les unités d’entrée afin de restituer les
données traitées à travers les unités de sortie.
De ce fait, tout langage de programmation possède des actions primitives
qui gèrent les différents flux d’informations entre ses différentes unités ci-haut
citées, créant ainsi des interruptions permettant soit la saisie des certaines données
ou soit l’affichage de certains messages ou certaines valeurs

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 35
BAC1 RT & ISI 2023

Ces instructions permettent un dialogue entre la machine et l’utilisateur.

III.2. LA PRIMITIVE D’ENTREE


Cette instruction, permet à l’utilisateur de passer des données ou des
valeurs à l’ordinateur (programme) au travers d’une unité d’entrée l’unité par
défaut est le clavier. Cette opération s’appelle la LECTURE.
Syntaxe : LIRE < variable>

Rm  Lorsque le programme rencontre l’instruction LIRE, l’exécution du


programme s’interrompt jusqu’à ce que l’utilisateur aura saisi la
valeur au clavier.
 La valeur qui sera lue au clavier sera affectée directement à la
variable qui est placée à côte au mot LIRE.
 On peut lire plusieurs valeurs avec une seule instruction de lecture.
De ce fait, les différents variables seront séparées les unes des
autres par des virgules.
Syntaxe : LIRE < Variable1>, < Variable2>,…, < VariableN >

Exemple 1 : Exemple2 :
Variable a, b : Entier Variable a, b : Entier
Nom : Chaine(10) Nom : Chaine(10)
a  30 a  30
LIRE nom LIRE nom, b
LIRE b

III.3. LA PRIMITIVE DE SORTIE


Cette instruction permet à l’ordinateur (programme) de communiquer des
valeurs à l’utilisateur au travers une unité de sortie. L’unité de sortie par défaut
est le moniteur. Cette opération s’appelle l’ECRITURE
Syntaxe : ECRIRE < Valeur> ou ECRIRE < Variable>

Rm  La valeur à afficher peut être directe, contenue dans une variable


ou le résultat d’une expression
Exemple1 : ECRIRE 10

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 36
BAC1 RT & ISI 2023

Exemple2 : ECRIRE « NOUS APPRENONS L’ALGORITHMIQUE »


Exemple3 : Somme 10
ECRIRE Somme
Exemple4 : Ecrire Somme*15/A+(A^P)
Exemple5 : ECRIRE Nom+ « est un étudiant »
 Lorsqu’on affiche une valeur qui était contenue dans une variable,
la variable ne perd pas cette valeur.
 Comme pour la lecture, on peut écrire plusieurs valeurs avec une
seule instruction ECRIRE, dans ce cas, les différentes valeurs seront
séparées par des virgules.
La syntaxe serait :
ECRIRE < Valeur1>, < Valeur2>, …, < ValeurN> ou
ECRIRE < Variable1>, < Variable2>, …, < VariableN>
Exemple :

On demande d’écrire un algorithme qui lit un nombre réel supérieur à 0 et qui


calcule et affiche son double, sa moitié et sa puissance carrée. L’algorithme devra
en outre affiche ce nombre est incorrect
Variable Nbre, Moit, Doub, Puis : Reel
Message : Chaine(23)

Message « ce nombre est incorrect »


Lire Nbre
Si (Nbre >0) Alors
Moit Nbre / 2
Doub Nbre * 2
Puis Nbre^2
Ecrire « le double de ce nombre vaut », Doub
Ecrire « la moitié de ce nombre vaut », Moit
Ecrire « la puissance carrée de ce nombre vaut », Puis
Sinon
Ecrire Message
Finsi

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 37
BAC1 RT & ISI 2023

Lire plusieurs valeur au clavier

Exercice :
Ecrire un programme de scanne l’année de naissance et affiche le nombre de jours passés sur
Terre :
Algorithme jourSurTerre
Var
annee : Entier
jours : réel
DEBUT
ECRIRE ("Tapez l’annee de naissance")
LIRE(annee)
jours  (2023 – annee) x 365
ECRIRE (jours)
FIN

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 38
BAC1 RT & ISI 2023

CHAPITRE IV : LES STRUCTURES DE CONTROLE


Il existe trois structures de contrôle ou trois types de logique que nous
pouvons observer pour construire n’importe quel algorithme à savoir : la séquence,
l’alternative et la répétition.

IV.1. LA SEQUENCE (la structure séquentielle)


L’exécution des différentes instructions d’un algorithme pour un
processeur se fait toujours en suivant un certain ordre. Une instruction est exécutée
après une autre, et à un moment précis une et une seule instruction est exécutée.
Partant de ces principes, lors de la conception d’un algorithme, le
programmeur devra prendre soin de la succession logique des différentes
instructions c’est-à-dire, les instructions doivent se suivre logiquement les unes
après les autres.
Exemple : Nous désirons, obtenir le nombre des craies contenues dans une boîte
fermée que nous avons en main.
 Tout premièrement on doit ouvrir la boîte,
 On doit faire le comptage craie après craie,
 On peut donner le nombre de toutes les craies contenues dans la
boîte qu’après comptage exhaustif.
A partir de cet exemple, nous remarquons que :
On ne peut jamais compter les craies contenues dans la boîte si elle est
fermée, et, on ne peut jamais donner le nombre de toutes les craies si le comptage
n’est pas encore terminé.
De ce fait, lors de la phase d’analyse (phase située entre l’énoncé du
problème et l’écriture de l’algorithme, le programmeur devra réfléchir
minutieusement sur l’enchaînement de toutes les instructions qui constituent son
algorithme.

IV.1.1. LA STRUCTURE D’UN PSEUDO-CODE


Tout pseudo- code ou tout algorithme a trois parties qui sont aussi en
séquence. Nous avons :
 Le nom de l’algorithme ou l’entête,
 La partie déclarative, et

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 39
BAC1 RT & ISI 2023

 Le corps de l’algorithme.
a. Le nom de l’algorithme
Le nom de l’algorithme nous permet de l’identifier. Ce nom sera toujours
écrit en un mot et, il a les mêmes caractéristiques que celui d’une variable. Il sera
toujours précédé du mot « algorithme »

Exemples : Algorithme Calcul_du_salaire,


Algorithme Gestion_du_stock
Algorithme triangledepascal10.

b. La partie déclarative
Cette partie contiendra la déclaration de toutes les variables que nous
avons à utiliser dans l’algorithme (confert point II.3 syntaxe de la déclaration d’une
variable page 23).

c. Le corps de l’algorithme
Le corps de l’algorithme comprend :
 L’initialisation : on affecte les valeurs de départ aux différentes variables,
 L’exécution : on applique le traitement ou on exécute l’action ou les actions
primitives du problème,
 La restitution des résultats : on restitue les résultats obtenus.
Nous pouvons schématiser l’algorithme de la manière suivante

NOM DE L’ALGORITHME

DECLARATION

INITIALISATION

EXECUTION CORPS DE L’ALGORITHME

RESTITUTION DES
RESULTATS

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 40
BAC1 RT & ISI 2023

IV.1.2. SYNTAXE D’UN ALGORITHME


Pour tout algorithme nous aurons la syntaxe suivante :
Algorithme ou Programme ou Algo < nomdelAlgorithme>
Partie déclarative
Début
Corps du programme
Fin
Remarque : L’indentation c’est un décalage des instructions par rapport à la marge
gauche. Elle permet la lisibilité de l’algorithme.
Exemple : soit à écrire un algorithme qui lit le nombre des étudiants et le nombre
des étudiants de G1 INFO soir et qui affiche la somme de ces 2 nombres
avec un message les étudiants de G1 INFO sont au nombre de X »
Algorithme NOMBREETUDIANT
Variable nbreetM, nbreetF, som : entier
Début
Som  0
Afficher « saisir le nombre des étudiants »
Lire nbreetM
Afficher « saisir le nombre des étudiants »
Lire nbreetF
Som  som + nbreetM + nbreetF
Afficher « les étudiants de G1 INFO sont au nombre de », Som
Fin

IV.2. LA SELECTIVE (la structure alternative)


Cette structure permet d’effectuer des choix selon des critères ou (des
conditions) que le programmeur a fixés. Ces instructions se comportent comme un
aiguillage à deux ou plusieurs branches. Selon qu’un critère est satisfait ou non,
l’exécution du programme se poursuivra dans une branche ou dans une autre.
Dans ce cas, le programmeur devra poser correctement son critère de
choix pour une exécution correcte de l’algorithme.
La syntaxe d’une alternative
Si (condition) alors < instruction-si-la-condition-est-vraie>
Sinon < instructuion-si-la-condition-est-fausse>
Finsi

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 41
BAC1 RT & ISI 2023

Remarques :
Il peut arriver que :
1. la condition soit simple ou composée. Si elle est composée, elle sera liée par
les opérateurs logiques

Si condition1 et/ou Les tests ou branchements


condition2 conditionnels :
l'entrée du test est l'angle du haut ;
alors la sortie avec le rond est le résultat
InstructionVraie du test lorsqu'il est faux ;
la sortie sans rond est le résultat du
Sinon
instructionFausse test lorsqu'il est vrai.
Finsi

2. Que nous ayons plusieurs instructions à exécuter lorsque la condition est vraie
(ou fausse). De ce fait nous aurons :
Si (condition) alors
instructionVraie1
instructionVraie2
instructionVraie n
sinon
instructionFausse1
instructionFausse2
I
instructionFausse n
Finsi

3. Que toutes les instructions qui doivent être exécutées lorsque la condition n’est
pas remplie (est remplie) doivent encore être exécutées lorsque la condition est
remplie (n’est pas remplie) en plus d’autres instructions. Dans ce cas, nous
annulons le sinon pour ne pas répéter ces instructions, et nous les enlevons pour
les placer en séquence après la structure alternative.

Si (condition) alors
InstructionVraie1
InstructionVraie2
InstructionVraie3

sinon
InstructionFausse1

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 42
BAC1 RT & ISI 2023

InstructionFausse2
Finsi

Si InstructionVraie2 = InstructionFausse1 et InstructionVraie3 =


IntructionFausse2, on peut écrire comme suit :

Si (condition) alors
InstructionVraie1
Finsi
InstructionFausse1
InstructionFausse2

4. Que nous ayons des structures alternatives imbriquées (les unes à l’intérieur
des autres).
Si (condition1) alors
Si (condition2) alors
Instructionvraie
Sinon
Instructionfausse
Finsi
Sinon
Instruction
Finsi

Exemple 1 : Tester un nombre contenu dans la variable n. si il est supérieur à 20


afficher ’’ce nombre est grand’’, dans le cas contraire, ‘‘ce nombre est
petit’’.

Si (n > 20) alors


afficher « ce nombre est grand »
sinon afficher « ce nombre est petit »
Finsi

Exemple 2 : Soit une loi de délibération : « un étudiant réussi si il a plus ou moins


50% et moins de 3 échecs.
Ecrire un algorithme qui affiche le résultat de la délibération pour un étudiant si
on lit son pourcentage et le nombre d’échec.
Algorithme Deliberation
Variable pourcentage : reel
NbreEchec : entier
Debut

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 43
BAC1 RT & ISI 2023

Afficher « le pourcentage d’un étudiant »


Lire pourcentage
Ecrire « le nombre d’échec d’un étudiant »
Lire NbreEchec
Si ((pourcentage >= 50) et (NbreEchec < 3))
alors afficher « réussite »
sinon afficher « Echec »
Finsi
Fin

Exemple 4 : Ecrire un programme qui trouve le minimum de deux valeurs


Algorithme TrouverMinimum
Var
A, B : entier
DEBUT
ECRIRE("Tapez deux valeurs : ! ")
LIRE (A, B)
SI( A < B) ALORS
ECRIRE ("Minimun = ", A)
FINSI
FIN

Exemple 5 : Ecrire un programme qui détermine si l’une de deux valeurs = 0


Algorithme TrouverMinimum
Var
A, B : entier
DEBUT
ECRIRE("Tapez la deux valeur : ! ")
LIRE (A, B)
SI( A * B = 0) ALORS
ECRIRE ("Au mois un nombre = 0")
FINSI
FIN
Exemple 6 : Ecrire un programme qui récupère la température de l’eau et affiche le message
correspondant à l’utilisateur

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 44
BAC1 RT & ISI 2023

Test composé :

• Démontrez que l’associativité A OU (B OU C) = (A OU B) OU C

Solution :

Exemple 7 : Ecrire un algorithme qui demande à l’utilisateur son âge, stock et affiche « Bébé »
si l’âge est compris entre 0 et 5 ans, « Gamin » si l’âge est compris entre 6 et 12 ans,
« Adolescent » si l’âge es est compris entre 13 et 17 ans

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 45
BAC1 RT & ISI 2023

Exercice : expliquez ce que fait ce programme :

TEST SELON QUE

Test « SELON » : permet de mettre en œuvre des tests d’égalité sur une variable. Il n’est
possible de tester que des valeurs exactes (x = 15) et non des plages de valeurs (x > 15).
AUTREMENT : le mot clef « AUTREMENT » permet de considérer toutes les valeurs qui ne
sont pas prises en compte par les « CAS » du test « SELON ».
LIRE : l’instruction « LIRE » permet de demander la saisie au clavier à l’utilisateur qui
exécute le programme correspondant.
Exemple :

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 46
BAC1 RT & ISI 2023

Exemple 1 :

Exercice : Hyperpsaro accorde à ses clients, une réduction de 2% pour les montants d’achat
supérieurs à 1500,00 USD. Ecrire un algorithme permettant de saisir le prix total HT (PTHT)
et de calculer le montant TTC (PTTC) en prenant en compte la remise et la TVA=20%.

Solution

IV.3. L’ITERATIVE (la structure itérative ou la répétition)


Les structures itératives permettent d’effectuer ce que l’on appelle
communément des boucles.
La boucle est un ensemble ou une séquence d’instructions répétée
successivement jusqu’à ce qu’une condition de sortie de boucle soit réalisée.
Il existe trois types de boucles :
 La boucle TANTQUE,
 La boucle POUR, et
 La boucle REPETER.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 47
BAC1 RT & ISI 2023

a) La boucle TANTQUE
Cette boucle permet d’exécuter un bloc d’instructions (une séquence
d’instructions) tant que la condition à l’entrée de la boucle est vérifiée ; dès que
celle-ci cesse d’être vérifiée, l’exécution de la répétition s’arrête.
La syntaxe de la boucle TANTQUE
TANTQUE <Condition>Faire
Instruction1
Instruction2
……
InstructionN
Fintantque

Remarques
 La condition de la boucle TANTQUE, est toujours à l’entrée de la boucle, on
vérifie la condition avant d’entrer dans la boucle.
Exemple : Ecrire un programme qui demande à l’utilisateur de Taper O/N O=
(OUI) N=(NON) et vérifie la saisie de l’utilisateur

Exercice 2 : Ecrire un algorithme qui demande à l’utilisateur de saisir le


nombre 20, vérifie et redemande si c’est une autre valeur renseignée.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 48
BAC1 RT & ISI 2023

Exercice 3 : Ecrire un algorithme qui calcule S = 1 + 2 + 3 + 4 + 5 + ... + N.

 La condition à l’entrée de la boucle peut être simple ou composée. Si elle


est composée, les différentes conditions simples (ou les différents critères)
qui la composent seront liées par les opérateurs logiques.
Exemple :
 La variable utilisée dans la condition doit être utilisée avant l’entrée dans
la boucle (initialisée), et doit être utilisée dans au moins une instruction
de la boucle.

Document de travail, Ruphin NYAMIAss. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 49
BAC1 RT & ISI 2023

Exemple :
Variable i initialisée

Variable i dans la condition


i 1
Tantque (i ≤ 10) Faire
Somme Somme +1
i i+1
Fintantque
Ecrire Somme Variable i incrémentée

 Lorsque pour la première fois la condition à l’entrée de la boucle n’est pas


vérifiée vraie, les instructions se trouvant dans la boucle ne seront pas
exécutées.
Exemple :

 Il peut arriver que nous puissions imbriquer les boucles TANTQUE. Dans ce cas,
la dernière boucle à être ouverte sera la première à être fermée, et la première
à être ouverte sera la dernière à être fermée. Dans ce cas la structure serait :

 L’inconvénient de cette boucle tient au fait que l’auteur ne sait pas quand
il doit s’arrêter. Plus précisément, il lui est impossible de savoir combien
de fois il doit écrire l’instruction de comparaison.

Exercices 4 :

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 50
BAC1 RT & ISI 2023

Le principe est le suivant :


L'ordinateur tire au sort un nombre entre 1 et 10
Il vous demande de deviner le nombre. Vous rentrez donc un nombre entre 1 et 10.
L'ordinateur compare le nombre que vous avez rentré avec le nombre "mystère" qu'il
a tiré au sort. Il vous dit si le nombre mystère est supérieur ou inférieur à celui que
vous avez entré
Puis, l'ordinateur vous redemande le nombre ... Et il vous indique si le nombre
mystère est supérieur ou inférieur. Et ainsi de suite, jusqu'à ce que vous ayez trouvé
le nombre mystère.
Le but du jeu, bien sûr, est de trouver le nombre mystère en un minimum de coups

Solution
Algorithme Devinette
Var
nbreMystere, nbreSaisie : entier
DEBUT
nbreMystere  ALEA(1, 10)
nbreSaisie0
TANTQUE (nbreSaisie <> nbreMystere) FAIRE
ECRIRE ("Devinez le nombre mystère !")
LIRE(nbreSaisie)
SI(nbreMystere > nbreSaisie) ALORS
ECRIRE ("Trop Petit")
SINON
SI(nbreMystere < nbreSaisie) ALORS
ECRIRE("Trop Grand")
SINON
ECRIRE("BRAVO Tu as trouvé")
FINSI
FINSI
FINTANTQUE
FIN

b) La boucle POUR
La boucle POUR est une structure itérative par excellence. Elle est
utilisée lorsque nous connaissons le nombre de fois que nous devons répéter la
séquence d’instructions se trouvant à l’intérieur de la boucle.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 51
BAC1 RT & ISI 2023

Les mots FAIRE et FINPOUR encadrent les instructions qui doivent


être exécutées plusieurs fois. On précise entre POUR et FAIRE comment seront
contrôlées les répétitions. On y définit une variable appelée VARIABLE DE
CONTROLE et les valeurs que prendre cette variable seront telles que : la
première valeur sera la VALEUR INITIALE et la dernière sera la VALEUR FINALE.
La valeur de contrôle sert uniquement de compteur du nombre
d’exécutions du corps de la boucle. Si on le souhaite, on peut utiliser cette
valeur dans le corps de la boucle, entre autre pour faire un calcul fondé sur
cette valeur. Dans tous les cas, il faut éviter de modifier la valeur de cette
variable.
La valeur initiale et la valeur finale peuvent être des expressions
numériques, par conséquent, les instructions du corps de la boucle ne peuvent
en aucun cas modifier ces valeurs.
La syntaxe de la boucle POUR

POUR <VariableCompteur> <ValeurInitiale> Jusqua <ValeurFinale> Faire


Instruction1
Instruction2
……
InstructionN
Finpour <VariableCompteur>
<VariableCompteur> : c’est la variable qui prendra les différentes valeurs
comprises entre la valeur initiale et la valeur finale.
<ValeurInitiale> : c’est la première valeur que la variable compteur aura à
prendre.
<ValeurFinale> :c’est la dernière valeur que la variable compteur doit avoir
pour pouvoir exécuter les instructions se trouvant
dans la boucle.
Pour la boucle POUR le nombre de fois que la séquence d’instructions
se trouvant dans la boucle devra être exécutée est de :
ValeurFinale – ValeurInitiale + 1
Remarques
 La présence de la variable compteur est indispensable dans la boucle POUR.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 52
BAC1 RT & ISI 2023

 Nous pouvons utiliser plusieurs boucles POUR imbriquées. Dans ce cas, les
différentes boucles doivent avoir chacune une variable compteur dont le
nom est différent des autres.

Exemple :

POUR i 1 Jusqua 5 Faire


POUR j 1 Jusqua 3 Faire

Produit i *j
Ecrire Produit
Finpour j
Finpour i

Exemple 1 : la table de multiplication


Algorithme TABLE
VAR
i, j : entier
DÉBUT
POUR i  1 A 12 FAIRE
POUR j  1 A 12 FAIRE
ECRIRE (i, " x ", j, " = ", i * j)
FINPOUR
FINPOUR
FIN

Exemple 2 : Application : La Factorielle!


 Ainsi 10!=10*9*8*7*6*5*4*3*2*1, soit 3628800 (ça monte très vite).
Dans chaque passage dans la boucle il s’agit de multiplier le compteur
par le résultat de la multiplication précédente.
 Notez qu’il est inutile de multiplier par un : ça ne change pas le
résultat et du coup le programme effectue une boucle de trop.
 Pour rappel, la factorielle de n s’écrit n! et se calcule en multipliant
toutes les valeurs de 1 à n.
 De même, ici l’algorithme comptera à l’envers : il partira de n pour
descendre jusqu’à deux.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 53
BAC1 RT & ISI 2023

Exercice : Ecrire un algorithme qui permet de saisir un nombre entier et qui


calcule la somme des entiers pairs jusqu’à ce nombre. Par exemple, si l’on
saisi 10, le programme doit calculer : 0 + 2 + 4 + 6 + 8 + 10 = 30

c) La boucle REPETER
Comme la boucle TANTQUE, ce type de répétitive est utilisé lorsque le
nombre de fois que la séquence d’instructions à répéter est inconnu au moment où
cette séquence est abordée pour la première fois mais le corps de la boucle est
toujours exécuté au moins une fois.
La syntaxe de la boucle REPETER
REPETER
Instruction1
Instruction2
……
InstructionN
JUSQUA <Condition>

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 54
BAC1 RT & ISI 2023

La condition est évaluée après l’exécution du corps de la boucle :


si sa valeur est FAUX, le corps de la boucle est exécuté à nouveau puis la
condition est réévaluée, et si elle a la valeur VRAI, on exécute l’instruction
qui suit JUSQUA.
Il est à noter que la condition de la boucle TANTQUE exprime les
raisons de continuer l’exécution des instructions se trouvant dans la boucle,
tandis que la condition de la boucle REPETER exprime les raisons d’arrêter
l’exécution des instructions se trouvant dans la boucle, et à exécuter
l’instruction suivante.
Exemple : Ecrire un algorithme qui calcule la somme de 10 nombres entiers
lus au clavier avec la boucle TANTQUE et avec la boucle REPETER

ALGORITHME SOMMEDIX ALGORITHME SOMMEDIX


VARIABLE Som, Nbre : Entier VARIABLE Som, Nbre : Entier
i : Octet i : Octet

DEBUT DEBUT
i 1 i 1
Som 0 Som 0
TANTQUE (i <= 10) FAIRE REPETER
Lire Nbre Lire Nbre
Som Som + Nbre Som Som + Nbre
i i+1 i i+1
FINTANTQUE JUSQUA ( i > 10)
Ecrire Som Ecrire Som
FIN En définitive, le problème est de FIN
bien choisir le type de boucle à
utiliser. Pour y arriver, il faut réfléchir sur le problème suivant :
 Si le nombre de répétitions est connu au moment du premier passage
dans la boucle. Si oui la boucle à utiliser c’est la POUR par excellence.
Si non il faut se demander si on est sûr que le corps de la boucle sera
effectué au moins une fois. Si oui on peut utiliser la boucle REPETER
dans le cas contraire, il est préférable d’utiliser la boucle TANTQUE.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 55
BAC1 RT & ISI 2023

EXERCICES
1) Ecrire un algorithme qui lit un nombre entier et détermine s’il est :
a) Premier
b) Parfait
2) Ecrire un algorithme qui lit un nombre entier et détermine tous ses diviseurs
3) Ecrire un algorithme qui lit 50 valeurs entières, et qui détermine le nombre des
valeurs impaires lues
4) Soit la fonction suivante de la suite de FIBONACCI
F(0)=0 , F(1)=1 et F(i)= F(i-1)+ F(i-2) Pour toutes les valeurs de i supérieures à 1
5) Soit à écrire un algorithme qui lit un nombre entier en base 10 inférieur à 1000,
calcule et affiche ce nombre en base 2
6) Ecrire un algorithme qui affiche un nombre à l’inverse (Exemple le nombre lu
est 9834 le nombre affiché est 4389)
7) Soit P(x), un polynôme de degré n défini par ses coefficients a1, a2, a3, …, an+1 ;
P(x)= a1xn +a2 xn-1 a3 xn-2+ …+ an+1
a) Ecrire une fonction calculant la valeur de P(x0) en utilisant le schéma de
Horner
b) Ecrire un algorithme formant la table des valeurs de P(x) pour x variant de
bàc
8) Pour calculer la racine d’un réel A (positif), on peut construire la suite
Xn+1 = ½(Xn + A/Xn) en initialisant Xn à A.
Ecrire un algorithme qui permet d’imprimer à chaque tour de l’itération le
message : « Le calcul progresse, K vaut Xn ». A la fin de l’algorithme le
message « Le calcul est fini : la racine de A vaut :.. »
9) Ecrire un algorithme qui calcule le PGCD de deux entiers lu par la méthode
d’Euclide ; cette méthode opère de la manière suivante : lire deux nombres N1
et N2. Assigner à N1 la valeur de N2 et à N2 la valeur du reste de la division de
N1 par N2. Puis recommencer jusqu’à ce que la division soit nul. A ce moment,
N1 contient le PGCD.
10) On effectue une enquête auprès de 100 congolais, afin de savoir où ils ont passé
leurs vacances de Pâques, et la durée moyenne de leur séjour.
On respecte les conventions suivantes :
 On ne considère qu’un seul séjour par personne.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 56
BAC1 RT & ISI 2023

 On utilise la codification suivante :


Personne non partie en vacances : code 0.
Personne partie en vacance dans une ville du Congo : code 1
Personne partie en vacance à l’étranger : code > 1.
Exemple : Zambie : code 2, Angola : code 8,…
Les durées des séjours seront exprimées en jours.
La durée de séjour des personnes n’étant pas parties en vacances est codée par
0.
Ecrire un algorithme donnant :
a) Le nombre de congolais partis en vacances au Congo et la durée moyenne de
leur séjour.
b) Le nombre de congolais partis en vacances à l’étranger et la durée moyenne
de leur séjour.
c) En supposant que les pays hors Afrique soient codifiés par un code supérieur
ou égal à 100, modifier l’algorithme précédent de manière à ce que l’on
puisse de plus connaître le nombre de congolais partis en vacances en Afrique
hors Congo et la durée moyenne de leur séjour
d) Le nombre de congolais partis en vacances hors Afrique et la durée moyenne
de leur séjour.
11) Une ferme comprend les dindons, les porcs et les poissons, on demande de
concevoir un algorithme qui donne le nombre total des pattes sachant que le
nombre total des têtes est de 541.
12) On veut organiser un système de vote des promotionnels dans une institution
universitaire. Le système est tel que les votants sont au nombre de 250 et les
votés sont au nombre de 3. Chaque voté a son code. Le premier a le code UN, le
suivant DEUX, le troisième TROIS, pour les abstentions le code est ZERO. Ecrire
un algorithme qui donne le résultat des votes en donnant le pourcentage de
chaque voté.
13) Même énoncé que l’exercice précédent, mais le nombre des votants n’est pas
connu.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 57
BAC1 RT & ISI 2023

CHAPITRE V : LES TABLEAUX

V.1. CONCEPT DE TABLEAU

Lorsque les données à manipuler sont nombreuses, et de même nature,


afin d’éviter de multiplier les variables, il est préférable et plus pratique de les
ranger dans un tableau.
Un tableau est un ensemble de données qui sont toutes de même type, les
différentes données possèdent un identificateur unique appelé nom du tableau, et
se différencient les unes des autres, dans ce tableau, par leur numéro d’indice.
Le nom d’un tableau a les mêmes propriétés que le nom d’une variable
Les tableaux les plus fréquemment utilisés sont à une dimension
(vecteurs,…) ou à deux dimensions (matrices, tableaux à double entrée) mais il est
tout à fait possible de définir des tableaux à trois, quatre, cinq dimensions voire
plus.
La représentation d’un tableau se fait généralement par un ensemble de
cases repérées par leurs indices. Par conséquent, dans un tableau on ne peut jamais
trouver deux cases qui portent le même indice.
Un tableau à une dimension sera représenté de la manière suivante :

Un tableau à deux dimensions sera représenté de la manière suivante :

Le contenu d’une case sera repéré en utilisant le nom du tableau, suivi


des coordonnées de la case dans le tableau.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 58
BAC1 RT & ISI 2023

Exemple : TAB( i ) est un élément se trouvant à l’indice i du tableau se


nommant TAB
TABLEAU( i , j ) représente le contenu de la case située à la ligne i et à
la colonne j du tableau nommé TABLEAU

V.2. DECLARATION DES TABLEAUX

Comme pour les variables simples, avant d’utiliser un tableau il est


nécessaire de le déclarer.
Quatre éléments fondamentaux définissent un tableau :
 Son nom qui sera un identificateur choisi en respectant les règles
usuelles de dénomination des variables,
 Le nombre de ses dimensions,
 Sa taille, autrement dit les valeurs maximales de ses indices,
 Le type de données qu’il contient.
Syntaxe de la déclaration d’un tableau
Pour caractériser entièrement un tableau à une dimension dans un
algorithme, la syntaxe est la suivante :
<Nom_du_Tableau>(Valeur_Min : Valeur_Max) : Type

Exemple :

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 59
BAC1 RT & ISI 2023

GAN(1 : 10) : Entier la déclaration d’un tableau nommé GAN qui a dix
éléments du type entier.
LETTRE(1 : 23) : Chaine(7) la déclaration d’un tableau nommé Lettre qui
a 23 éléments du type chaîne de longueur 7.
Pour les tableaux à plusieurs dimensions, la déclaration se fait de la
manière suivante :
Nom_du_Tableau(Val_Min1 :Val_Max1,Val_Min2 :Val_Max2,…,Val_MinN :Val_MaxN) :Type
Exemple :
ELEVE (1 : 10, 1 : 5) : Chaine(20) la déclaration d’un tableau à deux
dimensions de 10 lignes et 5 colonnes du type chaîne 20 se
nommant ELEVE.

COTE(1 : 985, 1 : 32, 1 : 80) : Reel la déclaration d’un tableau à trois


dimensions dont la première dimension a une longueur de
985, la deuxième dimension a une longueur de 32, et la
troisième dimension à une longueur de 80. Le tableau se
nomme COTE.
Capacité du tableau :

Variables indicées

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 60
BAC1 RT & ISI 2023

V.3. TRAITEMENTS ITERATIFS SUR LES TABLEAUX

Le principal intérêt du concept de tableau est de permettre


d’effectuer des traitements systématiques sur l’ensemble des éléments du tableau.
Il suffit de décrire un traitement en invoquant le terme général du tableau, et de
le placer dans une boucle qui fait varier les indices de différentes dimensions.
Dans un algorithme, tout élément d’un tableau peut être utilisé
comme une simple variable. Par conséquent, les différentes opérations telles que :
l’affectation, la lecture, l’écriture, l’utilisation dans une expression à l’aide
d’opérateurs).

Représentation par référence de chaines


Dans la mémoire et comme vu précédemment, une chaîne de caractères est représentée
par une suite de valeurs numériques : les codes ASCII (ou Unicode, selon le cas).

Exemple 1 : Ecrire un programme qui stocke 40 noms dans tableau et affiche :

Exemple 2 : Ecrire un programme qui lu une phrase et affiche tous les caractères de la
phrase:

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 61
BAC1 RT & ISI 2023

1. Accès Indexé à un élément d’un tableau

2. Opération d’ajout
Cette opération ne peut se faire qu’au cas où il y a de l’espace libre dans le vecteur. Il faut au
moins une cellule non utilisée pour la réaliser. L’insertion (ajout) d’un élément autre que le
dernier nécessite le déplacement de la moitié des éléments du tableau, en moyenne vers la fin
de ce tableau. Il est impossible d’éviter ce déplacement, et cela augmente à coup sûr la
complexité de cette opération.

Exemple :

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 62
BAC1 RT & ISI 2023

Ajout au début du tableau

Document de travail, Ruphin NYAMI


Ass. Ruphin NYAMI
M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 63
BAC1 RT & ISI 2023

Opération de Suppression
• Ayant compris l’opération d’ajout, celle de suppression devient facile à réaliser. Cette
dernière est son inverse.
• La suppression d’un élément autre que le dernier nécessite le déplacement de chaque
élément qui suit d’une position vers le début du tableau de manière à ce que le tableau
ne soit pas désarticulé cela risque d’augmenter la complexité de l’opération.
• Pour éviter ce déplacement, il suffit de marquer par une mention spéciale l’élément supprimé
tout en le laissant en place.
• N.B : En principe, on ne peut supprimer que le dernier élément d’un tableau.
• Exemple:

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 64
BAC1 RT & ISI 2023

Opération de la Recherche
• Lorsque l’on doit chercher une donnée précise X dans un tableau non trié, la
seule possibilité est la recherche séquentielle.
• Dans cette recherche l’algorithme doit parcourir tous les éléments du tableau se
trouvant devant pour trouver X.

Ce
pseudocode permet de rechercher un élément dans un tableau et de déterminer sa
position s’il est bel et bien présent dans le tableau

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 65
BAC1 RT & ISI 2023

Le tri à bulles
• On parcourt le tableau en comparant deux éléments consécutifs; s’ils sont mal placés,
on les permute. Cela revient à faire remonter le plus grand élément à chaque parcours.
Comme une bulle d’air qui remonte à la surface de l’eau, d’où le nom de tri à bulles.
(Il est aussi appelé tri par permutation ou tri par échanges).
• Le principe est de remonter le plus grand élément au fond du tableau

Exemple du processus de tri :

Exemple : Ecrire un algorithme qui trie les valeurs en ordre


croissant :

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 66
BAC1 RT & ISI 2023

Exemple :

EXERCICES
1) Ecrire l’algorithme du traitement qui permet de saisir 100 nombres entiers dans
un tableau à une dimension ; puis qui affiche la somme et la moyenne de ces 10
nombres.
2) Ecrire un algorithme du traitement qui permet de saisir 100 nombres entiers dans
un tableau à une dimension, puis qui recherche et affiche la valeur minimale
entrée dans ce tableau. L’affichage affichera également l’indice auquel se trouve
ce minimum.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 67
BAC1 RT & ISI 2023

3) On considère deux matrices 3X3 notée V et W. les coefficients de chacune de ces


deux matrices seront notés V( i , j ) et W( i , j ). Ecrire un algorithme qui permet
de calculer puis afficher la matrice Z= V+W.
4) Même exercice cette fois ci en calculant le produit des deux matrices.
5) Soit un tableau K ayant 68 éléments. Transférer les éléments positifs de K dans un
tableau KPOSITIF et les éléments négatifs de K dans un tableau KNEGATIF
6) Soit un tableau G de 100 éléments, déterminer la longueur de la plus longue
séquence de nombres rangés par ordre croissant et le rang de son premier élément.
7) Soit un tableau TAB possédant 25 éléments. Ranger dans le même tableau les
éléments dans l’ordre inverse.(le premier élément doit être le dernier).
8) Ecrire un algorithme qui transfère les éléments d’un tableau T1 dans un tableau
T2 selon le principe suivant : Les éléments de rang impair sont rangés dans T2 en
ordre inverse en commençant par la fin de T2 et les éléments de rang pair de T1
sont rangés dans le même ordre.
9) Soit T une matrice carrée à 5 lignes et 5 colonnes. Soit F un vecteur à 5
composantes. Ecrire l’algorithme permettant de calculer l’image du vecteur F par
la matrice T.
10) Soit un tableau à deux dimensions contenant des nombres quelconques. Remplacer
les valeurs initiales des éléments d’un rectangle inclus dans ce tableau par des
zéros. Le rectangle est déterminé par sa longueur, sa hauteur et les coordonnées
du coin supérieur gauche.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 68
BAC1 RT & ISI 2023

CHAPITRE VI : LES PROCEDURES ET LES FONCTIONS

VI.1. FONCTIONS PERSONNALISEES


Une application, surtout si elle est longue, a toutes les chances de
devoir procéder aux mêmes traitements, ou à des traitements similaires, à plusieurs
endroits de son déroulement. Par exemple, la saisie d’une réponse par oui ou par
non, peuvent être répétés dix fois à des moments différents de la même application,
pour dix questions différentes.

La manière la plus évidente, de programmer ce genre de choses, c'est


de répéter le code correspondant autant de fois que nécessaire. Quand il faut que
la machine interroge l'utilisateur, on recopie les lignes de codes voulues en ne
changeant que le nécessaire.

Cette manière de procéder conduit aux situations suivantes :


 La structure d'un programme écrit de cette manière est lourde, parce qu’il
contient des répétitions.

 Un problème de maintenance pourra se poser, car en cas de modification du


code, il va falloir repérer toutes les apparitions plus ou moins identiques de
ce code pour faire convenablement la modification.

La solution serait d’opter pour une autre stratégie, qui consiste à


séparer ce traitement du corps du programme et à regrouper les instructions qui le
composent en un module séparé. Il ne restera alors plus qu'à appeler ce groupe
d'instructions, qui n'existe donc désormais qu’une seule fois dans le programme à
chaque fois qu’on en a besoin.

Ceci a pour conséquence :


1. d’apporter la lisibilité,
2. de rendre le programme modulaire, de manière à apporter une
seule modification au bon endroit, de manière à ce que cette
modification prenne effet dans la totalité de l’application.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 69
BAC1 RT & ISI 2023

Le corps de l’algorithme s’appelle alors l’algorithme principal, et ces


groupes d’instructions auxquels on a recours s’appellent des fonctions et des sous-
procédures.

Une fonction ou une sous procédure s'écrit toujours en-dehors de


l’algorithme principal. Selon les langages, cela peut prendre différentes formes.
Mais ces quelques lignes de codes sont dans des bibliothèques, qui existent en dehors
du traitement lui-même.

Les parenthèses seront placées toujours dans le titre de la fonction


que dans chacun des appels.

VI.2. PASSAGE D’ARGUMENTS


Soit l’exemple suivant qui consiste à écrire un message à l'écran, puis
on appelle une certaine fonction ; puis, on écrit un autre message à l'écran, et on
appelle de nouveau la même fonction pour poser la même question, etc. C’est une
démarche acceptable, mais qui peut encore être améliorée : puisque avant chaque
question, on doit écrire un message, autant que cette écriture du message figure
directement dans la fonction appelée. Cela implique deux choses :

 Lorsqu’on appelle la fonction, on doit lui préciser quel message elle doit
afficher avant de lire la réponse,
 La fonction doit être « prévenue » qu’elle recevra un message, et être
capable de le récupérer pour l’afficher.

En langage algorithmique, on dira que le message devient un


argument (ou un paramètre) de la fonction.
• Les paramètres d’une procédure sont de trois catégories :
1) Ceux en entrée (E) sont les valeurs en entrée de la procédure.
2) Ceux en sortie (S), qui correspondent aux valeurs retournées par la
procédure au programme ou au sous-programme l’ayant appelé. Ils sont
précédés d’un "S", comme Sortie, car ce sont les valeurs en sortie de la
procédure. Ces paramètres sont des variables qui doivent être déclarées dans
le programme ou sous-programme appelant

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 70
BAC1 RT & ISI 2023

3) Ceux en entrée et en sortie (ES),


• Quand vous avez plusieurs paramètres en entrée, il suffit de tous les mettre
après le E, et même de les regrouper selon leur type. Cette procédure prend
cinq paramètres : trois entiers et deux chaînes.

VI.3. SOUS-PROCEDURES
Il peut en effet arriver que dans un programme, on ait à réaliser des
tâches répétitives, mais que ces tâches n'aient pas pour rôle de générer une valeur
particulière, ou qu'elles aient pour rôle d'en générer plus d'une à la fois.
Exemple : Imaginons qu'au cours de mon application, que l’on ai
besoin d'effacer l'écran et de réafficher un message plusieurs fois. On pourrait se
dire qu'il faut créer une fonction pour faire cela, mais qui ne doit renvoyer une
valeur.
Exemple : Au cours d’une application, on doit saisir un tableau
d'entiers plusieurs fois avec des valeurs différentes à chaque saisie. On serait tenté
d'effectuer ces saisies de tableaux dans une fonction.

Le problème qui se pose c’est que : « une fonction ne peut renvoyer


qu'une seule valeur à la fois. Elle ne peut donc renvoyer un tableau, qui est une
série de valeurs distinctes ».
Pour ces deux cas d’exemples, la fonction ne résout pas le problème
soulevé, et il devient facile de dire qu’il faudrait employer seulement le code
répétitif que nous venons de critiquer.
Les fonctions sont des cas particuliers des sous-procédures. Les sous-
procédures qui ne renvoient aucune valeur, comme ceux qui renvoient plusieurs
valeurs, il faut donc avoir recours non à la forme particulière et simplifiée (la
fonction), mais à la forme générale (la sous-procédure).
Parlons donc de ce qui est commun aux sous-procédures et aux
fonctions, mais aussi de ce qui les différencie. Voici comment se présente une sous-
procédure :

 Une fonction se caractérise par les mots-clés Fonction et FinFonction, une


sous-procédure est identifiée par les mots-clés Procedure et FinProcedure.

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 71
BAC1 RT & ISI 2023

 Lorsqu'une fonction est appelée, la valeur qu’elle retourne doit toujours être
affectée à une variable ou intégrée dans le calcul d'une expression.
 L'appel à une procédure, lui, est au contraire toujours une instruction
autonome.
 Toute fonction doit comporter l'instruction "Retourner". Pour la même
raison, l'instruction "Retourner" n'est jamais utilisée dans une sous-
procédure. La fonction est une valeur calculée, qui renvoie son résultat vers
la procédure principale. La sous-procédure, elle, est un traitement.

Exemple d’une procédure qui salut l’utilisateur :

Exemple 2 : écrire une procédure qui calcul et affiche un nombre au cube :

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 72
BAC1 RT & ISI 2023

Exemple 3 : Ecrire un sous-programme qui demande affiche la texte de


l’utilisateur un nombre de fois indiqué par l’utilisateur

Exemple 4 : écrire une procédure qui calcul et affiche la somme de deux


nombres :

Exemple 5 : écrire une fonction qui retourne la somme de deux entiers


passés en paramètre :

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023
Cours d’Algorithmique I 73
BAC1 RT & ISI 2023

EXERCICES
1. Écrire un algorithme qui calcule le prix toutes taxes comprises (TTC)
pour un prix hors taxe et un taux de TVA donné.
2. On considère les comptes de dépôts hébergés par une banque pour ses
clients. Un retrait n’est autorisé que si le solde du compte reste non négatif.
3. Écrire un algorithme qui calcule le montant des intérêts rapportés par
un capital placé à un taux donné pendant une durée donnée, exprimée en mois.
4. Ecrire une fonction calculant la valeur de P(x0) en utilisant le schéma
de Horner
5. Ecrire un algorithme formant la table des valeurs de P(x) pour x variant
de b à c.
6. Écrire une fonction qui calcule et retourne la factorielle d’un nombre
entier.
7. Écrire une fonction qui calcule et retourne la combinaison de N éléments
pris P à P. Cette fonction doit pouvoir réutiliser la fonction factorielle du problème
précédent. Écrire une fonction nommée «distance» ayant comme paramètres 4réels
(xa,ya)et (xb,yb)qui réprésent et les coordonnées de deux points A et B; la fonction
renvoie la distance AB

Document de travail, Ruphin NYAMI Ass. Ruphin NYAMI


M2 Data science et Machine Learning
2023

Vous aimerez peut-être aussi