Vous êtes sur la page 1sur 41

Centre de Formation Professionnelle CIFORQ

Ecole Privée de Formation Professionnelle en Technologie et


Gestion Numérique

FILIERE TECHNOLOGIE 1

ALGORITHMIQUES

Présenter par :

Michel F. DONOU
Ingénieur Systèmes Informatiques
+229 67 51 13 13 *** michel@mifdo.com

Année 2020 - 2021


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Chapitre 1 : Généralités

Un algorithme est un mode opératoire, un procédé aboutissant à un


résultat. Il fait passer d’un état initial à un état final de façon déterministe. Il
doit respecter les règles suivantes :
- Il est défini sans ambigüité ;
- Il se termine après un nombre fini d’opération ;
- Il doit être effectif : toutes les opérations doivent pouvoir être
effectuées par un homme utilisant des moyens manuels ;
- Il manipule des objets qui doivent être définis de manière très
précise.
Un algorithme est une suite d’actions ordonnées en séquence qui portent
sur les objets d’un univers fini.

I- Préliminaires et instructions élémentaires

A. Présentation Générale d’un algorithme

Un algorithme a un nom, une partie déclaration et est encadré par


les mots clés ‘’Début‘’ et ‘’Fin’’.
L’algorithme doit dialoguer avec son utilisateur, pour cela, le
concepteur de l’algorithme doit envoyer des messages par le mot
‘’Afficher’’ et doit récupérer des données par le mot clé ‘’Saisir’’.
Il se présente comme suit :

Algorithme : Nom_Algo
Déclaration
Début
Afficher (‘’Messages’’)
Saisir (Données)
Instructions
.
Afficher(Résultat)
Fin

B. Les variables informatiques


Une variable informatique est un espace mémoire ou emplacement
mémoire pouvant contenir des données (informations).
La variable s’efface (c’est-à-dire l’initialise) lorsqu’on finit de l’utiliser.
On distingue plusieurs types de variables :

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 1


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

 Entier
Ex : Qté, PrixUnitaire.
 Réel
Ex : Taux, Moyenne

 Chaîne de caractère
Ex : Nom, Prénom.

 Booléen
Ex : Vrai ou Faux ; 1 ou 0 ; O ou N ; Oui ou Non

 Date (JJ/MM/AAAA)
Ex : DateNais.

NB : Nous utiliserons les opérateurs arithmétiques et trigonométriques. Pour


les opérations les plus courantes, nous notons :
+ : addition
- : soustraction
* : multiplication
/ : division
^ : élévation à la puissance
DIV : la division entière
MOD : le reste d’une division
ENT : la partie entière d’un réel

C. Instructions élémentaires : la structure linéaire.

La structure algorithmique linéaire est une structure sans conditions.


C’est alors une succession d’opérations aboutissant à un résultat.

Syntaxe
Algorithme : Nom_Algo
Déclaration
Début
Afficher (‘’Messages’’)
Saisir (Données)
Instructions

Afficher (Résultat)
Fin

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 2


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Application 1 :
Ecrire un algorithme qui calcule et affiche l’intérêt perçu sur un capital
placé

Algorithme : Intérêt
Déclaration : n : Entier
I, C, t : Réels
Début
Afficher (‘’Entrer le capital, le taux et la durée de placement’’)
Saisir (C, t, n)
I ← (C*t*n)/36000
Afficher (‘’L’intérêt de ce capital est :’’, I)
Fin

Application 2 :
Ecrire l’algorithme qui calcule le net à payer TTC d’un achat.

Algorithme : Net_à_payer
Déclaration : Qté, PU, MHT : Entiers
NapTTC, TVA : Réels
Début
Afficher (‘’Entrer la quantité et le prix unitaire de l’achat’’)
Saisir (Qté, PU)
MHT ← Qté*PU
TVA ← MHT*0, 18
NapTTC ← MHT+TVA
Afficher (NapTTC)
Fin

Application 3 :
Ecrire l’algorithme qui calcule la surface du trapèze

Algorithme : Surface_du_trapèze
Déclaration : S, B, b, h : Réels
Début
Afficher (‘’Entrer les longueurs de la grande base, de la petite base et de
la hauteur’’)
Saisir (B, b, h)
S ← ((B+b)*h)/2
Afficher (S)
Fin

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 3


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

II. La structure conditionnelle

La structure conditionnelle (alternative) s’utilise en présence d’une


condition. Si la condition est respectée alors, on effectue un traitement (on
peut en faire plusieurs) ; au cas où la condition n’est pas respectée, il peut
y avoir d’autres traitements également.

A. La structure alternative simple


Sa syntaxe est :
Si (Condition) Alors
Action 1
Sinon
Action 2
FinSi
Application : Ecrire un algorithme qui calcule la valeur absolue de la
différence de deux nombres entiers saisis au clavier.

Algorithme : Valeur_absolue
Déclaration :
a, b, V : Entiers
Début
Afficher (‘’Entrer les deux nombres’’)
Saisir (a, b)
Si (a < b) Alors
V← b-a
Sinon
V←a-b
FinSi
Afficher (V)
Fin

Application :
La société AGOVIVI est spécialisée dans l’organisation des fêtes. Pour
inciter la population a toujours solliciter ses services, elle octroie des
réductions sur chaque article en tenant compte du nombre d’articles
loués. En effet, la réduction est de 10% du montant brut si le nombre
d’articles loués dépasse 200.
Ecrire un algorithme permettant de calculer la remise.

Algorithme : Remise
Déclaration : n, Pu : Entiers
R : Réels

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 4


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Début
Afficher (‘’Entrer le nombre d’articles et le prix unitaire)
Saisir (Nbr, Pu)
Si (Nbr>200) Alors
R ← Nbr * Pu * 0,1
Sinon
R←0
FinSi
Afficher(R)
Fin

B. La structure alternative imbriquée

On peut utiliser un ‘’SI’’ après le ‘’ALORS’’ d’un ‘’SI’’ et/ou après le


‘’SINON’’ d’un ‘’Si’’.

Application :
Ecrire l’algorithme permettant de résoudre l’équation ax 2 + bx + c = 0

Algorithme : Equation
Déclaration :
a, b, c : Réels
Début
Afficher (‘’Entrer les valeurs de a, b et c’’)
Saisir (a, b, c)
Si (a=0) Alors
Si (b=0) Alors
Si (c=0) Alors
Afficher (‘’L’ensemble solution est Ø’’)
Sinon
Afficher (‘’L’ensemble solution est IR’’)
FinSi
Sinon
Afficher (‘’La solution est : ’’ – c/b)
FinSi
Sinon
Si (b=0) Alors
Si (c=0) Alors
Afficher (‘’La solution est :’’ 0)
Sinon
Si (c<0 et a>0) ou (c>0 et a<0) Alors
Afficher (‘’Les solutions sont :’’(-c/a) ^ (1/2), ‘’ et ‘’, -((-c/a) ^ (1/2))
Sinon
1 2 3 4 5
« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 5
Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

1 2 3 4 5
Afficher (‘’Pas de solutions réelles’’)
FinSi
FinSi
Sinon
Si (c=0) Alors
Afficher (‘’Les solutions sont :’’, 0, ‘’et ‘’, -b/a)
Sinon
Delta = (b^2)-(4*a*c)
Si (Delta=0)
Afficher (-b / (2*a))
Sinon
Si (Delta <0) Alors
Afficher (‘’Pas de solutions réelles’’)
Sinon
Afficher (‘’Les solutions sont : ‘’, (-b-(Delta^ (1/2)))/ (2*a),
‘’ et ‘’, (-b+ (Delta^ (1/2))) / (2*a))
FinSi
FinSi
FinSi
FinSi
FinSi
Fin

III. La structure Itérative

Tant que (condition) Faire


<Action>
FinTantque

La condition exprimée après l’instruction ‘’Tantque’’ permet


l’exécution de l’action définie.
Pour l’exprimer, nous remarquons qu’il est souvent plus aisé de
rechercher la condition d’arrêt du traitement. Nous prenons alors la
proposition contraire. Nous utilisons une structure itérative lorsque l’action
peut être exécutée 0 à N fois. Autrement dit, lorsqu’il n’est pas exclu que
les évènements décrits se produisent 0 fois.

Application
Ecrire l’algorithme permettant d’afficher à l’écran une suite de noms saisie
au clavier. On s’intéresse également à compter le nombre de noms
affichés.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 6


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Algorithme : Suite_de_noms
Déclarations :
N : entier
Nom : chaîne de caractères
Début
Afficher (‘’Entrer le nom’’)
Saisir (Nom)
N←0
Tantque (Nom<> ‘’Toto‘’) Faire
Afficher (Nom)
N ← N+1
Afficher (‘’Entrer un nouveau nom ou Toto pour arrêt ’’)
Saisir (nom)
FinTantque
Afficher (‘’Le nombre total de noms est :’’, N)
Fin

Application
Ecrire un algorithme qui permet de calculer le factoriel d’un nombre

Algorithme : Factoriel
Déclaration :
N, F : entiers
Début
Afficher (‘’Entrer le nombre’’)
Saisir (N)
Si (N=0) Alors
Afficher (‘’Factoriel n donne :’’, 1)
Sinon
F←1
Tantque (n>=1) Faire
F← F * N
N ← N-1
FinTantque
Afficher (‘’Factoriel de n donne :’’, F)
FinSi
Fin

III. La structure répétitive


Répéter
<Actions>
Jusqu’à (condition)
« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 7
Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Cette structure permet la répétition d’une suite d’actions jusqu’à ce


qu’une condition soit vérifiée.
Elle ressemble à la structure itérative, à cette différence près que la
condition exprimée permet l’arrêt du traitement. De plus, elle n’est testée
qu’après une première exécution de l’action définie. Les instructions sont
exécutées au moins une fois. La condition étant évaluée en fin de boucle,
la structure répétitive ne nécessite pas, comme la structure itérative, une
action préalable au test hors de la boucle.

Application
Ecrire un algorithme permettant de calculer l’âge d’une personne à
partir de son année de naissance. Nous recommençons autant de fois que
l'utilisateur le désire.

Algorithme : Âge
Déclaration :
An, Age : entiers
Rep : caractère
Début
Répéter
Afficher (‘’Entrer l’année de naissance’’)
Saisir (An)
Age Year (DateSystème) - An
Afficher (‘’Votre âge est :’’, Age)
Afficher (‘’Voulez-vous recommencer O/N’’)
Saisir(Rep)
Jusqu’à (Rep=N)
Fin

Exercice :
Ecrire un algorithme qui permet de calculer le PGCD de deux
nombres

Algorithme : PGCD
Déclaration :
a, b, r : entiers
Début
Afficher (‘’Entrer les valeurs de a et b’’)
Saisir (a, b)
r ← a Mod b
Si(r=0) Alors
Afficher (‘’Le PGCD est :’’, b)

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 8


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Sinon
Tant que (r>0) Faire
a←b
b←r
r ← a Mod b
FinTantque
Afficher (‘’Le PGCD des deux nombres est : ’’, b)
FinSi
Fin

IV. La boucle POUR

Pour i ← <val initiale> à <val finale> pas de <incrémentation ou


décrémentation>
<Actions>
FinPour

Cette structure permet de répéter une action un nombre connu de


fois. L’incrément est la valeur d’augmentation progressive de
l’identification. Sa valeur par défaut est 1.
En réalité, la structure POUR est une simplification de la structure ‘’Tant
que’’

Application
Ecrire un algorithme qui affiche les 9 tables de multiplication.

Algorithme : Table_de_multiplication
Déclaration :
i, y : entiers
Début
Pour i ← 1 à 9 Faire
Afficher (‘’Table de : ‘’, i)
Pour j ← 0 à 9 Faire
Afficher (i, ‘’*’’, j , ‘’=’’, i * j)
FinPour
FinPour
Fin

Exercice 1 :
Ecrire un algorithme qui construit les figures ci-après :
1°)

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 9


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

*
* *
* * *
* * * *
* * * * *

2°)
* * *
* * * *
* * * * *

Solution :
1°)
Algorithme : Triangle_rectangle
Déclaration
i, j, N : entiers
Début
Afficher (‘’Entrer le nombre de lignes’’)
Saisir (N)
Pour i ← 1 à N Faire
Pour j ← 1 à i Faire
Afficher (‘’*’’)
FinPour
Aller à la ligne
FinPour
Fin

2°)
Algorithme : Trapèze
Déclaration
i, j, N : entiers
Début
Afficher (‘’Entrer le nombre de lignes’’)
Saisir (N)
Pour i ← 1 à n Faire
Pour j ← 1 à i + 2 Faire
Afficher (‘’*’’)
FinPour
Aller à la ligne
FinPour
Fin
« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 10
Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

V. La structure de choix

Suivant <variable ou expression> Faire


<Valeur 1> : <action 1>
<Valeur 2> : <action 2>

<Valeur n> : <action n>


Sinon : <action par défaut>
FinSuivant

La variable (ou l’évaluation de l’expression) est comparée aux


différentes constantes (valeur 1 à valeur n) et les actions entreprises
dépendent de cette valeur. Nous disposons d’une action par défaut pour
le cas où la variable n’est égale à aucune des constantes énumérées.
Application
A partir d’un menu affiché à l’écran, effectuez la somme, le produit ou la
moyenne de trois nombres.

Algorithme
Déclaration :
Num : entier
n1, n2, n3 : réels
Début
Afficher (‘’1 : Addition’’)
Afficher (‘’2 : Produit’’)
Afficher (‘’3 : Moyenne’’)
Afficher (‘’Choisir une opération en tapant le numéro correspondant’’)
Saisir (Num)
Afficher (‘’Entrer les trois nombres’’)
Saisir (n1, n2, n3)
Suivant Num Faire
1 : Somme ← n1+n2+n3
Afficher (‘’La somme des trois nombres est :’’, Somme)
2 : Produit ← n1 * n2 * n3
Afficher (‘’Le produit des trois nombres est :’’, Produit)
3 : Moyenne ← (n1 + n2 + n3)/3
Afficher (‘’La moyenne des trois nombres est :’’, Moyenne)
Sinon
Afficher (‘’Pas d’opération’’)
FinSuivant
Fin
« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 11
Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Chapitre 2 : Les Tableaux

I- Les tableaux à une dimension

1. Définition
Encore appelé vecteur, c’est un ensemble de valeurs ayant le même
type. Si par exemple, T est un tableau de 10 variables, alors chacune d'elles
sera numéroté et il sera possible de la retrouver en utilisant simultanément
le nom du tableau et l'indice de la variable. Les différentes variables de T
porteront des numéros de 1 à 10, et nous appellerons chacune de ces
variables un élément de T.
Ex : Voyelles
I O A U E Y
1 2 3 4 5 6 Les indices

Le tableau a un nom qui est ici Voyelles


Chaque élément du tableau est défini par son indice ou son rang
Ex :I=Voyelles [1]
O=Voyelles [2]
…………
Y=Voyelles [6]
Remarque:
On ne peut accéder à un élément ne se situant pas dans le tableau.
C’est-à-dire dont le rang est supérieur à la valeur maximale du tableau.
Ex : voyelles [7] n’existe pas

2. Déclaration d’un vecteur


 Const Min = 1
Max=N
Var NomTab : Tableau [1 , N] de type
 Const Min = 1
Max = N
TYPE NOMTAB : tableau [1..N] de type-élément
Ex : voyelles : tableau [1..6] de caractères

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 12


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

3. Création d’un tableau à une dimension

Pour i ← 1 à N Faire
Saisir (NOMTAB [i])
FinPour

Ex 1 :
Pour i← 1 à 6 Faire
Saisir (Voyelles [i])
FinPour

Ex 2 :
Pour i ← 1 à 6 Faire
Afficher (‘’Entrer Voyelles [’’,i,’’]=’’)
Saisir (Voyelles [i])
FinPour

4. Lecture d’un tableau ou affichage des éléments


Pour i← 1 à N Faire
Afficher (NOMTAB [i])
FinPour
Ex :
Pour i ← 1 à 6 Faire
Afficher (‘’Voyelles [’’,i,’’] =’’, Voyelles [i])
FinPour
Le résultat est
Voyelles [1] = i
Voyelles [2] = 0
Voyelles [3] = a
Voyelles [4] = u
Voyelles [5] = e
Voyelles [6] = y

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 13


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

5. Opération sur les tableaux a une dimension


 Somme des éléments d’un vecteur
 La somme de 2 vecteurs
 Recherche du plus grand élément d’un vecteur
 recherche du plus petit élément d’un vecteur
 Somme des éléments d’un vecteur
 Calcul de la moyenne des éléments d’un vecteur
 Inversion des éléments d’un vecteur

a. Somme des éléments d’un vecteur

Algorithme : Somme
Déclaration :
NOMBRE : Tableau [1..N] d’entiers
N, Somme, i : Entiers
Début
Afficher (‘’Entrer le nombre d’éléments)
Saisir (N)
Pour i ←1 à N Faire
Afficher (‘’Entrer NOMBRE [’’,i,’’]=’’)
Saisir (NOMBRE [i])
FinPour
//Calcul de la somme des éléments
Somme ← 0 ;
Pour i 1 à N Faire
Somme ← Somme + NOMBRE [i] ;
FinPour
Afficher (‘’La somme des éléments est : ‘’, Somme)
Fin

b. La somme de 2 vecteurs

Algorithme : Somme
Déclaration :
Nombre : Tableau [1..N] d’entiers
Nombre1, Nombre2, Nombre3 : Nombre
N, i : Entiers
Début
Afficher (‘’Entrer le nombre d’éléments’’)
Saisir (N)

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 14


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Pour i ← 1 à N Faire
Afficher (‘’Entrer NOMBRE1 [’’,i,’’]=’’)
Saisir (Nombre1 [i])
FinPour
Pour i ← 1 à N Faire
Afficher (‘’Entrer NOMBRE2 [‘,i’,]=’’)
Saisir (Nombre2 [i])
FinPour
//Calcul de la somme des 2 vecteurs
Somme ← 0
Pour i ← 1 à N Faire
Nombre3 [i] ← Nombre1 [i] + Nombre2 [i]
FinPour
//Affichage de résultats
Pour i ← 1 à N Faire
Afficher (‘’NOMBRE3 [’’,i,’’] = ‘’,NOMBRE3 [i])
FinPour
Fin

c. Recherche du plus grand élément d’un vecteur

Algorithme : Maximum
Déclaration
NOTE : Tableau [1..N] d’entiers
N, i, NoteMax : entiers
Début
Afficher (‘’Entrer le nombre de note’’)
Saisir (N)
Pour i ← 1 à N Faire
Afficher (‘’Entrer la NOTE [’’,i,’’]=’’)
Saisir (NOTE [i])
FinPour
//Recherche du maximun
NoteMax ← NOTE [1]
Pour i ← 2 à N Faire
Si NOTE [i] > NoteMax Alors
NoteMax ← NOTE [i]
FinSi
FinPour
Afficher (‘’La valeur maximale des notes est :’’, NoteMax)
FIN
« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 15
Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

d. Recherche du plus petit élément d’un vecteur

Algorithme : Minimum
Déclaration
NOTE : Tableau [1..N] d’entiers
N, i, NoteMin: entiers
Début
Afficher (‘’Entrer le nombre de note’’)
Saisir (N)
Pour i ← 1 à N Faire
Afficher (‘’Entrer la NOTE [’’,i,’’] =’’)
Saisir (NOTE [i])
FinPour
//Recherche du minimum
NoteMin ← NOTE [1]
Pour i ← 2 à N Faire
Si NOTE [i] < NoteMin Alors
NoteMin ← NOTE [i]
FinSi
FinPour
Afficher (‘’La valeur maximale des notes est :’’, NoteMin)
FIN

e. Inversion des éléments d’un vecteur

Algorithme : Inversion
Déclaration :
NOTE : tableau [1..N] d’entier
N, i, Inv : Entiers
Début
Afficher (‘’Entrer le nombre de note’’)
Saisir (N)
Pour i ← 1 à N Faire
Afficher (‘’Entrer la NOTE [’’,i,’’] =’’)
Saisir (NOTE [i])
FinPour
//Inversion (permutation 2 à 2 des éléments du même tableau)
Pour i ← 1 à ent (N/2) Faire
Inv← Note [i] ;
NOTE [i]← NOTE [N-i +1]
NOTE [N-i+1]← Inv
FinPour
« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 16
Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Afficher (‘’L’inverse du tableau est : ‘’)


Pour i ←1 à N Faire
Afficher (‘’NOTE [’’,i,’’] =’’, NOTE[i])
FinPour
FIN

II. Tri d’un tableau

Un tableau est ordonné lorsqu’il existe une relation d’ordre entre le


contenu de ses différentes cases. Nous parlons de :
 Tri croissant si le contenu de la case d’indice I est inférieur ou
égale au continu de la case I +1.
 Tri décroissant si le contenu de la case est d’indice I est
supérieur ou égale au continu de la case I +1.
Plusieurs méthodes de tri existent. Nous allons étudier les principales.
Pour tous ces exercices, nous nous basons sur un tableau de 30 valeurs
numériques ValNum.

A. Tri croissant par recherche successive des minima.

Méthode
Le principe est le suivant :
 Recherche du minimum dans le tableau de 30 valeurs et échange
du contenu des cases d’indice 1 et d’indice correspondant à la
valeur du minimum.
 Application du même principe sur 29 valeurs (30 – premier), puis 28,
puis 27, …. Jusqu’au traitement d’un tableau de deux cases.

Visualisation du traitement sur 4 valeurs :

8 1 7 5
Tableau initial

après le premier passage : 4 valeurs : case 1à 4 1 8 7 5


minimum 1 indice 2 échange des cases 1 et 2

après le second passage : 3 valeurs : case 2 à 4 1 5 7 8


minimum 5 indice 4 échange des cases 2 et 4

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 17


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

1 5 7 8
après le troisième passage : 2 valeurs : case 3 à 4
minimum 7 indice 3 échange des cases 3 et 3

L’algorithme :

Algorithme : TriMinimum
Déclaration
ValNum : Tableau [1 : 30] d’entiers
IndRech, IndVal, IndMin, Inter, i : entiers
Début
Pour i ← 1 à 30 Faire
Saisir (ValNum[i])
FinPour
//Boucle de traitement
Pour IndVal ← 1 à 29 Faire
//recherche du minimum dans un tableau de 30 – IndVal + 1 éléments
IndMin ← IndVal
Pour IndRech ← IndVal +1 à 30 Faire
Si ValNum(IndRech) < ValNum(IndMin) Alors
IndMin ← IndRech
FinSi
FinPour
//échange des cases d’indices IndVal et IndMin
Si IndVal <> IndMin Alors
Inter ← ValNum(IndVal)
ValNum(IndVal) ← ValNum(IndMin)
ValNum(IndMin)← Inter
FinSi
FinPour
FIN

Remarque :
La connaissance de l’indice de la valeur minimum (IndMin) est suffisante.
Nous pouvons très facilement retrouver le contenu de la case du tableau
à partir de son indice, ce qui n’est pas réciproque.
Pour échanger le contenu de deux variables nous devons utiliser une
variable intermédiaire. En effet, pour échanger le contenu de A et de B,
l’affectation de A dans B ou de B dans A nous fait perdre respectivement
la valeur de B ou de A.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 18


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

B. Tri croissant par recherche successive des maxima.

Méthode
Le principe sera le même que précédemment, mais en recherchant le
maximum, que nous mettrons cette fois-ci à la dernière position du tableau.

Algorithme : TriMaximum
Déclaration
ValNum : Tableau [1 : 30] d’entiers
IndRech, IndVal, IndMax, Inter, i : entiers
Début
Pour i ← 1 à 30 Faire
Saisir (ValNum[i])
FinPour
//Boucle de traitement
Pour IndVal ← 30 à 2 Pas -1 Faire
//recherche du maximum dans un tableau de IndVal éléments
IndMax ← IndVal
Pour IndRech ← 1 à IndVal – 1 Faire
Si ValNum(IndRech) > ValNum(IndMax) Alors
IndMax ← IndRech
FinSi
FinPour
//échange des cases d’indices IndVal et IndMin
Si IndVal <> IndMax Alors
Inter ← ValNum(IndVal)
ValNum(IndVal) ← ValNum(IndMax)
ValNum(IndMax)← Inter
FinSi
FinPour
FIN

C. Tri Bulle.

Nous parcourons le tableau en comparant les éléments consécutifs. S’ils


sont mal ordonnés, nous les échangeons. Nous recommençons jusqu’à ce
qu’il n’y ait plus d’échange.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 19


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Exemple :
Soit à trier 5 18 14 4 26
1er parcours 5 18 14 4 26
2e parcours 5 14 18 4 26
3e parcours 5 14 4 18 26
4e parcours 5 4 14 18 26
4 5 14 18 26

Comme nous n’avons procédé à aucun échange, nous avons terminé.

Méthode
Nous comparons les éléments deux à deux, et nous affectons une variable
booléenne à vraie si nous procédons à un échange. La condition d’arrêt
du traitement est que la variable booléenne soit restée à faux.

Algorithme : Bulle
Déclaration
ValNum : Tableau [1 : 30] d’entiers
Inter, i : entiers
Echange : booléen
Début
Pour i ← 1 à 30 Faire
Saisir (ValNum[i])
FinPour
Répéter
//initialisation du booléen
Echange ← faux ;
//Boucle de recherche des échanges
Pour i ← 1 à 29 Faire
Si ValNum(i) > ValNum(i+1) Alors
Inter ← ValNum(i)
ValNum(i) ← ValNum(i+1)
ValNum(i+1) ← Inter
Echange ← Vrai
FinSi
FinPour
Jusqu’à non échange.
FIN

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 20


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

III. Les tableaux à 2 dimensions

1. Définition
Lorsqu’un traitement utilise plusieurs tableaux à une dimension
subissant un même traitement, on utilise un seul tableau à 2 dimensions.
Cette nouvelle forme de tableau possède un identifiant unique. Chaque
élément est identifié par 2 indices: l’un indiquant la ligne et l’autre la
colonne.

2. Déclaration
Var « Nom du tableau » : tableau [1..N ,1..M] de type
Ex: Mat : tableau [1..10, 1..5] d’entiers
Ex : Soit le tableau suivant

Mat : tableau [1...2, 1..5] de caractères


1 2 3 4 5
Colonne
Ligne
1 e n o y q

2 k a f z m

e = Mat[1,1]
n = Mat[1,2]
o = Mat[1,3]
y = Mat[1,4]
q = Mat[1,5]
k = Mat[2,1]
a = Mat[2,2]
f = Mat[2,3]
z = Mat[2,4]
m= Mat[2,5]

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 21


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

3. Création ou remplissage d’un tableau à deux dimensions


Pour i ← 1 à N Faire
Pour j ← 1 à M Faire
Afficher (‘’NOMTAB [‘‘, i, j,’’]=’’)
Saisir (NOMTAB [i, j])
FinPour
FinPour

4. Affichage des éléments d’un tableau à deux dimensions


Pour i ← 1 à N Faire
Pour j ← 1 à M Faire
Afficher (NOMTAB [i, j]))
FinPour
FinPour

Application
Considérons le tableau à deux dimensions, contenant pour chaque
élève de la classe, ses moyennes dans chacune des 10 matières qui lui sont
enseignées. Les noms des élèves et ceux de chacune des 10 matières sont
stockés dans des tableaux à une dimension.

Illustration :

Matières Droit Math Algorithme …….


Elèves
BOSSA Jean Moyenne 08 14 12
DAH Garou 10 11 13
BIO 07 15 14
Ousmane
…. … …. ….

Ecrire un algorithme permettant l’édition du récapitulatif des


moyennes par matière de chaque élèves de la classe.

Algorithme : Moyennes
n, i, j, som : Entiers
Matière [1..10] , Etudiant [1..n] : Tableaux de chaine de caractères
Note [1..n, 1..10] : Tableau d’entiers
Moy [1..n] : Tableau de réels

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 22


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Début
Afficher (‘’Entrer le nombre d’étudiant’’)
Saisir (n)
Pour i← 1 à 10 Faire
Afficher (‘’Entrer le nom de la matière :’’,i)
Saisir (Matière [ i ])
Fin Pour
Pour j← 1 à n Faire
Afficher (‘’Entrer le nom de l’étudiant’’, j)
Saisir (Etudiant [ j ])
Fin Pour
Pour j←1 à n Faire
som← 0 ;
Pour i← 1 à 10 Faire
Afficher (‘’Entrer la note de :’’, Etudiant [ j ], ‘’pour la matière :’’,
Matière [ i ])
Saisir (Note [ j, i ])
som← som+ Note [ j, i ]
Fin Pour
Moy [ j ]← som/10
Fin Pour
Pour j← 1 à n Faire
Afficher (‘’La moyenne de :’’, Etudiant [ j ], ‘’est : ‘’, Moy [ j ])
Fin Pour
Fin

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 23


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Chapitre 3 : LES SOUS-PROGRAMMES

I. Introduction
Un sous-programme est un sous algorithme utilisé par des algorithmes
principaux et qui fournit un ou plusieurs résultats (contrairement à une
fonction qui ne peut fournir qu’un résultat) à partir d’un paramètre ou des
paramètres.
Les procédures permettent de considérer l’algorithme comme étant
composé de plusieurs parties appelées sous algorithme, celles-ci étant elles
aussi des algorithmes et pouvant être décomposées à leur tour.
Les fonctions et les procédures sont des algorithmes indépendants de
ceux qui les utilisent (contrairement au module).
Les fonctions et les procédures sont utilisées pour divers intérêts :
 Lorsque dans la résolution d’un problème, on est amené à résoudre
plusieurs fois le même problème.
 Partage du travail : Dans l’écriture de très gros programmes, il est
préférable de décomposer le travail en plusieurs entités cohérentes,
chacune réalisant une ou plusieurs fonctions bien déterminées.
 Décomposer un algorithme en sous algorithme permettant de donner à
celui-ci une grande lisibilité.
 On crée aussi une procédure quand la portée du sous algorithme
correspondant dépasse le cadre de l’algorithme en cours. On peut
isoler cette procédure et la conserver dans une bibliothèque pour la
réutiliser dans un autre programme.
Chaque procédure peut-être décomposée en sous-procédure. Ainsi, elles
peuvent s’emboîter les unes dans les autres en formant une structure
arborescente.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 24


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

II. Définition
L’utilisation des procédures et fonctions est liées au langage de
programmation.
a. Procédure interne
Une procédure est dite interne si elle est traduite c’est-à-dire compilée
ou interprétée en même temps que le programme qui l’utilise.
b. Procédure externe
Contrairement à la procédure interne, celle-ci est traduite
séparément du programme qui l’utilise.
c. Fonction
Une fonction dite encore procédure fonction est une procédure à un
seul résultat. Nous devons distinguer les fonctions standards ou
(intrinsèques) mis à la disposition des programmeurs par la plupart des
langages de programmation qui leur sont propres des fonctions
procédures définies par le programmeur et qui peuvent être utilisées dans
divers algorithmes.

Quelques fonctions standards


ABS(X) fournit la valeur absolue de l’argument X.
SGN(X) donne le signe de l’argument X.
SGN(X) prend les valeurs suivantes :
1 si X est positif
0 si X est nul
-1 si X est négatif
SQRT(X) fournit la racine carrée de X avec X >= 0
COS(X) fournit le cosinus de X, X est en radian.
SIN(X) fournit le sinus de X, X est en radian.
EXP(X) fournit l’exponentielle de X, X ϵ IR
Log(X) ou Ln(X) fournit le logarithme népérien (base e)

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 25


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Int(X) donne la partie entière de X


Round(X) donne l’arrondi de X
RND(X) fournit un nombre aléatoire compris entre 0 et 1
X Mod Y donne le reste de la division de X par Y.

La liste des fonctions standards est limitée à des classiques. Cette liste
limitée ne permet pas toujours au programmeur de retrouver les valeurs des
différentes expressions qu’il est appelé à utiliser dans ses programmes, d’où
il fait recourt à ses propres définitions de fonctions.

III. Utilisation d’une procédure et d’une fonction

Une procédure ou une fonction est tout comme un programme. Elle


comporte :
 Une partie identification (nom du sous- programme)
 Une partie déclaration des variables
 Une partie des instructions qui constituent la procédure elle-même
 Un début et une fin matérialisée par un retour à l’instruction suivante
du programme principal et les mots fin du nom de la procédure. Elle
peut éventuellement faire appel à d’autres procédures et fonctions.

a- Déclaration d’une variable


D’une manière générale, une procédure est un algorithme qui à
partir des données, calcule les résultats.
Dans la déclaration d’une procédure, il faut préciser :
 Le nom de la procédure
 Les données utilisées par la procédure
 Le résultat à fournir par la procédure
 Le corps de la procédure

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 26


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Sa syntaxe est :
PROCEDURE < nom de la procédure > (liste des variables)
DEBUT < nom de la procédure >
Corps de la procédure (ensemble des instructions)
FIN < nom de la procédure >

Liste de variables : Elle est la liste des paramètres formels avec leur type. S’il
y a plusieurs variables, celles-ci sont séparées par des virgules.

Exemple :

PROCEDURE TATA (E1, [E2,…En] type : entier ; R1, [R2,…Rn] type : réel)
DEBUT TATA
Corps de TATA (ensemble des instructions constituant TATA)
FIN TATA

NB : E1, E2,…En ; R1, R2,…Rn sont les paramètres ou variables formelles de


la procédure TATA.

Exercice 1 : Ecrire une procédure permettant de rechercher le plus grand


de deux nombres entiers X et Y.
Solution :

PROCEDURE Rechercher (X, Y : entier, PLUS_GRAND : entier)


DEBUT Rechercher
Si X > Y Alors
PLUS_GRAND = X
Sinon
PLUS_GRAND = Y
Fin Si
FIN Rechercher

Remarques : La notion de procédure comporte deux aspects essentiels :


 La définition de la procédure appelée : Déclaration de la procédure
placée en tête du programme principal directement après la
déclaration des variables et qui décrit le traitement effectué par la
procédure.
 Utilisation de la procédure appelée : Appel de la procédure qui se
situe dans le bloc de l’algorithme principal.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 27


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

b- Activation d’une procédure


Une procédure est écrite pour être utilisée dans divers programmes
où elle présente un intérêt ou même d’autres procédures. Elle est exécutée
là où elle est appelée. C’est l’activation ou appel de la procédure.
Sa syntaxe est :
Programme principal (PP)
Déclaration des variables
//Déclaration des procédures
PROCEDURE RechercheMax (X, Y, Z : type)
DEBUT RechercheMax
Déclarations
// Corps des instructions de RechercheMax
FIN RechercheMax
DEBUT //Suite du PP
Instructions
//Activation procédure
RechercheMax (A, B, C )
Afficher(C)
FIN Programme Principal
NB :
A et B sont des données effectives
C est le résultat effectif
Ce sont des paramètres effectifs
X, Y sont des données formelles ; Z est le résultat formel
Ce sont des paramètres formels

A l’appel de la procédure, chaque paramètre formel est remplacé


par un paramètre effectif et ceci dans l’ordre de leur apparition.

Exercice 2 : Ecrire un algorithme qui en entrée accepte deux nombres X et


Y et qui les permute si X > Y avant de les imprimer. Il est demandé d’utiliser
un sous algorithme de rangement de X et Y.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 28


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

ALGORITHME : Permute
Var T, H : entier
PROCEDURE Range (X, Y : entier)
Var Z : entier
DEBUT Range
Si X > Y Alors
Z=X
X=Y
Y=Z
Fin Si
FIN Range
DEBUT PP
Saisir (T, H)
Range (T, H)
Afficher(T, H)
FIN PP

Exercice 3 : Ecrire une procédure (sous-algorithme) qui accepte en entrée


trois(3) valeurs entières et qui fournit en sortie ces trois (3) même rangées
par ordre croissant.

Solution :
PROCEDURE Dispose (T, H, P : entier)
DEBUT Dispose
PROCEDURE Range (X, Y : entier)
Var Z : entier
DEBUT Range
Si X > Y Alors
Z=X
X=Y
Y=Z
Fin Si
FIN Range
//Traitement Dispose
Saisir (T, H, P)
Range (T, H)
Range (T, P)
Range (H, P)
Afficher (T, H, P)
FIN Dispose

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 29


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

c. Déclaration d’une fonction


Pour déclarer une fonction, on commence par FONCTION suivi du
nom de la fonction.
Sa syntaxe est :
FONCTION <nom de la fonction> (X, [Y…] : type) : type

Exemple : FONCTION RACLUB (X : Réel) : Réel


- RACLUB est le nom de la fonction
- X est le nom de la variable ou paramètre
- Le premier réel X est le type du paramètre
- Le deuxième réel est le type de la fonction ou résultat

La déclaration de la fonction est identique à celle de la procédure à


la seule exception que la fonction a un type alors que la procédure n’en a
pas.
D’autre part, la fonction ne peut fournir qu’un résultat.

d. Activation d’une fonction


Tout comme dans le cas d’une procédure, l’activation d’une
fonction est l’appel de la fonction dans le bloc d’un programme principal
d’une fonction ou d’une procédure ou d’une autre fonction.
A l’appel de la fonction, il y a passage ou recopie de la valeur d’un
paramètre effectif dans le paramètre formel.
A la fin de l’exécution de la fonction, le résultat est rangé dans la variable
désignant le nom de la fonction. Ce résultat sera récupéré dans la variable
résultat du programme principal par une opération d’affectation.

Exemple :
Algorithme
Var M, N, P : réel

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 30


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Const Z = 2
Vect (tab [1..Z] : réel)

FONCTION RACUB (X : réel) : réel


DEBUT RACUB
// Corps de RACUB
FIN RACUB
Début PP
Saisir (M)
N = RACUB (M)
Saisir (M)
P = RACUB (M)
Afficher (N, P)
FIN PP

IV. Paramètres manipulés par les procédures et les fonctions

Dans les différents que nous avons vu, les noms des variables utilisées
dans la déclaration de la procédure ne sont pas les même que ceux utilisés
dans l’appel.
Une procédure pouvant être utilisée dans plusieurs algorithmes, il faut
dissocier les noms de la déclaration et les noms de l’appel. D’autre part, il
y a des paramètres définis dans l’algorithme principal et ceux définis dans
la procédure.
Les principaux paramètres sont :

a.) Les paramètres formels et les paramètres effectifs


Les paramètres sont formels lors de la déclaration de la procédure ou
fonction.
Les paramètres effectifs sont les noms des objets utilisés par
l’algorithme. Ils sont effectifs lors de l’appel de la procédure ou fonction.

b.) Variables globales et variables locales


Dans une procédure, deux types de variables peuvent être
manipulés.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 31


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

 Variables globales : Elles sont définies dans l’algorithme principal où


elles peuvent bien-sûr être manipulées dans le corps de la procédure
 Variables locales : Elles sont définies dans la partie déclarative de la
procédure. Leur domaine de visibilité se limite strictement au corps
de cette procédure.

c.) Paramètres muets et paramètres variables


Lors de la déclaration d’une procédure ou d’une fonction, il y a deux
façons de définir les paramètres.
 Sans le mot VAR avant l’identificateur (paramètre lui-même), on
parle de paramètres muets ou de paramètres de type valeur.
 Le paramètre est précédé de VAR, on parle de paramètre variable.
Exemple :
PROCEDURE TOTO (X, Y : réel)
DEBUT TOTO
// Corps de TOTO
FIN TOTO

d.) Passage de paramètres


C’est un phénomène qui se produit au moment de l’appel de la
procédure et au moment du retour au programme appelant. Il s’agit de la
transmission des valeurs ou des adresses entre les paramètres du
programme appelé et les paramètres du programme appelant. En effet,
le mécanisme d’appel d’une procédure est différent :
Le programme appelant doit transmettre à la procédure, les
arguments effectifs sur lesquels cette procédure va effectuer ses calculs
(traitements).
A la fin de l’exécution de cette procédure, le programme appelant
passe à l’exécution de l’instruction suivant l’instruction d’appel.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 32


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

La difficulté qui se présente dans cette notion est qu’il y a plusieurs


mécanismes de passage des arguments entres programme appelant et
programme appelé. D’autre part, tous les langages de programmation
n’offrent pas les mêmes possibilités. De plus, un mode de passage est le
plus souvent sous-entendu, d’où un peu d’esprit sur son mode de
fonctionnement permettra de ne pas faire d’erreurs et d’éviter les effets
pervers et inattendus. Il faudra toujours se poser la question : Les arguments
effectifs passés à la procédure sont-ils modifiés par l’exécution de cette
procédure ? Si oui, quelles valeurs auront-ils à la fin de l’exécution dans le
programme appelant.
Il y a deux types de passage de paramètres :
- Le passage de paramètre par valeur
- Le passage de paramètre par adresse
Les paramètres ont deux rôles :
1. Transmettre à la procédure au moment de l’appel, les données
nécessaires à son exécution.
2. Transmettre au programme appelant le ou les résultats du traitement
effectué au moment du retour à celui-ci.
Exemple :

Algorithme PP
VAR a : entier
PROCEDURE Plus_un (VAR X : entier)
DEBUT Plus_un
X=X+1
Afficher (X)
FIN Plus_un
Début PP
A=0
Saisir (A)
Plus_un (A)
Afficher (A)
FIN PP

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 33


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

NB : Chaque paramètre représente le résultat de la procédure. Il doit être


défini comme paramètre de type variable.
- S’il y a n paramètres d’entrée, il doit y avoir un paramètre de type valeur.
- S’il y a m paramètres de sortie, il doit y avoir un paramètre de type
variable.
- Dans certains cas, les paramètres sont à la fois en Entrée/Sortie.

V. Différence entre fonction et procédure


a) Fonction
-Une fonction a un type qui est celui du résultat
-On peut avoir plusieurs paramètres en E/ et un (I) paramètre en S.
-Le paramètre de / S est le nom de la fonction, donc le nom de la fonction
correspond à une variable.
-Ecrire une fonction, c’est chercher un résultat à partir d’un ou plusieurs
paramètres.
-Une fonction ne peut pas être isolée; elle fait partie d’un programme
complet.

b.) Procédure
-Pas de type
-On peut avoir plusieurs paramètres en E/S (En E/ ou en / S)
-Le nom de la procédure ne correspond jamais à une variable
-Ecrire une procédure, c’est chercher un ou plusieurs résultats à partir d’un
ou plusieurs paramètres.

NB : La procédure peut jouer le rôle d’une fonction mais a fonction ne peut


en aucun cas jouer le rôle de la procédure

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 34


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

VI. Récursivité
Elle intervient à un certain degré de programmation actuellement, il
s’avère nécessaire que tout programmeur s’initie à ce concept
fondamental.
Définition
Elle une fonction ou procédure qui peut se servir d’elle-même, donc une
fonction qui s’utilise elle-même ou une procédure qui s’appelle elle-même.

Exemple : Calculez le factoriel n, n appartenant à IN (n >=0).


0!=1
n ! = n (n-1)*(n-2)*…*2*1
n ! = n*(n-1) !
(n-1) ! = (n-1)*(n-2) !
.
.
3 ! = 3* (2) !
2 ! = 2*1 !
1 ! = 1*0 !
0!=1

Pour n !, il faut avoir calculé (n-1) ! et ceci de la même façon avec les
données différentes.
Pour résoudre ce programme un algorithme récursif est recommandé.

FONCTION Fact (N : entier) : entier


DEBUT Fact
Si N = 0 Alors
Fact = 1
Sinon
Fact = n * Fact (n-1)
Fin Si
FIN Fact

Fact (5) = 5 * Fact (4)


Fact (5) = 5 * (4 * Fact (3))
Fact (5) = 5 * 4 * (3 *Fact (2))
Fact (5) = 5 * 4 * 3 * (2 * Fact (1))
Fact (5) = 5 * 4 * 3 * 2 * (1 * Fact (0))
Fact (5) = 5 * 4 * 3 * 2 * 1 * 1

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 35


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Exercice : Calcul du terme Un de la suite de Fibonacci


U0 = 0
U1 = 1
Un = U (n–1) + U (n-2) avec n >= 2
U (n-1) = U (n-2) + U(n-3)
U (n-2) = U (n-3) + U (n-4)
………
…………….
U3 = U2 + U1
U2 = U1 + U0

NB : Le calcul de Un est donné par celui des deux (2) précédents termes
U(n-2), U(n-1).

FONCTION FIBONACCI (N : entier) : entier


DEBUT FIBONACCI
Si N = 0 ou N = 1 Alors
FIBONACCI = N
Sinon
FIBONACCI = FIBONACCI (N – 1) + FIBONACCI (N-2)
Fin Si
FIN FIBONACCI

Une procédure est dite récursive directe si elle contient un ou plusieurs


appels d’elle-même : C’est la récursivité directe.
Une procédure est dite récursive croisée si une procédure A appelle une
procédure B qui elle-même appelle A.
Un module est une procédure sans paramètre. Il utilise les identificateurs du
programme principal.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 36


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

RESUME :

L’utilisation des procédures offre des avantages évidents tels que :


- Le partage du travail.
- La structuration du programme en plusieurs parties cohérentes
pouvant être indépendantes.
- La facilité de documentation.
Mais nous devons pouvoir faire un découpage significatif et judicieux du
programme en procédure ou module.
- Une procédure doit correspondre à une tâche déterminée.
- On ne découpe pas un programme en procédures pour le plaisir de
découper : On doit tenir compte de sa complexité, de sa taille, des
possibilités d’en faire des entités cohérentes.
NB : La programmation de procédures et de fonctions permet d’enrichir les
langages de programmation.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 37


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

EXERCICES

Exercice 1 :
Ecrire un algorithme permettant de calculer le produit de deux
nombres X et Y en utilisant l’addition.
Exercice 2 :
Considérant que sur une facture on peut inscrire plusieurs produits,
écrire un algorithme qui retourne le net à payer d’une facture avec une
remise de 10% si le total des achats dépasse 200 000 francs. On prendra
pour taux de TVA, 18%.
Exercice 3 :
Ecrire un algorithme qui permet de calculer et d’afficher la valeur de
xy , les variables x et y étant des entiers positifs saisir par l’utilisateur (sans
utiliser une fonction prédéfini puissance).
Exercice 4 :
Ecrire un algorithme qui affiche la suite de fibonacci d’un nombre
entier positif saisir au clavier.
Exemple : Soit n=10, la suite de fibonacci F est : 1, 1, 2, 3, 5, 8.
Exercice 5 :
X
X X
X X X
X X X X
X X X X X
X X X X
X X X
X X
X
Ecrire un algorithme qui affiche la figure ci-dessus.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 38


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

Exercice 6 :
Ecrire un algorithme permettant de stocker dans un tableau une série
de dix nombres saisie au clavier.
Exercice 7 :
Reprendre l’exercice 6, en ne contraignant pas l’utilisateur à saisir
exactement 10 valeurs.
Exercice 8 :
Ecrire l’algorithme permettant d’éditer le contenu du tableau
suivant :
a b C d e f g h i j k l m n o p q r s t u v w x y z
Exercice 9 :
Ecrire un algorithme permettant de retourner la moyenne de notes
d’un étudiant pour l’ensemble des n matières qui lui sont enseignées. On
souhaite également connaitre sa plus faible moyenne.
Exercice 10 :
Considérons le tableau à deux dimensions, contenant pour chaque
élève de la classe, ses moyennes dans chacune des 10 matières qui lui sont
enseignées. Les noms des élèves et ceux de chacune des 10 matières sont
stockés dans des tableaux à une dimension.
Illustration :
Matières Droit Math Algorithme …….
Elèves
BOSSA Jean Moyenne 08 14 12
DAH Garou 10 11 13
BIO Ousmane 07 15 14
…. … …. ….

Ecrire un algorithme permettant l’édition du récapitulatif des


moyennes par matière de chaque élèves de la classe.
Exercice 11 :
On vous propose, à partir de la saisie de trois nombres a, b, c, soit :

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 39


Centre de Formation Professionnelle CIFORQ
"Ecole des Nouvelles Compétences"
+229 67 51 13 13 / infos@ciforq.com

- de calculer la factorielle de a ;
- de calculer la factorielle de b ;
- de calculer la factorielle de c ;
- de résoudre l’équation ax + b = 0 ;
- de résoudre l’équation bx + c = 0 ;
- de résoudre l’équation cx + a = 0.
L’utilisateur doit faire son choix à partir d’un menu.
TAF : Ecrire l’algorithme correspondant en utilisant des procédures.
Exercice 12 :
Reprendre l’exercice 11 en utilisant des fonctions.
Exercice 13 :
La suite de fibonacci est la suite d’entier (Un) n≥0 définie
récursivement par :
U0 = 0
U1 = 1
Un = Un-1 + Un-2 (avec n ≥2)
Ecrire l’algorithme de la fonction récursive permettant de calculer un
terme de la suite de Fibonacci.
Exercice 14 :
Un jeu consiste à déplacer une pile de disques de diamètres
décroissants d’un piquet sur une autre. La règle oblige à ne déplacer qu’un
disque à la fois, à ne le placer que sur un disque de diamètre supérieur, ou
un piquet libre, un troisième piquet sert d’intermédiaire.

Ecrire l’algorithme permettant de résoudre ce problème.

« Univers du Digital : Programmation + Réseaux + Sécurité + Communication + Gestion Numérique » 40