Module 2Formuler un traitement
Chapitre 5 sur 11
Structurer un algorithme : procédures et fonctions
Procédures, fonctions, paramètres formels et effectifs, passage par valeur et par adresse, portée.
- ≈ 165 min
- 7 leçons
- 2 vidéos
- 3 exercices
Module 2Formuler un traitement
Chapitre 5 sur 11
Procédures, fonctions, paramètres formels et effectifs, passage par valeur et par adresse, portée.
Objectifs
Avec ce chapitre, tu sauras…
var) ;Un algorithme de gestion de scolarité peut compter des milliers de lignes : il devient long, difficile à écrire, à lire et à maintenir. La solution, c'est la programmation structurée : découper le problème en sous-problèmes, chacun résolu par un sous-algorithme. C'est l'approche descendante du chapitre 2, mise en pratique.
Leçon 1
Tableau: Les avantages (résumé OFPPT)
| Avantage | Pourquoi |
|---|---|
| clarté | chaque sous-algorithme a un rôle précis et un nom parlant |
| lisibilité | le programme principal se lit comme un plan |
| maintenance | on corrige un seul endroit |
| réutilisation | un module écrit une fois sert dans plusieurs programmes, une fois rangé dans une bibliothèque |
Leçon 2
| Paramètre formel | Paramètre effectif | |
|---|---|---|
| où ? | dans la définition du sous-algorithme | dans l'appel |
| nature | toujours une variable | variable, constante, expression ou appel de fonction |
| exemple | n dans Min(n : Entier) | 10 ou nbEleves dans Min(10) |
Leçon 3
Leçon 4
| Procédure | Fonction | |
|---|---|---|
| retourne une valeur ? | non (elle agit, ou remplit des paramètres var) | oui, une seule, avec retourner |
| appel | une instruction seule : Min_Max(10, a, b) | dans une expression : m := Min(10) |
| exemple |
Leçon 5
Leçon 6
| Par valeur | Par adresse (var) | |
|---|---|---|
| ce qui est transmis | une copie de la valeur | l'adresse de la variable (la zone mémoire) |
| effet d'une modification dans le sous-algorithme | n'altère pas le paramètre effectif | modifie le paramètre effectif |
| usage | paramètre donnée | paramètre résultat ou donnée/résultat |
Leçon 7
Vidéo · À regarder
FRPython - Cours complet pour débutants (2026)
SimpleTech par Sergio · YouTube
1Une fonction…
2Un paramètre résultat est précédé de…
3Les paramètres utilisés dans l'appel sont appelés…
4Avec un passage par valeur, une modification du paramètre dans la procédure…
5Une variable déclarée dans une procédure est…
6L'appel correct d'une fonction Carre(x : Réel) : Réel est…
L'essentiel du chapitre
retourner).var.La correspondance des paramètres
| Rôle | Sens | Passage |
|---|---|---|
| donnée | une entrée : le sous-algorithme la lit | par valeur |
| résultat | une sortie : le sous-algorithme la remplit | par adresse (var) |
| donnée/résultat | lue puis modifiée | par adresse (var) |
| calculer une moyenne, tester si un nombre est premier |
La photocopie et l'original
Vidéo · À regarder
Cours Python Complet pour Débutants - 10h de Formation de A à Z
Sébastien Daviot - Expertise Data · YouTube
Procédure Nom_proc(liste_des_paramètres_formels)
Var déclarations_locales
Début
corps_de_la_procédure
FinUn paramètre résultat ou donnée/résultat est précédé du mot-clé var.
Procédure Min_Max(N : Entier ; var min : Entier ; var max : Entier)
Var i, x : Entier
Début
min := 100
max := 0
Pour i de 1 à N faire
Répéter
Lire(x)
Jusqu'à (x > 0) ET (x < 100)
Si x < min alors
min := x
FinSi
Si x > max alors
max := x
FinSi
FinPour
FinIci : N est un paramètre donnée ; min et max sont des paramètres résultats (var) ; i et x sont des variables locales.
Une fonction retourne une valeur : on l'utilise dans une expression, comme racine(x) en mathématiques.
Fonction Nom_fonction(liste_des_paramètres_formels) : Type_retourné
Var déclarations_locales
Début
corps_de_la_fonction
retourner valeur
FinFonction Min(N : Entier) : Entier
Var i, x, min : Entier
Début
min := 100
Pour i de 1 à N faire
Répéter
Lire(x)
Jusqu'à (x > 0) ET (x < 100)
Si x < min alors
min := x
FinSi
FinPour
retourner min
FinDans le résumé OFPPT, la première version de la fonction Min oublie la ligne min := 100 (elle apparaît dans l'exemple d'appel qui suit). Sans initialisation, min contient une valeur inconnue et le résultat est faux. Règle : toute variable qui accumule ou compare doit être initialisée avant la boucle.
Tableau: Procédure ou fonction ?
Procédure lire_nombre(var N : Entier)
Début
Répéter
Lire(N)
Jusqu'à N > 3
Fin
Algorithme Affiche_min
Var N, m : Entier
Début
lire_nombre(N)
m := Min(N)
Ecrire("La plus petite valeur est : ", m)
FinTableau: Les deux modes de passage
Procédure ajoute_un(a : Entier) Procédure inc(var x : Entier)
Début Début
a := a + 1 x := x + 1
Fin Fin
Programme principal Programme principal
Var x : Entier Var y : Entier
Début Début
x := 9 y := 9
ajoute_un(x) inc(y)
Ecrire(x) // affiche 9 Ecrire(y) // affiche 10
Fin FinQuand une variable locale porte le même nom qu'une variable globale, la variable globale est masquée dans ce sous-algorithme.
Algorithme Essai
Var X, Y : Entier // globales
Procédure A
Var X, I : Entier // X locale à A (masque le X global), I locale
Début
X := … // X local de A
Y := … // Y global
Fin
Procédure B
Var Y : Entier // Y locale à B (masque le Y global)
Début
Y := … // Y local de B
Fin
Début // programme principal
X := … // X global
Y := … // Y global
I := … // ERREUR : I n'existe que dans A
FinEn entreprise, on évite les variables globales : n'importe quel sous-programme peut les modifier, ce qui rend les erreurs très difficiles à trouver. On préfère transmettre les données par paramètres.
Les fonctions, modules et packages en Python : la traduction directe des procédures et fonctions de ce chapitre.
Dans l'algorithme Essai de la section 7, indique pour chaque affectation si elle concerne une variable locale ou globale, et explique l'erreur sur I.
Qu'affiche ce programme ? Justifie.
Procédure double(var a : Entier ; b : Entier)
Début
a := a * 2
b := b * 2
Fin
Var x, y : Entier
Début
x := 3
y := 5
double(x, y)
Ecrire(x, " ", y)
FinÉcris : (a) une fonction Puissance(x : Réel ; n : Entier) : Réel qui calcule x^n par multiplications successives ; (b) une fonction EstPair(n : Entier) : Booléen ; (c) une procédure Permuter(var a, b : Entier) ; (d) un programme principal qui lit deux entiers, les permute s'ils ne sont pas dans l'ordre croissant, puis affiche s'ils sont pairs.
À chaque paramètre formel correspond un paramètre effectif, dans le même ordre, de même type (ou compatible), et en même nombre.
Tableau: Les trois rôles d'un paramètre
Le passage par valeur, c'est donner une photocopie : on peut gribouiller dessus, l'original ne change pas. Le passage par adresse, c'est donner l'original (ou l'adresse de son tiroir) : chaque modification est définitive.
La partie « Les fonctions » du cours de Sébastien Daviot : quarante minutes pour approfondir paramètres et valeurs de retour.