Vous êtes sur la page 1sur 63

Cours d’Algorithmique I

PREMIER BACHELIER INFORMATIQUE

Il y a une différence entre étudier et rester à côté de ses notes. Beaucoup de gens pensent
faire la première action en faisant la deuxième, du fait que les deux ont la même apparence, mais
n‟ ont pas le même résultat.
Gabin NDAY-A-MANDE MULOPWE

La réussite est liée à la patience mais elle dépend également de beaucoup de bonne volonté.
Gabin NDAY

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=

Assistant GABIN NDAY-A-MANDE MULOPWE


Concepteurs des systèmes d‟ information 2021-2022
Cours d’Algorithmique I
PREMIER BACHELIER INFORMATIQUE

PLAN DU COURS D’ALGORITHMIQUE


I. TITRE
 INTITULE : ALGORITHMIQUE I
 TITULAIRE : Gabin NDAY-A-MANDE MULOPWE
Licencié en Informatique de gestion concepteur des systèmes
d’information Analyste programmeur. ASSISTANT 2
 ANNEE ACADEMIQUE : 2021-2022

II. INFORMATIONS GENERALES / COURS


 FILIERE : Informatique (Option : Génie Logiciel & Système
Informatique
 Crédits : 4 . (60 Heures)
 Heures théoriques : 30 Heures
 Heures pratiques : 15 Heures
 Heures TPE : 15 Heures
 Type de cours : Cours unique, obligatoire
 Local : Salle KIMPESA

 Langue : Français

III. INFORMATIONS GENERALES / ENSEIGNANT


 Faculté des sciences informatiques UNIKAM Modalités
de contact : 0814220447, 0974424474

Par email, à gabinnday@gmail.com

IV. DESCRIPTION DU COURS


 Place du cours dans le programme :
Cours fait partie de la chaine de programmation à côté des cours de
langages de programmation.
Il sert de cours de base à la chaine.

 Pré-requis :

Assistant GABIN NDAY-A-MANDE MULOPWE


Concepteurs des systèmes d‟ information 2021-2022
Cours d’Algorithmique I
PREMIER BACHELIER INFORMATIQUE

Mathématiques générales et logique formelle


Informatique générale :
- Eléments d‟ informatique
- Introduction au système d‟ exploitation
- Laboratoire (Bureautique)
 Auditeurs visés : BAC 1 Informatique (Tous)
 Supports d‟ apprentissage :
• Support de cours
• Recueil d‟ exercices non résolus

V. OBJECTIFS ET COMPETENCES
 PROFIL DU FORME A LA LICENCE (LMD) : Analyste programmeur

 ATTENTE DE LA SOCIETE : Capacité d‟ appréhender les problèmes de


gestion liés à la collecte, au traitement, au stockage et à l‟ accès à
l‟ information dans les organisations, de les formaliser par les méthodes
informatiques et d‟ élaborer des solutions sous forme de bases de
données, programmes (Logiciels) et réseaux.

 OBJECTIF GENERAL
Ce cours initie les étudiants aux concepts, au raisonnement et aux
méthodes de la programmation informatique, ainsi qu‟ à la résolution des
problèmes par l‟ approche algorithmique.

Assistant GABIN NDAY-A-MANDE MULOPWE


Concepteurs des systèmes d‟ information 2021-2022
Cours d’Algorithmique I
PREMIER BACHELIER INFORMATIQUE

 OBJECTIFS SPECIFIQUES

OBJECTIFS SPECIFIQUES COMPETENCES A DEVELOPPER


- Analyser un problème simple de traitement
1. Définir et comprendre les de l‟ information, le formaliser dans le
concepts. langage algorithmique.
-
Ecrire le pseudo-code de l‟ algorithme
2. Comprendre les structures permettant de résoudre ce problème.
-
de base de la construction Traduire le pseudo-code de l‟ algorithme en
d‟ un algorithme. code source PASCAL et en tester le
fonctionnement sur un ordinateur au moyen
d‟ un compilateur Free Pascal ou Turbo
Pascal

VI. CONTENU
1. Introduction (4h)
2. Conception d‟ un algorithme (4 h)
3. Les variables et les constantes (8 h)
4. Les entrées et les sorties (4 h)
5. Les structures de contrôle (4 h)
6. Les tableaux (4 h)
7. Les sous- programmes (4 h)

VII. METHODES D’ENSEIGNEMENT-APPRENTISSAGE


 Exposés magistraux et interactions Professeur/ Etudiants
 Simulation du fonctionnement des algorithmes
 (Démonstration) des programmes sur un ordinateurs en laboratoire

VIII. MODALITES D’EVALUATION


 2 Interrogations
 4 travaux pratiques de programmation

Assistant GABIN NDAY-A-MANDE MULOPWE


Concepteurs des systèmes d‟ information 2021-2022
Cours d’Algorithmique I
PREMIER BACHELIER INFORMATIQUE

 (Evaluation formative) 1 Exercice de révision avant chaque séance. 


Examen semestriel (50%)

IX. BIBLIOGRAPHIE SELECTIVE

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. Thomas H. CORMEN, Charles E. LEISERSON, Ronald L. RIVEST, Clifford STEIN,


Algorithmique cours avec 957 exercices et 158 problèmes 3 ème Edition, Ed. Dunod,
Paris 2010.

7. Yves GRANJON, Informatique Algorithmiques en Pascal et en langage C, Ed. Dunod,


Paris, 1999.

X. INFORMATIONS ADDITIONNELLES
 Matériels pédagogiques :
- Ordinateur muni d‟ un système d‟ exploitation Vista, Windows
7 ou Windows 8.

- Logiciels Free Pascal et Turbo Pascal


- Vidéo projecteur et écran de projection
- Diffuseur et micro sans fil

Assistant GABIN NDAY-A-MANDE MULOPWE


Concepteurs des systèmes d‟ information 2021-2022
Cours d’Algorithmique I

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.

Il est défini comme une procédure de calcul bien définie qui prend en
entrée une valeur, ou un ensemble de valeurs, et qui donne en sortie une valeur, ou un
ensemble de valeurs. Un algorithme est donc une séquence d‟ étapes de calcul qui
transforment l‟ entrée en sortie.

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.

Cet ensemble d’actions qui doivent être réalisées en vue de satisfaire


une spécification donnée est appelé ALGORITHME.

Ce mot vient d‟ un célèbre mathématicien arabe Abû Abdallah Mohammed


ibn Musã AL KHWARIZMI Al-Magusi (780-850) qui, pour la première fois l‟ a écrit dans
son œuvre „„Hisab al-jabr w’al-muqabala‟ ‟ en 825 qui signifie : « 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é.

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

1
Cours d’Algorithmique I

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.

2. 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 information un support formel d‟ un élément de connaissance


humaine susceptible d‟ être représentée à l‟ aide de conventions (codages) afin
d‟ être conservée, traitée ou communiqué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.

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
final 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

2
Cours d’Algorithmique I

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 par rapport à l‟ algorithme final supposées
exécutées par des processeurs abstraits, tandis que l‟ algorithme final ne comporte que
les actions primitives du processeur réel visé pour l‟ exécution.
4. Algorithme et langage de programmation

L‟ algorithme se construit simplement à partir de mots clés et de


conventions, généralement 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.

Un algorithme bien fait se doit d‟ être optimisé et correctement conçu, de


sorte que sa traduction en langage de programmation soit rapide, quasiment systématique
et corresponde à un programme qui fonctionne de manière optimale.

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 programmation compréhensible
par l‟ ordinateur, qui pourra se charger de l‟ exécuter.

Ainsi, dans la conception d‟ un algorithme, on sait apercevoir que:


 toutes les étapes intermédiaires sauf celle consistant à écrire le
programme final sont indépendantes du langage de programmation visé ;

 le résultat de chaque étape peut être considéré comme un algorithme.

Avec ces deux éléments, nous sommes amenés à concevoir un langage


algorithmique ou un pseudo-code.

3
Cours d’Algorithmique I

Un langage algorithmique est un ensemble des notations générales


permettant d‟ exprimer l‟ ensemble des algorithmes. Il permet d‟ écrire sous forme
d‟ algorithmes successifs la résolution d‟ un énoncé.

La réécriture dans un langage de programmation particulier d‟ un


algorithme exprimé en pseudo-code s‟ appelle le codage.

5. Avantages d’un langage algorithmique

Le langage algorithmique présente quatre avantages qui sont :

1) Permettre de raisonner par niveau d’abstraction décroissante


Ce langage permet d‟ exprimer les algorithmes quel que soit les processeurs
abstraits auxquels ils sont destinés. Lors de la conception d‟ un algorithme, on
peut faire intervenir autant de processeurs abstraits intermédiaires selon que le
concepteur trouvera nécessaire pour aboutir à l‟ algorithme final.

2) Assouplir les contraintes syntaxiques et sémantiques


Un programme doit être compris et interprété par un processeur, par conséquent,
il doit être facilement décodé par ce dernier. De ce fait, tous les langages de
programmation ont chacun une grammaire et une orthographe qu‟ il faudrait
respecter scrupuleusement pour écrire un bon programme qui répond aux
attentes du demandeur.

3) Unifier la méthode de conception des programmes quel que soit le langage de


programmation visé
En considérant plusieurs programmeurs qui connaissent chacun un langage de
programmation différent des autres. En produisant un même algorithme, chaque
programmeur pourra produire le code dans son langage, et arriver à produire un
programme qui donne le même résultat.
La maîtrise du langage algorithmique permet une maîtrise facile et aisée de
plusieurs langages de programmation.

4) Permettre de fractionner la difficulté de conception en séparant l’analyse et le


codage
Au niveau de l‟ analyse, le langage algorithmique se concentre sur la seule
signification du programme (Que veut-on faire ? comment le faire ?) qu‟ on appelle
sémantique sans tenir compte des contraintes syntaxiques ainsi que la réflexion
sur les outils destinés à faciliter la mise au point, qui sont utilisés lors de l‟ étape
de codage.

4
Cours d’Algorithmique I

CHAPITRE Ier : CONCEPTION D’UN ALGORITHME


I.1. Généralités

Dans la résolution d‟ un problème, il est nécessaire et obligatoire de présenter


tous les cas possibles et 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.

Une application courante est justiciable d‟ un traitement informatique si :

• Il est possible de définir et de décrire parfaitement les données d‟ entrée et les


résultats de sortie.

• Il est possible de décomposer le passage de ces données vers ces résultats en une
suite d‟ opérations élémentaires dont chacune peut être exécutée par une machine.

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é.

La méthode descendante se base sur le principe de « DIVISER pour REGNER


». Cette méthode consiste à résoudre un problème de manière récursive, en appliquant
trois étapes à chaque niveau de la récursivité :

 DIVISER : le problème en un certain nombre de sous-problèmes qui sont des


instances plus petites du même problème.
 REGNER : sur les sous-problèmes en les résolvant de manière récursive. Si la
taille d‟ un sous-problème est suffisamment réduite, on résout directement.

5
Cours d’Algorithmique I

 COMBINER : les solutions des sous-problèmes pour produire la solution du


problème originel.

On définie en premier lieu avec précision l‟ action ABSTRAITE qu‟ il s‟ agit de


réaliser. 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 ;

On recommence les deux premières étapes jusqu‟ à l‟ obtention d‟ actions


primitives par rapport au processeur visé pour l‟ exécution.

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.

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. Pour cela, 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.

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 :

6
Cours d’Algorithmique I

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.

7
Cours d’Algorithmique I

EXEMPLES

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

8
Cours d’Algorithmique I

- 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 :

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

9
Cours d’Algorithmique I

• 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
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

10
Cours d’Algorithmique I

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

• 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
- 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 :
- 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

11
Cours d’Algorithmique I

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

• 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
- 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.

12
Cours d’Algorithmique I

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 nommée A ne sera pas la même que la longueur d‟ une
maison nommée B, de même le prix unitaire d‟ un article nommé X, n‟ est pas toujours égal
au prix unitaire de l‟ article nommé 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.

Dans 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.
Une constante sera considérée comme une zone mémoire telle que la valeur

13
Cours d’Algorithmique I

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 de 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 peut importe le lieu, la grandeur du cercle,…

II.2. Déclaration 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 ».
En PASCAL, la déclaration des variables se fait de la même manière et
respecte les mêmes principes qu‟ en algorithmique.

a. Nom de la variable
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 (¨, ^, *, ~, - ,+ , « , » , „, = , %, …) des symboles
(#, @, &, (, ), /, π, Ω, ∑, λ, β, θ, £, $, …) et des accents sur les
lettres (é, è, à, ê, â, û, î, ù, ï,…),
 Il ne doit pas avoir le caractère blanc « espace »,
 Il peut admettre le caractère blanc souligné uniquement ( _ ).
 Il est préférable de ne pas utiliser les accents sur les différentes
lettres.

Exemple Contre exemple

Nombre Nombre-entier

14
Cours d’Algorithmique I

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.
- 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
b. 1. Type de la variable en algorithmique
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.

15
Cours d’Algorithmique I

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.

1. Type numérique
Pour ce type, nous avons pour les entiers :
 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.
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 :

PLAGE
TYPE NUMERIQUE
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

16
Cours d’Algorithmique I

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.
NB
1.
Toutes les valeurs de type caractère ou chaîne seront représentées toujours
dans les guillemets,
Ex : ‟ ‟ SALEM‟ ‟ , ‟ ‟ Je suis informaticien‟ ‟ , „„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,
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.

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.

17
Cours d’Algorithmique I

b. 2. Type de la variable en PASCAL


Les types utilisés en TURBO PASCAL 7.0 sont repris dans le tableau ci-
après :

Désignation Description Bornes Espace en


mémoire
REAL Nombres réels 2,9 10-39 et 1,7 10+38 6 octets
SINGLE Réel 1,5 10-45 et 3,4 10+38 4 octets
-324 +308
DOUBLE Réel 5 10 et 1,7 10 8 octets
EXTENDED Réel 1,9 10-4951 et 1,1 10+4932 10 octets
INTEGER Nombres entiers -32768 et 32767 2 octets
LONGINT Entier -2147483648 et 2147483647 4 octets
SHORTINT Entier -128 et 127 1 octet
WORD Entier 0 et 65535 2 octets
BYTE Entier 0 et 255 1 octet
LONG Entier -231 et 231-1 4 octets

BOOLEAN Variable booléenne TRUE ou FALSE 1 octet


STRING Chaine de caractères 256 octets

STRING[y] Chaîne de caractères ne y+1 octets


devant pas dépasser y
caractères
CHAR Nombre correspondant à 0 et 255 1 octet
un caractère ASCII codé

DATETIME Format de date 4 octets

II.3. Syntaxe de la déclaration d’une variable

La syntaxe de la déclaration d‟ une variable est la suivante :

En ALGORITHMIQUE En TURBO PASCAL 7.0

Variable <Nom de la variable> : <type> Var <Nom de la variable> : <type> ;

18
Cours d’Algorithmique I

Exemple 1

NB

En ALGORITHMIQUE En TURBO PASCAL 7.0

Variable A : entier Var A : integer ;


Variable PrixTotal : réel Var PrixTotal : real ;

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. En langage PASCAL, nous n‟ écrirons qu‟ une seule
fois le mot Var avant la première variable à déclarer. Ainsi, nous aurons
:

En ALGORITHMIQUE En TURBO PASCAL 7.0

Variable <NomDeLaVariable1> : <type1> Var <NomDeLaVariable1> : <type1> ;


<NomDeLaVariable2> : <type2> <NomDeLaVariable2> : <type2> ;
... ...
<NomDeLaVariableN> : <type n> <NomDeLaVariableN> : <type n> ;

Exemple :

En ALGORITHMIQUE En TURBO PASCAL 7.0


Variable NomEtud : Chaine (15) Var NomEtud : String[15];
Taille : Réel Taille : Single ;
Sexe : Booléen Sexe : Boolean ;
Age : Octet Age : Byte ;
NbreEtudiant : Entier NbreEtudiant : Integer;
Prenom : Chaine(15) Prenom : String[15] ;
Poids : Réel Poids : Single;
NbrePneu : Octet NbrePneu: Byte;

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. Il en est de même pour le programme PASCAL.

19
Cours d’Algorithmique I

Ainsi, nous aurons :

En algorithmique Variable <Nom de la variable1>, …, <Nom de la variable n> : type


En PASCAL Var <Nom de la variable1>, …, <Nom de la variable n> : type ;
Exemple :

En ALGORITHMIQUE En TURBO PASCAL 7.0


Variable NomEtud, Prenom : Chaine (15) Var NomEtud, Prenom : String[15];
Taille, Poids : Réel Taille, Poids : Single ;
Sexe : Booléen Sexe : Boolean ;
Age, NbrePneu : Octet Age, NbrePneu : Byte ;
NbreEtudiant : Entier NbreEtudiant : Integer;

II.4. Opération 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 langage algorithmique, l‟ instruction d‟ affectation se note avec le signe


et en langage PASCAL elle se note par :=. La syntaxe d‟ une opération d‟ affectation
serait :

Syntaxe

En ALGORITHMIQUE En TURBO PASCAL 7.0


< Variable> <Valeur> < Variable> := <Valeur> ;

Exemple:

En ALGORITHMIQUE En TURBO PASCAL 7.0

Nom_Poisson « Thomson » Nom_Poisson := « Thomson » ;


Age 19 Age :=19 ;

NbreEtudiant 658 NbreEtudiant :=658 ;

20
Cours d’Algorithmique I

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


 Attribuer la valeur Thomson à la variable Nom_Poisson.
 Attribuer la valeur 19 à la variable Age.
 Attribuer la valeur 658 à la variable NbreEtudiant.

NB

1. La valeur à affecter ou à attribuer à une variable doit être nécessairement du


même type que la variable.

Exemple :

En ALGORITHMIQUE En TURBO PASCAL 7.0


Variable somme, Som : Réel Var somme, Som : Real ; Prix
Prix : Entier prixUnit : Integer ; prixUnit
: Octet : Byte ;
Nom, NomPropre : Chaine(7) Nom, NomPropre : String[7] ;
Somme 65,56 Somme := 65,56 ;
Prix 150 Prix := 150 ;

Nom « Tantale » Nom := „Tantale „ ;


Som := 89 ;
Som 89
PrixUnit := 12 ;
PrixUnit 12
NomPropre := „ 2000 „;
NomPropre « 2000 »

Contre exemple :
En ALGORITHMIQUE En TURBO PASCAL 7.0
Variable somme, Som : Réel Var somme, Som : Real ;
Prix, prixUnit : Entier Prix, prixUnit : Integer ;
Nom, NomPropre : Chaine(7) Nom, NomPropre : String[7] ;
Prix 150,38 Prix := 150,38 ;
Nom « Tantale Joviale » Nom := „Tantale Joviale‟ ;

Som « Le total vaut : 250 » Som := „Le total vaut : 250‟ ;


PrixUnit := 540 ;
PrixUnit 540

2. En algorithmique, l‟ usage des guillemets (« ») pour les valeurs alphanumériques


permet d‟ éviter toute ambiguïté entre la valeur et le nom de variable. Tandis que

21
Cours d’Algorithmique I

en PASCAL, les guillemets sont remplacés par les cotes („ „) les apostrophes.
Exemple :

En ALGORITHMIQUE En TURBO PASCAL 7.0


Variable Banane, Orange, Pomme : Chaine(10) Var Banane, Orange, Pomme : String[10] ;
Banane « Papaye» Banane := „Papaye‟ ;

Orange «Banane» Orange := „Banane‟ ;


Pomme := 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 1:
En ALGORITHMIQUE En TURBO PASCAL 7.0
Variable A, B, C : Reel Var A, B, C : Single;
A 3,56 A := 3,56;
B 8 B := 8;

C A*B C := A * B;

La variable C après affectation aura la valeur 3,56 * 8 qui équivaut à 28,48.

Exemple 2:

En ALGORITHMIQUE En TURBO PASCAL 7.0


Variable A, B, C : Chaine(25) Var A, B, C : String[25]; A
A “Informatique ‟ ‟ := „Informatique‟ ;
B “Gestion” B := „Gestion‟ ;
C A + “ de ” + B 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.

II.5. La déclaration des constantes

Pour tout emplacement mémoire tel que sa valeur ne doit pas changée tout au

22
Cours d’Algorithmique I

long de l‟ exécution de l‟ algorithme ou du programme, on aura à le déclarer de la manière


suivante :
Syntaxe
En ALGORITHMIQUE En TURBO PASCAL 7.0
Constante <Nom de la constante>=<Valeur> Const <Nom de la constante> :=<Valeur> ;

Exemple :

En ALGORITHMIQUE En TURBO PASCAL 7.0


Constante Pi=3,14 Const 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


NB

une seule fois avant la première constante à déclarer le mot Constante. Il en


est de même pour la déclaration des constantes dans un programme PASCAL.
Généralement on déclare les constantes après les variables.

II.6. Les expressions et les operateurs

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.
Syntaxe :

En ALGORITHMIQUE En TURBO PASCAL 7.0

< Variable> <Valeur> < Variable> := <Valeur> ;

Exemple :

En ALGORITHMIQUE En TURBO PASCAL 7.0

23
Cours d’Algorithmique I

A « 12 » A :=‟ 12‟ ;
B A B := A ;
C 89 C := 89 ;
D 12+3.14*C D := 12+3.14*C ;

Une expression est un ensemble de valeurs (opérandes), reliées par des


opérateurs, et produit 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 :

EN ALGORITHMIQUE EN TURBO PASCAL 7.0 SIGNIFICATION

+ + Pour l‟ addition
- - Pour la soustraction
* * Pour la multiplication
/ / Pour la division
Mod Mod le modulo ou le reste de la division modulaire
^ou ** Pour la puissance
DIV ou \ DIV 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.

NB

L‟ usage des parenthèses dans une expression permet de forcer l‟ ordre de


priorité.
Exemple : (A * B) + C A * (B + C)

24
Cours d’Algorithmique I

NB Les opérateurs d‟ addition et de soustraction peuvent être utilisés avec les


valeurs du type date

2. Opérateur alphanumérique

Cet opérateur agit sur les valeurs du type chaîne de caractère ou caractère,
et permet de faire concaténation des chaînes. Nous avons :

En ALGORITHMIQUE En TURBO PASCAL 7.0


& ou + (esperluette) +
Exemple :

En ALGORITHMIQUE En TURBO PASCAL 7.0 Résultat

Nom ‟ ‟ Gabin‟ ‟ & ‟ ‟ Nday‟ ‟ Nom :=‟ Gabin‟ + ‟ Nday‟ ; GabinNday


Nom := Gabin‟ +‟ „ +‟Nday‟ ; Gabin Nday
Nom ‟‟Gabin‟‟ &‟‟ „‟ &‟‟Nday‟‟

3. Opérateurs de comparaison

Ces opérateurs s‟ appliquent sur les valeurs du type numérique, sur les valeurs
du type alphanumérique et sur les valeurs du type date.

En ALGORITHMIQUE et en TURBO PASCAL 7.0 Signification


< Inférieur strict
<= Inférieur ou égal
> Supérieur strict
>= 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). Ces opérateurs sont :

En ALGORITHMIQUE En TURBO PASCAL 7.0 Signification

OU OR Ou logique
ET AND Et logique

25
Cours d’Algorithmique I

NON NOT Non logique


XOR Ou exclusif

1) Opérateur OU (OR)

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) (A OR B) B
VRAI VRAI VRAI
FAUX VRAI VRAI
VRAI VRAI FAUX
FAUX FAUX FAUX

2) Opérateur ET (AND)

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) (A AND B) B
VRAI VRAI VRAI

FAUX FAUX VRAI


VRAI FAUX FAUX
FAUX FAUX FAUX

3) Opérateur NON (NOT)

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
4) Opérateur (XOR)

XOR est Vrai si toutes les valeurs de l‟ expression sont vraies, et XOR est

26
Cours d’Algorithmique I

faux si toutes les valeurs de l‟ expression sont fausses. La table de vérité de l‟ opérateur
XOR se présente de la manière suivante :

A (A XOR B) B

VRAI VRAI VRAI


FAUX FAUX VRAI
VRAI FAUX FAUX
FAUX VRAI FAUX

D‟ une manière générale, dans une expression, les opérateurs suivent la priorité suivante
:

En ALGORITHMIQUE En TURBO PASCAL 7.0


NON NOT
*, /, MOD, DIV, ET *, /, MOD, DIV, AND
*, -, OU *, -, OR, XOR

=, <, >, <=, >=, <> =, <, >, <=, >=, <>

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

HOMME Unité de
traitement

Unité de
sortie

Flux des informations


en sortie

27
Cours d’Algorithmique I

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

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

III.2. La primitive d’entrée

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 :

En ALGORITHMIQUE En TURBO PASCAL 7.0


LIRE < variable> Read (Variable) ;
ReadLn (Variable) ;
Rmqs

 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érentes variables seront séparées les unes des autres par des virgules. Syntaxe
:

En ALGORITHMIQUE En TURBO PASCAL 7.0

28
Cours d’Algorithmique I

LIRE < Variable1>, < Variable2>,…, < VariableN > Read(Variable1, Variable2,…,VariableN)
ReadLn(Variable1, Variable2,…,VariableN)

Exemple 1 :

En ALGORITHMIQUE En TURBO PASCAL 7.0

Variable a, b : Entier Var a, b : Integer ;


Nom : String[10];
Nom : Chaine(10)
a := 30 ; Read
a 30 LIRE nom
(nom) ;
LIRE b
Read (b) ;

Exemple2 :

En ALGORITHMIQUE En TURBO PASCAL 7.0


Var a, b : Integer ;
Variable a, b : Entier Nom : String[10]; a
Nom : Chaine(10) a 30 :=30 ;
LIRE nom, b Read (nom, 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 :
En ALGORITHMIQUE En TURBO PASCAL 7.0
ECRIRE < Valeur> Write(Valeur);
WriteLn(Valeur);

Rmqs

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


résultat d‟ une expression Exemples :

En ALGORITHMIQUE En TURBO PASCAL 7.0

29
Cours d’Algorithmique I

1. ECRIRE 10 1. Write (10);


2. ECRIRE « Algorithmique il est bon » 2. Write („Algorithmique il est bon‟ ) ;
3. Som 10 ECRIRE Som 3. Som := 10 ;
4. ECRIRE Som*15/A+2 Write (Som) ;
5. ECRIRE Nom+ « est un étudiant » 4. Write (Som*15/A+2) ;
5. Write (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 :

En ALGORITHMIQUE En TURBO PASCAL 7.0


ECRIRE <Valeur1>, <Valeur2>, …, < ValeurN> Write(Valeur1, Valeur2,…,ValeurN);
WriteLn(Valeur1, Valeur2,…, ValeurN);

N.B

La commande ReadLn permet à l‟ utilisateur de lire une valeur qui sera utilisée par le
programme comme la commande Read. ReadLn provoque le retour à la ligne, c'est-à-dire
le curseur passe à la ligne suivante. Lorsqu‟ aucune variable n‟ est affectée à la commande,
il suffit de presser la touche ENTREE ou ENTER.

La commande WriteLn est semblable à la commande Write à la différence près que le


curseur est maintenant renvoyé à la ligne suivante.

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.

30
Cours d’Algorithmique I

IV.1. La séquence (la structure séquentielle)

L‟ exécution des différentes instructions d‟ un algorithme par 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 : On désire être étudiant à l‟ Institut Supérieur de Statistique de Lubumbashi.


 Tout premièrement on doit prendre l‟ inscription,
 On doit ensuite passer les tests d‟ admission, en cas de réussite 
On doit confirmer l‟ inscription en payant la première tranche

A partir de cet exemple, nous remarquons que :

On ne peut jamais faire les tests d‟ admission si on n‟ a pas pris l‟ inscription,


et
on ne peut jamais payer la première tranche de minerval si on n‟ a pas réussi aux tests.

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. Il en ai de même d‟ un programme PASCAL. Nous avons :

 Le nom de l‟ algorithme ou l‟ entête, ou le nom du programme


 La partie déclarative, et
 Le corps de l‟ algorithme, ou du programme.

a. Le nom de l’algorithme ou du programme

Le nom de l‟ algorithme nous permet de l‟ identifier. Ce nom sera toujours écrit

31
Cours d’Algorithmique I

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 » pour l‟ écriture en langage algorithmique ou «
PROGRAM » en langage PASCAL.

Syntaxes :

En ALGORITHMIQUE En TURBO PASCAL 7.0


ALGORITHME Nom_De_L_Algorithme PROGRAM Nom_Du_Programme ;

Exemples
En ALGORITHMIQUE En TURBO PASCAL 7.0
ALGORITHME Calcul_du_salaire PROGRAM Calcul_du_salaire ;
ALGORITHMEb. L GestionStock PROGRAM GestionStock ;
ALGORITHME triangledepascal10 PROGRAM triangledepascal10 ;
a

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 17).

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

RESTITUTION DES RESULTATS


CORPS DE
L’ALGORITHME

32
Cours d’Algorithmique I

Nous pouvons aussi utilisé le langage qu’on appelle Ordinogramme ou algorigramme


ou encore logigramme : c’est un langage représenté par différentes formes
géométriques, et chacune des formes représente une action à poser.

Un ordinogramme est une représentation graphique normalisée de l’enchainement


des opérations et des décisions effectuées par un programme d’ordinateur

IV.1.2. Syntaxe d’un algorithme ou d’un programme pascal

Pour tout algorithme nous aurons la syntaxe suivante :

Entête

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 ou du programme.

Exemple : soit à écrire un algorithme qui lit le nombre des étudiants et le nombre des
étudiantes de G1 INFO A 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
Ecrire « saisir le nombre des étudiants et des étudiantes »
En ALGORITHMIQUE Lire nbreetM, nbreetF
Som som + nbreetM + nbreetF
Ecrire « les étudiants de G1 INFO sont au nombre de », Som Fin
PROGRAM NOMBREETUDIANT ;
Var nbreetM, nbreetF, som : Integer;
BEGIN
Som :=0 ;
En TURBO PASCAL 7.0 WriteLn („saisir le nombre des étudiants et des étudiantes‟ ) ;
ReadLn (nbreetM, nbreetF);
Som := som + nbreetM + nbreetF;
WriteLn („les étudiants de G1 INFO sont au nombre de‟ , Som) ;
End.

33
Cours d’Algorithmique I

Pour maintenir le résultat à l‟ écran en PASCAL, il faut utiliser l‟ instruction Repeat


Until Keypressed avant le END final.

IV.2. La sélective (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>
En ALGORITHMIQUE SINON < instructuion-si-la-condition-est-fausse>
FINSI
IF (condition) THEN < instruction-si-la-condition-est-vraie>
En TURBO PASCAL 7.0 ELSE < instructuion-si-la-condition-est-fausse>;
En langage PASCAL, l‟ instruction avant ELSE ne se termine jamais par un point-
virgule ( ;)

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 condition2) Alors < instruction-vraie>


En ALGORITHMIQUE SINON < instructuion-fausse>
FINSI
IF (condition1 and/or Condition2) THEN < instruction-vraie>
En TURBO PASCAL 7.0 ELSE < instructuion-fausse>;

2. nous ayons plusieurs instructions à exécuter lorsque la condition est vraie (ou
fausse). De ce fait en TURBO PASCAL, nous devons placer le mot BEGIN avant
la première instruction et le mot END après la dernière instruction. Nous aurons
:

34
Cours d’Algorithmique I

En ALGORITHMIQUE En TURBO PASCAL 7.0

if (condition) Then
Si (condition) alors Begin
InstructionVraie1 Instructionvraie1 ;
InstructionVraie2 InstructionVraie2 ;
InstructionVraieN InstructionVraieN ;
End
Sinon Else
InstructionFausse1 Begin instructionFausse1
InstructionFausse2 ; InstructionFausse2
InstructionFaussen ;
Finsi
InstructionFaussen ;
End;

3. Il peut arriver que nous ayons une instruction de SI (IF) possédant ALORS
(THEN) sans avoir le SINON (ELSE).

En ALGORITHMIQUE En TURBO PASCAL 7.0

Si Condition alors Instruction If Condition Then Instruction ;


Finsi
Si Condition alors If Condition Then
Instruction1 Begin
Instruction2 Finsi Instruction1 ;
Instruction2 ; End
;
4. toutes les instructions qui doivent être exécutées lorsque la condition n‟ est pas
remplie doivent encore être exécutées lorsque la condition est 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.

En ALGORITHMIQUE En TURBO PASCAL 7.0

35
Cours d’Algorithmique I

Si (condition) alors If (condition) Then


InstructionVraie1 Begin
InstructionVraieN InstructionVraie1 ;
InstructionVraieN ;
Sinon End
Instruction1 Else
Instruction2 Begin
Finsi InstructionFausse1 ;
InstructionFausseN ;
End ;
Si (condition) alors InstructionVraie1 If (condition) Then InstructionVraie1 ;
Finsi Instruction1 ;
InstructionFausse1 Instruction2 ;
InstructionFausse2

5. nous ayons des structures alternatives imbriquées (les unes à l‟ intérieur des
autres).

En ALGORITHMIQUE En TURBO PASCAL 7.0


Si (condition1) alors If condition1 then
Si (condition2) alors Instructionvraie If condition2 then InstructionVraie
Sinon Else InstructionFausse
Instructionfausse Else Instruction
Finsi
Sinon Instruction Finsi

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


afficher ‟ ‟ ce nombre est grand‟ ‟ , dans le cas contraire, „„ce nombre est
petit‟ ‟ .

En ALGORITHMIQUE En TURBO PASCAL 7.0


ALGORITHME Exemple1 PROGRAM Exemple1 ;
Variable n : entier Var n : integer ;
Début Begin
Ecrire ‟ ‟ SAISIR le nombre‟ ‟
Write („Saisir le nombre‟ ) ;
Lire n
Readln(n) ;
Si n >20 Alors Ecrire „„Ce nombre est
If n >20 then Writeln(„Ce nombre est
grand‟ ‟ Sinon Ecrire „„ce nombre
grand‟ )
est petit‟ ‟

36
Cours d’Algorithmique I

Finsi Else Writeln(„ce nombre est petit‟ )


Fin ; End.

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.

En ALGORITHMIQUE En TURBO PASCAL 7.0

Algorithme Deliberation PROGRAM Deliberation ;


Variable pourcentage : reel Var pourcentage : real ;
NbreEchec : entier NbreEchec : Byte ;
Debut Begin
Afficher « le pourcentage d‟ un étudiant » Write(„le pourcentage d‟ un étudiant‟ ) ;
Lire pourcentage ReadLn (pourcentage) ;
Ecrire « le nombre d‟ échec d‟ un étudiant » Write(„le nombre d‟ échec d‟ un étudiant‟ ) ;
Lire NbreEchec ReadLn (NbreEchec) ;
Si ((pourcentage >= 50) et (NbreEchec < 3)) if ((pourcentage >= 50) and (NbreEchec <
alors Ecrire « réussite » sinon Ecrire « 3)) then WriteLn („réussite‟ )
Echec » Else WriteLn („ Echec‟ ) ;
Finsi End.
Fin

IV.3. L’itérative (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 (WHILE),

37
Cours d’Algorithmique I

 La boucle POUR (FOR), et

 La boucle REPETER (REPEAT).

a) La boucle TANTQUE (WHILE)

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 (WHILE)

En ALGORITHMIQUE En TURBO PASCAL 7.0


WHILE Condition DO Instruction ;
TANTQUE Condition FAIRE
WHILE Condition DO
Instruction1
Begin
Instruction2
Instruction1 ;
………………
Instruction2;
InstructionN
………………
FINTANTQUE
InstructionN End;

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 :

En ALGORITHMIQUE En TURBO PASCAL 7.0

i 1 i :=1 ;
Tantque (i <= 10) Faire WHILE i<=10 DO
Somme Somme +1 Begin
i i+1 Somme := Somme + 1 ;
Fintantque i := i + 1 ;
Ecrire Somme end;
Write(Somme);

38
Cours d’Algorithmique I

• 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 parles opérateurs logiques.

Exemple :

En ALGORITHMIQUE En TURBO PASCAL 7.0


i 1 i := 1 ;
Somme 0 somme :=0 ;
Tantque (i <= 10) et (Somme < 50) WHILE (i<=10) and (Somme<50) DO
Faire Begin
Lire Valeur ReadLn (Valeur);
Somme Somme +1 Somme := Somme + 1; i
i i+1 := i+1 ;
Ecrire Somme WriteLn (Somme) End
Fintantque ;

• 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.

Exemple : Variable i initialisée

Variable i dans la condition


i 1

Tantque (i <= 10) Faire


Somme Somme +1 i i+1

Fintantque
Variable i incrémentée
Ecrire Somme

• 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 :

39
Cours d’Algorithmique I

En ALGORITHMIQUE En TURBO PASCAL 7.0


i 1 i :=1 ;
Tantque (i >= 10) Faire WHILE (i>=10) DO
Somme Somme +1 i Begin
i+1 Somme := Somme + 1 ;
Fintantque i :=i + 1;
Ecrire Somme end;
WriteLn Somme;
• 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 :

En ALGORITHMIQUE En TURBO PASCAL 7.0


Tantque <Condition1>Faire WHILE Condition1 Do
Tantque <Condition2>Faire WHILE condition2 Do
Tantque <ConditionN>Faire WHILE Condition3 Do
Instruction1 Begin
Instruction2 Instruction1;
…… Instruction2;
InstructionN ……
Fintantque InstructionN End;
Fintantque
Fintantque
• 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.

b) La boucle POUR / FOR

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.

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

40
Cours d’Algorithmique I

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> < > Jusqua < > Faire


ValeurInitiale ValeurFinale
En
Instruction1
ALGORITHMIQUE
Instruction2
……
InstructionN
Finpour <VariableCompteur>
FOR <VariableCompteur> := <ValeurInitiale> TO/DOWNTO
En TURBO <ValeurFinale> DO

PASCAL 7.0 Begin


Instruction1
Instruction2
……
InstructionN
End ;

En pascal, lorsqu‟ il n‟ a qu‟ une seule instruction à exécuter dans la boucle FOR, on écrit :
FOR<VariableCompteur> :=<ValeurInitiale> TO/DOWNTO <ValeurFinale> DO
Instruction;
<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.

41
Cours d’Algorithmique I

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.
• 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 :

En ALGORITHMIQUE En TURBO PASCAL 7.0


POUR i 1 Jusqua 5 Faire FOR i := 1 TO 5 Do
POUR j 1 Jusqua 3 FOR j :=1 TO 3 DO
Faire Begin
Produit := i * j ;
Produit i *j Write (Produit) ;
Ecrire Produit End ;

Finpour j
Finpour i

c) La boucle REPETER REPEAT

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

En ALGORITHMIQUE En TURBO PASCAL 7.0

REPETER REPEAT
Instruction1 Instruction1 ;
… …
InstructionN InstructionN ;
JUSQUA <Condition> UNTIL <Condition> ;
La condition est évaluée après l‟ exécution du corps de la boucle : si sa

42
Cours d’Algorithmique I

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

En ALGORITHMIQUE En TURBO PASCAL 7.0


ALGORITHME SOMMEDIX PROGRAM SOMMEDIX ;
VARIABLE Som, Nbre : Entier VAR Som, Nbre : Integer ;
i : Octet
i : Byte ;

Boucle BEGIN
DEBUT i
TANTQUE 1 i := 1 ;
Som 0 Som :=0 ;
TANTQUE (i <= 10) FAIRE Lire Nbre While (i <=10) do
Som Som + Nbre
Begin
i i+1
FINTANTQUE Read(Nbre) ;
Ecrire Som Som :=Som + Nbre ;
FIN i :=i+1 ;
end ;
Writeln (Som) ;
End.
PROGRAM SOMMEDIX ;
ALGORITHME SOMMEDIX VAR Som, Nbre : Integer ;
VARIABLE Som, Nbre : Entier i : i : Byte ;
Octet

Boucle DEBUT BEGIN


i 1 i := 1 ;
REPETER
Som 0 Som :=0 ;
REPETER REPEAT
Lire Nbre Read(Nbre) ;
Som Som + Nbre
Som :=Som + Nbre ;
i i+1
i :=i+1 ;
JUSQUA ( i > 10)
Ecrire Som UNTIL (i >10);

43
Cours d’Algorithmique I

FIN Writeln (Som) ;


End.

En définitive, le problème est de 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.

IV.4. Quelques instructions pascal de gestion de l’écran et


d’affichage

• Clrscr ; cette instruction permet d‟ effacer tout l‟ écran et placer le curseur en haut
à gauche de l‟ écran.

• DelLine ; cette instruction efface la ligne courante, c'est-à-dire celle qui contient le
curseur.

• InsLine ; cette instruction insère une ligne vide à la position courante du curseur.
• TextBackground(X) ; cette instruction fait le choix d‟ une couleur de fond pour le
texte qui sera tapé par la suite. X est le numéro de la couleur (de 0 à 15).

• TextColor(X) ; cette instruction fait le choix d‟ une couleur pour le texte qui sera
affiché par la suite.

• TextColor(x + blink) ; choix d‟ une couleur pour le texte qui sera affiché en mode
clignotant.

44
Cours d’Algorithmique I

• GotoXY(x, y) ; cette instruction permet de positionner le curseur à la position voulue


dans l‟ écran ou dans une fenêtre Window. X et Y sont respectivement le numéro de
colonne et celui de la ligne.

• SetColor(couleur) ; cette instruction nous permet de sélectionner une couleur qui


affectera toutes les commandes graphiques.

• SetFillStyle(style, couleur) ; cette instruction sélectionne un motif de remplissage


spécifique ainsi qu‟ une couleur parmi 16.

• FloodFill (x, y, border) ; cette instruction rempli une surface fermée identifiée par
sa couleur de bordure. La couleur de remplissage sera celle choisie par un SetColor ou
un SetFillStyle.

• Bar(x1, y1, x2, y2) ; construit un rectangle plein aux coordonnées indiquées. L‟ axe
des x étant croissant de gauche à droite et celui des y croissant de haut en bas.

• Line(x1, y1, x2, y2) ; construit une ligne débutant au point de coordonnées (x1, y1)
et se terminant au point de coordonnées (x2, y2).

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 (Voir
page14 Nom de la 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

45
Cours d’Algorithmique I

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 :

1 2 3 4 … n-2 n-1 n

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


1 2 …. n-1 n

1
2
….
m-2 m-
1

Le contenu d‟ une case sera repéré en utilisant le nom du tableau, suivi des
coordonnées de la case dans le tableau.
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. Déclaration 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 :

46
Cours d’Algorithmique I

En ALGORITHMIQUE En TURBO PASCAL 7.0


<NomDuTableau>(ValeurMin :ValeurMax) : Type <NomDuTableau> : ARRAY[ValeurMin.. ValeurMax] Of Type
;

Exemple :

En ALGORITHMIQUE En TURBO PASCAL 7.0 EXPLICATION


Entier la déclaration d‟ un tableau
nommé Elie qui a dix éléments du type
ELIE (1 :10) : Entier ELIE : Array [1..10] of Integer ;
entier.

la déclaration d‟ un tableau nommé


Lettre qui a 11 éléments du type
LETTRE (5 :15) : Chaine(7) LETTRE : Array [5..15] of String(7) ;
chaîne de longueur 7.

Pour les tableaux à plusieurs dimensions, la déclaration se fait de la manière


suivante :

En NomDuTableau(ValMin1 :ValMax1,ValMin2 :ValMax2,…,ValMinN : ValMaxN


ALGORITHMIQUE ) :Type

En TURBO PASCAL NomDuTableau :


7.0 Array[ValMin1:ValMax1,ValMin2:ValMax2,…,ValMinN:ValMaxN] of Type ;

En ALGORITHMIQUE En TURBO PASCAL 7.0 EXPLICATION


la déclaration d‟ un tableau à
deux dimensions de 10 lignes
et 5 colonnes du type chaîne
ELEVE (1 : 10, 1 : 5) : Chaine(20) ELEVE : Array[1..10,1..5] of Integer ;
20 se nommant ELEVE.

47
Cours d’Algorithmique I

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 à
COTE(1 : 985, 1 : 32, 1 : 80) : Reel COTE : Array[1..985,1 :32,1 :80] of Real ;
une longueur de 80. Le tableau
se nomme COTE.

V.3. Traitements itératifs 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).

Un élément du tableau peut être utilisé comme une variable ordinaire,


c'est-à-dire on peut y affecter une valeur. Pour utiliser un élément, on a besoin du nom
du tableau et de l‟ indice.

Syntaxe :

En ALGORITHMIQUE En TURBO PASCAL 7.0


NomTableau( i ) NomTableau [ i ]
NomTableau( i , j ) NomTableau [ i , j ]

Exemple :

En ALGORITHMIQUE En TURBO PASCAL 7.0 EXPLICATION


ELIE ( 3 ) 10 ELIE ( 3 ) :=10 ; On affecte la valeur de 10 dans
l‟ élément d‟ indice 3 du tableau ELIE.

48
Cours d’Algorithmique I

k 3 K := 3 ; On affecte la valeur 3 à la variable k,


ensuite on affecte la valeur 10 à
ELIE (k) 10 ELIE (k) :=10 ; l‟ élément d‟ indice k du tableau.

ELEVE ( 6, 8 ) 20 ELEVE [6, 8] :=20 ; On affecte la valeur 20 à l‟ élément


se trouvant à l‟ indice horizontal 6 et
l‟ indice vertical 8 du tableau ELEVE.

CHAPITRE VI : LES PROCEDURES ET LES FONCTIONS

VI.1. Fonctions personnalisées

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é,

49
Cours d’Algorithmique I

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.

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
sousprocé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.

VI.3. Sous-procédures

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

50
Cours d’Algorithmique I

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
sousprocédure est identifiée par les mots-clés Procedure et FinProcedure.

• 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.

51
Cours d’Algorithmique I

EXERCICES

1. 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.

2. 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.

3. 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.

4. 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.

5. 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).

6. 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é.

7. 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.

8. 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.

9. Ecrire un programme qui permute le contenu de deux variables.

10. Etant donnés l‟ âge du père et celui de son fils, écrire un programme qui calcule et
affiche après combien de temps l‟ âge du père sera le double de celui de son fils.

52
Cours d’Algorithmique I

11. Etant donné la diagonale d‟ un carré, écrire un programme qui calcule et affiche la
surface et le périmètre de ce carré.

12. Etant donné un nombre entier positif, écrire un programme qui calcule et affiche
la racine carrée de son dernier chiffre.
13. Etant donné un nombre entier positif, écrire un programme qui calcule et affiche
la racine carrée de son premier chiffre.

14. Etant donnée un nombre entier positif, écrire un algorithme qui vérifie si ce
nombre est du rang des unités, des dizaines, des centaines ou autre.

15. Un nombre est multiple de 3 si la somme de ces chiffres est 3, 6 ou 9. Si la somme


est supérieure à 10 reprendre l‟ opération jusqu‟ à avoir une somme inférieur à 10.

16. Un commerçant croit avoir obtenu un bénéfice s‟ il a eu un surplus de plus de 30%


sur le montant dépensé. Etant donné le nombre de sacs de riz n acheté par le client
et le prix p par sac ainsi que le prix de vente PV par sac, on demande d‟ écrire un
algorithme qui dit si le commerçant est satisfait ou pas.

17. Un nombre est impair si son dernier chiffre est 1, 3, 5, 7 ou 9. Suivant ce


raisonnement, écrire un algorithme qui vérifie si un nombre est impair ou pas.

18. Etant donné un temps exprimé en secondes, on demande de concevoir un


programme qui calcule et affiche ce temps en heures, minutes et secondes.

19. Etant donné la hauteur d‟ un triangle équilatéral, écrire un programme qui calcule
et affiche la base et la surface.

20. Etant donné les côtes obtenues par un élève aux deux premiers contrôles, on
demande d‟ écrire un programme qui affiche à l‟ écran le message
a. « rattrapage » si les deux côtes sont inférieures à 10 ;
b. «attention» si une seule des deux côtes est < à 10 ;
c. « ok » dans les autres cas.

21. Etant donné un nombre, écrire un programme qui affiche dans l'ordre inverse les
chiffres qui composent ce nombre.

22. Etant donné un nombre, écrire un programme qui calcule et affiche de combien de
chiffres ce nombre est composé.

53
Cours d’Algorithmique I

23. Etant donné une suite de n nombres, écrire un algorithme qui vérifie si cette suite
est une progression géométrique ou pas.

24. Etant donné le montant du salaire horaire d‟ un ouvrier et le nombre d‟ heures


prestées au cours d‟ une journée par cet ouvrier, on demande d‟ écrire un
programme qui affiche :
a. le nombre d‟ heures normales prestées,
b. le nombre d‟ heures supplémentaires prestées
c. le salaire à payer.
On conviendra que les heures prestées au-delà de 8 heures /jours sont considérées
comme supplémentaires et sont payées 50% plus cher que les autres.

25. Ecrire un programme qui, étant donné un montant d‟ un capital placé dans un compte
d‟ épargne et le taux d‟ intérêt (en %) pratiqué par la caisse où ce capital est placé,
on demande de concevoir un programme qui calcule et affiche l‟ intérêt obtenu et
la valeur acquise par ce capital au bout d‟ un an.

26. Ecrire un programme qui vérifie si un nombre est premier.

27. Ecrire un programme qui vérifie si un nombre parfait.

28. Etant donné le nombre d‟ élève, soit n, d‟ une classe et la suite des cotes obtenues
en anglais par les n élèves, on demande de concevoir un programme qui donne pour
résultats le pourcentage de cotes inférieures à 10 obtenus par ces élèves.

29. Etant donné une suite de n chiffres, on demande d‟ écrire un programme qui soit
affiche le message « pas de zéro » si la suite ne contient aucun zéro, soit s‟ il s‟ y
trouve au moins un zéro, indique le nombre de zéros que contient cette suite et la
position du dernier zéro rencontré.

30. Un client achète 5 articles différents dans un magasin, les quantités de chaque
article ainsi que les prix étant données par la caissière. On demande d‟ écrire un
programme qui calcule et affiche les montants correspondant à chaque article ainsi
que le montant total à payer.

31. Etant donnée le salaire horaire et le nombre d‟ heures prestées chaque jour de la
semaine (5 jours) par un ouvrier, on demande de concevoir un programme qui
détermine le nombre d‟ heures de prestations normales, le nombre d‟ heures
supplémentaires et le salaire brut de la semaine de cet ouvrier, sachant que les
heures supplémentaires (au-delà de 8 heures par jour) sont payés 50 % plus cher
que les heures de prestations normale.

54
Cours d’Algorithmique I

32. Etant donnée une suite de nombre (différents de 0) dont la fin est signalée par
zéro, on demande de concevoir un programme qui détermine et affiche de combien
de nombres la suite est constituée (non compris le zéro final)

33. Lors d‟ une enquête d‟ opinion préalable aux élections législatives, on a demandé à
un échantillon d‟ électeurs s‟ ils pensaient voter pour le candidat Dubois. Les seules
réponses possibles des électeurs interrogées étaient :
d. Ne sait par encore pour qui voter : ce type de réponse est codé 0 ;
e. Votera sûrement pour le candidat Dubois : ce type de réponse est codé 1 ;
f. Votera sûrement pour un autre candidat : ce type de réponse est codé 2.

Etant donné les réponses codées des électeurs interrogés, on demande d‟ écrire
un programme qui calcule et affiche les pourcentages respectifs d‟ électeurs
hésitants, d‟ électeurs acquis aux candidats Dubois, d‟ électeurs acquis à un autre
candidat.
On suppose que l‟ utilisateur terminera le dépouillement de cette enquête en
communiquant un code négatif.

34. Etant donné une suite de 10 nombres, on demande d‟ écrire un algorithme capable
:
- D‟ inscrire cette suite dans un tableau ;
- D‟ afficher chaque élément du tableau ainsi constitué en le faisant précéder de
la valeur de son indice.

35. 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.

36. Même exercice cette fois ci en calculant le produit des deux matrices.

37. 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

38. 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.

39. 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).

55
Cours d’Algorithmique I

40. 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.

41. 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.

42. 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.
43. Etant donné un tableau de n éléments et un nombre X. Ecrire un algorithme capable
:
• D‟ afficher le message « l‟ élément X n‟ est pas dans le tableau » si X n‟ est
pas parmi les éléments du tableau ;
• D‟ afficher la position de l‟ élément X dans le cas où il est parmi les éléments
du tableau.

44. Ecrire un algorithme capable de supprimer un élément X du tableau sachant qu‟ il


est présent dans le tableau à une position connue.

45. Ecrire un programme qui permet d‟ ajouter un élément dans un tableau de taille
20.

46. Ecrire un programme qui calcule la surface d‟ un carré et le volume d‟ un cube de


même côté.

NB. En utilisant la fonction CalculSurfaceCarre et la fonction CalculVolumeCube.

47. Ecrire un programme qui renvoie le plus grand élément des éléments d‟ un tableau.

48. Ecrire un programme qui calcule et affiche l‟ écart entre le plus grand élément
d‟ un tableau et le plus petit.

49. Etant donné une suite de n nombres, écrire un algorithme qui vérifie si cette suite
est une progression arithmétique ou pas.

56
Cours d’Algorithmique I

TABLE DES MATIERES


INTRODUCTION ................................................................................................................................................ 1
1. Généralités ................................................................................................................................................... 1
2. Définition des quelques concepts clés .................................................................................................. 2
3. Niveau d‟ abstraction .................................................................................................................................
2
4. Algorithme et langage de programmation ............................................................................................ 3
5. Avantages d‟ un langage algorithmique ...................................................................................................
3
CHAPITRE Ier : CONCEPTION D‟ UN ALGORITHME ................................................................................
5
I.1. GENERALITES ........................................................................................................................................ 5
I.2. ANALYSE DESCENDANTE ..................................................................................................................
5
I.3. DEMARCHE DE CONCEPTION D‟ UN PROGRAMME ......................................................................
6
CHAPITRE II : LES VARIABLES ET LES CONSTANTES ..................................................................... 12
II.1. INTRODUCTION ............................................................................................................................... 12
II.2. DECLARATION DES VARIABLES ................................................................................................. 13
II.3. SYNTAXE DE LA DECLARATION D‟ UNE VARIABLE ..............................................................
17
II.4. OPERATION D‟ AFFECTATION .....................................................................................................
18
II.5. LA DECLARATION DES CONSTANTES ..................................................................................... 20
II.6. LES EXPRESSIONS ET LES OPERATEURS ............................................................................... 20
CHAPITRE III : LES ENTREES ET LES SORTIES .................................................................................
24
III.1. INTRODUCTION .............................................................................................................................
24
III.2. LA PRIMITIVE D‟ ENTREE ...........................................................................................................
24
III.3. LA PRIMITIVE DE SORTIE..........................................................................................................
25
CHAPITRE IV : LES STRUCTURES DE CONTROLE ................................................................................
27
IV.1. LA SEQUENCE (la structure séquentielle) ................................................................................. 27
IV.1.1. LA STRUCTURE D‟ UN PSEUDO-CODE
................................................................................. 27
IV.1.2. SYNTAXE D‟ UN ALGORITHME OU D‟ UN PROGRAMME PASCAL
............................... 28
IV.2. LA SELECTIVE (la structure alternative) .................................................................................. 29
IV.3. L‟ ITERATIVE (la structure itérative ou la répétition) ............................................................ 32
IV.4. QUELQUES INSTRUCTIONS PASCAL DE GESTION DE L‟ ECRAN ET D‟ AFFICHAGE 38

57
Cours d’Algorithmique I

CHAPITRE V : LES TABLEAUX ................................................................................................................ .....


39
V.1. CONCEPT DE TABLEAU ..................................................................................................................... 39
V.2. DECLARATION DES TABLEAUX ....................................................................................................
40
V.3. TRAITEMENTS ITERATIFS SUR LES TABLEAUX ................................................................... 41
CHAPITRE VI : LES PROCEDURES ET LES FONCTIONS .....................................................................
42
VI.1. FONCTIONS PERSONNALISEES
................................................................................................. 42
VI.2. PASSAGE D‟ ARGUMENTS
.............................................................................................................. 43
VI.3. SOUS-PROCEDURES
........................................................................................................................ 43 TABLE DES MATIERES
............................................................................................................................. ..... 50

58

Vous aimerez peut-être aussi