Professional Documents
Culture Documents
Support ALGORITHME2018
Support ALGORITHME2018
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
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
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.
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.
- 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
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
5
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
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
Solution : il faut adopter un codage différent pour les entiers et pour les réels :
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.
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
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 =,<>
Table2.5
7
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
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
Ces deux fonctions peuvent être utilisées pour rendre compatibles des données de type
différent.
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.
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.
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
Exemple : age 26
Contenant Contenu
11
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
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.
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
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
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.
14
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
III.1.2. Exemple :
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é
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.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 :
16
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
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.
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
17
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
IV.3 AFFECTATION
IV.3.1. Syntaxe
IV.3.3. Sémantique
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.
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
Syntaxe
Action1
Action2
……….
Actionn
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.
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.
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 ;
21
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
Si (condition1) Alors
Alterne1 Action1
Alterne2 Action2
Alterne3 Action3
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.
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 :
24
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
--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.
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.
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
Actions
Finpour ;
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
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
30
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
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
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
32
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
33
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
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
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ébut
Action
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 ;
m : entier ;
Var S :ENT ;
Début
S n1+n2;
Somme S
Fin-Somme ;
Début
Lire(n1, n2) ;
37
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
38
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
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.
40
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
41
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
Fsi ;
42
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
43
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
44
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
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
46
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
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é.
47
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
48
Cours d’Algorithmique1- Par M.K. DELAMOU (C.U Labé) 2018
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