3 éme Scientifiques Leçon
3 : Les sous programmes
Règles de jeu :
Deux joueurs veulent lancer le jeu des cartes. Ils doivent suivre les étapes
suivantes :
Chaque joueur tire cinq cartes aléatoires
ayant les nombres entre 1 et 10,
Ils calculent chacun sa somme des nombres,
Celui qui a la somme la plus petite va
donner à son adversaire sa carte la plus
grande.
Exemple :
Analyse :
E Tr So
nt ai rti
ré te es
es m
Prof : Nejla MAHJOUB ABDELLATIF
3 éme Scientifiques Leçon
3 : Les sous programmes
Prof : Nejla MAHJOUB ABDELLATIF
3 éme Scientifiques Leçon
3 : Les sous programmes
Activité 1 :
Charger les programmes "[Link]" et "[Link]" enregistrés dans votre dossier de travail puis les
exécuter.
1. Que remarquez-vous ?
……………………………………………………………………………………………………………………………………..
2. Quelles sont les points de différence entre les deux programmes ?
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
.
………………………………………………………………………………………………………………………………….
.
………………………………………………………………………………………………………………………………….
.
………………………………………………………………………………………………………………………………….
.
Déduction :
L’utilisation des ……………….. dans le programme 2 a permis de ……………….. les lignes de code
et d’………………….. la redondance d’où ……………………………………..
Pour quoi les sous programmes (la modularité) ?
Certains problèmes conduisent à des …………………………., ……………….. à écrire et à comprendre. On les
………………. en des parties appelées ………………………… ou …………………………….
Les fonctions et les procédures sont des modules (suite d’instructions) …………………… désignés par un
nom.
Elles ont plusieurs intérêts :
Permettent de ……………… les programmes, càd de mettre en commun les parties qui se
………………..
Permettent une ………………………. et une meilleure ……………………… des programmes.
Facilitent la …………………………. de code (il suffit de modifier une seule fois).
Ces procédures et fonctions peuvent éventuellement être ……………… dans d’autres programmes.
Programme
principal
Niveau 1 de SP3
décomposition SP1 SP2
Niveau 2 de
Prof : Nejla MAHJOUB ABDELLATIF SP3_1 SP3_2 décomposition
3 éme Scientifiques Leçon
3 : Les sous programmes
-Schéma 1 : décomposition modulaire—
Partie I : Les fonctions
Activité n°1 :
Ecrire un programme volume_sphère qui permet de saisir un rayon R puis de retourner le volume de
sphère sachant que : volume sphère = (4 * pi * cube ( R ) )/3
Pour résoudre ce problème il
faut utiliser la fonction
……………..
Définition d’une fonction :
Une fonction est un ……………………….. qui retourne une valeur ……………. en fonction des valeurs
passées ……………………….. :
Résultat
Paramètres d’entrée fonction
Une fonction prend zéro ou plusieurs …………………….. et renvoie éventuellement ………………. résultat
de ………………………………… (entier, réel, booléen, caractère ou chaine de caractères)
Une fonction qui ne retourne pas de résultat est ………………………………..
Comment définir une fonction ?
En Python la déclaration d’une fonction se fait toujours …………… le programme ……………………….. :
En algorithme En python
fonction nom_fonction (parf1 :type1, parf2 :type2, …, parfn :typen) :type résultat def nom_fonction (parf1, parf2, …, parfn) :
début Bloc d’instructions
bloc d’instructions ……
retourner résultat Return expression
fin
Solution :
Prof : Nejla MAHJOUB ABDELLATIF
3 éme Scientifiques Leçon
3 : Les sous programmes
Algorithme de programme principal : Algorithme de la fonction Cube :
Algorithme Volume_Sphère fonction CUBE (x : réel) :réel
début début
Ecrire ("Donner le rayon : ") c←x*x*x
Lire(R) retourner c
V←(4 * pi * cube ( R ) )/3 fin
Ecrire ("Le volume de sphère = " , V) T.D .O locaux :
fin Objet Type/Nature
T.D .O Globaux c Réel/variable
Objet Type/Nature
Pi Constante=3,14
R,V Réel/variable
Cube fonction
En python :
Fonction
CUBE
Programme
Comment appeler une fonction ?
principal
L’appel d’une fonction se fait toujours …………………………... et elle peut apparaître dans plusieurs
emplacements :
Action En algorithme En python
Variable…….. nom_fonction(parE1, …, parEn) Variable……. nom_fonction(parE1, …, parEn)
affectation
………………..(nom_fonction(parE1, …, parEn)) …………. (nom_fonction(parE1, …, parEn)
affichage
……. (nom_fonction(parE1, …, parEn) = valeur) …… (nom_fonction(parE1, …, parEn) = =valeur)
condition …………… (nom_fonction(parE1, …, parEn) = valeur) ………..(nom_fonction(parE1,…,parEn)== valeur)
……………… (nom_fonction(parE1,…, parEn) = valeur)
Application :
Ecrire un algorithme intitulé Combinaison qui affiche le nombre de combinaisons de p objets parmi n avec
n et p deux entiers naturels strictement positifs et n≥p.
Prof : Nejla MAHJOUB ABDELLATIF
3 éme Scientifiques Leçon
3 : Les sous programmes
Algorithme de programme principal : Algorithme de la fonction fact :
T.D .O Globaux T.D .O locaux :
Objet Type/Nature Objet Type/Nature
Programme en python :
Partie II : Les procédures
Activité n°1 :
On désire écrire un programme Division qui permet de saisir deux entiers N et D avec D≠0 puis d’afficher
leur quotient et reste.
Décomposer le problème en module.
Prof : Nejla MAHJOUB ABDELLATIF
3 éme Scientifiques Leçon
3 : Les sous programmes
Pour résoudre ce problème on peut utiliser :
Un module pour ……………………………………… qui prend deux objet …………………puis les …………………,
Un module pour le ……………………………………….. qui renvoie …………………………………,
Un module ……………………….. qui renvoie …………………………………..
Les modules proposés ne peuvent pas être des ………………….. donc ils
seront déclarés comme étant
……………………………
..
Définition d’une procédure :
Une procédure est un sous-programme qui retourne ………………………. objets en fonction des valeurs
passées en entrée :
………………………………
Paramètres d’entrée …………… …………………….
Une procédure prend zéro ou plusieurs paramètres et renvoie éventuellement zéro résultat ou un seul
résultat de type simple ou ……………………. (exemple : ……………………….) ou plusieurs résultats.
Comment définir une procédure ?
En Python la déclaration d’une procédure se fait toujours …………………….le programme ………………………….. :
En algorithme En python
Procédure nom_procédure (parf1 : type1, parf2 :type2, …, def nom_procedure (parf1, parf2, …, parfn) :
parfn :typen) Bloc d’instructions
début ……
Prof : Nejla MAHJOUB ABDELLATIF
3 éme Scientifiques Leçon
3 : Les sous programmes
bloc d’instructions
fin
Comment appeler une procédure ?
En algorithme ou en python, l’appel de la procédure se fait dans une ligne entière de la manière suivante :
…………………………………………………………………………………..
N.B : les paramètres formels et effectifs doivent s’accorder en …………………., ………………….. et ………………..
Solution :
Algorithme de programme principal : Algorithme de la procédure …………………… :
Prof : Nejla MAHJOUB ABDELLATIF
3 éme Scientifiques Leçon
3 : Les sous programmes
Algorithme de la procédure ………………..: Algorithme de la procédure …………………….:
Programme en python :
Partie III :
Paramètres formels et effectifs
Portée des variables & modes de passage des
Prof : Nejla MAHJOUB ABDELLATIF paramètres
3 éme Scientifiques Leçon
3 : Les sous programmes
A. Paramètres formels et effectifs :
Activité n°1 :
Ecrire un programme maximum qui permet de saisir deux nombres (x et y) puis d’appeler une fonction max qui
retourne la valeur la plus grande.
Solution : …………………
………………………………………… …………………………………………….
……………. ……………….
……………………………………………….. ……………….. ………….
………………… ………….
………………………………………………………………. ………….
………
…………….. ……………………….. ………….
…..
…………………… …………….
……
…………………………………………….. ………………….
………………. …………….
TDO Globaux : TDO Locaux :
Objet Type/Nature Objet Type/Nature
……………………. ………………………… …. ………………………….
………………. ………………………
Les paramètres formels :
Ils sont placés dans ……………………… d’un sous-programme, réellement ils n’ont pas de ………………… mais lors de
l’appel ils seront …………………………….. par les paramètres ……………….. Exemple : …….. et ……… de la fonction
………..
Les paramètres effectifs :
Ils sont placés dans ……………….. d’un sous-programme, ils contiennent de …………………..utilisées lors de
traitement.
Exemple : ………. et………. du programme ……………………...
B. Portée des variables :
Selon …………………………… de déclaration, on peut avoir deux types de variables (objets) dans une fonction : des
variables …………………… ou des variables …………………………….
La portée désigne l’emplacement de définition et la ……………………………… d’une variable(objet).
Prof : Nejla MAHJOUB ABDELLATIF
3 éme Scientifiques Leçon
3 : Les sous programmes
Variable locale :
Elle est déclarée dans ………………………. d’un sous-programme. Elle ……………………….. qu’à l’intérieur de module
dans lequel a été déclarée.
Exemple : ………. de la fonction ……………….
Variable globale :
Elle est définie ……………………………. d’un sous-programme. Elle est visible et utilisable dans tout le programme
mais la fonction ne peut pas la ………………………..
Exemple : ………., ………… et ………… du programme ……………………….
Remarque : en python il est possible de modifier une variable globale dans un module si seulement si cette
variable est déclarée dans le sous-programme avec le mot ……………………………….
Voir solution 1 programme division
C. Modes de passage (transmission) des
paramètres :
Les échanges d’informations entre un module et le programme principal se font par l’intermédiaire des
paramètres.
Il existe deux principaux types de passages de paramètres qui permettent des usages différents :
Le passage par valeur et le passage par référence (adresse).
Le passage par valeur :
Dans ce type de passage, le paramètre formel reçoit uniquement une copie de la valeur du paramètre effectif. La
valeur de ce dernier ne sera jamais…………………………..
Les variables de types ……………………………………………. passent par valeur.
Le passage par référence :
Dans ce type de passage, la procédure utilise ……………………….. du paramètre effectif. Lorsqu’on utilise l’adresse
du paramètre, on accède directement à son contenu. La valeur de la variable effective sera donc
………………………….
Les variables modifiables (……………………………………………) passent par référence.
Prof : Nejla MAHJOUB ABDELLATIF