En programmation, donc en algorithmique, il est possible de décomposer le programme qui résout un problème en des sous-programmes qui résolvent des sous parties du problème initial. Ceci permettra d’améliorer la conception du programme et ainsi sa lisibilité. L’utilisation des sous-programmes s’avère utile aussi dans le cas où on constate qu’une suite d’actions se répète plusieurs fois. Il existe deux types de sous-programmes les procédures et fonctions.
Remarque :
Une fonction est un sous-programme qui retourne un seul résultat.
Pour déclarer une fonction, on utilise la syntaxe suivante :
FONCTION nom_fonction (Argument1 : Type , Argument2 : Type ,….) : Type Déclarations DEBUT Instructions de la fonction nom_fonction ← Valeur renvoyée FIN
Exemple : FONCTION Cube (x : Entier) : Entier Variable a : Entier DEBUT a ← x^3 Cube ← a FIN
Exercice 1 : Ecrire la fonction SommeCarre qui permet de calculer la somme des carrées de deux réels x et y.
Exercice 2 : Ecrire la fonction Pair qui permet de déterminer si un nombre est pair ou non.
L’utilisation d’une fonction se fera par simple écriture de son nom dans le programme principal.
Exemple complet : FONCTION Calcul (x : Réel , y : Réel , z : Réel) : Réel Variable a : Entier DEBUT a ← 3 Calcul ← (x + y + z) * a FIN Variables i , j , k , b : Réels DEBUT Lire i Lire j Lire k b ← Calcul (i , j , k) + 2 Ecrire b FIN
Exercice 1 : Définir une fonction qui permet de calculer la somme de deux variables réels .Ecrire le programme principal qui fait appel à cette fonction et qui affiche la somme de deux valeurs saisies au clavier.
Exercice 2 : Ecrire un programme qui fait appel à la fonction Somme de l’exercice 1 et qui permet d’afficher la somme de 4 nombres saisit au clavier.
Exercice 3 :
La portée d’une variable est l’ensemble des sous- programmes où cette variable est connue, c’est-à-dire que les instructions de ces sous-programmes peuvent utiliser cette variable.
Une variable définie au niveau du programme principal (problème appelant) est appelée variable globale. Sa portée est totale : tout sous-programme du programme principal peut utiliser cette variable.
Cependant, une variable définie au sein d’un sous-programme est appelée variable locale. La portée d’une variable locale est uniquement le sous-programme qui la déclare.
Remarque :
Lorsque le nom d’une variable locale est identique à une variable globale, la variable globale est localement masquée. Dans ce sous-programme la variable globale devient inaccessible.
Exemple 1 : Fonction Surface (a : Réel) : Réel Variables resultat : Réels DEBUT resulat ← valeur * a Surface ← resultat FIN Variable valeur , rayon : Réel DEBUT valeur ← 3.14 Ecrire " Entrez le rayon du cercle : " Lire rayon Ecrire "La surface de cette cercle est : ", Surface (rayon) FIN
Exemple 2 : Fonction Surface (a : Réel) : Réel Variables valeur , resultat : Réels DEBUT valeur ← 3.14 resulat ← valeur * a Surface ← resultat FIN Variable rayon : Réel DEBUT Ecrire "Entrez le rayon du cercle : " Lire rayon Ecrire " La surface de cette cercle est : " , Surface (rayon) FIN
Exercice :
Définir une fonction qui permet de calculer le volume d’une sphère étant donné son rayon, sachant que V = 4/3(pR3).
Sol 1/ Sol 2 : Variables locales Et Variables globales (la variable P)
Les paramètres servent à échanger des données entre le programme principal (ou le programme appelant) et la fonction appelée.
Les paramètres placés dans la déclaration d’une fonction sont appelés paramètres formels. Ces paramètres peuvent prendre toutes les valeurs possibles mais ils sont abstraits (n’existent pas réellement)
Les paramètres placés dans l’appel d’une fonction sont appelés paramètres effectifs. Ils contiennent les valeurs pour effectuer le traitement
Le nombre de paramètres effectifs doit être égal au nombre de paramètres formels. L’ordre et le type des paramètres doivent correspondre
Il existe deux types d’association (que l’on nomme passage de paramètre) entre le(s) paramètre(s) du sous-programme (fonction ou procédure) et variable(s) du programme appelant :
Les valeurs des paramètres effectifs sont affectées aux paramètres formels correspondants au moment de l’appel de la procédure. Dans ce mode le paramètre effectif ne subit aucune modification
Les adresses des paramètres effectifs sont transmises à la procédure appelante. Dans ce mode, le paramètre effectif subit les mêmes modifications que le paramètre formel lors de l’exécution de la procédure
Remarque : le paramètre effectif doit être une variable (et non une valeur) lorsqu’il s’agit d’une transmission par adresse
Exemple :
Considérons les deux programmes suivants :
Programme 1
Fonction Calcul (a : Réel) : Réel
DEBUT
Calcul ← a * 2
a ← a – 1
FIN
Variable x : Réel
DEBUT
x ← 3
Ecrire Calcul (x)
Ecrire x
FIN
Programme 2 Fonction Calcul (a : Réel) : Réel DEBUT Calcul ← a * 2 a ← a – 1 FIN Variable x : Réel DEBUT x ← 3 Ecrire Calcul (x) Ecrire x FIN
Dans le premier programme on a un passage de paramètre par valeur et dans le deuxième on a un passage de paramètres par adresse. Le premier programme affichera le résultat suivant : 6 3 car même si la valeur de a change celle de x non.
Tandis que le deuxième programme il affichera : 6 2 la valeur de x changera car celle de a a changée.
Les procédures sont des sous- programmes qui ne retournent aucun résultat. Elles admettent comme les fonctions des paramètres. On déclare une procédure de la façon suivante :
PROCEDURE nom_procedure (Argument1 : Type , Argument2 : Type ,….) Déclarations DEBUT Instructions de la procédure FIN
|
Et on appelle une procédure comme une fonction, en indiquant son nom suivi des paramètres entre parenthèses.
Les procédures et fonctions permettent d’isoler des instructions dans un « sous-programme » interne au programme principal. Deux objectifs peuvent favoriser le recours à des fonctions ou des procédures.
Vous pouvez suivre notre liste des vidéos sur l’algorithmique (qui inclut la partie procédures et fonctions) sur notre chaine youtube 9raytifclick (Darija: arabe marocaine) : Cours sur les algorithmes.
Aussi, si vous voulez commencer l’apprentissage d’un langage de programmation, voilà notre cours : Langage Python Niveau 1 qui sera très utile pour vous (il vous aide à pratiquer tous les éléments vu dans notre cours d’algorithmique).