Situation & Démonstration interactive
« Saisir deux entiers X et Y dans [1, 100], permuter leurs valeurs à l'aide d'une procédure dédiée, puis afficher les valeurs avant et après la permutation. Observer l'impact du mode de passage des paramètres. »
Grâce au symbole @, les paramètres formels modifient directement les cases mémoires réelles des variables X et Y dans le programme appelant.
En passage par valeur, seules les copies temporaires (a et b) ont été inversées. Les variables globales X et Y conservent leurs valeurs initiales.
Questions de réflexion :
Modes de passage & Portée des identificateurs
| Critère | Fonction | Procédure |
|---|---|---|
| Rôle principal | Calcule et retourne une valeur unique | Exécute un traitement (action, affichage, modification) |
| En-tête algorithmique | Fonction Nom(...) : Type_simple |
Procédure Nom(pf1: T1, @pf2: T2) |
| Syntaxe d'appel | Dans une expression : v ← Nom(...) |
Instruction autonome : Nom(...) |
| Modification d'arguments | Non (calcul pur) | Possible via le passage par adresse (@) |
Le paramètre effectif transmet une copie de sa valeur. La variable de l'appelant reste totalement inchangée.
@)
Le paramètre formel pointe directement sur la case mémoire de la variable effective. Toute modification est répercutée.
Déclarée au sein du sous-programme. Accessible exclusivement dans son bloc d'exécution. Détruite dès la sortie du module.
Déclarée dans le programme principal. En Python, si une procédure doit modifier une variable simple
globale sans retour, elle la déclare via global nom_var.
Algorithme & Programme Python
// 1. Procédure de saisie contrôlée par adresse (@n)
Procédure Saisie (@n: Entier, min: Entier, max: Entier)
DEBUT
Répéter
Écrire("Donner un entier entre ", min, " et ", max, " : ")
Lire(n)
Jusqu'à (n ≥ min) Et (n ≤ max)
FIN
// 2. Procédure de permutation par adresse (@a, @b)
Procédure Permuter (@a: Entier, @b: Entier)
DEBUT
aux ← a
a ← b
b ← aux
FIN
// 3. Procédure d'affichage avec passage par valeur
Procédure AfficherCouple (msg: Chaîne, v1: Entier, v2: Entier)
DEBUT
Écrire(msg, " : X = ", v1, " | Y = ", v2)
FIN
// 4. Algorithme Principal
ALGORITHME GestionPermutation
DEBUT
Saisie(x, 1, 100)
Saisie(y, 1, 100)
AfficherCouple("Avant permutation", x, y)
Permuter(x, y)
AfficherCouple("Après permutation", x, y)
FIN
T.D.O.L. (Saisie)
| Objet | Type / Nature |
|---|---|
| Néant (aucun objet local supplémentaire) | |
T.D.O.L. (Permuter)
| Objet | Type / Nature |
|---|---|
aux |
Entier (variable locale d'échange) |
T.D.O.L. (AfficherCouple)
| Objet | Type / Nature |
|---|---|
| Néant (uniquement paramètres formels) | |
T.D.O.G. (Programme Principal)
| Objet | Type / Nature |
|---|---|
x, y |
Entier |
Saisie, Permuter, AfficherCouple |
Procédures |
# 1. Procédure de saisie
def saisie_intervalle(borne_min, borne_max):
val = 0
while not (borne_min <= val <= borne_max):
val = int(input(f"Donner un entier entre {borne_min} et {borne_max} : "))
return val
# 2. Procédure de permutation via mot-clé global
def permuter():
global x, y
aux = x
x = y
y = aux
# 3. Procédure d'affichage (passage par valeur)
def afficher_couple(msg, a, b):
print(msg, "-> X =", a, "| Y =", b)
# --- Programme Principal ---
x = saisie_intervalle(1, 100)
y = saisie_intervalle(1, 100)
afficher_couple("Avant permutation", x, y)
permuter()
afficher_couple("Après permutation", x, y)
-
Mot-clé global : Conformément à la convention d'inspection 2024 (section
7.d), la modification de scalaires globaux en procédure se déclare avec
global. -
Paramètre par adresse (@) : En algorithmique, le symbole
@est obligatoire devant les paramètres formels modifiés. - Règle d'appel : L'appel d'une procédure s'effectue comme une instruction autonome, sans affectation.
Bilan & Auto-évaluation (Quiz)
Questions flash :
Séance 5 terminée !
Vous maîtrisez désormais les deux piliers de la modularité : Fonctions et Procédures.