Initiation à la programmation avec Python Sommaire du cours n°5

Initiation à la programmation
avec Python
Cours n°5
Copyright (C) 2015
Jean-Vincent Loddo
Licence Creative Commons Paternité
Partage à l’Identique 3.0 non transposé.
Sommaire du cours n°5
Notion n°10 : Les en programmation
Notion n°11 : La vérité sur le stockage des variables:
, , , 
Notion n°12 : La vérité sur l'appel de fonction:
Environnement  et 
3
Notion n°10, les «exceptions» (1)
Il est possible de  de l'exécution lorsqu'une
situation d'erreur ou exceptionnelle survient
,  impossible, accès à un 
 (listes, n-uplets) ou à une  (dictionnaires),
tentative d' d'une structure  (tuple, chaîne),
ouverture d'un  ou sans droits suffisants,...
Si tout se passe bien, les actions «de rattrapage» sont ignorées
Si quelque chose tourne mal (une «exception est soulevée»), alors les
actions de rattrapage (ou de secours) sont exécutées
 !




Actions ordinaires,
pouvant « soulever » une excéption
Actions extraordinaires (de rattrapage),
exécutées seulement si une excéption est soulevée
dans les 
4
Notion n°10, les «exceptions» (2)
Il est possible de  de l'exécution lorsqu'une
situation d'erreur ou exceptionnelle survient
Exemplen°1 () :

 !"# $%&'()
$%"* 
%+,,-
 .//012,3 ,1$
4%""(,3
Exemplen°2 (() :

 !((2/(# $$%(*,"3
5.67%(*,)3
%(
5.687%0"(,3
5
Notion n°10, les «exceptions» (3)
Il est possible de  de l'exécution lorsqu'une
situation d'erreur ou exceptionnelle survient
Exemplen°3 (différencier les exceptions) :
(9&(5.$

 !((2/(# $$%(*",3
5.67%(*,),3
$

 :2((;0<,3
&(5.$$%/9
(
5.$
 :2((;0<81(,3 ,1=$
&(5.$$%/9

5.687$%0"(,3
6
Notion n°10, les «exceptions» (4)
En Python, comme dans d'autres langages, les exceptions
correspondent à des  qui précisent la nature de l'erreur
>(>?>@.">>AAA
 !

8
6BCD7
AAA
6BCD7
6E7
Actions ordinaires,
pouvant « soulever » une excéption
Actions extraordinaires (de rattrapage) : les 
sont exécutées seulement si une excéption est soulevée
dans 8et si l'expression BCDcorrespond
à l'exception soulevée
Remarque: pour regrouper le traitement de plusieurs exceptions à la fois,
les expressions BCDaprès le mot clef except pourront aussi être
des n-uplets d'exceptions, par exemple >($
7
Notion n°10, les «exceptions» (5)
En Python, comme dans d'autres langages, les exceptions
correspondent à des  qui précisent la nature de l'erreur
>(>?>@.">>AAA
Il existe aussi une instruction, qui s'appelle , qui permet de
soulever manuellement une exception

BCD
(assimiler plusieurs types d'erreur) !
(9&(5.$

 !((2/(# $$%(*",3
5.67%(*,),3
$

%>=;/
Expression d'exception
8
Notion n°11 : La vérité sur le stockage des variables
Environnement, Mémoire, Adresses, Pointeurs (1)
Souvenirs du premier cours:
Pour traiter l'information que le programmeur connaît mais surtout celle qu'il
", les langages de programmation proposent les «variables»
Les variables sont des boîtes qui ont un  et un 
0(
FG
BHA4IJ
Le contenu est une , c'est-à-dire une information traitée par le langage
de programmation
Ce n'est pas faux, juste un peu simpliste...
La réalité est un peu plus complexe: il existe une  qui permet de
stocker une  à une certaine , et un catalogue des noms
() qui donne les adresses des valeurs associées
9
Notion n°11 : La vérité sur le stockage des variables
Environnement, Mémoire, Adresses, Pointeurs (2)
Il existe une  qui permet de stocker une  à une certaine , et un
catalogue des noms () qui donne les adresses des valeurs associées
CATALOGUE des noms
(ENVIRONNEMENT)
TOTO 8HH(48
Y8KIH(<L
X8JIH<
adressenom
MEMOIRE
8HH(48
8KIH(<L
8JIH<
adresse contenu
"salut le monde"
16
3.14159
Remarque:
Les « boîtes » ou « box » (emplacements)
en mémoire peuvent être de tailles
différentes (en nombre d'octets)
10
Notion n°11 : La vérité sur le stockage des variables
Environnement, Mémoire, Adresses, Pointeurs (3)
Pour comprendre ce que sont les , supposons de faire l'affectation suivante:
:6>F>B7
CATALOGUE des noms
(ENVIRONNEMENT)
 8HH(48
F8KIH(<L
B8JIH<
: 8L88
adressenom
MEMOIRE
8HH(48
8KIH(<L
8JIH<
adresse contenu
"salut le monde"
16
3.14159
Remarque:
Il y a des noms,
tels que TOTO, Y, X, LISTE
et des sous-noms,
tels que LISTE[0], LISTE[1], LISTE[2]
Et il y a donc :
des adresses (de noms) stockéesdansl'environnement
des adresses (de sous-noms) stockéesdanslamémoire.
Un pointeur est une adresse
(par exemple 8L8867)
où est stockée comme valeur
une autre adresse (par exemple 8KIH(<L).
C'estuneadressequiindique(pointe)uneautreadresse
8L88
8HH(488KIH(<L8JIH<
:
(trois sous-boîtes)
687 67 67
11
Notion n°11 : La vérité sur le stockage des variables
Environnement, Mémoire, Adresses, Pointeurs (4)
Par extension du sens, un  qui est associé à un pointeur  lui même  (tout
comme on dit qu'un nom associé à un entier est un entier, etc)
Les  sont directement associés à des adresses dans l'environnement.
Exemple: F 8KIH(<L
Les # sont indirectement associés à des adresses, en passant par l'environnement et
la mémoire. Exemple: :67 8L88678KIH(<L
On appellera , tout ce qui est associé à une adresse de façon directe (nom) ou
indirecte (sous-nom)
En Python, l'unique  qui existe est une #$#%:
D?DBCD
Le  (sémantique) de l'affectation se comprend en deux étapes :
(1) L'expression BCD est  et donne une valeur v qui se trouvait déjà en mémoire à
l'adresse a, ou qui a été fraîchement calculée et placée à l'adresse a. De toute façon,
l'évaluation de BCD  a & v
(2) La  est associée maintenant à l'adresse a (si c'est un , en ajoutant ou
modifiant un lien dans l'; si c'est un #, en ajoutant ou
modifiant un lien dans la )
12
Notion n°11 : La vérité sur le stockage des variables
Environnement, Mémoire, Adresses, Pointeurs (5)
En Python, l'unique  qui existe est une #$#%:
D?DBCD
(1) L'évaluation de BCD  a & v
(2) La  est associée maintenant à l'adresse a
 (la référence est un )
FFM
CATALOGUE des noms
(ENVIRONNEMENT)
8HH(48
8KIH(<L
8JIH<
"salut le monde"
16
3.14159
8L88
8HH(488KIH(<L8JIH<
:
(trois sous-boîtes)
687 67 67
MEMOIRE
 8HH(48
F8KIH(<L
F8L888<
B8JIH<
: 8L88
adressenom
8L888< 32
Emplacement
recyclable?
13
Notion n°11 : La vérité sur le stockage des variables
Environnement, Mémoire, Adresses, Pointeurs (6)
En Python, l'unique  qui existe est une #$#%:
D?DBCD
(1) L'évaluation de BCD  a & v
(2) La  est associée maintenant à l'adresse a
 (la réf. est un #)
:67
CATALOGUE des noms
(ENVIRONNEMENT)
8HH(48
8KIH(<L
8JIH<
"salut le monde"
16
3.14159
8L88
8HH(488KIH(<L8HH(48
:
(trois sous-boîtes)
687 67 67
MEMOIRE
 8HH(48
F8KIH(<L
F8L888<
B8JIH<
: 8L88
adressenom
8L888< 32
Emplacement
recyclable?
8JIH<
Emplacement
recyclable?
14
Souvenirs du deuxième cours:
Syntaxe de (
abstraction
) d'une fonction:
(9NDO>P>DO$

Syntaxe d' (
application
):
NBCD>P>BCD$
Au moment de l'appel, un  est créé pour être utilisé
'(il sera  à la fin)
Il est  par rapport à l'environnement global: en , les
affectations concernent l'environnement local; en , on cherche avant
dans le local, puis dans le global (ce qui résout le problème des )
('( !
DOBCDQP,QDO,BCDQ
Notion n°12 : La vérité sur l'appel de fonction :
Environnement global et local (1)
ENVIRONNEMENT
GLOBAL
TOTO 8HH(48
Y8KIH(<L
X8JIH<
adressenom
ENVIRONNEMENT
LOCAL
Z8IIJ8
X8IL9
adressenom
15
Notion n°12 : La vérité sur l'appel de fonction :
Environnement global et local (2)
Que se passe t'il lorsqu'on fait appel à une fonction qui fait des affectations
(dans )? Est-ce que l'est à l'extérieur de la fonction?
(99@$@67%0R"(
(9<B$B6878 %B&00$0RS0//0(
0(
FG
BHA4IJ
:6>F>B7
9:$
:%99&620(2>G>HA4IJ7
<:$
: %99&68>G>HA4IJ7
Pourquoi?
ENVIRONNEMENT
GLOBAL
TOTO 8HH(48
Y8KIH(<L
X8JIH<
LISTE 8L88
adressenom
ENVIRONNEMENT
LOCAL
Pourfoo(LISTE)
Z8L88
adressenom
ENVIRONNEMENT
LOCAL
Pourbar(LISTE)
X8L88
adressenom
Résultat de l'affectation
préliminaire @:
Résultat de l'affectation
préliminaire B:
16
Notion n°12 : La vérité sur l'appel de fonction :
Environnement global et local (3)
Que se passe t'il lorsqu'on fait appel à une fonction qui fait des affectations
(dans )? Est-ce que l'est à l'extérieur de la fonction?
(99@$@67
(9<B$B6878
9:$%:&*
<:$%:("68>G>HA4IJ7
ENVIRONNEMENT
GLOBAL
TOTO 8HH(48
Y8KIH(<L
X8JIH<
LISTE 8L88
adressenom
ENVIRONNEMENT
LOCAL
Pourfoo(LISTE)
Z8L88
8J8K
adressenom
ENVIRONNEMENT
LOCAL
Pourbar(LISTE)
X8L88
adressenom
8HH(48
8KIH(<L
8JIH<
"salut le monde"
16
3.14159
8L88
8L889<8KIH(<L8JIH<
687 67 67
MEMOIRE
8L889< 0
8HH(48
8J8K [ ]
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !