Systèmes Distribués - ESEN

22

Transcript of Systèmes Distribués - ESEN

Page 1: Systèmes Distribués - ESEN

Systèmes Distribués

1

ère

année Master

Travaux Pratiques I

Introdu tion au langage de programmation Python

ESEN - Université de la Manouba

Amine DHRAIEF

Page 2: Systèmes Distribués - ESEN

Table des matières

1 Avant Propos 4

1.1 Liens utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Prise en main 4

2.1 Hello Word ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Python en mode intera tif 5

3.1 input et print : le ture et a� hage . . . . . . . . . . . . . . . . . . . . . . . 5

3.2 Les nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.3 Les haînes de ara tères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.4 Les listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.5 Les tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.6 Premier exemple : la suite de Fibona i . . . . . . . . . . . . . . . . . . . . . 11

3.7 Les instru tions de ontr�le . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.7.1 L'instru tion if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.7.2 La bou le for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.7.3 La bou le while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.7.4 La fon tion range() . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.7.5 break(), ontinue() et else() . . . . . . . . . . . . . . . . . . . . . 14

4 Les fon tions 15

4.1 Ré ursivité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.2 Les arguments des fon tions . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5 Les s ripts 17

5.1 Utilisation d'une fon tion à l'intérieur d'un s ript . . . . . . . . . . . . . . . 17

5.2 Les modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.3 Créer son module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.4 Point d'entrée du s ript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

6 Les lasses 19

7 Exer i es 20

Page 3: Systèmes Distribués - ESEN

Table des �gures

1 Hello World en mode intera tif . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Hello World en mode s ript . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3 Exé ution du s ript helloworld.py . . . . . . . . . . . . . . . . . . . . . . . . 5

4 Le ture et a� hage de variables . . . . . . . . . . . . . . . . . . . . . . . . . 5

5 Utilisation des nombres en mode intera tif . . . . . . . . . . . . . . . . . . . 6

6 A� hage d'une haîne de ara tère . . . . . . . . . . . . . . . . . . . . . . . 7

7 Con aténation et répétition d'une haîne de ara tère . . . . . . . . . . . . . 7

8 Con aténation d'une haîne de ara tère ave une variable . . . . . . . . . . 7

9 Indi e et extra tion de haînes . . . . . . . . . . . . . . . . . . . . . . . . . . 8

10 Chaînes de ara tères immuables . . . . . . . . . . . . . . . . . . . . . . . . 9

11 Création d'une nouvelle haîne à partir d'une an ienne . . . . . . . . . . . . 9

12 Longueur d'une haîne de ara tère . . . . . . . . . . . . . . . . . . . . . . . 9

13 Dé laration et manipulation des listes . . . . . . . . . . . . . . . . . . . . . . 10

14 Con aténation des listes et modi� ation de leur ontenu . . . . . . . . . . . . 10

15 append() et len() d'une liste . . . . . . . . . . . . . . . . . . . . . . . . . . 11

16 Dé laration et manipulation des tuples . . . . . . . . . . . . . . . . . . . . . 11

17 La suite de Fibona i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

18 Exemple de l'instru tion if . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

19 Exemple de la bou le for . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

20 Exemple de la bou le while . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

21 Exemple de la fon tion range() . . . . . . . . . . . . . . . . . . . . . . . . . 15

22 Exemple de dé laration d'une fon tion . . . . . . . . . . . . . . . . . . . . . 16

23 Fon tion ré ursive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

24 Passage d'arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

25 Arguments fa ultatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

26 Arguments fa ultatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

27 Utilisation des modules dans un s ript . . . . . . . . . . . . . . . . . . . . . 18

28 Création d'un module personnalisé (opération) . . . . . . . . . . . . . . . . . 18

29 Utilisation du module pré édemment réé . . . . . . . . . . . . . . . . . . . 19

30 Utilisation des lasses en Python . . . . . . . . . . . . . . . . . . . . . . . . 20

Page 3

Page 4: Systèmes Distribués - ESEN

1 Avant Propos

Python est un langage de programmation open sour e, objet, multi-paradigme et multi-

plateformes. Python a été devloppé par Guido van Rossum. La première version de Python

(0.9.0) a été posté sur le forum Usenet alt.sour es en févrer 1991. Le nom de Python est

un hommage à la série télévisée britannique Monty Python's Flying Cir us. Guido van Ros-

sum est onsidéré au sein de la ommunauté Python omme un Benevolent di tator for life

(BDFL) (� di tateur bienveillant à vie �), e qui signi�e qu'il ontinue à suivre le dévelop-

pement de Python et qu'il prend des dé isions lorsque 'est né essaire.

1.1 Liens utiles

� Site o� iel de Python : https://www.python.org/

� Installer Python : https://fr.wikihow. om/installer-Python

� Tutoriel o� iel de Python : https://do s.python.org/fr/3/tutorial/

� Apprendre à programmer ave Python 3, de Gérard Swinnen : http://inforef.be/

swi/python.htm

� Introdu tion à Python 3, ours et exer i es orrigés, de Bob Cordeau : http://www.

iut-orsay.u-psud.fr/fr/departements/mesures_physiques/mphy_pedagogie.html

� Introdu tion à la programmation en Python, de Rémi Coulom, Alain Taquet : http://

www.grappa.univ-lille3.fr/~ oulom/Python/index.html

2 Prise en main

2.1 Hello Word !

En mode intera tif :

1. Lan er python depuis le shell Linux : $python

2. Exé uter le ode print('hello world') omme indiquer par la �gure Fig. 1

Figure 1 � Hello World en mode intera tif

En mode s ript :

1. Créer un � hier helloworld.py : $tou h helloworld.py

Page 4

Page 5: Systèmes Distribués - ESEN

2. Insérer le ode présenté par la �gure Fig. 2

3. Exé uter le ode omme indiqué par la �gure Fig. 3

Figure 2 � Hello World en mode s ript

Figure 3 � Exé ution du s ript helloworld.py

3 Python en mode intera tif

3.1 input et print : le ture et a� hage

La fon tion input() permet de lire les données depuis l'entrée standard. La variable lu

est sto ké omme une haîne de ara tère. La fon tion print() sert à a� her des données

sur la sortie standard. La �gure Fig. 4 illustre l'utilisation d'input() et de print()

Figure 4 � Le ture et a� hage de variables

Page 5

Page 6: Systèmes Distribués - ESEN

3.2 Les nombres

� les opérateurs +,−, ∗, / fon tionnent omme dans C ou Pas al

� les nombres entiers 1, 2, 3 sont de types int

� les nombres dé imaux 1.333, 5.6 sont de types float

� // pour la division entière

� % pour le reste de la division entière

� ∗∗ est l'opérateur de puissan e

� Le signe = est l'opérateur d'a�e tation

La Fig. 5 illustre l'utilisation des nombres dans Python.

Figure 5 � Utilisation des nombres en mode intera tif

3.3 Les haînes de ara tères

La haîne de ara tère 'Première ligne.\n Se onde ligne' est a�e tée à la variable s (voir

�gure Fig.6). Le ara tère '\n' est interprété omme retour à la ligne uniquement ave la

fon tion print().

Dans la �gure Fig. 7, deux haînes de ara tères ' a he' et ' ou' sont répété ave l'opé-

rateur '*' et on aténées ave l'opérateur '+'

La on aténation d'une haîne de ara tère ave une variable se fait aussi ave l'opérateur

'+' (voir la �gure Fig.8).

Page 6

Page 7: Systèmes Distribués - ESEN

Figure 6 � A� hage d'une haîne de ara tère

Figure 7 � Con aténation et répétition d'une haîne de ara tère

Figure 8 � Con aténation d'une haîne de ara tère ave une variable

Page 7

Page 8: Systèmes Distribués - ESEN

En python un ara tère est une haîne de longueur 1. Les haînes sont indexées, le premier

ara tère à l'indi e 0 si on onsidère la haîne de gau he à droite. Dans le as ontraire, les

indi e sont négatif, le premier étant -1. Il est aussi possible de dé ouper (sli e) une haîne

a�n d'en extraire une sous- haîne. En plus d'a éder à un élément par son indi e, il est aussi

possible de � tran her � (sli e en anglais) une haîne. A éder à une haîne par un indi e

permet d'obtenir un ara tère, tran her permet d'obtenir une sous- haîne (voir la �gure

Fig9).

Figure 9 � Indi e et extra tion de haînes

Les haînes de ara tères, en Python, ne peuvent pas être modi�ées. On dit qu'elles

sont immuables (non-modi�ables). A�e ter une nouvelle valeur à un indi e dans une haîne

produit une erreur (voir la �gure Fig. 10). Par ontre, on peut réer une nouvelle haîne

de ara tère à partir d'une an ienne par on aténation (voir la �gure Fig. 11). La fon tion

len() renvoie la longueur d'une haîne (voir la �gure Fig. 12).

Page 8

Page 9: Systèmes Distribués - ESEN

Figure 10 � Chaînes de ara tères immuables

Figure 11 � Création d'une nouvelle haîne à partir d'une an ienne

Figure 12 � Longueur d'une haîne de ara tère

Page 9

Page 10: Systèmes Distribués - ESEN

3.4 Les listes

Les types ombinés sont utilisés pour regrouper plusieurs valeurs. Les listes sont un

exemple de type ombiné qui permet de regrouper plusieurs valeurs pas obligatoirement de

même type. Une liste est un série d'élément séparés par des virgules. Comme les haînes

de ara tères, les listes peuvent être indi ées et dé oupées (voir la �gure Fig. 13) et gèrent

aussi les opérations omme les on aténations. Toutefois, à la di�éren e des haînes qui sont

immuables, il est possible de modi�er le ontenu d'un haîne (voir la �gure Fig. 14).

Figure 13 � Dé laration et manipulation des listes

Figure 14 � Con aténation des listes et modi� ation de leur ontenu

La méthode append() permet d'ajouter un nouvel élément d'une liste. La méthode len()

s'applique aussi aux listes (voir la �gure Fig. 15).

Page 10

Page 11: Systèmes Distribués - ESEN

Figure 15 � append() et len() d'une liste

3.5 Les tuples

Les tuples (de l'anglais "Table UPLEt"), assez semblable aux listes mais immuables, non

modi�ables et o upe moins d'espa e mémoire que les listes. La �gure Fig. 16

Figure 16 � Dé laration et manipulation des tuples

3.6 Premier exemple : la suite de Fibona i

La �gure Fig. 17 illustre un premier exemple d'un programme en Python qui al ul les

termes de la suite de Fibona i.

Cet exemple introduit les fon tionnalités suivantes :

� L'a�e tation multiple : Les valeurs 0 et 1 sont a�e tés simultanément aux variables

a et b. Cette méthode est en ore utilisée à la dernière ligne.

� La bou le while : Elle s'exé ute tant que la ondition (i i : a < 10) reste vraie. En

Python, omme en C, tout entier di�érent de zéro est vrai et zéro est faux.

� L'indentation du orps de la bou le : Les instru tions sous Python doivent être

indenté (une tabulation ou des espa es). Toutes les lignes à l'intérieur d'un même blo

doivent être indenté au même niveau.

� La fon tion print() : a� he la valeur des paramètres qui lui sont fournis.

Page 11

Page 12: Systèmes Distribués - ESEN

Figure 17 � La suite de Fibona i

3.7 Les instru tions de ontr�le

3.7.1 L'instru tion if

La syntaxe de if est présentée i-dessous. Il n'y pas d'instru tion ase ou siw h dans

Python. On obtient le même résultat ave une séquen e de if ... elif ... elif ...else

i f ond i t i on :

exé uté s i ond i t i on e s t v r a i e

[ e l i f ond i t i on2 :

exé uté s i ond i t i on2 e s t v r a i e ℄

[ else :

exé uté s i ond i t i on e s t f au s s e ℄

La �gure Fig. 18 présente un exemple de l'instru tion if.

3.7.2 La bou le for

À la di�éren e des autres langages de programmation ( omme le C par exemple), l'ins-

tru tion for en Python permet d'itérer sur des éléments d'une séquen e (liste,....), dans

l'ordre dans lequel ils apparaissent dans la séquen e. La syntaxe de la bou le for est présen-

tée i-dessous.

for nom_variable in ensemble_valeur :

i n s t r u t i o n s

La �gure Fig. 19 présente un exemple de la bou le for.

Page 12

Page 13: Systèmes Distribués - ESEN

Figure 18 � Exemple de l'instru tion if

Figure 19 � Exemple de la bou le for

Page 13

Page 14: Systèmes Distribués - ESEN

3.7.3 La bou le while

La bou le while exé ute des ommandes tant qu'une ou plusieurs onditions sont vraies.

La syntaxe de la bou le while est présentée i-dessous.

while ond i t i on :

i n s t r u t i o n s

La �gure Fig. 20 présente un exemple de la bou le while.

Figure 20 � Exemple de la bou le while

3.7.4 La fon tion range()

Conjointement utilisée ave la bou le for, la fon tion range() permet d'itérer sur des

nombres. La �gure Fig. 21 présente un exemple de la fon tion range().

3.7.5 break(), ontinue() et else()

L'instru tion break(), interrompt la bou le for ou while. Dans une bou le l'instru tion

else est exé utée lorsqu'une bou le se termine alors que tous ses éléments ont été traités ou

que la ondition devient fausse, mais pas lorsque la bou le est interrompue par une instru tion

break. On peut faire la di�éren e entre un else ratta hée à la bou le et non à l'instru tion

if in lus dans une bou le grâ e à l'indentation. L'instru tion ontinue fait passer la bou le

à son itération suivante

Page 14

Page 15: Systèmes Distribués - ESEN

Figure 21 � Exemple de la fon tion range()

4 Les fon tions

Une fon tion sous Python est dé�ni omme suit :

def nomDeLaFon tion( l i s t e de paramètres ) :

. . .

b lo d ' i n s t r u t i o n s

. . .

return r e s u l t a t

La ligne ontenant l'instru tion def se termine obligatoirement par ' :', omme 'est le

as pour if, for et while. En Python, une fon tion en renvoie pas obligatoirement de résultat

et le return est ainsi fa ultatif. Dans e as on parle plut�t de pro édure. Un exemple de

dé laration et d'utilisation d'une fon tion est présenté par la �gure Fig. 22.

4.1 Ré ursivité

Un exemple de al ul de la fon tion fa torielle par ré ursivité est présenté par la �gure

Fig. 23.

4.2 Les arguments des fon tions

Les arguments des fon tions peuvent être des variables ou des fon tions de rappel appelées

aussi allba k (voir la �gure Fig. 24).

Page 15

Page 16: Systèmes Distribués - ESEN

Figure 22 � Exemple de dé laration d'une fon tion

Figure 23 � Fon tion ré ursive

Figure 24 � Passage d'arguments

Page 16

Page 17: Systèmes Distribués - ESEN

On peut rendre un argument fa ultatif en pré isant une valeur par défaut, 'None' dans

l'exemple présenté par la �gure Fig. 25. La valeur par défaut est é rasée si l'argument est

pré isé.

Figure 25 � Arguments fa ultatifs

5 Les s ripts

5.1 Utilisation d'une fon tion à l'intérieur d'un s ript

Le s ript présenté par la �gure Fig. 26 a été édité sous Geany (https ://www.geany.org/)

Le s ript omporte trois parties : les deux fon tions ube() et volumeSphere(), et ensuite le

Figure 26 � Arguments fa ultatifs

orps prin ipal du s ript qui appel volumeSphere().

5.2 Les modules

Les modules sont des � hiers qui regroupent des ensembles de fon tions. Un s ript Python

typique est onstituée d'un programme prin ipal a ompagné de un ou plusieurs modules

Page 17

Page 18: Systèmes Distribués - ESEN

ontenant ha un les dé�nitions d'un ertain nombre de fon tions a essoires. La fon tion

import permet d'importer un module omme indiqué i-dessous

import module1

import module2

import module3 , module4

import permet d'importer toutes les fon tions d'un module (from math import *) ou

une fon tion parti ulière (from math import os).

Le s ript présenté par la �gure Fig. 27 présente une utilisation des modules dans des

s ripts.

Figure 27 � Utilisation des modules dans un s ript

5.3 Créer son module

Python permet de réer son propre module. Dans l'exemple i-dessous (Fig. 28) on dé�nit

un module qui e�e tue des opérations mathématiques élémentaires. La �gure Fig. 29 illustre

l'utilisation du module pré édemment dé�nit.

Figure 28 � Création d'un module personnalisé (opération)

5.4 Point d'entrée du s ript

L'instru tion if __ name__ == __ main __: pla é à la �n d'un module sert à détermi-

ner si le module est � lan é � en tant que programme autonome (auquel as les instru tions

qui suivent doivent être exé utées), ou au ontraire utilisé omme une bibliothèque de lasses

importée ailleurs. Dans e as ette partie du ode est sans e�et. Nous disposons ainsi d'un

Page 18

Page 19: Systèmes Distribués - ESEN

Figure 29 � Utilisation du module pré édemment réé

mé anisme intéressant, qui nous permet d'intégrer des instru tions de test à l'intérieur des

modules, même si eux- i sont destinés à être importés dans d'autres s ripts.

6 Les lasses

La dé�nition d'une lasse sous Python se fait omme suit. Par onvention, le nom des

lasses sous Python ommen e par une majus ule.

lass NomDeLaClasse :

attr ibut_1

attr ibut_2

attr ibut_n

methode_1

methode_2

methode_n

On instan ie un objet à l'aide de l'opération d'a�e tation et on peut ainsi a éder aux

attributs et aux méthodes de l'objet :

var=NomDeLaClasse ( ) # in s t a n i a t i o n d 'un o b j e t

print ( var . attr ibut_1 ) # a ès à l ' a t t r i b u t de l ' o b j e t

var . methode_1 ( . . . , . . . ) # a ès à l a méthode de l ' o b j e t

Le premier argument des méthodes des lasses doit être toujours l'instan e de la lasse

self. Une méthode ontient ainsi au moins un seul argument : self. La méthode onstru -

teur est dé�nit par def __ init __(self,...): : deux symboles d'unders ore '_' ensuite

init et deux symboles d'unders ore '_'. Une méthode onstru teur est exé utée automati-

quement lorsque l'on instan ie un nouvel objet à partir de la lasse. On y pla e tout e qui

semble né essaire pour initialiser automatiquement l'objet que l'on rée. La �gure Fig. 30

présente un exemple de l'utilisation de la programmation orienté objet en Python.

Page 19

Page 20: Systèmes Distribués - ESEN

Figure 30 � Utilisation des lasses en Python

7 Exer i es

1. É rire un s ript qui permet de saisir le prénom et le nom de l'utilisateur et renvoie

"Bonjour", suivi du prénom et nom

2. É rire un s ript qui invite l'utilisateur à entrer un nombre entier, puis qui a� he le

arré de e nombre ainsi que sa ra ine arré. (N.B : La saisie d'un entier se fait par

int(input()). Pensez à l'utilisation du module math).

3. É rire un s ript qui invite l'utilisateur à entrer deux notes l'une après l'autre, puis qui af-

� he la moyenne de es deux notes. (N.B : La saisie d'un �oat se fait par float(input()))

4. É rire un s ript qui invite l'utilisateur à entrer trois nombres séparés par une virgule,

Page 20

Page 21: Systèmes Distribués - ESEN

puis les a� he dans l'ordre inverse de la saisie. (N.B : La saisie d'une liste séparée par

une virgule se fait par list(eval(input())))

5. É rire un s ript qui invite l'utilisateur à saisir un �ottant. S'il est positif ou nul, le s ript

a� he sa ra ine, sinon a� he un message d'erreur.

6. É rire un s ript qui al ule puis a� he la somme des nombres impaires et la somme des

nombres paires ompris entre 1 et n, ave n étant une variable demandée à l'utilisateur.

7. É rire une module premier ontenant les fon tions suivantes :

� isprime(n) : renvoie vrai si le nombre n est premier, 0 sinon.

� primes(n) : a� he tout les nombre premier entre 0 et n.

� nextprime(n) : a� he le premier nombre premier qui arrive après n.

Utiliser e module dans un s ript Python.

8. Soit l'arbores en e des pro essus présentée par la �gure i-dessous :

Page 21

Page 22: Systèmes Distribués - ESEN

P1 → P2

En utilisant le module os de Python :

� Créer ette arbores en e

� Pour haque pro essus a� hez le PID du pro essus et le PID de son père.

Des informations sur le module os sont disponibles en ligne : https://do s.python.

org/fr/3/library/os.html.

Page 22