Vous êtes sur la page 1sur 71

-

ENSAM RABAT

Présenté par :
Creative Commons
Pr. Nordine ZIDANE

Le 22/11/2022 ZIDANE NORDINE 1 1


Objectifs du cours

INTRODUCTION

PLAN
PLAN
P A
L Historique N

Concepts

Applications

Le 22/11/2022 ZIDANE NORDINE 2 2


Langage Python
Concepts:
Les sous-programmes

Le 22/11/2022 ZIDANE NORDINE


3 3
ENSAM RABAT

Sous-programmes.

4
Sous--programme
s.
Objectifs de ce module

• Introduire le concept de sous--programme sous


ses deux formes : procédure et fonction.

• Comprendres lesnotions de paramètres,


variables locales, variables globales.

5
Sous--programme
s.
Plan de ce module

1. Généralités algorithmique.
2. Les sous--programmes en
python.

6
Sous--programme
s.
1. GÉNÉRALITÉS ALGORITHMIQUE.

7
1. Généralités algorithmique.

Plan de ce chapitre

a. Principe.
b. Trois grands avantages.
c. Notion de paramètre.
d. Variables locales versus variables globales.
e. Deux types de sous--programmes.
f. Exercice.

8
1. Généralités algorithmique.

a. Principe.
• Un sous--programme est un bloc d’instructions réalisant
une certaine tâche.

• Il possède un nom et est exécuté lorsqu’on l’appelle.

• Un script bien structuré contiendra un programme dit


“principal”, et plusieurs sous--programmes dédiés à des
fonctionnalités spécifiques.

9
1. Généralités algorithmique.

a. Principe.
• Quand un programme dit « principal » fait appel à un
sous–programme, il suspend son propre déroulement,
exécute le sous–programme en question, et reprend
ensuite son fonctionnement.

Programme
appel du sous-
instructions programme
Tot
...
o
Toto Retour au bloc d’instructions du sous-
... programme
programme Toto
instructions
...
10
1. Généralités algorithmique.

b. Trois grands avantages.


1. Éviter la duplication de code.

appel/retour

appel/retour

Ici le bloc de code en Ici on crée un sous-programme correspondant à


rouge est dupliqué ce bloc, et on l’appelle quand on en a besoin.

11
1. Généralités algorithmique.

b. Trois grands avantages.


2. Favoriser la réutilisation.

• Un sous--programme écrit pour résoudre un


problème donné pourra servir de nouveau dans un autre
contexte.

• On pourraainsi créer des « librairies » de sous--


programmes.

12
1. Généralités algorithmique.

b. Trois grands avantages.


3. Améliorer la conception.

Programme initial très complexe

Sous-programme Sous-programme
complexe simple

Sous-sous- Sous-sous- Sous-sous-


programme programme programme
simple simple simple

13
1. Généralités algorithmique.

c. Notion de paramètre.
• Un sous--programme sert donc à effectuer un traitement
générique.

• Ce traitement porte sur des données, dont la valeur


pourra ainsi changer d’un appel du sous--programme à un
autre.

• Ce que l’on appelle “paramètres” ce sont justement ces


données transmises au sous--programme par le
programme principal.

14
1. Généralités algorithmique.

c. Notion de paramètre.
• Lors de l’implémentation d’un sous--programme, on va
donc préciser la liste de tous les paramètres qu’il va
utiliser.

para1 Toto
para2
bloc d’instructions du sous-
paraN
programme Toto, qui traite
para1, para2, ....

15
1. Généralités algorithmique.

c. Notion de paramètre.
• Lorsde l’utilisation d’un sous--programme, on va
alors préciser la valeur de chacun des paramètres qu’il
possède.
Programme
Toto
instructions val1

... val2
bloc d’instructions du sous-
Toto(val1,val2,...) programme Toto qui traite
... valN para1, para2, .... avec les
instructions valeurs val1, val2, ...
...

16
1. Généralités algorithmique.

d. Variables locales versus globales.


• Pour fonctionner un sous--programme peut également
avoir besoin d’utiliser des variables qui lui sont propres.
On parle alors de “variables locales”.

• Ce sont par exemple des résultats de calculs


intermédiaires, des compteurs de tours dans une structure
itérative, etc.

• Ces variables ne sont accessibles qu’au sein du sous--


programme qui les définit et utilise.

17
1. Généralités algorithmique.

d. Variables locales versus globales.


• Un sous programme reçoit donc des données à traiter, les
paramètres, et pour ce faire peut avoir besoin de
variables locales :

Toto
para1
para2 bloc d’instructions du sous-
programme Toto, qui traite
paraN para1, para2, ....
à l’aide de variables locales
var1, var2, ...

18
1. Généralités algorithmique.

d. Variables locales versus globales.


• On a vu qu’un sous--programme pouvait utiliser des
données transmises par le programme principal sous
forme de paramètres.

• Il peut également manipuler directement des variables


définies par le programme principal. On parle alors de
“variables globales”.

• Il s’agit d’une possibilité mais également d’une mauvaise


pratique car cela limite énormément la réutilisabilité des
codes d’un projet à un autre.
19
1. Généralités algorithmique.

d. Variables locales versus globales.


• Un sous--programme peut accéder aux variables globales
définies dans le programme principal :

Programme Toto

instructions bloc d’instructions du sous-


Définition de variables programme Toto qui traite
val1
globales glob1, glob2, ... val2 para1, para2, .... avec les
... valeurs val1, val2, ...
Toto(val1,val2,...) valN
à l’aide de variables locales
... var1, var2, ...
instructions Toto accède aux
... variables globales glob1,
glob2, ... 20
1. Généralités algorithmique.

e. Deux types de
sous--programmes.
En algorithmique on distingue deux types de sous--
programmes :

• Les procédures, qui modifient l’état du programme


sans retourner de résultat.

• Les fonctions,qui elles ont pour but de retourner


un résultat.

21
1. Généralités algorithmique.

e. Deux types de
sous--programmes.
Procédures :

• C’est donc un sous--programme qui ne retourne pas de


résultat.

• Son rôle est donc d’effectuer des “effets de bords” :


affichage à l’écran ou dans un fichier, modification de
variables globales, de paramètres, etc.

22
1. Généralités algorithmique.

e. Deux types de
sous--programmes.
Fonctions :

• Il s’agit donc d’un sous--programme qui va


retourner un résultat au programme principal.

para1 Toto
para2 résultat
bloc d’instructions du sous-
paraN
programme Toto, qui traite
para1, para2, ....

23
1. Généralités algorithmique.

e. Deux types de
sous--programmes.
Remarque :

• Tous les langages de programmation ne distinguent pas


nommément ces deux types de sous–programmes.

• En Python, en C et en C++, on ne manipule ainsi a priori


que des fonctions. Bien qu’en pratique la distinction se
fasse.

• En Pascal par contre, les deux types sont clairement


séparés.
24
1. Généralités algorithmique.

f. Exercice.
Exercice : identifier les concepts définis dans cette
partie

nombresParfaits
int int
obtenirBorneMax AfficherNombresParfaitsJusqu’à

int bool
estParfait

int int
sommeDesdiviseurs

int
bool
estUnDiviseur
int

25
1. Généralités algorithmique.

Fin de ce chapitre

Avez – vous des questions ?

26
Sous--programme
s.
2. LES SOUS--PROGRAMMES
EN PYTHON.

27
2. Les sous--programmes en
Python.
Plan de ce chapitre

a. Procédures.
b. Fonctions.
c. Duck Typing.
d. Paramètres par défaut.
e. Paramètres immuables.
f. Variables locales et globales.
g. Modules de fonctions.
h. Exercices.
28
2. Les sous--programmes en
Python.
a. Procédures.
Syntaxe générale d’une procédure :

def
maProcedure(para1,para2,...,paraN):
bloc d’instructions de la procédure

29
2. Les sous--programmes en
Python.
a. Procédures.
Exemple : affichage du périmètre et de l’aire d’un rectangle

def rectangle(x,y):
print("périmètre :",2*(x+y),",aire :",x*y)

30
2. Les sous--programmes en
Python.
a. Procédures.
Autre exemple : affichage du nombre d’or

def afficheNombreDor():
print((1+sqrt(5))/2)

31
2. Les sous--programmes en
Python.
a. Procédures.
Utilisation d’une procédure :

• Comme une instruction prédéfinie du langage.

• On appelle la procédure parson nom, en lui


passant autant de paramètres qu’elle en possède.

• Ces paramètres peuvent être des variables ou des valeurs


explicites.

32
2. Les sous--programmes en
Python.
a. Procédures.
Exemples d’utilisations de procédures :

rectangle(5,2)
longueur,largeur = 6,3
rectangle(longueur,largeur)
afficheNombreDor()

33
2. Les sous--programmes en
Python.
b. Fonctions.
Syntaxe générale d’une fonction :

def maFonction(para1,para2,...,paraN):
bloc d’instructions de la fonction
return valeur

34
2. Les sous--programmes en
Python.
b. Fonctions.
Exemple : calcul du cube d’un nombre

def cube(x):
return
x*x*x

35
2. Les sous--programmes en
Python.
b. Fonctions.
Autre exemple : calcul du minimum et du maximum de deux
nombres

def calculMiniMaxi(x,y):
if x < y:
return x,y
else:
return y,x

36
2. Les sous--programmes en
Python.
b. Fonctions.
Remarques importantes :

• Une fonction peut retourner plusieurs valeurs, il suffit de


séparer celles--ci par des virgules.

• Une fonction peut contenir plusieurs fois la commande


“return”, mais elle cesse son fonctionnement dès qu’elle
en rencontre une.

37
2. Les sous--programmes en
Python.
b. Fonctions.
Utilisation d’une fonction :

• On appelle la fonction par son nom, en lui passant autant


de paramètres qu’elle en possède.

• Pour ne pas “perdre” la(les) valeur(s) retournée(s), on les


incorporera par exemple dans une opération d’affichage,
d’affectation, etc.

38
2. Les sous--programmes en
Python.
b. Fonctions.
Exemples d’utilisations de fonctions :

print(cube(5))
a,b = 5,-2
min,max = calculMiniMaxi(a,cube(b))
print("Minimum :",min,", Maximum :",max)

39
2. Les sous--programmes en
Python.
c. Duck Typing.
Principe du “Duck Typing” :

• En Python on ne précise pas les types attendus des


paramètres des sous--programmes.

• Cela implique que l’on peut utiliser un sous--programme


avec des paramètres de n’importe quel type, à la
condition que les opérations du sous--programme soient
compatibles avec les types des paramètres.

40
2. Les sous--programmes en
Python.
c. Duck Typing.
Exemple de “Duck Typing” :

def addition(x,y):
return x + y

print(addition(666,1))
print(addition("Brown ",'Sugar'))

41
2. Les sous--programmes en
Python.
d. Paramètres par défaut.
• Les paramètres d’un sous--programme peuvent comporter
des valeurs par défaut.

• Deux cas possibles :

– Lors de l’appel on ne précise pas de valeurs pour les


paramètres en question et le sous--programme utilise
celles par défaut.
– Si on précise des valeurs ce sont celles--ci qui sont
utilisées.

42
2. Les sous--programmes en
Python.
d. Paramètres par défaut.
Exemple :

def rectangle(x=3,y=1):
print("périmètre :",2*(x+y),"aire :",x*y)

rectangle()
rectangle(2)
rectangle(7,5)

43
2. Les sous--programmes en
Python.
d. Paramètres par défaut.
Autre exemple :

def rectangle(x,y=1):
print("périmètre :",2*(x+y),"aire :",x*y)

rectangle(2)
rectangle(7,5)

44
2. Les sous--programmes en
Python.
e. Paramètres immuables.
• Les paramètres de type “int”, “bool”, “float”, “complex”
et “str” sont immuables.

• Cela signifie que si l’on passe une variable de l’un de ces


types comme paramètre à une fonction, celle--ci ne
pourra pas en modifier sa valeur.

45
2. Les sous--programmes en
Python.
e. Paramètres immuables.
Exemple : tentative pour doubler un nombre

def doubler(x):
x *= 2

a = 3
print("valeur de a avant :",a)
doubler(a)
print("valeur de a après :",a)

46
2. Les sous--programmes en
Python.
e. Paramètres immuables.
Exemple (suite) : contournement du problème précédent en
utilisant une fonction

def doubler(x):
return 2*x

a = 3
print("valeur de a avant :",a)
a =
doubler(a) de a après :",a)
print("valeur

47
2. Les sous--programmes en
Python.
f. Variables locales et globales.
Variables locales :

• Ce sont donc des variables définies à l’intérieur d’un sous


programme et qui ne sont accessibles qu’au sein de celui--
ci.

• Elles servent essentiellement au bon fonctionnement du


sous--programme.

48
2. Les sous--programmes en
Python.
f. Variables locales et globales.
Exemple : fonction calculant la somme des n
premiers entiers, avec deux variables locales “utilitaires”

def sommeEntiers(n):
somme = 0
for i in range(n+1):
somme += i
return somme

49
2. Les sous--programmes en
Python.
f. Variables locales et globales.
Exemple (suite) : tentative d’utilisation de la variable locale
somme en dehors de la fonction

def sommeEntiers(n):
somme = 0
for i in range(n+1):
somme += i
return somme

print(somme)

50
2. Les sous--programmes en
Python.
f. Variables locales et globales.
Variables globales :

• Ce sont des variables définies en dehors de tout sous--


programme. Elles sont “globales” au sens où elles sont
visibles et utilisables dans tous les sous--programmes du
module courant.

51
2. Les sous--programmes en
Python.
f. Variables locales et globales.
Ordre de recherchedes variables dans un sous--
programme :

• La rencontre d’un nom de variable dans un sous--


programme déclenche une recherche LGI :

1. Recherche d’une variable locale correspondant à ce nom.


2. Recherche d’une variable globale correspondant à ce nom.
3. Recherche d’un nom interne au langage.

52
2. Les sous--programmes en
Python.
f. Variables locales et globales.
Exemple 1 :

def exemple1():
print(i)

i = 666
exemple1()

53
2. Les sous--programmes en
Python.
f. Variables locales et globales.
Exemple 2 :

def exemple2():
i = 111
print(i)

i = 666
exemple2()
print(i)

54
2. Les sous--programmes en
Python.
f. Variables locales et globales.
Exemple 3 :

def exemple3():
print(i)
i = 111
print(i)

i = 666
exemple3()

55
2. Les sous--programmes en
Python.
f. Variables locales et globales.
Modification de la valeur de variables globales :

• Les variables globales ne sont a priori pas modifiables par


des sous--programmes.

• Pour que cela soit possible, il faut le signaler explicitement


dans le sous programme à l’aide de l’instruction “global”.

Syntaxe :
global var

56
2. Les sous--programmes en
Python.
f. Variables locales et globales.
Exemple 4 :

def exemple4():
global i
print(i)
i = 111
print(i)

i = 666
exemple4()
print(i)

57
2. Les sous--programmes en
Python.
g. Modules de fonctions.
Module de fonctions : fichier d’extension “.py” contenant
des sous--programmes regroupés de façon cohérente.

Structure d’un projet : plusieurs modules de fonctions et un


module particulier, dit “main”, où l’on définit les variables du
projet et où l’on utilise les fonctions des différents modules.

58
2. Les sous--programmes en
Python.
g. Modules de fonctions.
Trois méthodes pour l’import d’un module :

from NomDuModule import *


from NomDuModule import

uneFonction import NomDuModule

59
2. Les sous--programmes en
Python.
g. Modules de fonctions.
Exemple :

# le module exemple

def doubler(x):
return 2*x

def tripler(x):
return 3*x

60
2. Les sous--programmes en
Python.
g. Modules de fonctions.
Exemple : les deux premières méthodes

from exemple import


* print(tripler(12))

from exemple import doubler


print(doubler(12))

61
2. Les sous--programmes en
Python.
g. Modules de fonctions.
Exemple : la troisième méthode

import exemple
print(exemple.tripler(12))

62
2. Les sous--programmes en
Python.
g. Modules de fonctions.
Remarque :

• Les deux premièresméthodessont à utiliser


avecun même
précaution car si l’on importe plusieurs modules
nom de fonction pourrait être utilisé plusieurs fois. Ce qui
créerait une ambiguïté.

• En cas de doutes on privilégiera donc la troisième.

63
2. Les sous--programmes en
Python.
h. Exercices.
Exercice 1 : écrire une procédure prenant en paramètre une
durée en secondes et qui affiche la conversion de cette durée
en heures, minutes, secondes.

64
2. Les sous--programmes en
Python.
h. Exercices.
Solution :

def conversion1(n):
h = n / 3600
/
m = ( - 3600*h) // 60
print(h,"heures,",m,
n
s = "minutes,",s,"secondes")
n % 60

65
2. Les sous--programmes en
Python.
h. Exercices.
Exercice 2 : écrire une fonction prenant en paramètre une
durée en heures, minutes, secondes et qui retourne le
nombre total de secondes correspondant.

66
2. Les sous--programmes en
Python.
h. Exercices.
Solution :

def conversion2(h,m,s):
return 3600*h + 60*m +
s

67
2. Les sous--programmes en
Python.
Fin de ce chapitre

Avez – vous des questions ?

68
ENSAM RABAT

Félicitations

Vous avez suivi avec succès le


chapitre n°3
Les sous-programmes

Le 17/11/2022 ZIDANE NORDINE 6969


Fin

Le 17/11/2022 ZIDANE NORDINE 7070


ENSAM RABAT

Sous-programmes.

Structures séquentielles de
données.

71

Vous aimerez peut-être aussi