Download as pdf or txt
Download as pdf or txt
You are on page 1of 50

Cours d’Algorithmique1- Par M.K. DELAMOU (C.

U Labé) 2018

SOMMAIRE
AVANT - PROPOS……………………………………………………………….2
I. INTRODUCTION A LA PROGRAMMATION………………………… 3
II. LES DECLARATIONS…………………………………………………… 5
II.1. Les types …………………………………………………………... 5
II.2. Les objets…………………………………………………………. 10
II.3. Schéma général d’un algorithme…………………………………. 12
III. LES ENTREES/SORTIES……………………………………………….. 15
III.1. Ordre de sortie (Afficher) …………………………………………….15
III.2 Ordre d’entrée (Lire)…………………………………………………16
IV. LES INSTRUCTIONS DE CALCULS ET L’AFFECTATION…………..17
Les Opérateurs…………………………………………………………….17
IV.2. Les expressions……………………………………………………. 18
IV.3. Les affectations…………………………………………………… 18
V. LES STRUCTURES ALGORITHMIQUES………………………………19
V.1. La structure linéaire………………………………………………... 19
V.2. La structure conditionnelle………………………………………… 20
v.2.1 La structure alternative simple……………………………...
V.2.2 La structure alternative complète………………………... 20
v.2.3 La structure alternative emboîtée…………………… 21
V.2..4La structure à choix multiple……………………………….. 2
V.3. Les structures itératives…………………………………………….. 25
V.3.1. La boucle répéter…… jusqu’à……………………………… 25
V.3.2. La boucle tant que….Fin tant que…………………………… 26
V.3.3. La boucle pour… Fin pour…………………………………… 27
VI LES PROCEDURES ET LES FONCTIONS………………………………… 28
VI.1. Les Procédures……………………………………………………… 28
VI.2.Les Fonctions……………………………………………………….. 34
VI.2.Comparaison entre procédure et fonction…………………………… 38
Travaux Dirigés……………………………………………………………..39
Tableau de syntaxe………………………………………………………… 47
BIBLIOGRAPHIE………………………………………………………… 48

1
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

AVANT - PROPOS
Ce guide est un support destiné aux étudiants de l’informatique, aux débutants et à tous ceux
qui veulent connaître les notions de bases de la programmation.
La programmation ne se réduit pas seulement à la codification dans un langage convenu, des
actions à réaliser pour résoudre un problème. Elle se compose notamment :
- D’une étape de conception de la solution ;
- D’une étape de traduction dans un langage compréhensible par la machine. Nous
développons dans ce manuel :
a) La conception de la démarche algorithmique ;
b) La traduction dans un langage de programmation. L’étape a) est la plus importante
car sans elle, la mise au point, la recherche d’erreurs, la maintenance et les
améliorations des programmes seront difficiles.
Nous pouvons retenir que la résolution d’un problème en informatique passe par la
production d’un texte appelé algorithme. Ce dernier décrit l’ensemble des opérations
élémentaires qui seront exécutées par un ordinateur via un langage de programmation
pour obtenir la solution informatique.
« L’algorithme est la description d’un ensemble fini d’actions et d’informations
élémentaires destinées à être exécutées par un ordinateur pour résoudre un problème
» Supposons que l’on veuille automatiser la résolution d’une équation du second
degré. Pour ce faire, il faut la mettre dans un modèle général qui est le suivant :
AX²+BX+C=0 (avec A≠0).
Résoudre ce problème via l’ordinateur revient à lui faire comprendre les différentes
étapes qu’il doit suivre pour aboutir à un résultat. Ce phénomène logique est appelé
algorithme. Ce dernier une fois traduis dans un langage de programme n’est pas
toujours compréhensible par l’ordinateur. Il faut cependant passer à une autre
traduction qui convertit le code écrit en langage machine. C’est la compilation.
Ce premier manuel se compose des cours suivis d’exercices de synthèse dispensé dans
les filières Informatique, Mathématique, MIAGE, etc.
Nous y aborderons les concepts suivants :
- Introduction à la programmation ;
- Les déclarations
- Les entrée/sortie
- Les instructions de calcul et l’affectation
- Les structures algorithmiques
- Les procédures et les fonctions
- Trois travaux dirigés (T.D) à saisir dans l’environnement du Turbo Pascal au cours des
Travaux Pratiques (T.P).
Les étudiants auront la possibilité d’exécuter les algorithmes étudiés en classe en passant
par le générateur de codes Turbo Pascal.
C’est avec une réelle difficulté que nous sommes parvenus à ce présent résultat. Dans
l’hypothèse qu’aucune œuvre humanitaire n’est parfaite, ce présent support se prête aux
critiques et suggestions de ces différents lecteurs pour l’amélioration des futures éditions.
Enfin je dédie ce document à mon père Tokpa DELAMOU instituteur à l’école primaire de
Lainé et à ma mère Delphine Kolié ménagère à Lainé qui ont tout mis en œuvre pour que je
sois ce que je suis aujourd’hui. Je n’oublie pas mon épouse Martine Haba mère de mes
enfants Florent, Kaman, Michel et Emile. Un clin d’œil amical à tous les travailleurs du
CULBE en général et particulièrement à ceux du département informatique : M. Moriba

2
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Soropogui, M. Moustapha Ngonet Camara, M. Mohamed Siata Camara, M. Fodé Camara,


mes chers amis Mr Henry Dirinan Dounamou de la FSAG, FaoroMaomou et André Delamou
de la FST.
L’auteur

I- INTRODUCTION A LA PROGRAMMATION
Le cours d’Algorithme occupe une place prépondérante en informatique surtout dans le
domaine de la programmation des ordinateurs. Sa syntaxe a servi de base à de nombreux
langages.
Le but de ce cours est de vous apprendre à programmer en estiment les concepts
fondamentaux à l’aide d’un pseudo-code. Cela vous permettra de rédiger des programmes
en privilégiant l’aspect Algorithmique et la technicité d’un langage donné. 1) Définition
de quelques concepts :
- L’environnement : ensemble des objets nécessaire à l’élaboration d’un
algorithme.
- Action : évènement qui modifie l’environnement.
- Algorithme : un moyen de description des étapes à suivre pour résoudre un problème
ou encore l’ensemble des actions appliquée à un environnement bien précis afin
d’obtenir un résultat.
- Processeur : Toute entité capable de comprendre l’énoncé d’un problème et
d’exécuter le travail demandé.
- Programmer = écrire des algorithmes.
- Un programme est une suite d’instructions enregistrées dans la mémoire d'un ordinateur
lui permettant d'exécuter des tâches données.
- Programmeur= Toute personne capable d’écrire des programmes
- Un langage de programmation est un ensemble d’instructions et de règles
syntaxiques compréhensible par l’ordinateur et permettant de créer des
programmes. Autrement dit c’est un logiciel permettent de traduire une écriture
algorithmique en un code compréhensible par la machine.
- Un logiciel est un programme de traitement de l'information contenant les
procédures et les données nécessaires à une application

2) Historique
Le mot algorithme n’est pas dérivé d’un mot latin ou grec, mais d’une contraction et d’une
dérivation du nom du mathématicien arabe al-Khawarizmi qui publia deux livres importants :
l’un sur l’arithmétique et l’autre sur « l’action de faire passer et d’agencer les parties d’un
tout » (titre original : Kit ab al-jabrwalmuqabala). Trois siècles plus tard, le livre, traduit en
latin, porta le nom Algorismus. La première définition du mot algorithme, dans son sens
actuel, a été donnée par le mathématicien russe Markov : « Tout ensemble de règles précises
qui définit un procédé de calcul destiné à obtenir un résultat déterminé à partir de certaines
données initiales .» Les algorithmes sont constitués par un ensemble de règles précises et
compréhensibles par tous. Ils s’appliquent à des données qui peuvent changer et élaborent les
résultats en fonction des données initiales.

3
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

3)Lien entre Algorithme, Programme et langage de programmation:


Pour expliquer les liens qui se trouvent entre ces trois notions il serait judicieux de passé à
un schéma.

Décrire les étapes à suivre Tradition en langage compréhensible


Problème Programme
Algorithme
)
Pour obtenir un résultat par la machine (pascal, C, C++, VB

4) Objet de la programmation
Soit un travail que l’on veut effectuer à l’aide d’un processeur donné. L’objet de la
programmation est d’établir une séquence d’actions pouvant être exécutées par le processeur
et qui réalisent ce travail.

La programmation est constituée de deux phases :

• La résolution du problème, c'est-à-dire la détermination d’un algorithme réalisant le


traitement ;
• L’adaptation de l’algorithme au processeur. Elle est réalisée par la codification de
l’algorithme par le biais d’un langage donné spécifique du processeur utilisé.
La résolution du problème est l’étape la plus difficile. Il n’en reste pas moins que
l’intelligence et l’intuition jouent un rôle, en particulier dans la formulation des solutions
élégantes et efficaces. Les ordinateurs ne pouvant exécuter directement les algorithmes sous
leur forme littérale, il est nécessaire de les codifier dans un langage approprié appelé langage
de programmation (ensemble d’instructions et de règles syntaxiques compréhensible par
l’ordinateur et permettant de créer des programmes).
Généralement ce travail ne présente pas de difficultés majeures et fait intervenir
principalement des mécanismes de traduction qui sollicitent peu de l’intelligence de la
personne qui codifie. En revanche, dans une problématique de gestion de stock, il faudra
peut-être utiliser des bases de données, des instructions de tri et de calcul.

5) Double problématique de l’algorithmique


a) Trouver une méthode de résolution (exacte ou approchée) du problème.
–Soient trois nombres réels a, b et c, quelles sont les solutions de l’équation ax²+bx+c=0 ?
(Résultat bien connu.)
–Soient cinq nombres réels a, b, c, d et e, quelles sont les solutions de
l’équation ax5+bx4+cx3+dx²+ex+f=0 (Pas de méthode générale) b) Trouver
une méthode efficace.
Savoir résoudre un problème est une chose ; le résoudre efficacement en est une autre …

4
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

II LES DECLARATIONS
Définition : la déclaration est l’acte par lequel on fait connaître au processeur les différents
éléments ou objets utilisés pour l’élaboration de l’algorithme.

II.1. Les Types de données


Un algorithme manipule des données. Pour les utiliser, il faut réserver des emplacements
mémoire dont la taille dépend de leurs types. Le processeur s’en charge de la représentation
interne des données.
II.1.1 Classification des types de données
On distingue en générale deux catégories :
- Les caractères
- Les numériques

Une troisième catégorie sera nécessaire :

- Les booléens

II.1.2 Définition
Un type est un attribut qui nous renseigne sur la nature d’un objet et sur tout le genre d’action
qu’on peut lui appliquer. En d’autre terme les types de donnée représentent le domaine de
définition des variables.
Il existe deux catégories de types : les types de bases ou prédéfinis et les types construits

II.1.3 Les types de bases ou prédéfinis

Ce sont les types qui sont directement reconnus par le processeur pendant la déclaration des
objets. Nous avons comme types de base :
II.1.3.1 Les Caractères : un caractère est un élément de l’alphabet du processeur. A chaque
caractère est associée une valeur dans son code choisi. Il faut distinguer les caractères de
contrôle des caractères ayant une représentation graphique. Pour ces derniers, le symbole
graphique n’est pas toujours obtenu depuis le clavier.
Donc on peut différencier :
- Les caractères ayant une représentation graphique :
Manipulable directement à partir du clavier tels que :
- Les lettres majuscules, minuscules et accentués
- Les chiffres de 0 à 9
- Les symboles de ponctuation et d’autres caractères spéciaux tels que : + - * /, & ; # | \ { }
[ ] (=) @ ’^….
Non manipulable à partir du clavier
- Les caractères semi graphiques qui permettent de dessiner un

tableau par exemple.

5
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

II.1.3.2 Les numériques (les entiers et les réels)

Problème :
Il existe une infinité de nombres. En mathématique, on distingue :
- Les entiers naturels : 0 1 2 3 4 …
- Les entiers relatifs : -4 -3 -2 -1 0 1 2 3 4…
- Les réels : 1 1.1 1.11 1.111…
- Entre deux nombres quelconques, il existe une infinité de nombres
réels

En informatique, pour les représenter, on est limité par la capacité de la machine.

Objectif : Il s’agit de trouver une représentation interne des nombres

Solution : il faut adopter un codage différent pour les entiers et pour les réels :

- Ne représenter qu’un sous-ensemble des entiers relatifs ; -


Réaliser une approximation pour les nombres réels.

Exemple : l’amplitude des nombres entiers relatifs représentés dépend de la taille de


l’emplacement réservé.

Sur 2 octets : -215<=Z<=+215-1 -32 768<=Z<=+32767

II.1.3. 3 Les Booléens Il arrive souvent aux programmeurs de se poser des questions pour
lesquelles ils s’attendent à une réponse sous la forme de « Oui » ou de « Non ». Il serait
donc commode de disposer d’un équivalent qui sera représenté par les booléens.
L’ensemble des booléens comporte deux valeurs notées : VRAI et FAUX.

Etude détaillée des types de bases

Table2.1

 Les Caractères
Notation du type Car
Ensemble de valeurs Tout caractère
Notation des valeurs Entre apostrophe exemple :’A’
Opérateurs de relation =, <>, <,>, <=,>= selon le code
Exemple: ‘A’<’B’; ‘A’<’a’
Fonctions Ord (car) ; Car (entier de 0 à 255)
Ord (‘A’)=65 ; Car(65)=’A’ dans le code ASCII

A chaque caractère est associé un numéro correspondant au rang de ce symbole dans la


séquence conventionnelle du code utilisé par la machine.

6
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Table2.2

 Les entiers
Notation du type Entier
Ensemble de valeurs Sous ensemble des éléments de Z
Notation des valeurs Exemple : [-3768..+32767] -1, 1 ou +1, 0 mais pas
33000 !
Opérateurs + ;-,*
Opérateurs euclidien Div, Mod
Puissance ** ou ^
Opérateurs de relation =,<>,<,>,<=,>=
Fonctions abs (entier) valeur absolue renvoie la valeur absolue
d’un entier ; Carré () renvoie le carré d’un nombre.

Table 2.3

 Les réels
Notation du type Réel
Ensemble de valeurs Représentation approchée d’une partie des nombres
réels
Notation des valeurs Exemple -3; 3.14 ; 1.12E+4 ; 314E-2
Opérateurs + ;-,*,/
Puissance ** ou ^
Opérateurs de relation =,<>,<,>,<=,>=
Fonctions abs() ; Carré() ; Rac2() ; sin() ; cos(); Tang() ;
arrondi() ; tronc() arrondi (4.45)=4 ; arrondi
(4.56)=5 tronc (4.45)=4 ; tronc (4.56)=4
arrondi (-2.77)=-3 tronc (-2.77)=-2

Table2.4
 Les booléens

Ce type, appelé aussi type logique dans d’autres langages n’apparait pas d’emblée comme
aussi nécessaire comme les autres types simple que nous venons d’étudier.
Notation du type booléen
Ensemble de valeurs Vrai ou Faux ; Oui ou Non ; 0 ou 1
Opérateurs logiques Non, ET, OU,…..
Opérateurs de relation =,<>

Table de vérité des opérateurs logiques

Soient deux propositions P et Q ; nous avons les tables de vérités suivantes :

Table2.5

7
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Opérateur NON Opérateur ET Opérateur OU

P NON(P) P Q P et Q P Q P ou Q
V F V V V V V V
F V V F F V F V
F V F F V V
F F F F F F
II.1.4 Les types construits
Ce sont les types définis par le programmeur à partir des types de bases ou des types
construits et définis préalablement : comme type construit nous avons :
II.1.4.1 Le type chaine de caractères
a) Définition
C’est une succession de caractères pris dans l’ordre de l’alphabet du processeur. Ce type est
utilisé pour le traitement des données non numériques.
Remarque : il faut au moins deux caractères pour avoir une chaine de caractère.
Exemple : ‘Il’ ;’liste’ ;’total à payer’,…
Cas particulier : si on veut écrire une chaine comportant l’apostrophe, il faut doubler
l’apostrophe au niveau de l’élision ‘. Exemple : ‘j’ai cogné l’’éléphant’
b) Syntaxe :
Type nomtype=chaine (taille)
Type : mot clé indiquant la création d’un nouveau type ;
Nomtype : c’est le nom du nouveau type ;
Taille : est le nombre de caractères devant constituer la chaine
Exemple : Type chainelong=chaine(30);
Nomville=chaine(20) ;
c) Fonctions prédéfinies
Les fonctions prédéfinies sur les chaines sont des outils offerts au programmeur pour lui éviter
de résoudre des problèmes trop techniques et dont l’intérêt pédagogique est discutable. On
présente ces fonctions par l’étude de quelques exemples significatifs.
Les symboles utilisés dans la présentation correspondent aux données nécessaires à ces
fonctions et ils représentent :
- ch : une chaine
- ssch : une sous chaine
- lg : une longueur en nombre entier ; - num : un nombre entier ou réel.
- deb : une position de début
Table 2.6
Les fonctions de longueur et de positionnement
Fonctions Résultat Exemple
Long (ch) Entier Long(ABCD)=5 ; long (‘’)=0
Pos (ssch, ch) Entier Pos (‘AB’,’AACABAB’)=4 ; Pos (‘x’,’abcd’)=0
La fonction long (ch) examine la chaine ch et donne la taille sous forme d’entier
correspondant au nombre de caractères contenus dans ch.

8
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

La fonction Pos (ssch, ch) correspond à un entier égal à la position du premier caractère de la
première apparition de la sous chaine recherchée dans la chaine examinée. Cet entier vaut 0 si
la sous chaine n’est pas présente

Table2.
7 Les fonctions d’extraction :
Fonctions Résultat Exemple
Gauche (ch, lg) Chaine Gauche (‘ABCDE’,3)=’ABC’
Droite (ch, lg) Chaine Droite (‘ABCDE’,3)=’CDE’
Milieu (ch, deb, Chaine Milieu (‘ABCDE’, 3,2)=’CD’
lg)
Suppr (ch, deb, Chaine Suppr (‘ABCDE’, 2,3)=’AE’
lg)
Gauche : extrait, en partant du début, une sous chaine de longueur donnée
Droite : extrait en partant de la fin, une sous chaine de longueur donnée

Milieu : extrait, à partir d’une position donnée, une sous chaine de longueur donnée

Suppr : supprime, à partir d’une position, une sous chaine de longueur donnée.

Table 2.8

Les fonctions de conversion


Fonctions Résultat Exemple
chnum (ch) Entier ou réel Chnum (‘4.25’)=4.25
Numch (num) chaine Numch (4.25)=’4.25’
La chaine ch doit, bien sur être formée uniquement des caractères composant les nombres.

Chnum() : convertit une chaine en nombre ;

Numch() : convertit un nombre en chaine.

Ces deux fonctions peuvent être utilisées pour rendre compatibles des données de type
différent.

II.I.4.2 Le type énuméré


C’est une disposition d’un type décrit par l’ensemble des éléments de son domaine de
définition.
a) Syntaxe : Type nomtype= (val1, val2,…valn) ;
Où vali sont des constantes prises dans un ensemble discret de valeurs ou des symboles
- Exemple : Type chiffrepair= (0, 2, 4, 6,8) ; - Type semaine= (lundi, Mardi, Mercredi,
Jeudi, Vendredi, Samedi, dimanche,) ;
Le processeur associe un entier ou rang à chaque valeur en fonction de sa position dans la liste.
Exemple : lundi 0 ; mardi 1 …… dimanche 6

9
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Par ce rang, une relation d’ordre peut être définie sur les valeurs et des comparaisons peuvent
être effectuées par les opérateurs de relation. Exemple : lundi<Mardi Les fonctions pred et
succ sont aussi définies. Exemple : pred (Mardi)=lundi ; succ (mercredi)=Jeudi Pred (lundi) et
succ (dimanche) sont indéfinis.
La fonction ord() permet de connaître la position de la valeur dans la liste. La fonction
réciproque est nommée de la même façon que le type.
Exemple : Ord (lundi)=0 ; semaine(0)=lundi ;
L’opérateur Dans traduit l’appartenance d’un élément à un ensemble.
II.I.4.3 Le type intervalle
C’est la réalisation d’un contrôle par plage de valeurs ordonnées.
a) Syntaxe : Type nomtype=binf..bsup ;

Binf et bsup sont d’un type préalablement défini appelé type hôte.

Les opérateurs du type intervalle sont les mêmes que ceux du type hôte.

- Exemple : type entier=-32768..32767


Type Maj=’A’..’Z’
Jour=lundi..Samedi

Lundi et mardi proviennent d’un type hôte (type semaine).

Le processeur associe un entier ou rang à chaque valeur en fonction de sa position dans la


liste :

A 0;Z 25.

De même que le type énuméré l’opérateur Dans traduit l’appartenance d’un élément à un
ensemble. Les fonctions pred, succ, ord et nomtype() sont aussi définie.

II.1.4.4 Le type composé ou structuré


Il nous arrive d’éprouver la nécessité de regrouper plusieurs valeurs pour caractériser une
entité particulière. Nous définissons alors une variable composée (association de plusieurs
variables élémentaires)
a) Syntaxe :
Type nomtype= structure Champ1 :type1
Champ2 :type2
…………..........
Champn :typen Fin struct ;

b) Exemple :
Type resultat=structure
Nom : chaine(23) ;
Matière : chaine(17) ;
Note : réel ;
Fin struct ;

10
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

II.I.4.5 Le type tableau


Un tableau est une collection d’objets de même type.
a) Syntaxe
Type nomtype=tableau(1..taillemax) de t.
Où taillemax est une constante déterminant la capacité du
tableau ; t est un type quelconque commun à tous les éléments de
ce tableau.
b) Exemple1 Type nombre=tableau (1..20) d’entier
Nombre est un tableau d’entiers.
-Exemple2 type collection=tableau(1..50)de resultat ;
Collection est un tableau de type résultat avec resultat comme nom d’une structure.
II.2. OBJET
II.2.1. Définition : un objet est toute unité mémoire manipulé par un langage. Il est
caractérisé par un nom et un type.
- Un objet simple correspond à un emplacement
simple - Un objet composé correspond à plusieurs
emplacements

A tout objet est associée une valeur.


II.2.2 Notion de contenant/contenu
Pour chaque objet, il faut distinguer :
- Le contenant : l’adresse
- Le contenu : la valeur stockée

Exemple : age 26

Contenant Contenu

L’adresse est confondue avec le nom.

a) Nom : au niveau du programme, on préfère manipuler un nom plutôt qu’une adresse.


Le programmeur choisit judicieusement un nom pour chaque objet. Pour le processeur, ce
nom équivaut à l’adresse physique.
b) Type : pour chaque objet, il faut choisir un type. Cela permet au processeur de choisir
la taille de l’emplacement mémoire et d’effectuer un contrôle de type lors du rangement d’une
valeur. Le processeur se chargera du contrôle de la compatibilité des opérations effectuées
avec les types des objets manipulés.
II.2.3 Variables et Constantes
Au cours d’un programme, le contenu d’un objet peut être :
- Modifiable : c’est une variable
- Non modifiable : c’est une constante Le programmeur doit d’abord faire la liste de tous les
objets dont il a besoin dans son programme. Pour chaque objet, il doit discerner ceux dont le
contenu va varier de ceux dont le contenu sera stable.

L’ensemble de ces étapes descriptives s’appelle la déclaration.

11
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Avant toute manipulation sur un objet, il faut le déclarer.

II.2.3.1. Les Variables


Un objet dont le contenu peut être modifié est appelé variable
a) Syntaxe : varnom_var : nomtype
Var est le mot clé indiquant qu’on effectue une déclaration de variable : la
réservation et l’attribution d’un nom à une cellule mémoire dont le contenu pourra
varier. Nom_type : est le mot clé précisant le type de variable.
Nom_var est le nom de la variable judicieusement choisi.

b) Exemple1
Var age : entier ; age peut contenir toute valeur entière
Var point : réel ; point peut contenir toute valeur réelle.
Var option : car ; option peut contenir tout caractère
Pratique : toutes les déclarations de variable sont regroupées et le mot var est mis en facteur.
Les variables de même type peuvent être déclarées ensemble et le type est mis en facteur. La
virgule sert de séparatrice.
c) Exemeple2 : type ch20=chaine(20) ;
Var age : entier ;
Cote, surface, volume, argent_poche : réel ;
Reussite, drapeau : booléen ;
Prenom, nom, profession : ch20 ;
Type resultat=structure
Nom : chaine(23) ;
Matière : chaine(17) ;
Note : réel ;
Fin struct ;
collection=tableau(1..50)de resultat ;
var k : collection ;

Règles de nomenclature: Vous pouvez attribuer le nom que vous voulez à vos variables mais
en respectant les règles ci-dessous :
Règle N°1:Le nom d’une variable ne doit pas commencer par un chiffre mais peut contenir
de chiffres.

Exemple: Var 1age : entier ; Incorrecte


Var age1 : entier ; Correcte

Règle N°2: Le nom d’une variable ne doit pas contenir d’espace.

Exemple: Var pre nom: Chaine (20); Incorrecte


Var prenom : Chaine (20) ; Correcte

Règle N°3 : Le nom d’une variable ne doit pas contenir des caractères spéciaux.
Exemple: Var n@m : Chaine (20) ;Incorrecte

12
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Var nom : Chaine (20) ; Correcte

Règle N°4:Le nom d’une ne doit pas être un mot clé d’un langage de programmation.
Exemple :Var for: entier; Incorrecte

II.2.3.2. Les Constantes


Un objet dont le contenu ne peut pas être modifié est appelé constante
a) Syntaxe : Const nom_const=valeur ;
Const est le mot clé indiquant qu’on effectue une déclaration de constante.
Nom_const est le nom de la constante judicieusement choisi par le programmeur
Valeur : est une valeur littérale ;
b) Exemple1 :const prix_unitaire=1960 ;
Le mot const est également mis en facteur pour la déclaration de plusieurs constantes et le
point-virgule sert de séparateur.
Exemple2 const nbmois=12 ; taux =0.18 ; remise=0.05 ;
c) Utilité des Constantes : Les constantes permettent de facilité la maintenance d’un
programme au niveau des opérations de mise à jour.

II.3 Structure simplifiée d’un algorithme


L’algorithme d’un programme est organisé de la façon suivante :
• Déclaration des constantes
• Déclaration des types
• Déclaration des variables
• Définition des procédures et fonctions
• Définition du programme principal

Algo nom_algo ;

L’en-tête
(déclaration)
Const
Liste des constantes ;

Struc
Déclaration des const, variables
Liste des structures ;

Var
Liste des variables ;

Fonc
Définition des fonctions et procédures Liste des fonctions ;
Proc
Liste des procédures ;

13
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Début
Action1 ;
Définition du corps de l’algo Action2 ;
……..
Fin.
Le mot clé Algo suivi d’un nom significatif annonce le début de l’algorithme.
Le mot Début correspond à la fin des déclarations et au commencement des actions.
Le mot Fin signale la fin de la description de la solution.
II.3.1. Structure
Un algorithme est découpé en deux parties :
- Les déclarations où les objets sont déclarés
- Les actions où les traitements sont décrits. C’est le corps de l’algorithme. II.3.2. Les
mots clés
Les mots clés ne peuvent pas être choisis comme identificateurs.
Algo et Début encadrent les déclarations.
Début et Fin encadrent le corps de l’algorithme.
(et) encadrent les commentaires.
Const, type et var annoncent les types de déclarations.
II.3.3. Nom de l’algorithme
Un algorithme est identifié par un nom judicieusement choisi par le programmeur ; ce mot
apparait après le mot clé Algo
II.3.4. Commentaire
Un commentaire est une partie du programme ignorée par le processeur. Il sert à renseigner le
lecteur. On utilise des commentaires pour :
- Mettre en valeur la structure du programme en plaçant des
titres, - Expliquer des traitements complexes et aider à la
maintenance.
II.3.5. Séquentialité
Les actions s’exécutent par défaut les unes à la suite des autres dans l’ordre de leur description.
La marque de la séquentialité est le point-virgule.
Le point-virgule se place, comme séparateur, après chaque action.

III. LES ENTREE/SORTIE


Tout programme a besoin de communiquer avec son utilisateur final. Nous avons souvent
besoin d’entrer les informations ou fournir des donnée à un programme via le périphérique
d’entrée standard(Clavier) ou d’Afficher des résultats sur le périphérique de sorite
standard(Moniteur). Ces actions ne seront possibles qu’en utilisant les ordres d’entrée et
sortie.

14
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

III.1. Ordre de Sortie : l’instruction « Afficher »

Cette instruction permet de visualiser un ou plusieurs résultats accompagnés de message à


l’écran.

III.1.1. Syntaxe : Afficher (<liste des données à afficher>)

Cette liste peut contenir :


- Une variable déclarée et affectée préalablement ;
- Une constante ;
- Une formule mathématique ;
- Un message ou chaine de caractères.

III.1.2. Exemple :

- Affichage de message : Afficher (‘Aujourd’’hui’) ;


- Affichage d’une variable : Afficher(Age) ; age est déclaré et affecté.
- Affichage d’une expression : Afficher (‘le carré de 4 est :’,4*4) ;
NB : Il conseillé de faire précéder l’affichage d’une variable par l’affichage d’un message
explicatif ;
Exemple : Affichage (‘Votre age est : ‘, age) ;

III.1.3. Mise en forme

La mise en forme est très différente d’un langage de programmation à l’autre. Il est donc
difficile de dégager les caractéristiques communes. C’est pourquoi on la définit ici de façon
très succincte III.1.3.1. Présentation des données numériques

Don_num [: p1[:p2]]
P1 est le nombre total de positions occupées à l’écran par le nombre.
P2 est le nombre de positions décimales du nombre.
Remarque :
Dans la troisième colonne des exemples ci-dessous, les symboles arithmétiques permettent la
comparaison entre la longueur prévue et la longueur nécessaire à l’édition d’une donnée.
Ainsi sur la deuxième ligne, le symbole « - » signifie que la longueur prévue est plus petite
que la longueur nécessaire pour éditer l’entier 12345
Affichage d’un entier sur une longueur variable : Table3.1
Instruction Résultat Remarque
Afficher(‘*’,nbent :5,’*’) ; *12345* =
Afficher(‘*’,nbent :2,’*’) ; *12345* - ignoré
Afficher(‘*’,nbent :8,’*’) ; * 12345* + espace ajouté

Affichage d’un réel sur une longueur variable


La valeur du nombre réel à éditer est 12,34Table3.2
15
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Instruction Résultat Remarque


Afficher(‘*’,nbreel :5 :2,’*’) ; *12,34* =,=
Afficher(‘*’,nbent :1 :2,’*’) ; *12,34* -,= ignoré
Afficher(‘*’,nbent :7 :2,’*’) ; * 12,34* +,=blanc ajouté
Afficher(‘*’,nbent :4 :1,’*’) ; *12,3* =,- arrondi
Afficher(‘*’,nbent :7 :4,’*’) ; *12,3400* =,+ zéro ajoutés

III.1.3.2. Présentation d’une donnée alphanumérique

Affichage d’une chaine de caractère sur une longueur variable

Table 3.3
Instruction Résultat Remarque
Afficher(‘*’,doncar :5,’*’) ; *ABCDE* =
Afficher(‘*’, doncar :1,’*’) ; *ABCDE* - ignoré
Afficher(‘*’, doncar :7,’*’) ; * ABCDE* + espace ajouté
La donnée en mémoire doncar de type chaine(5) à afficher est : ‘ABCDE’

III.1.4. Passage à la ligne


Cette instruction permet de placer le curseur sur la première colonne de la ligne suivante et
s’écrit comme suit:
A_la_ligne ;
III.2. Ordre d’Entrée : l’instruction lire
Cette instruction permet d’acquérir les données du clavier au cours d’un programme.

III.2.1. Syntaxe

Saisir(nom_var) ou lire(nom_var) ;
Où nom_var doit être :
Un nom de variable et non un nom de constante.
Le type de la valeur saisie doit être compatible avec le type de la variable déclarée.

III.2.2. Sémantique

Cette action transfère les données saisies à partir du clavier vers la mémoire centrale et
permet donc l’affectation dynamique d’un nom de variable (ou plusieurs) - Affectation :
rangement d’une valeur dans une cellule mémoire - Dynamique : la valeur est connue au
moment de l’exécution

C’est la seule action nécessitant l’intervention de l’utilisateur qui doit fournir une ou plusieurs
données.

III.2.3 Exemple :

Algo saisie ; Var


nb :entier ;
Début
Afficher(‘Donner le nombre’) ;Lire(nb) ;

16
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Afficher(‘vous avez saisi’, nb) ;


Fin.
III.2.4 Pratique
Pour des raisons de compréhension à l’exécution, il est conseillé de faire précéder une
instruction saisir ou lire de l’affichage d’un message commentant la valeur à introduire.

IV LES INSTRUCTIONS DE CALCUL ET L’AFFECTATION

IV.1 Les Opérateurs

Un opérateur est symbole qui permet d’élaborer une expression en vue d’effectuer un
calcul ou une comparaison.
L’usage des parenthèses est vivement souhaité dans le cas des expressions complexes.

IV.1.1 Classification des opérateurs selon le nombre d’opérandes

On classe les opérateurs en deux catégories :


• Les opérateurs unaires : admettant un seul opérande : -
Arithmétiques notés : +, -. Exemple : +1 -1 ; -
Logiques notés Non.
• Les opérateurs binaires : admettant deux opérandes :
- Arithmétiques notés : +, - ,*, /, ^, div, mod ;
- Logique notés Et Ou ;
- De comparaison notés :<<= >>= = <>

IV.1.2 Négation des expressions à résultat booléen

Table4.1
Le tableau ci-dessous donne la négation des opérateurs de relation.

OPERATEUR NEGATION
= <>
<> =
< >=
> <=
<= >
>= <
Soient P et Q des expressions à résultat booléen, la négation des expressions suivantes est :
Non(PETQ)=Non(P) OU Non(Q)
Non(POUQ)=Non(P) ET Non(Q)
IV.2 EXPRESSION

Une expression désigne :

- Une valeur affectée ou une constante,

17
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

- Une combinaison licite de variables affectées ou de constantes avec des opérateurs. a)


Exemple de syntaxe correcte
X, C, 10, 10+1, X+1 et X/3 sont des syntaxes correctes
b)Exemple de syntaxe incorrecte
L’expression mathématique de l’encadrement n’est pas correct car l’opérateur <= est binaire
0<=note<=20 devient (0<=note) ET (note<=20)

IV.3 AFFECTATION

Une affectation consiste à attribuer une valeur à une variable.

IV.3.1. Syntaxe

La syntaxe générale est la suivante : Nomvariable expression


Nomvariable est un nom de variable préalablement déclarée ; cela ne peut pas être une
constante.
Expression est une expression qui doit être de type compatible avec le type de la variable
déclarée.
Elle peut être : une constante. Exemple : surface 10 ;
Une autre variable. Exemple : donnee valeurMemorise Le
résultat d’une fonction. Exemple : resultat racine (nombre)
Un calcul portant sur ces différents éléments. Exemple : surface
PI*carre(rayon).

IV.3.3. Sémantique

IV.3.3.1. Sens du transfert

Contenant contenu
La flèche ( ) et se lit « prend pour propre valeur ou reçoit la valeur».
Ainsi surface 10 se lit « surface prend pour propre valeur 10 ou surface reçoit la valeur 10 »
Remarque :
La confusion entre le symbole de l’égalité « = » et le symbole d’affectation est fréquente.
IV.3.4 Compatibilité entre données de types différents.
Le résultat de l’expression doit être de type compatible avec le type de la variable réceptrice
mais un certain nombre de transferts sont cependant possibles. Le tableau suivant permet
résumer les transferts autorités.

Table 4.2 Tableau de transfert


Type de transfert Remarque
Variable Expression
réceptrice
entier arrondi(réel) Arrondi
Entier tronc(réel) Troncature conversion de format
Réel entier Conversion de format
Exemple : caractère booléen est un transfert incorrect.

18
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Remarque : les transferts entre données de même type sont évidemment compatibles.
Entier entier est un transfert correct.
Exemple de syntaxe incorrecte
Partie déclaration
Const X=10 ;
Var Y,Z :entier ;
Partie actions :
X+Y 10 ; - une expression ne peut pas recevoir une valeur
10 X ; - une constante ne peut pas avoir une valeur ; X
10 ; - une constante ne peut être modifiée ;
Y=20 ; l’opérateur d’affectation n’est pas le symbole « = »mais plutôt le symbole
« »
TRAVAUX DIRIGES N°1

IV. LES STRUCTURES ALGORITHMIQUES


Les structures algorithmiques sont réparties en 3 catégories :
- Les structures linéaires d’opération ;
- Les structures alternatives
- Les structures itératives

V.1. Structures linéaires d’opérations


Les actions successives sont mentionnées les unes après les autres.

Syntaxe

Action1

Action2

……….

Actionn

Remarque : dans la suite, la notation « actions » ou « actionn » représentera une succession


d’actions comme ci-dessus.

V.2. Structures alternatives ou conditionnelles


Les Algorithmes que nous avons étudiés jusqu’ici étaient des Algorithmes à déroulement
linéaire ; c’est-à-dire qu’à l’exécution toutes les structures sont exécutées sans saut. Les
algorithmes que nous allons voire dorénavant serons des Algorithmes à déroulement non
linéaire c’est-à-dire que certaines instructions seront exécutées d’autre ne le seront pas.

19
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Les structures conditionnelles vont nous permettre de mettre en place des Algorithmes à
déroulement non linéaire.

V.2.1 La structure alternative simple


C’est une instruction qui nous permettra d’exécuter une ou plusieurs actions lorsqu’une
condition est vraie. Lorsqu’une condition n’est pas vraie la structure conditionnelle simple
n’agira pas.
Syntaxe SI condition Alors
Actions Fsi ;
SI repère le début de la structure conditionnelle
Fsi repère la fin de la structure conditionnelle
Alors marque la fin de l’expression booléenne et le début des actions condition :
expression logique encore appelée expression booléen, est une expression à résultat
booléen.
Actions : représente une ou plusieurs actions.
b) Exemple

Ecrire un algorithme qui accorde une remise de 5% si la somme des achats dépasse 100F

Algo prix ;
Const min=100 ; R=0.05 ;
Var sa :réel ;

Début
Afficher (‘donner la somme des achats’) ;
Lire(sa) ;
Si sa>min alors
Sa sa-sa*R ;
Fsi ;
Afficher(‘La somme à payer est : ’,sa :10 :0,’FG’) ; Fin.

V.2.2. La structure alternative complète


La structure conditionnelle simple nous a permis d’exécuter un certain nombre d’action
lorsque la condition est vraie mais rien n’a été dit dans le cas où la condition est fausse.
La structure alternative complète quant à elle s’intéresse aux deux cas c’est-à-dire l’ensemble
des actions à exécuter lorsque la condition est vraie et l’ensemble des actions à exécuter
lorsqu’elle ne l’est plus.

a) Syntaxe
Si condition Alors
Action1 ;
Sinon
Action2

20
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Fsi ;
SI repère le début de la structure conditionnelle.
Fsi repère la fin de la structure conditionnelle.
Alors et Sinon encadrent la suite des actions exécutées si la condition est vraie.
Sinon et Fsi encadrent la suite des actions exécutées si la condition est fausse.
Expr_log est une expression à résultat booléen.
Actionsi représente une ou plusieurs actions.

Si la condition est vraie, exécuter la suite d’actions correspondante située après le mot Alors ;

Si la condition est fausse, exécuter la suite des actions alternative située après le mot Sinon
qui vient compléter la structure.

b) Exemple Un permis de conduire est accordé à tout chauffeur dont le nombre de points
est supérieur ou égal à 120. Rédige un algorithme de ce travail.

Algo permis
Const point_min=120 ;
Var points: entier ;
Debut
Afficher(‘Donner les points obtenus’);
Lire(points) ;
Si points>=point_min alors
Afficher(‘Admis’) Sinon
Afficher(‘Refusé’) ; Fsi ;

V.2.3. La structure emboîtée


a)- Limite de la structure conditionnelle simple.
Exemple afficher les mentions à un examen.
Si note>=16 alors afficher(‘Très bien’)Fsi ;
Si (note>=14) et (note<16) alors afficher(‘Bien’) ;fsi ;
Si (note>=12) et (note<14) alors afficher(‘Assez Bien’) ;fsi ;
Si (note>=10) et (note<12) alors afficher(‘Passable’) ;fsi ;
Si (note<10) alors afficher(‘Redouble’) ;fsi ;
b)- Objectif
Il faut éviter de tester une condition puis sa négation.
c)- Solution Pour une note valide, une seule possibilité sera atteinte, elle conditionnera
l’affichage de la mention correspondante. Il convient donc de ne plus se poser des
questions sur la valeur de la note dès qu’elle est connue. Pour réaliser ces
optimisations il faut :
- Emboîter les structures conditionnelles
- Définir la portée de chaque expression logique,
- Délimiter le bloc d’actions soumis à chaque condition.
d)- Syntaxe

21
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Si (condition1) Alors

Alterne1 Action1

Sinon Si (condition2) Alors

Alterne2 Action2

Sinon Si (condition3) Alors

Alterne3 Action3

Sinon Si condition n Alors

AlterneN Actionn

Fin Si ;
Fin Si ;
Fin Si ;
Fin Si ;

d)- Exemple

Si note>=16 C1
Alors afficher(‘Très Bien’) A1

Sinon Si note>= 14 C2
Alors afficher(‘ Bien’) A2
Sinon Si note>= 12 C3
alors afficher(‘ Assez Bien’) A3
Sinon Si note>= 10 C4
Alors afficher(‘ Passable’) A4
Sinon afficher(‘Refus’) A5
Fsi ;
Fsi ;
Fsi ;
Fsi ;

22
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

e)-Interprétation sémantique
Conditions C1 NonC1 NonC1 NonC1 NonC1
C2 NonC2 NonC2 NonC2
C3 NonC3 NonC3
C4 NonC4
A A1 X
C A2 X
T A3 X
I A4 X
O A5 X
N
S

Remarque
Le décalage augmente la lisibilité pour le programmeur, mais ne présente pas de
valeur sémantique pour le processeur.
La règle du processeur est :
Le Sinon se rapporte au dernier alors non déjà apparié.
Au- delà de 3 imbrications, le programme devient illisible, une solution sera apportée
ultérieurement.

f)- Importance du mot clé Fsi


Comparer ces deux structures
Si C1 alors Si C2 Alors A1 Si C1 Alors Si C2 Alors A1
Sinon A2 ; Fsi ;
Fsi ; Sinon A2
Fsi Fsi
Sans le mot clé Fsi, les 2 structures seraient identiques ; l’interprétation
serait ambiguë Interprétation :
A1 est exécutée si C1 et C2 A1 est exécutée si C1 et C2
A2 est exécutée si C1 et nonC2 A2 est exécutée si non C1

V.2.4. La structure à Choix multiples


C’est un cas particulier de l’emboitement. Elle permet de simplifier la structure
d’emboitement en permettant d’exécuter un ensemble d’instructions selon:
Une Valeur,
Une liste de valeur ou un intervalle de valeur.
On peut analyser les différentes valeurs que peut prendre une variable et les regrouper en
fonction des actions qu’elles conditionnent.
a) Syntaxe
Cas expression Selon
Val1 :Action1 ; Val2 :action2
……………….
Valn : actionn
23
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Autre :actionn+1 ;
Fincas ;
Cas et Fin Cas repère le début et la fin de la structure de choix multiple
Expr est une expression évaluable.
Vali est une liste ou un intervalle
Actionsi est une ou plusieurs actions
Autre est une close optionnelle.
Remarques
Seuls les types: ordinaux (intervalle), entier, caractère et énumérés sont acceptés par la
variable du cas.
c) Exemple :

Exemple : Affichage de la nature d’un caractère


Algo caractere ;
Var c: car ( caractère saisi au clavier)
Début
Afficher (‘Taper un caractère‘)
Saisir (c)
Cas c selon
‘A’..’Z’ : afficher (‘Lettre majuscule’)
‘a’..’z’ : afficher (‘Lettre minuscule’)
‘0’..’9’ : afficher (‘Chiffre’)
Autre : afficher (‘Ni Lettre ni Chiffre’) FinCas ; Fin.

c)- Schéma équivalent


On a l’équivalence entre les schémas suivants

Traduction du cas avec l’option autre.

Cas expr selon Si expr =e1 alors


e1:A1 A1
e2 :A2 Sinon si expr=e2 alors
A2
………… ……………..
en :An Sinon si expr=en alors
An
Autre : An+1 Sinon
Fcas ; An+1
Fsi ; fsi ; fsi ;

24
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Traduction du cas sans l’option autre

Cas expr selon Si expr =e1 alors


e1:A1 A1
e2 :A2 Sinon si expr=e2 alors
A2
………… ……………..
en :An Sinon si expr=en alors
An
Fincas ; Fsi ;
Fsi ; Fsi ;

V.3. Structures Itératives


Définitions: une structure itérative est une structure permettant de répéter une séquence
d’instructions à un nombre de fois fini. Il existe deux types d’itérations.

--Les itérations dont le nombre de tours est connu à l’avance ;

--Les itérations dont le nombre de tours est inconnu à l’avance mais qu’on pourra calculer
après exécution.
V.3.1. La boucle Répéter….Jusqu’à…
Cette boucle correspond à l’itération dont le nombre de tours n’est pas connu d’avance.
Les instructions sont exécutées tant que la condition est fausse.
Pour la 1ère itération:
Quelle que soit la véracité de la condition les instructions sont exécutées.
Une action ou groupe d’actions est exécuté répétitivement jusqu’à ce qu’une condition soit
vérifiée.

a)- Syntaxe algorigramme


Répéter Action1 ;
Action2 ;
………..
Actionn
Jusqu’à condition ;
Répéter et Jusqu’à condition encadrent la suite d’actions à répéter.
Actioni est une suite de 1 ou plusieurs actions. Ces actions doivent modifier la valeur de la
condition.
Condition est le mot repérant l’expression logique.

b)- Sémantique

La structure itérative permet la répétition d’une suite d’actions, un nombre fini de fois.
25
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

c)-Exemple
Algo multiplication
Var i : entier ;
Début
i 1 ; Répéter
Afficher(‘2* ’,i ,’= ’,2*i) ; i i+1;
Jusqu’à i>10; Fin.
Remarque: la vérification de la condition s’effectue après les actions. Celles-ci sont donc
exécutées au moins une fois.

V.3.2. La boucle Tant que ..... Fin tant que.


Une action ou un groupe d’actions est exécutée répétitivement tout le temps où une condition
est vraie.

a)- Syntaxe Tant Que condition faire Action1 ;


Action2 ;
………..
Actionn ;
Fintq ;

b)- Exemple
Reprenons la table de multiplication avec la boucle tant que
Algo multiplication
Var i : entier ;
Début
i 1;
Tant que <=10 faire
Afficher(‘2* ’,i ,’= ’,2*i) ; i i+1; Fintq; Fin.

Remarque la vérification de la condition s’effectue avant les actions. Celles-ci peuvent donc
ne jamais être exécutées.

NB : La condition d’arrêt d’une boucle est très importante en tel point qu’elle évite la
présence d’une boucle infinie dans un programme.
On appelle de variable de condition la variable sur laquelle est basée la condition de la boucle.
Au niveau des deux boucles (Répéter et Tant que) cette variable connait trois étapes dans la
boucle à savoir :
- L’initialisation ; - L’incrémentation ;
- Le test de la condition de sortie.
Ces trois étapes sont nécessaires pour le bon déroulement de la boucle.
V.3.3 La boucle Pour….Fin ;
Cette boucle correspond à une itération dont le nombre de tour est connu à l’avance.

26
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

a) Syntaxe

Pour indice de valdebut à valfinale faire

Actions

Finpour ;

Pour et Finpour délimitent les actions appartenant à la boucle ;


Indice est la variable de parcours
Valdebut et valfinale sont la première et la dernière valeur prise par la variable indice.
Actions est une ou plusieurs actions. Ces actions ne modifient pas la valeur de la variable
indice associée à la boucle, mais l’utilise éventuellement.
b) Sémantique
La boucle Pour permet d’effectuer le traitement un nombre de fois connu avant l’exécution.
Le processeur gère un compteur qui repère la position de la valeur suivante dans l’intervalle.
Les actions de la boucle sont exécutées rigoureusement pour toutes les valeurs de l’intervalle.
Cette structure est beaucoup utilisée dans le chapitre des tableaux.
c)- Exemple
Algo table ;
Var i :entier ;
Début
Pour i de 1 à 10 faire
Afficher (‘2*’, i,’ =’, 2*i); Finpour; Fin.

Il existe aussi la boucle pour à pas décroissant et la syntaxe est la suivante :

Pour indice de valfinale à valdebut faire


Actions
Finpour ;

TRAVAUX DIRIGES N°2

VI. LES PROCEDURES ET LES FONCTIONS

Introduction: Les Algorithmes que nous avons vus jusqu’ici sont des
Algorithmes basés sur la calculabilité c’est-à-dire un ensemble d’instruction
s regroupés au sein d’un programme principale. L’objectif de ce chapitre est
de nous permettre d’écrire des programmes en utilisant une conception

27
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

modulaire ; ce qui nous permettra de s’initier à la P.O.O (Programmation,


Orienter, Objet), un style de programmation adapté par la plupart des
me
langages de 4 générations (C++, Java, VB.net…..).
Utilité: L’utilité des procédures et fonctions se résume en trois phases.
--Economie de l’espace mémoire.
-Eviter d’écrire des séquences d’instructions identiques en différents
endroits du programme.
-- Facilité la maintenance du programme.

VI.1 Les Procédures


VI.1.1 Définition Une procédure est un sous-programme exécutant une
tâche spécifique et retournant ou pas des valeurs via ses paramètres. C’est
aussi une suite d’action désignée par un nom. Types de procédure
Il existe deux types de procédures

VI.1.2 Les procédures non paramétrées:


Ce sont des procédures qui n’échangent aucune information avec le
programme principal.
Principe : Il s’agit simplement de donner un nom à un groupe
d’instructions.
Ensuite, l’appel de ce nom à divers endroits du programme provoque à
chaque fois l’exécution de ce groupe d’instructions.
a) Syntaxe:
Procédure Nomprocedure;

(Déclaration des variables locales)


Début
Actions
Fin
b) Exemple1
Algo exemple1;
VAR x, y, t : entier;
{Déclaration de la procédure Echange_xy}
PROCEDURE Echange_xy;
Début
{Corps de la procédure}
t x; x y; y t;
fin;
Début

28
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

{Programme principal}
x 3; y 4;
Afficher(x, ' ', y);
Echange_xy; {1er appel de la procédure}
Afficher(x, ' ', y);
Echange_xy; {2eme appel de la procédure}
Afficher(x, ' ', y);
Fin.

Ce programme affiche
3 4
4 3
3 4
Remarques
- Le nom de la procédure est un identificateur.
- On déclare toute procédure avant le Début du programme principal. -
Exemple2 :
Procédure politesse ;
Début
Afficher (‘bonjour Monsieur donner deux entiers’);

Finproc ;

N.B Une procédure est considérée comme une instruction faisant partie du
programme principal lors de son n’appel.

Exemple
Algo somme ;
Var a, b, s :entier ;
Debut
Politesse
;
Lire(a,b)
;s
a+b ;
Afficher(‘La somme est : ‘,s) ;
Fin.
c) Appel de la procédure
On peut très bien appeler une procédure P1 depuis une procédure P2, mais
il faut que la procédure P1 ait été déclarée avant la procédure P2.

29
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Exemple donnant le même résultat.


Algo exemple2;
VAR x, y, t : entier;
PROCEDURE Affiche_xy;
Début
Afficher(x, ' ', y);
Fin;
PROCEDURE Echange_xy;
Début
{Corps de la procédure}
t x; x y; y t;
Fin;
Début
x 3; y 4; Affiche_xy;
Echange_xy;
Affiche_xy;
Fin.
Remarque
On peut aussi appeler une procédure depuis elle-même : c'est la récursivité.
VI.1.3 Les procédures paramétrées
Avant d’approfondir l’étude des procédures paramétrées voyons ce que c’est
qu’un paramètre.
a) Définition d’un paramètre: Un paramètre est une fenêtre (variable
locale ou globale) qui sert d’interface entre la procédure et le programme
principal c’est-à- dire c’est une variable qui permet à la procédure et au
programme principal d’échanger des informations.
VI.1.3.1 Pseudo-passage de paramètres
Ecrivons une procédure Produit qui calcule z = xy.
PROGRAM exemple5;
VAR x, y, z, a, b, c, d : réel;
PROCEDURE Produit;
Début
z
x*y;
Fin;
On veut se servir de Produit pour calculer c = a*b et d = (a - 1)*(b +1).
Début
Afficher ('a b ? '); Lire (a,
b); x a; y b; {données}
Produit; c z; {résultat}

30
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

x a-1; y b+1; {données}


Produit; d z; {résultat}
Afficher ('c = ', c, ' d = ', d);
fin.
Remarques
- L'écriture est un peu lourde.
- Il faut savoir que la procédure « communique » avec les variables x, y, z. -
Cela interdit de se servir de x, y, z pour autre chose que de communiquer avec
la procédure ; sinon gare aux effets de bord!
VI.1.3.2 Paramétrage
La solution élégante consiste à déclarer des paramètres à la procédure :

Algo exemple5bis;
VAR a, b, c, d : réel;
PROCEDURE Produit (E x, y : réel; S z : réel); {paramètres}
Début z
x * y;
fin;
début
afficher ('a b ? '); lire (a, b);
Produit (a, b, c); {passage de}
Produit (a-1, b+1, d);
{paramètres} Afficher ('c = ', c, '
d = ', d); fin.
a)- Syntaxe procedure nomprocedure(liste des
paramètres :type) ;
(déclaration des variables locales)
Début
(corps de la procédure)
Finproc ;
b)-Type de paramètres:
Il existe deux types de paramètres :
b.1) Les paramètres formels
Les paramètres formels sont des variables qui sont utilisées lors de la création de
la procédure.
Exemple x,y et z sont des paramètres formels.

31
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

b.2) Les paramètres effectifs


Les paramètres effectifs quant à eux sont des variables qui sont utilisées
lors de l’appel d’une procédure.
Exemple a,b et c sont des paramètres effectifs

c)- Mode de transmission des paramètres: Il existe trois modes de


transmission des paramètres
- Paramètre transmit en mode Entrée ou transmission par valeur: Dans ce
mode de transmission les paramètres effectifs fournissent leur copie à leurs vis-
à-vis formel c’est-à-dire que toute modification des paramètres formels au sein
de la procédure n’affectera pas les paramètres effectifs correspondants.
- Paramètre transmit en mode Sortie ou transmission par adresse: Dans
ce mode de transmission ce sont les paramètres formels de la procédure qui
transmettent un résultat au paramètre effectif du programme principal.
-Paramètre transmit en mode Entrée/Sortie: Dans ce mode de transmission le
paramètre effectif et son vis-à-vis formel joue un double rôle envoyer et recevoir
des informations en même temps.

Notation :
E nomvar: type

Entrée Ou
nomvar: type

S nomvar: type

Sortie Ou
nomvar: type

E/S nomvar:
type

Entrée/Sortie Ou

nomvar:
type

d)- Liens entre les paramètres formels et effectifs:

32
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Lorsqu’un paramètre formel est transmis en mode entrée, son vis-à-vis


effectif peut être une variable, une valeur constante ou une expression.
Lorsqu’un paramètre formel est transmis en mode sortie ou en entrée/sortie son
vis-à-vis effectif ne peut être qu’une variable jamais d’expression ni de valeur
constante.
Lors de l’appel d’une procédure paramétrée il y aura autant de paramètre
effectif que de paramètre formel et chaque paramètre effectif doit
correspondre en type avec son paramètre formel.
Remarque :
Les paramètres formels d’une procédure ou d’une fonction sont des variables
locales c’est-à-dire qu’elles ne sont visible qu’à l’intérieure de la procédure
ou de la fonction. Elles restent invisibles en dehors de la procédure ou de la
fonction.
Les paramètres effectifs lors de l’appel des procédures ou des fonctions sont
des Variables globales c’est-à-dire qu’elles sont visibles partout.
Après l’exécution d’une procédure ou d’une fonction l’emplacement
mémoire alloué pour les paramètres formels est automatiquement libéré.
C’est pour cette raison qu’on dit que les procédures et les fonctions
économise la mémoire.
VI.1.4 Variables Locale- Variable Globale
VI.1.4.1 Variables Locales
Les objets du programme qui ne sont utiles que dans la procédure peuvent être
définis dans les déclarations locales de la procédure. Ce sont les variables
locales
Exemple Reprenons exemple1 et changeons l’emplacement de t :
PROGRAM exemple3;
VAR x, y : entier;
PROCEDURE echange_xy;

33
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

VAR t : entier; { Déclaration locale }


Début
t x; x y; y t;
Fin;
Début
{ ... }
Fin.
- Une variable déclarée localement n'existe que pendant l'exécution de la
procédure, et ne sert qu’à cette procédure.
- Le programme principal n'a jamais accès à une variable locale de procédure.
- Une procédure n'a jamais accès à une variable locale d'une autre procédure.
VI.1.4.2 Variables globales

Une variable est dite globale lorsqu’elle est déclarée dans le programme
principal. Toutefois, cette variable peut être utilisée par une procédure, à cet
effet elle est locale à cette procédure. Les variables X, Y sont des variables
globales.
VI.1.4.3 Portée des variables
Les variables déclarées dans le VAR du programme principal sont appelées
variables globales. Elles existent pendant toute la durée du programme et sont
accessibles de partout.
Une variable locale a une procédure P, portant le même nom x qu'une variable
globale, masque la variable globale pendant l'exécution de P.
Exemple
PROGRAM exemple4;

VAR x : entier;

PROCEDURE Toto;
VAR x:
entier;

34
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Début x
4;
Afficher ('toto x = ', x);
Fin;
Début
x 2;
Afficher ('glob x = ', x);
Toto;
Afficher ('glob x = ', x);
Fin.

Ce programme affiche
Glob x = 2
Toto x = 4
Glob x = 2
VI.1.4.4 Effet de bord

Voici le scénario catastrophe :


- On est dans une procédure P et on veut modifier une variable x locale à P.
-Il existe déjà une variable globale ayant le même nom x.
- On oublie de déclarer la variable locale x au niveau de P.
-A la compilation tout va bien !
-A l'exécution, P modifie le x global alors que le programmeur ne l'avait pas
voulu. - Conséquence : le programme ne fait pas ce qu'on voulait, le x global a
l'air de changer de valeur tout seul !
Erreur très difficile à détecter ; être très rigoureux et prudent !

VI.2 Les Fonctions

VI.2.1) Définition: Une fonction comme une procédure est un sous-programme


qui exécute une tâche spécifique et qui retourne une unique valeur via le nom de
la fonction.

VI.2.2) Syntaxe:
Fonction Nomfonction(Liste des paramètres): type de retour

35
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

(Déclaration des variables locales)

Début
Action

Nomfonction Valeur à retourner;

Fin
- Appel
Contrairement à une procédure, l’appel d’une fonction ne constitue pas à lui seul
une action dans l’algorithme.
L’algorithme attend de la fonction, un résultat typé qui sera utilisé dans une
expression.
Son appel se fait par l’écriture de son nom dans l’endroit voulu du programme.
Nom_fonct (paramètre effectif) ;

Exemple
Algo addition
Var a, b, som : entier ;
Fonction somme(E n1,E n2 :entier) :entier ;

Var m :entier ;
Début
m a+b ;
Somme m;
Finfonct ;
Début
Afficher (‘Donner deux entiers’) ;
Lire (a, b) ;
Som somme(a,b) ;
Afficher(‘La somme est ’, som) ;
Fin.
VI.2.3) Notion d’homonyme : Lord de l’écriture d’une procédure les
paramètres formels de la procédure peuvent avoir le même nom que les
paramètres effectifs du programme principal sans pour autant désigné le
même emplacement mémoire.

Exemple : Ecrire une fonction qui permet de calculer la somme de deux entiers.

36
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Algo Calcul ;

Var n1, n2 : entier;

m : entier ;

Fonction Somme (E n1,n2:entier):Entier ;

Var S :ENT ;

Début
S n1+n2;
Somme S
Fin-Somme ;
Début

Afficher (‘donner deux entiers’);

Lire(n1, n2) ;

Som Somme(n1, n2) ;

Afficher (‘la somme de’,n1, ‘et de’, n2’, est:’, Som) ;


Fin

VI.2.4 Types d’appel


L’appel d’une fonction se fait de deux manières :

a) Dans une affectation.


Exempl
e
Algo
addition
Var a, b, som :
entier ;
Début
Afficher (‘Donner deux entiers’) ;
Lire (a, b) ;
Som somme(a,b) ;

37
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Afficher(‘La somme est ’ :som) ;


Fin.

b) Dans une expression.


Exemple
Algo addition
Var a, b, som : entier ;
Début
Afficher (‘Donner deux entiers’) ;
Lire (a, b) ;
Afficher (‘La somme est : ’, somme (a, b)) ; Fin.
Remarque Il est obligatoire que la fonction retourne un résultat dans tous les
cas sinon le résultat n’aurait pas de valeur dans les cas non prévus. Exemple
La fonction suivante est interdite :
Fonction majeur1(E age : entier) : booléen ;
Début
Si age<18 alors
Majeur1 faux ;
Fsi ;
Fin_fonct ;
Car elle ne retourne pas de valeur dans le cas l’age >= 18 ;
Aussi l’exécution de l’instruction délivre (expr) ou retourne interrompt
l’exécution de la fonction. Ainsi la fonction suivante quoi que syntaxiquement
correcte, retourne toujours la valeur « vrai ».

Fonction majeur2(E age : entier) : booléen ;


Début
Si age<18 alors Majeur2
faux ;
Fsi ;
Majeur2 true ;
Fin_fonct ;
Des solutions correctes seraient les suivantes :

38
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

a) Fonction majeur1_1(E age : entier) : booléen ;


Var maj : booléen ;
Début
Maj false ;
Si age>=18 alors
Maj true ;
Fsi ;
Majeur 1_1 maj ;
Fin_fonct ;

b) Fonction majeur1_2(E age : entier):booléen ;


Début
Si age>=18 alors
Majeur1_2 true ;
Sinon
Majeur 1_2 false ;
Fin_fonct
La solution la plus simple et tout aussi correcte, strictement équivalente aux
précédentes serait :
c) Fonction majeur1_3(E age : entier) : booléen ;
Début
Majeur1_2 (age>=18); Fin_fonct ;
En effet l’expression age>=18 prend la valeur « vrai » ou « faux » selon la
valeur de l’age, l’instruction conditionnelle est inutile

VI.2.5. Différence entre procédure et fonction


a) Paramètre d’entrée
Une procédure peut avoir des paramètres formels en mode entrée, ou
entrée/sortie
Les paramètres d’une fonction sont toujours en mode entrée ;
b) Paramètre de sortie
La procédure peut fournir plusieurs résultats par le biais des paramètres en mode
sortie ou entrée/sortie.
La fonction ne véhicule qu’un seul résultat.
c) Retour d’appel
Une procédure exécute l’ensemble des actions de son corps et provoque le retour
à l’appelant.

39
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Une fonction fait la même chose mais en plus elle véhicule un résultat par le
biais de son nom qui est considéré par l’appelant comme une variable utilisable
dans toute expression de type compatible.

TRAVAUX DIRIGES N°1

LES ENTREES /SORTIE ET LES CALCULS ET AFFECTATIONS


1. Ecrire un algorithme qui permet de saisir une note au clavier puis l’affiche
à l’écran. (la note est de type numérique ou de type chaine)

2.Que se passe t-il pendant l’exécution des algorithmes suivants :


a) Algo saisie ;
Const age=12 ;
Debut
Afficher (‘donner votre age’) ;
Lire (age) ;
Afficher (‘votre age est :’,age) ;
Fin.
b) Algo saisiebis ;
Var age : entier ;
Debut
Afficher(‘Donner votre age’) ;
Lire(age) ;
Lire(age) ;
Afficher(‘Votre age est : ’,age) ;
Fin.
Corriger donc ces algo afin que le résultat attendu soit affiché. 3.
Lorsqu’un nouvel étudiant se présente au service de la scolarité de son
établissement en vue de son inscription, il doit fournir à l’agent les
renseignements suivants : - Son nom formé de 15 caractères
- Sa date de naissance formée de 8 chiffres
- Son année de scolarité formée de 4 chiffres
- Sa spécialité formée de 10 caractères
Ecrire un algorithme permettant la saisie et l’affichage de toutes les
données de l’étudiant.
NB : la date sera affichée sous forme : jj/mm/aaaa.

40
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

4. Ecrire un algorithme qui permet de saisir les caractéristiques d’une


voiture par l’employé du service des mines. Une voiture est décrite par :
- Le nom de sa marque
- Le nom de son modèle
- La puissance administrative
- Le numéro d’immatriculation
- L’énergie utilisée
- La date de la première mise en circulation.
5. Pour un cercle dont la valeur du rayon est lue, écrire un algorithme qui
calcule et affiche avec l’unité choisie:
- Le périmètre du cercle ; - La surface du cercle ;
- Le volume de la sphère.

6. Le salaire net est calculé en fonction de trois paramètres :


- L’indice du salarié ;
- La valeur point d’indice (25.60) ;
- Le taux de ristourne (18%) ;
La formule du salaire net est :
Salairenet=indice*valeur pointd’indice-
indice*valeurpointd’indice*taux. Ecrire un algorithme qui calcule et
affiche le salairenet d’un employé.
7. Ecrire un algorithme qui demande à l’utilisateur les valeurs de deux
variables réelles x1 et x2 ; calcule et affiche la valeur de la distance d
entre les points A et B d’abscisse respective x1 et x2. L’algorithme le
résultat de la sorte : d(AetB)=d. (valeur à calculer)
8. Ecrire un algorithme qui demande à l’utilisateur les valeurs des
coordonnées de deux points A et B (A(xa,ya) et B(xb,yb) ) ; calcule la
valeur de la variable d1 mesurant la distance entre les points A,B de
coordonnées respectives xa,ya et xb,yb.
9. a) Etant donné une longueur, demandé à l’utilisateur exprimé en pied et
pouce ; écrire un programme qui calcule et affiche cette longueur en
pouce. On rappelle que 1 pied=12pouces.
c) Cette fois ci on vous demande d’écrire un algorithme qui calcule et
affiche la longueur en pied et pouce sachant que l’utilisateur saisira un
nombre entier en pied et pouce.

41
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

10. Echange du contenu de deux variables


Le but de cet exercice est d’échanger le contenu de deux variables et non
d’en intervertir l’affichage.
L’affichage de ces variables avant et après est seulement fait pour
permettre la vérification de l’échange.
En utilisant deux variables de type entier nommé N1 et N2, écrire un
algorithme qui demande à l’utilisateur un contenu différent pour ces deux
variables ; affiche dans cet ordre N1 et N2.
Intervertit le contenu de ces deux variables, puis affiche à nouveau N1 et
N2.
11. Ecrire un algorithme qui demande à l’utilisateur la quantité et le prix hors
taxe d’un article puis calcule et affiche le prix toute taxe confondu de cet
article. On donne tauxtva=18% et le prix toute taxe confondu se calcule
par le montant hors taxe + montant de la tva.
Le montant hors taxe= prix hors taxe multiplié par la quantité et le
montant de la tva= montant hors taxe multiplié par le tauxtva.

LES STRUCTURES CONDITIONNELLES

TRAVAUX DIRIGES N°2

1. Ecrire un algorithme qui calcule et affiche :


a) le reste de la division d’un nombre a par un nombre b.
b) la partie entière de la division de a par b.
2. interpréter les structures suivantes :
a) si c1 alors A1 ; b) si c1 alors A1
si c2 alors A2 si c2 alors A2
sinon A3 ; sinon A3 ; fsi ; fsi ;
A4 ; A4
Sinon A5 fsi ;
Si c3 alors A6
Sinon A7 ;
Fsi ;
A8 ;

Fsi ;

42
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

3. Ecrire un algorithme qui calcule et affiche :


a) Le maximum de 4 nombres ;
b) Le minimum de 4 nombres.
4. Ecrire un algorithme qui demande à l’utilisateur les coefficients d’une
équation du 1er degré de la forme ax+b=0 ; calcule et affiche la racine
(solution) de cette équation. Etudier les cas.
5. Ecrire un algorithme qui demande à l’utilisateur les coefficients d’une
équation du 2e degré de la forme ax²+bx+c=0 ; calcule et affiche les racines
(solutions) de cette équation.
6. Ecrire un algorithme qui trouve le montant net à payer par un client
sachant qu’une remise de 15% est accordée pour les clientes et 10% pour
les clients lorsque la quantité commandée est supérieure à 500 unités.
L’utilisateur saisira le nom du client ou la cliente, le sexe, la date de
commande, le numéro de facture, de téléphone, la quantité et le prix
unitaire.
Le programme affichera à l’exécution les informations de la sorte.
******************Facture pour achat**************************
N° facture : 0073
Date commande : 25/07/2010
Sexe : Masculin
Nom client(e) : Delamou Koliko
Téléphone : 664722117
Quantité : 900kg
Prix Unitaire : 5000fg
Taux Remise : 10%
Net à payer : à calculer
NB : ces valeurs affichées sont un exemple, ne faites donc pas un
algorithme statique.
7. Ecrire un algorithme qui affiche le résultat d’un examen selon les règles
ci-dessous. La note est dans l’intervalle mathématique : [0,8[ :
ajourné ;[8,10[ : oral ;[10,20[ : admis
8. Une société d’assurance pratique la méthode de la franchise dite de la
variable. Le principe est simple et consiste à dire que le montant de la
franchise laissé à la charge d’un assuré doit représenter les 10% du
montant des réparations. Toute fois cete franchise ne doit descendre en
dessous de 1000fg ni dépasser 4000.
Ecrire un algorithme qui demande le montant des réparations et calcule et
affiche la franchise laissée à la charge de l’assuré.

43
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

9. Simulation d’une calculatrice très simplifiée


Ecrire un algorithme qui simule le fonctionnement d’une calculatrice très
simplifiée (seules les opérations +,*,- et / sont disponibles)
Cet algorithme saisit l’opération sous la forme
Opérande1 opérateur Opérande2=résultat
Exemple : 12*3=36
Si l’opération demandée est une division par 0, l’algorithme affiche un
message adéquat.
10.Ecrire un algorithme qui peut trouver la somme, le produit, la moyenne,
le minimum et le maximum de trois nombres réels saisis. L’utilisateur
fera son choix à travers un menu qui se présente comme suit :
1………………Somme
2………………Produit
3…………….Moyenne
4…………….Maximum
5………….....Minimum

11.Cet algorithme est destiné à prédire l'avenir, et il doit être


infaillible !
Il lira au clavier l’heure et les minutes, et il affichera l’heure qu’il sera une
minute plus tard. Par exemple, si l'utilisateur tape 21 puis 32, l'algorithme doit
répondre :
"Dans une minute, il sera 21 heure(s) 33".
NB : on suppose que l'utilisateur entre une heure valide. Pas besoin donc de la
vérifier.
12.De même que le précédent, cet algorithme doit demander une heure et
en afficher une autre. Mais cette fois, il doit gérer également les
secondes, et afficher l'heure qu'il sera une seconde plus tard.
Par exemple, si l'utilisateur tape 21, puis 32, puis 8, l'algorithme doit répondre :
"Dans une seconde, il sera 21 heure(s), 32 minute(s) et 9 seconde(s)".
NB : là encore, on suppose que l'utilisateur entre une date valide.

44
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

LES STRUCTURES ITERATIVES


13. Dépouillement
Ecrire un algorithme qui permet de compter le nombre de bulletins
obtenu par chaque parti. On suppose que les partis sont les suivants :
PUP, PRP, RDR, UFR, UPG. Nous conviendrons de saisir 1 pour
PUP ; 2 pour PRP ; 3 pour RDR ; 4 pour UFR ; 5 pour UPG et 0 pour
les bulletins nuls.
L’algorithme doit également afficher :
- • le total des suffrages obtenus ;
- Le nombre de bulletins nuls ;
- Le suffrage valablement exprimé ;
- Le suffrage obtenu par parti ainsi que le % par candidat.

Le programme s’arrêtera par la saisie d’un nombre négatif.

14.On saisit une série de notes terminée par 0. Ecrire un algorithme qui
calcule et affiche la moyenne arithmétique et le nombre de notes
saisies.
Le nombre 0 permet d’arrêter la saisie.
15.Soit une suite (Un) définie par : Uo=1 et Un+1=1/2n+1 avec limite
(Un)=0 pour tendant vers l’infini. Ecrire qui calcule et affiche les
termes de cette suite jusqu’à U(n)<10-4
16.Ecrire un algorithme qui affiche les nombres pairs compris entre 2 et
100. Le programme affichera 10 nombres par ligne.
17.Ecrire un algorithme qui test si un nombre entier positif saisi est un
carré parfait ou non. Le programme affichera la racine carrée de ce
nombre si le nombre est un carré parfait ou la partie entière de la
racine carrée de ce nombre. On obligera l’utilisateur à saisir un nombre
positif.
18.Ecrire un algorithme qui calcule et affiche la valeur de la puissance
entière d’un entier n à la puissance p.
19.Ecrire un algorithme qui calcule la moyenne de notes fournies au
clavier avec un dialogue se présentant comme suit :
Combien de notes : 4
Note1 :12
Note2 :15.25
Note3 :13.5
Note4 :8.75
Moyenne de ces 4 notes : 12.37

45
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

20.Ecrire un algorithme qui calcule la moyenne des notes fournies avec


un dialogue de ce type :
Note1 :12
Note2 :15.25
Note3 :13.5
Note4 :8.75
Note5 :-1
Moyenne de ces 4 notes : 12.37
21.Ecrire un algorithme qui affiche un triangle rempli d’étoiles s’étendant
sur un nombre de lignes fourni au clavier par l’utilisateur.
Exemple : nombre de ligne=5
*
**
***
****
*****
22.Ecrire un algorithme qui teste si un nombre entier positif saisi au
clavier par l’utilisateur est premier ou non. On rappelle que le premier
nombre premier est 2.

23.Ecrire un algorithme qui demande à l’utilisateur son nom et affiche les


caractères composant son nom sous forme de triangle.
Exemple nom= DELAMOU et le programme affiche
D
DE
DEL
DELA
DELAM
DELAMO
DELAMOU
Utiliser la fonction d’extraction gauche.
24.Une année est bissextile lorsqu’elle est divisible par 4. Ecrire un
algorithme qui affiche les années bissextiles depuis votre date issance
jusqu’à nos jours.

46
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

LES PROCEDURES ET LES FONCTIONS

TRAVAUX DIRIGES N° 3
1. Ecrire un algorithme qui calcule le maximum et le minimum de 4 entiers.
2. Ecrire un algorithme qui calcule le produit, la somme et le quotient de
deux entiers.
3. Ecrire un algorithme qui à partir de deux longueurs demandées à
l’utilisateur et exprimées en pied pouce, calcule et affiche la différence en
pied pouce entre ces deux longueurs. On utilisera des procédures.
4. Ecrire un algorithme qui permet de trouver tous les nombres strictement
plus petit que 1000 et dont la somme des cubes des chiffres le composant
est égale au nombre lui-même. Un tel nombre est appelé nombre
d’Armstrong. Exemple 153=13+53+33 est un nombre d’Armstrong. Créer
une procédure de décomposition d’un nombre en ses chiffres de centaine,
de dizaine et d’unité.

5. Un jeu d’allumettes se joue à deux avec la règle suivante : le jeu


commence avec un tas de 50 allumettes. Chaque joueur prend à son tour
un nombre d’allumettes compris entre 1 et 6 (dans la limite de ce qui reste
disponible) et fait ainsi diminuer le tas. Le joueur qui se trouve obligé de
prendre de prendre la dernière allumette est perdant. Ecrire un algorithme
qui permet de jouer à ce jeu. Les deux joueurs seront appelés joueur n°1et
joueur n°2. Pour jouer, il suffit de saisir un nombre dont on contrôlera la
validité en utilisant une procédure paramétrée (contrôle saisi). Avant
chaque saisie on fera afficher le nombre d’allumettes du tas restant.
Lorsque le tas sera vide, on affichera lequel des deux joueurs a gagné et
au bout de combien coups.

6. On donne l’expression mathématique suivante :

47
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Ecrire algorithme qui calcule et affiche Y=Y1/Y2. On écrira des


fonctions qui calculent le produit des Ai et la somme des Bj.
7. On désire convertir un nombre donné en heures et en minutes. Ecrire un
algorithme qui demande à l’utilisateur un nombre inférieur ou égal à 1439
puis le décompose en heure et minute. On utilisera une procédure de
décomposition de ce nombre.

TRADUCTION DE QUELQUES MOTS CLES EN TURBO PASACAL

Langage algorithmique Langage Pascal


Algonom_algo Program nom_algo
Constnom_const=valeur Constnom_const=valeur
Type nom_type=chaine(taille) Type nom_type=string[taille]
Type nom_type=(val1,val2,….,valn) Type nom_type=(val1,val2,….,valn)
Type nom_type=binf..bsup Type nom_type=binf..bsup
Type nom_type=tableau(1..namx)de t Type nom_type=array[1..namx]of t
Type nom_type=structure Type nom_type=record
Champ1:type1 ; Champ1:type1 ;
Champ2 :type2 ; Champ2 :type2 ;
……………… ………………
Champn :typen Champn :typen
Fstr ; end ;
Var nom_var :nom_type Var nom_var :nom_type
Procedurenom_procedure Procedurenom_procedure
Fonction nom_fonction Functionnom_fonction
Début Begin
Afficher/afficher a_la_ligne Write/writeln
Lire/lire a_la_ligne Read/readln
A b A :=b
Si condition alors If condition then
Action ; Action ;
FSI ;
Si condition alors If condition
Action1 ; then begin
Action2 ; Action1 ;
………. Action2 ;
Actionn ; ……….
FSI ; Actionn ;
end ;

48
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

Cas choix selon Case choix of


Val1 :action1 ; Val1 :action1 ;
Val2 :action2 ; Val2 :action2 ;
……………. ; ……………. ;
Valn :actionn ; Valn :actionn ;
Autre :actionn+1 Else actionn+1
Repeter Repeat
Actions Actions
Jusqu’à condition Until condition
Tant que condtion faire While condtion do
Action ; Action ;
Ftq ;

Tant que condtion faire While condtion


Action1 ; do begin
Action2 ; Action1 ;
……… Action2 ;
Actionn ; ………
Ftq ; Actionn ;
end;

Pour i de val1 à valn faire for i :=val1 to valn do


Action ; Action ;
Fpour ;
Pour i de val1 à valn faire for i :=val1 to valn do begin
Action1 ; Action1 ;
Action2 ; Action2 ;
………… ; ………… ;
Actionn ; Actionn ; end ;
Fpour ;

BIBLIOGRAPHIE
1) ALAIN CARDON, CHRISTIAN CHARAS. – Introduction à la
programmation
2) Moussa LÔ et Fatou KAMARA. – Algorithmique et
Programmation. USB Saint Louis
3) Kéba DIOP. – Algorithmique et structures de données. Tome1 et
Tome2, Press de l’université de l’UNIS 4) Microsoft Encarta 2009

49
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018

50

You might also like