ALGORITHME
COURS D’ALGORITHME
PROGRAMME D’ALGORITHME
CHAPITRE I: LES GENERALITES SUR L’ALGORITHME
I- Présentation et structure de l’algorithme
II- Les objets (variables et constantes)
III- Les types, les opérateurs et les instructions d’entrée/sortie
CHAPITRE II : LES STRUCTURES DE CONTROLE
I- Les structures conditionnelles ou décisionnelles
II- Les structures répétitives ou itératives ou boucles
CHAPITRE III : LES STRUCTURES DE DONNEES COMPLEXES
I- Les tableaux
II- Les enregistrements
CHAPITRE IV : LES SOUS PROGRAMES (FONCTIONS ET PROCEDURES)
I- Les fonctions
II- Les procédures
MODULE ALGORITHME
1
CHAPITRE I: LES GENERALITES SUR L’ALGORITHME
I- PRESENTATION ET STRUCTURE DE L’ALGORITHME
A- Présentation
Un opérateur (homme ou machine) est capable de comprendre et d’interpréter les instructions qu’on
lui donne, lorsqu’une machine est capable d’exécuter directement une action alors on parle d’action
élémentaire (non décomposable). Le problème est que l’homme veut faire fait a la machine des action
complexe alors que celle-ci n’est capable que d’action élémentaire. Pour cela, il faut décomposer cette
action complexe en plusieurs petites actions élémentaires (algorithme) que la machine pourra
comprendre et interpréter lorsque celle-ci seront traduite dans un langage compréhensible par la
machine.
1- Algorithmique
C’est l’ensemble des règles et principes à respecter pour écrire un algorithme. C’est la science qui
permet d’étudier les algorithmes.
2- Algorithme
C’est la description précise et rigoureuse d’une suite d’opération menant à la résolution d’un problème
donnée. L’algorithme est élaboré de façon logique et chronologique, il est fini dans le temps c’est à
dire qu’il a un début et une fin. Un algorithme est indépendant du langage dans lequel il sera exécuté.
Un algorithme est écrit dans un langage naturel sans ambigüité et il est inintelligible a la machine (la
machine ne comprend).
B- Structure d’un algorithme
Un algorithme est composé de 3 parties essentielles
_son identificateur : c’est le nom que l’on donne à l’algorithme. Le nom dépend du développeur mais
doit respecter les suivants :
Le nom ne doit jamais commencer par un chiffre
Le nom ne doit jamais comporter de caractères spéciaux.
Le nom ne doit jamais comporter d’espace
Le seul caractère spécial autorisé est le caractère de soulignement Under score(_)
La syntaxe est la suivante :
Algorithme nom algo
Exemple :
Algorithme calcul
Sa partie déclarative : cette partie est facultative car elle dépend de la nature du problème et
des besoins de l’utilisateur. C’est dans cette partie que nous déclarons nos variables, nos
constantes, nos structures de données, nos fonctions et nos procédures
MODULE ALGORITHME
2
Son corps : c’est la partir la plus obligatoire dans un algorithme car c’est la que seront
effectué tous les traitements. Cette partie est délimitée par les mots clés ‘‘début’’ et ‘‘fin’’.
Exemple :
Algorithme Nom Algo En tête
CONST
Partie déclarative
VAR
Début
Instruction 1
--------------
-------------- Corps
--------------
--------------
Instruction n
Fin
II- Les objets
Un objet est un élément sur lequel l’on porte une action. Il sert à contenir nos données et nos
résultats.
Comme type d’objet nous avons les variables, les constantes et les structures de données.
Un objet est caractérisé par :
Son identificateur : c’est le nom que l’on donne a l’objet
Son type : c’est l’intervalle dans lequel l’objet prend sa valeur
Sa valeur : c’est ce que vaut l’objet a un instant donné
1- Les variables
Une variable est un espace mémoire. C’est un objet dont le contenu est susceptible de changer durant
l’exécution du programme. Pour déclarer une variable, l’on procède de la manière suivante : Variable
ou Var
Nom de la variable : type de variable ;
Exemple
Variable
MODULE ALGORITHME
3
Moyenne : réel ;
Age : entier ;
Sexe : caractere ;
Nom : chaine de caractere ;
2- Les constantes
Une constante est un espace mémoire. C’est un objet dont la valeur ne changera jamais durant
l’exécution du programme. Pour déclarer une constante, l’on procède de la manière suivante :
Constante ou const
Nom de la constante = valeur
Exemple :
Const
Ag e= 18 ;
Sexe = ‘‘Masculin’’ ;
III- Les types, les operateurs, et les instructions d’entrée/sortie
A- Les types élémentaires
Le type entier : un entier est un nombre qui n’admet pas de virgule. Il est codé sur 2 octets
soit 16 bits. La plage des entiers est D=[-32768 ;32767]
Le type réel : un réel est nombre qui peut admettre une virgule. Il est codé sur 6 octets soit
48 bits. La plage des réels est D=[-1.4.1014 ; 1.4.1014 ]
Le type caractère : c’est un chiffre, une lettre, un symbole, un espace. Il est code sur 1 octet
soit 8 bits. Nous avons 28(256) caractères possibles. Le caractère est toujours entre simple
Le type booléen :un booléen est une variable spéciale qui ne prend seulement que deux
valeurs : vrai ou faux
B- Les operateurs
Les operateurs arithmétiques : addition(+), soustraction(-), la multiplication(), la
division(/), la partie entière(div),reste de la division(mod)
Les operateurs de comparaison : supérieur(>), inferieur(<), egal(=),
supérieur égal(>=),inferieur égal(<=), différent(<>)
Les operateurs logiques : ce sont les conjonctions de coordination en informatique. Ils
permettent de regrouper plusieurs conditions pour en faire une seule. Ce sont :
ET,OU,NON
L’operateur d’affection(←) : il permet d’attribuer une valeur a une variable
précédemment déclarée. La valeur attribuée peut être le contenu d’une autre variable, le
résultat d’une opération ou une valeur fixe.
MODULE ALGORITHME
4
C- Les instructions entrées/sorties
1- Lecture de données(entrée)
Elle permet de récupérer une information saisie par l’operateur et la stocker dans une variable . la
syntaxe est la suivante :
Lire(nom variable) ; saisir(nom variable) ;
Lire Plusieurs variables
lire(variable 1, variable 2,…, variable n) ;
2- Ecriture de données (sortie)
Elle permet d’afficher une information à l’écran pour que l’utilisateur puisse en prendre
connaissance.
La syntaxe est la suivante :
Afficher un simple message
Ecrire(‘‘Information’’) ; afficher (‘‘Information’’) ;
Afficher une variable
Ecrire(nom_variable) ; afficher(nom_Variable) ;
Exercice d’application
Ecrire un algorithme permettant de faire la somme et le produit de deux nombres.
Algorithme calcul
Var
a,b:reel
som, prod: reel
Debut
Ecrire (“Veuillez saisir le premier nombre”)
Lire(a)
Ecrire (“Veuillez saisir le deuxieme nombre”)
Lire(b)
som←a+b
prod←a*b
Ecrire(“la somme est :”,som)
Ecrire(“le produit est :”,prod)
Fin
MODULE ALGORITHME
5
EXERCICE DE MAISON
1) Ecrire un algorithme permettant de convertir un temps en heure, minute et seconde. Le
temps à convertir est en seconde
2) Un démarcheur a domicile est rémunéré avec un salaire fixe de 60000F. Il perçoit une
commission de 10% sur le montant des ventes réalisées. Le salaire ainsi obtenu est augmente
de 3% pour prendre en compte ses frais de déplacement. Etant donne la quantité et le prix
unitaire de l’article vendu, écrire un algorithme permettant de déterminer le salaire net du
démarcheur
Correction
Algorithme conversion
VAR
T,h,r,m,s : entier
Debut
Afficher (“Veuillez entrer le temps en seconde”)
Saisir (t)
h←t div 3600
r←t mod 3600
m←r div 60
2) s←r mod 60
afficher (t, “s=’’,h,“H’’,m,“min’’,S, “s’’)
Fin
Algorithme calcul salaire
VAR
Com,pu,sn,fd,mv,q: reel
Const
Sf=60000
Debut
Ecrire (“Veuillez entrer la quantité d’article vendu”)
Lire(q)
Ecrire (“Veuillez entrer le prix unitaire”)
Lire(Pu)
mv←q*Pu
com←0,1*mv
fd←0,03*(Sf+com)
sn←sf+com+fd
Ecrire (“Le salaire net du démarcheur est :”,Sn)
Fin
MODULE ALGORITHME
6
CHAPITRE II : les structures de contrôle
I. Les structures conditionnelles ou décisionnelles
1) La structure conditionnelle pure (SI… alors)
Cette structure permet d’exécuter une instruction ou un bloc d’instruction lorsqu’une condition est
vérifiée, elle n’offre pas d’alternative.
Syntaxe :
Si (condition) alors
Début
Instruction 1
Instruction n
Fin
Finsi
Application
Ecrire un algorithme permettant de déterminer la parité d’un nombre en utilisant la structure
conditionnelle pure.
Algo parite
var
n entier
debut
écrire (‘‘entrez le nombre’’)
lire (n)
Si((n mod2) =0) alors
écrire (‘‘ le nombre est paire’’)
finsi
Si ((n mod2) < >0) alors
Écrire (‘‘ le nombre est impair’’)
fsi
fin
MODULE ALGORITHME
7
2) La structure conditionnelle alternative ou complexe (si…alors…sinon)
Elle permet d’exécuter deux blocs d’instruction selon la validité ou non d’une ou plusieurs conditions.
Lorsque la condition est vérifié le premier bloc est exécuté dans le cas contraire ‘est le deuxième bloc
qui est exécuté
Syntaxe :
Si (condition) alors
Début
Instruction 1
|
Instruction n
Fin
Sinon
Début
Instruction 1
|
Instruction n
Fin
Finsi
Application (répète mais avec la structure conditionnelle complexe)
Algo parite
var
n entier
debut
écrire (‘‘entrez le nombre’’)
lire (n)
Si((n mod2) =0) alors
écrire (‘‘ le nombre est paire’’)
Sinon
Écrire (‘‘ le nombre est impair’’)
fsi
fin
3) Imbrication de si … alors et de/ si … alors… sinon
Lorsque l’on a plusieurs conditions à gérer il est possible d’utiliser plusieurs primitives si alors sinon
mais en les imbriquant.
Application 1
Ecrire un algo permettant de déterminer le signe de la somme de deux nombres.
MODULE ALGORITHME
8
Application 2
Ecris un algo permettant de calculer le prix a payé pour un certain nombre d’article affiché si le
montant des achats est supérieur a 20 000 alors réduction 5%.
Pour un montant de 10 000 réduction 2% dans le cas contraire pas de tva appliqué.
Taux de tva =18%
Ecrit une algo permettant de résoudre une équation de second degré dans R .
4) La structure de choix
Lorsque l’on a N conditions agrée il également possible d’utiliser la structure SELON (CHOIX)… FAIRE
Syntaxe :
Selon (choix) faire
Etiquette 1 : bloc
Etiquette 2 : bloc
|
Etiquette n : bloc n
Default : sinon : bloc défaut
Finselon
NB : l’étiquette peut-être un entier, un caractère, une chaine de caractère, un intervalle d’élément de
même type, une liste d’élément de même type. L’étiquette ne doit jamais être un réel.
II. LA STRUCTURE REPETITIVE OU ITERATIVE
1) La boucle pour … faire
Elle est généralement utilisée lorsque le nombre d’itération est connu.
Syntaxe :
Pour compteur allant de la valeur initiale à la valeur finale Pas faire
Début
Instruction1
Instruction 2
Fin
Fin pour.
Exemple : écrit un algorithme permettant de compter de un a cent.
MODULE ALGORITHME
9
Résolution
Algo compteur
Var
I : entier
Debut
pour i 1 à 100 faire
Afficher (i)
Fin pour
fin
si nous voulons les nombres impairs
Algo compteur
Var
I : entier
Debut
pour i 2 à 100 2 faire
Afficher (i)
Fin pour
fin
2) La boucle TANT QUE…FAIRE
Elle est généralement utilisée lorsque d’itération n’est pas connue ou exact.
Syntaxe :
Compteur – valeur initial
Tant que ( condition) faire
Debut
Instruction1
|
Instruction n
Fin
Fin.
Exemple : écrit un algo permettant de compter jusqu’à cent.
Tant que ( i˂=100) faire
Debut
ECRIRE (i)
i˂--i+1
Fin
Fin.
MODULE ALGORITHME
10
3) La structure répété jusqu’a
Elle est généralement utilisée lorsque le nombre d’itération n’est pas connu ou exact.
Syntaxe :
Compteur – valeur initial
Répéter
Début
Instruction1
|
Instruction n
Fin
Jusqu’à (condition)
Exo 1
Ecrit un algorithme permettant de déterminer la factorielle d’un nombre.
Exo 2
Ecrit un algo permettant de savoir si un nombre saisi par utilisateur est un nombre factoriel.
Exo 3
Ecrit un algorithme permettant de déterminer le PPCM deux nombres.
Exo 4
𝜋
Le développement limité de 4 = + +
Ecrit un algorithme permettant de déterminer la valeur de 𝜋
Exo5
Ecrit un algorithme permettant de convertir un nombre de la base 10 vers la base 2
Resolution
MODULE ALGORITHME
11
EXO 2
Var : i,n,fact : entier ;
Debut:
Ecrire (“Veuillez entrer le nombre”)
Lire(n)
Trouver ← faux
i←1 fact←1
tant que ( (trouve=faux) et (i ≤ n) ) faire
debut
fact ←fact*1
i←i+1
si ( fact=n) alors
touvé←vrai
i←i-1
fin
Fintantque
Si (trouvé = vrai) alors
Ecrire (n, ‘‘est nombre factoriel et il est le factoriel de :’’)
Sinon
Ecrire (n, n’est pas un nombre factoriel)
Fin
fin
Fin.
MODULE ALGORITHME
12
CHAPITRE III : les structures de données complexes
I- Définition
Un tableau est une structure de données pouvant contenir des éléments de même type. Sa taille est
connue à sa création et les éléments sont rangés de façon contiguë (les uns à la suite des autres)
dans …
Un tableau peut contenir les types suivant : entier, réel, caractère, booléen, chaine de caractère,
enregistrement, tableau.
Un tableau est caractérisé par :
Son nom
Son type
Sa taille
Il existe des tableaux à une, 2, 3, n dimension
A- LE TABLEAU A DIMENSION
C’est un tableau qui est composé d’une seule ligne et de K colonne avec K≥1.
1) Déclaration d’un tableau a une dimension.
Syntaxe :
Nomtype= tableau(taille) de type
Var
Nomtableau : nomtype
Ou :
Var
Nomtableau : tableau(taille) de type
2) Indexation d’un tableau a une dimension
C’est accéder à une cellule quelconque du tableau. Cela est réalisé à l’aide d’une valeur de type
entier appelé indice du tableau.
Syntaxe :
Nomtableau (indice)
3) Parcourt d’un tableau à une dimension
Pour parcourir un tableau à une dimension il faut nécessairement ou obligatoirement une boucle
Exo : écrire un algo permettant de saisir la moyenne de 60 étudiants
Algo moyenne
Var
Tab : tableau (62) de réel
MODULE ALGORITHME
13
I : entier
Debut
Par i←1
4) Tri d’un tableau a une dimension
Pour trier un tableau à une dimension il faut utiliser deux boucles imbriquées.
Le compteur de la première boucle va de la première colonne jusqu’à l’avant dernière
colonne.
Le compteur de la 2eme boucle va de la position du compteur de la première boucle plus 1.
NB : la 2eme boucle est impliqué sur la première.
Exemple : soit Tab de 120 valeurs. Ecrire u algo permettant de trier ce tableau de la plus
petite valeur a la plus grande valeur
Algo tri
Var
Tab : tableaux (120) de réel
I,j : entier
Tmp :réel
Debut
Pour i ←1 à 119 faire
Pour j←(i+1) à 120 faire
Si (tab (i)˃ tab(j) alors
tmp←tab(i)
tab(i)←tab(j)
tab(j)←tab(tmp)
fsi
fpour
finpour
fin
EXERCICE :
Pour des raisons de statistique il est demandé d’élaborer un algo permettant des calculer la moyenne
de 75 étudiants d’une classe. Chaque étudiant a 3 notes. La direction des statistiques voudrait savoir :
- Le nombre d’étudiant ayant une moyenne supérieure a la moyenne de la classe.
- Le nombre d’étudiant ayant une moyenne comprise entre 12 et 15,5.
- Le nombre d’étudiant ayant une moyenne égale a 16
- La moyenne la plus élevée.
- Les notes de l’étudiant ayant la moyenne la plus basse.
- Le nombre d’admis
- Le taux d’échec
- L’algo doit pouvoir faire le classement de la classe.
MODULE ALGORITHME
14
Nb : moyenne d’admission à saisir et doit être comprit entre 10 et 15
B- Tableau a 2 dimensions
1- Déclaration d’un tableau a 2 dimensions
Var
Tab : tableau () () de réel
(120) (1)
2- Indexation d’un tableau à 2 Dimension
Syntaxe :
nom tableau(l ) (c ) exemple : t( 2) (3 )
3- Parcourt d’un tableau à deux dimensions
Pour parcourir un tableau deux dimensions il faut utiliser deux boucle :
La première boucle parcourt les lignes et la deuxième parcourt les colonnes ou la première parcourt
les colonnes et la deuxième les lignes.
Exemple
Ecrire un algorithme permettant de saisie la moyenne de 120 étudiants en utilisant le tableau à 2
dimensions.
II-
MODULE ALGORITHME
15
II- Enregistrement
Un enregistrement est une structure de donne pouvant contenir éléments de type diffèrent. Ces
éléments peuvent être des entiers, des réels, des caractères, des chaines de caractères, des
booléens, des tableaux, et même des enregistrements.
1- Création d’un enregistrement
Type
Nom (de l’enregistrement) = enregistrement
Champ 1 : type
|
|
Champ 1 : type
2- Déclaration d’une variable de type enregistrement
Syntaxe :
3- Accès aux champs d’enregistrement
Pour accéder aux d’un enregistrement on utilise la notation pointée
Syntaxe :
Nomvariable=nomchamps
Exemple
Lire(et.nom)
matricule←et.mat
âge←40_et.age
et.classe←’’licence3SI’’
écrire (et.nom)
Exo de maison
On désir gérer une de 70 articles. Chaque article est caractérisé par son code, sa désignation, son prix
unitaire et sa quantité stock. Les actions à réaliser sur la liste sont les suivantes :
- Ajouter un article à la liste
- Rechercher un article par rapport à son code afin de modifier sa quantité et son prix unitaire
ou le supprimer de la liste.
- Déterminer l’article le plus cher
- Déterminé l’article le moins cher
- Déterminer la valeur globale du stock
MODULE ALGORITHME
16
CHAPITRE IV : les sous-programmes
I- Définitions
Un sous-programme est une fonction ou procédure qui sera utilisé par un programme
appelant.
Une fonction est un ensemble d’instructions retournant un résultat.
Une procédure est une fonction qui ne retourne pas de résultat.
II- Intérêt
Les sous-programmes sont très utiles lorsqu’un problème dans sa résolution est volumineux et
nécessite plusieurs taches. Chaque tache correspondra soit à une fonction soit à une procédure.
III- la démarche de l’approche sous-programme ou procédurale
Etape 1 : définition des étapes
Il s’agit de définir les différentes tâches à réaliser dans notre programme
Tâche : Description de la tâche
Fonction nomfonction (……) : type
Tâche n : Description
Procédure nomprocédure
Etape 2 : définition des données
Données en entrée ou antécédent
Données en sortie ou conséquent
Etape 3 : ordonnancement
Il s’agit de définir l’ordre des différentes tâches
Etape 4 : recette ou algorithme des tâches
Etape 5 : synthèse
IV- Structure d’un sous-programme
Un sous-programme est caractérisé par les aspects suivants :
Son nom
Ses arguments, le type de ses arguments et leur mode de transmission
Sa partie déclarative
Son corps (mot clé : début et fin)
MODULE ALGORITHME
17
V- Différence entre fonction et procédure
Une fonction : est un sous-programme permettant d’effectuer ou d’exécuter un ensemble
d’instructions bien spécifiques mais ramenant résultat unique contrairement à la Procédure qui ne
ramène pas de résultat. En effet lorsqu’un sous-programme doit ramener un résultat et que ce résultat
doit être utilisé directement à la suite par le programme, ce sous-programme doit être nécessairement
une fonction dans le cas contraire c’est forcément ne procédure.
Syntaxe d’une fonction
Fonction nom fonction (argument1 : type, argumentn : type) : type retourné
Partie déclarative
Début
Retourne resultat
Fin
Syntaxe d’une procédure
Procédure nom procédure (argument1 : type, argumentn : type)
Partie déclarative
Début
Fin
VI- Argument ou paramètre d’un sous-programme
Les arguments sont les variables externes des sous-programmes et sur lesquels il va agir afin d’avoir
un résultat escompté. Les arguments sont placés juste après le nom du sous-programme.
Il existe 2 types de paramètre ou argument
Les paramètres formels
Ce sont des paramètres qui figurent dans le sous-programme au moment de sa définition. Ils sont fictifs
donc pas besoin de les déclarer dans une quelconque partie déclarative.
Les paramètres effectifs
Ce sont des paramètres qui figurent dans le sous-programme au moment de son appel. Ce sont
généralement les variables déclarées dans la partie déclarative du programme ou le résultat retourne
pas une fonction.
Passage de paramètre
C’est la façon avec laquelle le programme principal échange des données avec les sous-programmes.
Il existe 2 types de passages de paramètre :
MODULE ALGORITHME
18
Passage de paramètre pas valeur
Lorsqu’un paramètre est passé par valeur il peut être modifié dans le sous-programme. Mais lorsque
l’on revient au programme appelant il retrouve sa valeur initiale comme si rien ne s’était passé.
Question : comment passer un paramètre par valeur ?
Réponse : En ne précèdent de rien le nom de variable
Passage de paramètre pas adresse
Lorsqu’un paramètre est passé par adresse, lorsqu’il est modifié dans le sous-programme il est
également même lorsque l’on retourne au programme appelant.
Question : comment passer un paramètre par adresse
Réponse : En précèdent le nom de Var
VII- Variable globale et variable locale
Variable locale : ce sont des variables qui sont déclarées dans la partie déclarative du programme
principal.
Variable locale : ce sont des variables qui sont déclarées dans la partie déclarative des sous-
programmes.
Porté des variables locales et des variables globales
Les variables globales sont utilisables : Partout, dans le programme principal y compris à l’intérieur
des sous-programmes. On dit que leur portée s’étant à tout le programme entier.
Les variables locales sont utilisables : Uniquement dans les sous-programmes ou elles ont été
déclarées, on dit que leur portée se limite au sous-programme.
VIII- Appel d’un sous-programme
Appeler un sous-programme c’est matérialiser l’intention d’exécuter le code qu’il renferme. L’appel
d’une fonction se fait par :
Syntaxe :
Nom variable <--------- nom fonction (arguments s’il existe)
IX- La récursivité d’un sous-programme
Un sous-programme est récursif lorsqu’il peut s’appeler soit même c’est-à-dire qu’il apparait dans sa
propre définition.
Dans un programme récursif il faut toujours préciser la condition d’arrêt sinon le programme ne
s’arrêtera jamais.
NB : c’est dans la partie déclarative du programme principal qu’on déclare les sous-programmes. Le
nombre de sous-programme dans un programme dépend du développeur. Egalement la nature des
MODULE ALGORITHME
19
sous-programmes (fonction et procédure) dépend du développeur même si parfois l’état logique du
programme vous l’impose.
MODULE ALGORITHME
20