Paramètres
d'un sous-programme et variables locales
ici : uniquement paramètre "en entrée"
(type simple, passage "par valeur")
PROCEDURE nomProc(param1 : type,
param2 : type …) // objectif du SP
// rôle des paramètres VARIABLES (locales) varA : <typeA>
varB : <typeB>
…
DEBUT
<instructions>
FIN PROCEDURE
en commentaire :
rôle du SP et des paramètres
• permet à l'utilisateur de savoir comment
appeler le SP (sans galérer, sans lire le SP, …)
• doit décrire ce que fait le SP (pas le comment)
Règle de qualité :
Dire ce que l'on fait
et Faire ce que l'on dit
Passage de paramètres
PROCEDURE triangle(c : entier, coul : chaine) // dessine un triangle équilatéral de
coté c et colorié en couleur coul en tournant vers la gauche
VARIABLES (locales) i : entier
DEBUT baisse()
POUR i de 1 à 3 avance(c) gauche(120) FIN POUR
colorier avec la couleur coul FIN PROCEDURE
// progr. Princ. Dessine étoile jaune ALGORITHME
VARIABLES (du programme princ.) DEBUT
// 1er triangle pointe en haut triangle(30, "jaune")
// se placer sur la pointe du bas avance (10)
droite(60) avance (10) gauche (120)
// 2ème triangle pointe en bas triangle(30, "jaune")
FIN
Appel du SP Définition du SP
Passage de paramètres
PROCEDURE triangle(c : entier, coul : chaine) // dessine un triangle équilatéral de
coté c et colorié en couleur coul en tournant vers la gauche
VARIABLES (locales) i : entier
DEBUT baisse()
POUR i de 1 à 3 avance(c) gauche(120) FIN POUR
colorier avec la couleur coul FIN PROCEDURE
// progr. Princ. Dessine étoile jaune ALGORITHME
VARIABLES (du programme princ.) DEBUT
// 1er triangle pointe en haut triangle(30, "jaune")
// se placer sur la pointe du bas avance (10)
droite(60) avance (10) gauche (120)
// 2ème triangle pointe en bas triangle(30, "jaune")
FIN
Appel du SP Définition du SP
Quand le SP est appelé,
le 1er paramètre prend la 1ère valeur : c 30
Le 2ème paramètre prend la 2ème valeur : coul "jaune"
Passage de paramètres
PROCEDURE triangle(c : entier, coul : chaine) // dessine un triangle équilatéral de
coté c et colorié en couleur coul en tournant vers la gauche
VARIABLES (locales) i : entier
DEBUT baisse()
POUR i de 1 à 3 avance(c) gauche(120) FIN POUR
colorier avec la couleur coul FIN PROCEDURE
// progr. Princ. Dessine étoile jaune ALGORITHME
VARIABLES (du programme princ.) DEBUT
// 1er triangle pointe en haut triangle(30, "jaune")
// se placer sur la pointe du bas avance (10)
droite(60) avance (10) gauche (120)
// 2ème triangle pointe en bas triangle(30, "jaune")
FIN
Appel du SP Définition du SP
Quand le SP est appelé,
les instructions du SP sont exécutées avec les valeurs reçues
Avance(30)
Colorie en
"jaune"
Attention (retenez)
• Un SP ne peut utiliser QUE :
– Ses variables locales – Ses paramètres
• N'utilisez JAMAIS dans un SP une variable du programme principal
– Bien que ce soit possible sous certaines conditions – Les risques :
– SP difficilement réutilisable
– difficile à comprendre, à corriger, à maintenir, …
Exemple : les paramètres de la procédure write de turtle
Write text - the string representation of arg - at the current turtle position according to align ("left",
"center" or right") and with the given font.
If move is true, the pen is moved to the bottom-right
corner of the text. By default, move is False
certains SP acceptent différents jeux
de paramètres
Paramètres d'un sous-programme
Voici quelques procédures du module turtle
sans
paramètre
avec un paramètre avec deux apramètres up()
down() clear()
forward(nbPixels) left(angle)
backward(nbPixels) right(angle)
circle(rayon)
goto(x,y)
Paramètres d'un sous-programme (SP)
• placés entre parenthèses après le nom du SP
• le SP utilise la valeur du paramètre (ds le corps du SP)
• le programme appelant transmet au SP la valeur des paramètres
• les paramètres d'un SP existent uniquement DANS ce SP.
– un paramètre d'un SP-A ne peut pas être utilisé dans
un SP-B (sauf si SP_A appelle SP_B avec le même param.)
Paramètres d'un sous-programme (SP)
lors de la définition du SP lors de l'appel du SP pour chaque paramètre on
précise : - son nom - son type - son rôle
pour chaque paramètre on donne sa valeur :
- valeur directe
- valeur d'une variable - valeur d'une expression même nombre de paramètres (*)
même ordre des paramètres (*) même type des paramètres
(*) sauf si une valeur par défaut a été définie pour un paramètre et autre exception
Paramètres d'un sous-programme (SP)
• n est un paramètre du SP affichSiMult3
• le SP utilise le paramètre n
• le SP ne modifie pas le paramètre n
PROCEDURE affichSiMult3 (n : entier)
// affiche si le nombre n est multiple de 3
VARIABLES
// pas de variable locale iciDEBUT
SI (n MOD 3) =? 0 ALORS
afficher (n, " est multiple de 3") FIN SI
FIN PROCEDURE
PROGRAMME comprendre les parametres
// affiche si des nombres sont multiples de 3
VARIABLES
(variables du progr. principal)n1, i, p : entier // nombres à tester pour mult de 3
DEBUT
affichSiMult3 (111)
afficher ("entrer un nb entier SVP") saisir(n1)
affichSiMult3 (n1) POUR i de 77 à 88
affichSiMult3 (i) FIN POUR
p 2222
affichSiMult3 (p) FIN
le progr.
appelant le SP pourrait être
un autre SP
PROGRAMME comprendre les parametres
// affiche si des nombres sont multiples de 3
VARIABLES
(variables du progr. principal)n1, i, p : entier // nombres à tester pour mult de 3
DEBUT
affichSiMult3 (111)
afficher ("entrer un nb entier SVP") saisir(n1)
affichSiMult3 (n1) POUR i de 77 à 88
affichSiMult3 (i) FIN POUR
p 2222
affichSiMult3 (p) FIN
appel du SP avec la valeur
111
Lorsqu'un SP avec paramètre est appelé …
PROCEDURE affichSiMult3 (111)
// affiche si le nombre n est multiple de 3
VARIABLES
// pas de variable locale iciDEBUT
SI (111 MOD 3) =? 0 ALORS
afficher (111, " est multiple de 3") FIN SI
FIN PROCEDURE
• le paramètre prend la valeur qui lui est donnée
• le SP est exécuté avec cette valeur
PROGRAMME comprendre les parametres
// affiche si des nombres sont multiples de 3
VARIABLES
(variables du progr. principal)n1, i, p : entier // nombres à tester pour mult de 3
DEBUT
affichSiMult3 (111)
afficher ("entrer un nb entier SVP") saisir(n1)
affichSiMult3 (n1) POUR i de 77 à 88
affichSiMult3 (i) FIN POUR
p 2222
affichSiMult3 (p) FIN
SI (111 MOD 3) =? 0 ALORS
afficher (111, " est multiple de 3") FIN SI
PROGRAMME comprendre les parametres
// affiche si des nombres sont multiples de 3
VARIABLES
(variables du progr. principal)n1, i, p : entier // nombres à tester pour mult de 3
DEBUT
affichSiMult3 (111)
afficher ("entrer un nb entier SVP") saisir(n1)
affichSiMult3 (n1) POUR i de 77 à 88
affichSiMult3 (i) FIN POUR
p 2222
affichSiMult3 (p) FIN
appel du SP avec la valeur
de la variable n1
n1 a une
valeur
PROGRAMME comprendre les parametres
// affiche si des nombres sont multiples de 3
VARIABLES
(variables du progr. principal)n1, i, p : entier // nombres à tester pour mult de 3
DEBUT
affichSiMult3 (111)
afficher ("entrer un nb entier SVP") saisir(n1)
affichSiMult3 (n1) POUR i de 77 à 88
affichSiMult3 (i) FIN POUR
p 2222
affichSiMult3 (p) FIN
appel du SP avec la valeur
de la variable p
p est une var
du prog
appelant.
Paramètres d'un sous-programme (SP)
Dans la définition du SP avec un paramètre
• le nom du paramètre est "muet", (formel), cela ne change rien lors de l'appel du SP
PROCEDURE affichSiMult3 (n : entier)
// affiche si le nombre n est multiple de 3
VARIABLES
// pas de variable locale iciDEBUT
SI (n MOD 3) =? 0 ALORS
afficher (n, " est multiple de 3") FIN SI
FIN PROCEDURE
Paramètres d'un sous-programme (SP)
que le paramètre s'appelle p ou n ne change RIEN
PROCEDURE affichSiMult3 (p : entier)
// affiche si le nombre p est multiple de 3
VARIABLES
// pas de variable locale iciDEBUT
SI (p MOD 3) =? 0 ALORS
afficher (p, " est multiple de 3") FIN SI
FIN PROCEDURE
PROGRAMME comprendre les parametres
// affiche si des nombres sont multiples de 3
VARIABLES n1, i, p : entier // nombres à tester
DEBUT
affichSiMult3 (111) saisir(n1)
affichSiMult3 (n1) p 2222
affichSiMult3 (p) FIN
PROCEDURE affichSiMult3 (p : entier)
// affiche si le nombre p est multiple de 3
VARIABLES // pas de variable locale ici
DEBUT
SI (p MOD 3) =? 0 ALORS
afficher (p, " est multiple de 3") FIN SI
FIN PROCEDURE
le param du SP n'est connu QUE dans le SP.
(ce p n'est pas le même que la var p du progr.
principal
les var du prog.
principal ne doivent être utilisées QUE dans le progr. princ.
ici le progr. principal donne
(transmet) la valeur 2222 au SP
Retenez
Une variable utilisée dans un SP est :
• soit un paramètre
• soit une variable locale Dans la définition d'un SP :
• utiliser les paramètres
• ne pas modifier la valeur des paramètres
Remarque : dans cette partie du cours
on ne considère que les paramètres en entrée
PROCEDURE test()
// affiche si des nombres au choix sont pairs ou multiples de 3
VARIABLES (déclaration des variables locales)
n1, n2 : entier // nombre à tester pour mult de 3
DEBUT
affichSiPair() affichSiPair()
afficher ("entrer 2 nb entiers et enter à chaque fois") saisir(n1)
saisir(n2)
affichSiMult3(n1)
affichSiMult3(n2)
FIN PROCEDURE
PROCEDURE affichSiPair () // pas de paramètre // saisit un nombre entier et affiche s'il est pair
VARIABLES (déclaration des variables locales)
n: entier // nombre saisit par l'utilisateur DEBUT
afficher("Entrer un nb svp") saisir(n)
SI (n MOD 2) =? 0 ALORS afficher (n, " est pair") SINON
afficher (n, " est impair") FIN SI
FIN PROCEDURE
n est une variable locale du SP
donc on donne une
valeur à n dans le SP
PROCEDURE nomProc(param1 : type,
param2 : type …)
// objectif du SP et rôle des paramètres
VARIABLES (déclaration des variables locales)
var1 : type // rôle de la variable var2 : type // rôle de la variable
…
DEBUT
<instructions>
FIN PROCEDURE
Paramètres (*) Variables locales
définis entre les ( ) après le nom du SP
définies après l'entête du SP valeur transmise par le progr.
appelant
valeur initialisée dans le SP ne pas modifier sa valeur dans le SP
le progr. appelant doit les connaitre (nom, type et rôle)
le progr. appelant ignore tout de leur existence leur rôle est décrit dans le
commentaire qui décrit le SP
utilisés dans la définition du SP
ne sont utilisables que dans le corps du SP
(*) dans cette partie du cours, on ne considère que les paramètres en entrée