Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T...

96
Programmation Python Rémy CHOLLET* Cléo BARAS Lorraine GOEURIOT Jérôme MARTIN Mails : [email protected] IUT Département Réseaux & Télécommunications, 1ère année Version 2020/2021 CBGM (IUT-RT) Prog 1 Version 20/21 1 / 96

Transcript of Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T...

Page 1: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Programmation Python

Rémy CHOLLET*Cléo BARAS

Lorraine GOEURIOTJérôme MARTIN

Mails : [email protected]

IUT Département Réseaux & Télécommunications, 1ère année

Version 2020/2021

CBGM (IUT-RT) Prog 1 Version 20/21 1 / 96

Page 2: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Chapitre 1

Introduction

CBGM (IUT-RT) Prog 1 Version 20/21 2 / 96

Page 3: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

L’informatique en R&T Les modules d’informatique

L’informatique en R&T

Sem. Modules IntituléS1 M1105 Unix

M1103 Architecture des équipements InformatiquesM1106 Initiation au développement WebM1207 Programmation 1

S2 M2104 SGBDM2105 Web DynamiqueM2109 Gestion de Projets informatiquesM2207 Programmation 2

S3 RCPI01 POOM3206 Scripts

S4 M4206C Programmation sur MobilesRCPD02 SGBD Avancés

CBGM (IUT-RT) Prog 1 Version 20/21 3 / 96

Page 4: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

L’informatique en R&T Planning

M1207 - Programmation 1

ModalitésCours/TD : 1h + 7 × 2hTP : 2h + 6 × 2hÉvaluation : DS papier 1h30 ; DS machine 1h30

Planning des séancesSemaine CM/TD TP45 Accueil46 Introduction, variable, expression Prise en main de l’IDE47 Bases de la programmation48 Structures alternatives Structures alternatives49 Structures répétitives Structures alternatives50 Structures répétitives imbriquées Structures répétitives51 Fonctions Structures répétitives imbriquées1 Fonctions Fonctions1 Révision DS Fonctions2 DS le 13/01/21 Examen sur machine le 13 ou 15/01/21

CBGM (IUT-RT) Prog 1 Version 20/21 4 / 96

Page 5: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

L’informatique en R&T Outils à disposition

Outils à disposition

Poly, slides, sujets de TD et de TP sur Chamilo :http://chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/index.phpIDE PyCharm Community Edition de JetBrains

CBGM (IUT-RT) Prog 1 Version 20/21 5 / 96

Page 6: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Définition L’informatique

Informatique

Définition (Informatique (data processing), algorithme)

L’informatique est la science du traitement automatique (software) del’information (data), dont découle des programmes qui implémentent desalgorithmes à l’aide d’un langage de programmation.

DonnéesProgramme(software) Résultats

Ordinateur

CBGM (IUT-RT) Prog 1 Version 20/21 6 / 96

Page 7: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Définition L’informatique

Algorithme

Définition (Algorithme)

Un algorithme est la mise en œuvre d’une succession finie d’actionsélémentaires (instructions) pour résoudre un problème ou obtenir unefonctionnalité.

Exemple (Des algorithmes)

Recette de cuisine, notice de montageRésolution de ax2 + bx + c = 0Tri de donnéesCryptographieRecherche d’un plus court cheminetc.

CBGM (IUT-RT) Prog 1 Version 20/21 7 / 96

Page 8: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Définition L’informatique

Un exemple d’algorithme

Exemple (Prise d’un médicament contre la toux)

"En cas de toux, prendre, sauf avis contraire du médecin, uncomprimé toutes les 4 heures, jusqu’à disparition des symptômes.Pour les enfants, un comprimé toutes les 8 heures suffit."

SI toux ET PAS d’avis contraire du médecin ALORS| SI enfant ALORS| | delai d’attente VAUT 8 heures| SINON| | delai d’attente VAUT 4 heures| FIN DE SI| TANT QUE PAS disparition des symptômes FAIRE| | prendre un comprimé| | attendre pendant le delai d’attente| FIN DE TANT QUEFIN DE SI

CBGM (IUT-RT) Prog 1 Version 20/21 8 / 96

Page 9: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Définition Les langages de programmation

Langage de programmation

Définition (Langage de programmation)

Ensemble de caractères, symboles, mots-clés et règles d’assemblage(équivalents au vocabulaire et à la grammaire d’une langue), utilisé pourdonner des instructions à l’ordinateur.

Évolution des langages1 Langage machine (de plus bas niveau) puis assembleur (mnémonique,

macros, variables)2 Langage structuré :

C, C#, C++, ObjectiveC, Pascal, Java ... (compilé)Shell, Tcl/Tk, Perl, Python, Ruby, JavaScript, Matlab... (interprété)paradigmes de programmation : procédural, orienté objet, fonctionnel...

3 Langage naturel : SQL, Windev, 4D (BDD)

� wikipedia

CBGM (IUT-RT) Prog 1 Version 20/21 9 / 96

Page 10: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Définition Les langages de programmation

Language compilé vs interprété

2 approches1 Compilation : traduction d’un code source vers un code cible exécutable

code exécutable directement par l’OSBytecode exécutable par machine virtuelle (cf. Java au S3)

2 Interprétation : code source converti en bytecode "à la volée" soitlecture et analyse d’une instruction (ou une expression)si correcte, l’exécuter (ou évaluer l’expression)passer à l’instruction suivante

Pour Python889

tout le code source est vérifié syntaxiquementun bytecode est produit automatiquement pour exécution dansl’interpréteur Python (via une machine virtuelle)le code peut aussi être interprété en mode interactif

CBGM (IUT-RT) Prog 1 Version 20/21 10 / 96

Page 11: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Définition Le langage Python

Python?

Créé par Guido van Rossum en 19901er objectif : un nouveau shellgrande communauté, usages industrialisésen progression ces dernières années (voir tiobe-index)Open source, large communauté, bonne portabilitéplutôt haut niveau, plutôt pragmatique

Caractéristiques :

w l’indentation comme syntaxe

w tout est objet

w typage fort et dynamique

CBGM (IUT-RT) Prog 1 Version 20/21 11 / 96

Page 12: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Définition Le langage Python

Pourquoi Python?

Très bonne expressivitéPrototypage rapideAspects modernes (itérateurs, compréhension, introspection...)Très bon langage pour l’administration systèmeBibliothèques très diverses : système, calcul, imagerie, web, machinelearning, big data, etc...Cibles diverses

CBGM (IUT-RT) Prog 1 Version 20/21 12 / 96

Page 13: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Définition Le langage Python

Some Spam?

� https://www.dailymotion.com/video/x2hwqlwCBGM (IUT-RT) Prog 1 Version 20/21 13 / 96

Page 14: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Définition Témoignage

Témoignage

Si un étudiant est comme moi, en difficulté, dans les matière type« programmation », il ne faut pas désespérer.

Nous pouvons comparer la progression d’un langageinformatique à l’apprentissage d’une langue étrangère. Les coursm’ont permis de comprendre les concepts généraux. Mais c’est lefait de pratiquer tous les jours qui m’a réellement permis deprogresser.

– Nathan R. 2016

CBGM (IUT-RT) Prog 1 Version 20/21 14 / 96

Page 15: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Définition Pour aller plus loin ...

Bonnes pratiques

Qualités d’un logiciel

PerformanceFiabilitéRobustesse

PortabilitéLisibilité du codeMaintenabilité

Concrètement, il faut :Tester unitairement le codeDocumenter le code, le commenterUtiliser des nommages pertinents dans le codeStructurer le code par des modules, des fonctions et aussi des classesLimiter les dépendances, chercher la simplicité et la clarté

CBGM (IUT-RT) Prog 1 Version 20/21 15 / 96

Page 16: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Chapitre 2

Variables et expressions

CBGM (IUT-RT) Prog 1 Version 20/21 16 / 96

Page 17: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Variables Qu’est ce qu’une variable?

Variables

Définition (Variable)

Une variable désigne un objet informatique dans une zone mémoire. Elle :1 est désignée par un identificateur (un nom) et liée à une référence2 mémorise une valeur unique à un instant donné3 présente un type, précisant la nature de la valeur qu’elle mémorise

Exemple (Une variable)

L’instruction var = 3 utilise une variable var, mémorisant la valeur 3, et doncde type entier

Remarques

Une variable possède également :une durée de vieune portéedes propriétés en tant qu’objet informatique décrit par une classe

CBGM (IUT-RT) Prog 1 Version 20/21 17 / 96

Page 18: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Variables Qu’est ce qu’une variable?

Choix de l’identificateur889

Choix de l’identificateurL’identificateur est un nom :Í utilisant des lettres (sensibles à la casse), des chiffres ou _

ë interdisant les caractères spéciaux (comme #, @, -, etc.)ë interdisant les noms commençant par un nombreë interdisant les mots-clés du langage Python :

and del from not while

as elif global or with

assert else if pass yield

break except import print

class exec in raise

continue finally is return

def for lambda try

CBGM (IUT-RT) Prog 1 Version 20/21 18 / 96

Page 19: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Variables Type d’une variable

Type d’une variable

Définition (Type d’une variable)

Le type est la nature (la classe) de la valeur mémorisée par la variable. Il :est défini à la création de la variable ;est dynamique, c’est-à-dire qu’il peut évoluer lors du programme;

889 impose des limites de précision à une valeur.

Comment connaître le type d’une variable x?

Avec le résultat de la fonction type(x) :

type( 0 ) renvoie (indique) <class ’int’>

type( 0. ) renvoie <class ’float’>

type( ’Spam’ ) renvoie <class ’str’>

CBGM (IUT-RT) Prog 1 Version 20/21 19 / 96

Page 20: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Variables Type d’une variable

Types principaux (simples)

Nom Type (class) Exemples devaleurs

Remarque Précision

entier int -2 exprimé en base 10

illimitée (tant que lamémoire le permet)

(integer ) 10 (expression par défaut)-0b10 exprimé en binaire0b1010 avec préfixe 0b

-0x2 exprimé en hexadécimal0xA avec préfixe 0x (ou 0X)-0o2 exprimé en octal0o12 avec préfixe 0o (ou 0O)

flottant float 1.34 avec le séparateur . limitée, allant desys.float_info.min àsys.float_info.max

-0.6

3.1462

chaîne de str "Spam" délimitée par ’ ou "

caractères (string) ’Egg’

booléen bool False Etat faux(boolean) True Etat vrai

non défini NoneType None exprime l’état non défini

CBGM (IUT-RT) Prog 1 Version 20/21 20 / 96

Page 21: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Variables Type d’une variable

Le type list

Type liste list

Le type list est associé à des collections ordonnées (ou séquences)d’éléments (c’est à dire d’objets).Chaque élément d’une liste peut être de type quelconque (int, str, ...).Chaque élément d’une liste est associé à un indice, numéro entierdécrivant la position de l’élément dans la liste. Les indices débutent à 0.

Exemple (Des listes)

Liste de 4 entiers : [1, 2, 5, -7]

Liste d’entiers et de flottants : [0.2, 4, -1, 3.14, 20]

Dans la liste de 3 chaînes de caractères ["unix", "python", "projet"],"unix" est l’élément d’indice 0 ; "python" est l’élément d’indice 1 ;"projet" est l’élément d’indice 2.

CBGM (IUT-RT) Prog 1 Version 20/21 21 / 96

Page 22: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Variables Affectation d’une variable

Déclaration et affectation d’une variable

Variables du contexte de nommage et mémoire

Les variables permettent d’accéder à des objets informatiques (une valeurd’un certain type). Python s’appuie donc sur deux ensembles différents : lecontexte (ou espace) de nommage et la mémoire (vive). Ces deuxensembles sont libérés à la fin de l’exécution d’un programme.

Exemple (Déclaration et affectation d’une variable)

L’instruction x=2 :1 alloue une zone mémoire pour ranger

l’objet de type entier 2 (<class ’int’>),2 cherche si x existe dans le contexte de

nommage. Ne le trouvant pas, une entréex est ajoutée à ce contexte,

3 finalise l’affectation en associant x à 2

Contexte

x

Mémoire

2

Attention au sens d’une affectation : ë Écrire 2 = x n’a pas de sens !CBGM (IUT-RT) Prog 1 Version 20/21 22 / 96

Page 23: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Expression Expressions et opérateurs

Expression

Définition (Expression, opérateurs)

Une expression est une série de calculs ayant pour résultat une valeur d’uncertain type. Elle utilise des opérateurs (+, -, *, ...) et des opérandes(valeurs, variables, expressions) et s’évalue au regard de priorités de calcul.

Exemple (Des expressions)

Expression pythonRécupération de la valeur de la variable x x

Expression arithmétique sur des valeurs 4/3

Expression arithmétique avec des variables (x+2) % 5

CBGM (IUT-RT) Prog 1 Version 20/21 23 / 96

Page 24: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Expression Expressions et opérateurs

Principaux opérateurs

Opérateurs des expressions impliquant des nombres (int ou float)

Symb. Signification Symb. Signification+ addition * multiplication- soustraction / division (décimale)// division euclidienne % modulo (reste de la division)** exposant : 3**2 vaut 9

Opérateurs des expressions impliquant des chaînes de caractères (str)

Symb. Signification Symb. Signification+ concaténation * répétition

Opérateurs des expressions impliquant des booléens (bool)

Symb. Signification Symb. Significationor union logique and intersection logiquenot négation logique

Remarque : Python autorise des expressions mélangeant des types lorsqu’ilssont homogènes uniquement (typage fort).

CBGM (IUT-RT) Prog 1 Version 20/21 24 / 96

Page 25: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Expression Expressions et opérateurs

Priorité des opérateurs dans les expressions

Priorité des opérateurs, par ordre croissant, avec groupement de gauche àdroite si priorités égales

Priorité Opérateur DescriptionBasse or ou logique(en dernier ) and et logique

not non logique<, <=, >, >=, <>, !=, == comparaison| ou bit à bit^ ou exclusif bit à bit& et bit à bit<<, >> décalage bit à bit+, - addition et soustraction*, /, //, % Multiplication, division, reste+x, -x, ~x signe positif, signe négatif, non bit à bit

Haute ** exposant(en premier) (expression) expression délimitée par des parenthèses

Remarque : en cas de doute, utilisez des parenthèses

CBGM (IUT-RT) Prog 1 Version 20/21 25 / 96

Page 26: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Expression Expressions et affectations

Expressions et affectations

Stocker le résultat d’une expression

Les expressions exploitent l’espace mémoire : on mémorise la valeur parune affectation après l’évaluation de l’expression.

Exemple (Affectation du résultat d’une expression)

res = (x ** 2) / 5

Modifier une variableLa valeur d’une expression utilisant une variable peut être affectée à cettemême variable.

Exemple (Affectation du résultat d’une expression)

var = 2*(var + 1)

CBGM (IUT-RT) Prog 1 Version 20/21 26 / 96

Page 27: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Expression Expressions et affectations

Expressions et affectations

Affectation composée

Elle permet de réaliser en une seule étape une expression et l’affectation deson résultat dans la variable servant de premier opérande, avec la syntaxe :

var op= valeur

où op est un opérateur ∈ { +, -, *, /, \%, //, **, <<, >> }. Cette syntaxe eststrictement équivalente à :

var = var op valeur

Exemple (Modification de variable et affectation composée)

1 chaine = "hel"2 chaine = chaine + "lo"

1 chaine = "hel"2 chaine += "lo"

conduisent à chaine valant "hello".

� Démo

CBGM (IUT-RT) Prog 1 Version 20/21 27 / 96

Page 28: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Instructions Qu’est ce qu’une instruction?

Instructions

Définition (Instructions)

Une instruction est un ordre à exécuter par le programme; c’est une étapequi dicte à la machine ce qu’elle doit effectuer avant de passer à l’instructionsuivante. Par exemple :

affecter une valeur à une variableafficher une information à l’écranrécupérer une saisie clavier faite par l’utilisateur (Prog 2)

Exécuter une instruction implique d’évaluer des expressions.

Définition (Programme)

Un programme est une suite d’instructions, qui s’exécutent les unes après lesautres - autrement dit séquentiellement.

CBGM (IUT-RT) Prog 1 Version 20/21 28 / 96

Page 29: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Instructions Instructions de (ré)-affectation

Instructions d’affectation

Exemple (Des instructions d’affectation)

1 a = 32 b = a + 13 b = b + a

Contexte Mémoire

a 3

b 4

1

7

%

Ligne 1 : déclaration et affectation de a.Ligne 2 : déclaration et affectation de b .Ligne 3 : ré-affectation de b (équivalent àb += a). L’objet 4 n’étant plus référencé, ilest effacé par le ramasse-miette.

CBGM (IUT-RT) Prog 1 Version 20/21 29 / 96

Page 30: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Chapitre 3

Structure d’un programme : modules etfonctions

CBGM (IUT-RT) Prog 1 Version 20/21 30 / 96

Page 31: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Modules et fonctions Modules

Modules et fonctions

Définition (Modules et fonctions)

Python propose un ensemble de fonctions servant à différents calculs ou àdifférentes tâches utiles et récurrentes dans un programme. Certaines de cesfonctions sont fournies (rangées, déclarées) dans des bibliothèques(appelées modules).

Exemple (Quelques modules )

Module Rôle Exemples de fonctionsBuilt-in int, float, list,

abs, min, max, len, ...math Calculs mathématiques cos, sin, exp, ...random Choix aléatoires rand, random, ...os, sys Interactions systèmes chdir, getlogin, getpid, ...turtle Fenêtre graphique forward, goto, ...

CBGM (IUT-RT) Prog 1 Version 20/21 31 / 96

Page 32: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Modules et fonctions Modules

Import de modules

Définition (Directive d’import)

Pour pouvoir utiliser les fonctions d’un module, il faut l’importer avecl’instruction :

import nom_module

Exemple (Des imports)

import math importe toutes les fonctions du module math

import os importe toutes les fonctions du module os

Remarque : le développeur peut créer son propre module (un fichier .pycontenant des fonctions) et l’importer avec pour nom de module le nom dufichier choisi.

CBGM (IUT-RT) Prog 1 Version 20/21 32 / 96

Page 33: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Modules et fonctions Fonctions

Caractéristiques d’une fonction

Définition (Caractéristiques d’une fonction)

Une fonction :est identifiée par un nom et est déclarée dans un éventuel module ;peut avoir des paramètres (obligatoires ou optionnels)produit un résultat, appelé valeur de retour (return)

Elle se décrit par une signature de la forme[nom_module.]nom_fonction(param1, param2, ..., paramN)

Exemple (Extrait de documentation de fonctions)

La fonction sqrt du module math :

La fonction randint du module random :

o La documentation d’une fonction indique toujours le nom du module danslaquelle elle est déclarée.

CBGM (IUT-RT) Prog 1 Version 20/21 33 / 96

Page 34: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Modules et fonctions Fonctions

Appel d’une fonction

Définition (Appel d’une fonction)

Pour appeler une fonction il faut :1 nommer la fonction avec l’une des syntaxes :

si la fonction est déclarée dans le contexte courant :

nom_fonction( ... )

si la fonction a été importée avec import nom_module :

nom_module.nom_fonction( ... )

2 indiquer dans les parenthèses les arguments : chaque argument donneune valeur à chaque paramètre de la fonction, dans le même ordre quecelui de la déclaration.

L’appel de la fonction fournit une valeur de retour, utilisable dans uneexpression, une affectation.

CBGM (IUT-RT) Prog 1 Version 20/21 34 / 96

Page 35: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Modules et fonctions Fonctions

Exemples d’appels

Exemple (Appels à math.sqrt(x))

Avec l’instruction import math qui importe toutes les fonctions de math :

1 var = math.sqrt(3)2 res = math.sqrt(4)

Ligne 1 : var reçoit la valeur 1.7320508075688772Ligne 2 : res reçoit la valeur 2.0

Exemple (Appels à max(a,b ) (qui n’appartient à aucun module))

1 temp = max(1, 5 )2 var = max(6, temp )3 res = max(max(3, 2), 1)

Ligne 1 : temp reçoit la valeur 5Ligne 2 : var reçoit la valeur 6Ligne 3 : évalue max(3, 2) pour produire 3 puis évalue max( 3, 1) pourproduire 3 et le stocker dans res

CBGM (IUT-RT) Prog 1 Version 20/21 35 / 96

Page 36: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Modules et fonctions Fonctions

Déclaration d’une fonction

Pour du code propre, modulaire ou pour factoriser du code, le développeurpeut déclarer ses propres fonctions. La conception s’effectue avec leséléments suivants :

Éléments pour la déclaration d’une fonction1 Nom de la fonction : identificateur explicite2 Paramètres : liste de paramètres (et de leurs noms) utilisés3 Code : séquence d’instruction4 Retour (ou renvoi) : la valeur renvoyée5 Description (optionnel mais d’usage obligatoire) : une documentation !6 Préconditions (optionnel) : des expressions booléennes qui précisent les

conditions d’application du code (888)

CBGM (IUT-RT) Prog 1 Version 20/21 36 / 96

Page 37: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Modules et fonctions Fonctions

Syntaxe de déclarationQuelque soit le module dans lequel la fonction est déclarée, sa syntaxe dedéclaration est :

Syntaxe de déclaration

def nom_fonction(param1, param2, ..., paramN ) :[""" commentaires """] # documentation[assert type(param) is ...] # pre-conditions

instruction # codeinstruction...return [valeur] # renvoie de la valeur de retour

# avec sortie de la fonction# fin de la fonction

Remarques :l’indentation définit le bloc d’instructions de la fonctionl’exécution de return stoppe le flux d’instructions dans une fonction etforce la sortie de la fonction avec la valeur indiquéesi return n’est suivi d’aucune valeur, alors la fonction renvoie None

CBGM (IUT-RT) Prog 1 Version 20/21 37 / 96

Page 38: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Modules et fonctions Fonctions

Exemple d’une fonction à deux paramètres

Exemple (La fonction somme2)

La fonction somme2 (avec ses deux paramètresa et b) est déclarée par :

1 def somme2(a, b):2 """Calcule et renvoie la somme de deux

nombres a et b"""3 total = a + b4 return total

Elle peut être appeléeavec :

1 res1 = somme2( 10, 2 )2 res2 = somme2( -3, 4 )

Ligne 1 : évalue les instructions avec a=10 et b=2, renvoie le résultat 12(valeur de total avant le return) puis affecte 12 à res1

Ligne 2 : ré- évalue les instructions avec a=-3 et b=4, renvoie le résultat 1(valeur de total avant le return) puis affecte 1 à res2

Remarque FFF : cette fonction est un exemple de généricité puisqu’ellepeut être utilisée avec n’importe quel type d’objets tant que l’addition + estdéfinie.

CBGM (IUT-RT) Prog 1 Version 20/21 38 / 96

Page 39: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Programme/Script Python Programme et sa fonction main

Programme Python et fonction main

Définition (Programme Python)

Un programme Python est un fichier d’extension .py contenant desdéclarations de fonctions avec/et des instructions. Il possède un pointd’entrée, qui est par convention la fonction main (sans paramètre).Ce point d’entrée permet à Python de savoir où trouver la 1e instruction àexécuter : c’est la 1e du main.La fonction main doit/peut appeler les fonctions déclarées pour que leursinstructions soient exécutées.

L’art de la tabulationAttention : pour faire partie du main, les instructions du programme doiventtoutes être tabulées ).

CBGM (IUT-RT) Prog 1 Version 20/21 39 / 96

Page 40: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Programme/Script Python Structure d’un programme

Structure d’un programmeLa structure d’un programme est :

1 #!/usr/bin/env python2 # -*- coding: UTF-8 -*-3 """4 Script: un_programme.py5 Auteur: pycharm6 """7 # Import des modules8 import math9

10 # Fonctions11 def une_fonction(a):12 # instructions de la fonction13 return ...14

15 # Programme principal16 def main():17 # Les instructions du main18 var = une_fonction(2)19 res = math.sqrt(3)20 ...21 # Fin du programme22

23 if __name__ == ’__main__’: # Point d’entrée24 main() # avec appel à main

CBGM (IUT-RT) Prog 1 Version 20/21 40 / 96

Page 41: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Fonctions Notion de portée locale

Contexte de nommage et mémoire

1 L’exécution d’un programme s’appuie sur :des contextes (de nommage) des variablessur la mémoire (vive) qui stocke les valeurs des variables

2 Un appel à une fonction crée un contexte local :pour y déclarer les paramètres et les variables de la fonctionqui est propre à la fonction et à son appelqui est effacé au retour de la fonction (return)est recréé ("à neuf") à chaque nouvel appel de la fonction

3 Les contextes sont complètement séparés, donc sans interférencesentre eux : la portée des variables d’une fonction est locale à lafonction ; les variables d’une fonction n’existent que lors de l’appel à lafonction.

4 Par contre, la mémoire est partagée par toutes les fonctions

CBGM (IUT-RT) Prog 1 Version 20/21 41 / 96

Page 42: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Fonctions Contexte local d’une fonction

Contexte local d’une fonction avec paramètres

Exemple (Appel d’une fonction àparamètres)

1 def somme(pA, pB) :2 res = pA + pB3 return res4

5 def main():6 a = 17 b = 28 resultat = somme(a, b)

Contextedu main

MémoireContextede somme

a 1 pA

b 2 pB

res5resultat

Appel : somme()

return res

Les contextes de main et de somme n’existent qu’au moment de leurexécution : les variables (a, b, resultat et res) sont locales.Lors de l’appel, les paramètres pA et pB référencent les même objets quea et b, mais dans le contexte local.L’objet res, créé et renvoyé par la fonction, est celui récupéré dans main

(et affecté à resultat)CBGM (IUT-RT) Prog 1 Version 20/21 42 / 96

Page 43: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Fonctions Contexte local d’une fonction

Fonction à paramètres nommés

Définition (Fonction à paramètres nommés)

Une fonction peut proposer des paramètres nommés disposant d’une valeurpar défaut ; sa signature est alors :

nom_fonction(param1, param2, ... , paramN,param_nomme1=val1, ..., param_nommeN=valN)

L’appel à la fonction :utilise obligatoirement des arguments pour les paramètres non nommés(positionnels) (param1, ..., paramN), dans le même ordre dans la signaturepeut ne pas mentionner les paramètres nommés (param_nomme1, ...,param_nommeN), et utilise alors les valeurs par défaut (val1, ..., valN)attribuées dans la signaturepeut mentionner des valeurs pour (tout ou partie) des paramètresnommés, et dans ce cas, utilise les valeurs indiquées au moment del’appel

CBGM (IUT-RT) Prog 1 Version 20/21 43 / 96

Page 44: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Fonctions Fonctions à paramètres nommés

Fonction à paramètres nommés

Exemple (Une fonction à paramètre nommé)

La fonction os.mkdir(path, mode=0o777) crée un répertoire path, dont lesdroits d’accès sont donnés par umask & mode. Des appels peuvent être :

os.mkdir("mon_repertoire"), avec pour paramètre path valant"mon_repertoire" et sans paramètre nommé, donc avec mode de valeur0o777 (la valeur par défaut)os.mkdir("tps", mode=0o700), avec pour paramètre path valant "tps" etle paramètre nommé mode valant 0o700

CBGM (IUT-RT) Prog 1 Version 20/21 44 / 96

Page 45: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Fonctions Instructions de sortie : affichage console

Instruction de sorties : affichage console

Écriture vers l’écran (ou affichage console) avec print

La fonction qui réalise l’affichage d’une donnée sur la console est :

1 print(donnee)

Les données peuvent être de tous types (int, float, str, etc.). Un retourchariot est ajouté par défaut à la fin de chaque appel à print. La fonctionprint renvoie la valeur None.

Exemple (Affichage de données (extrait de code))

1 msg = "Bonjour"2 valeur = 3.143 print(msg)4 print(valeur)5 print("xO" * 2)6 print("fin")

donnent à l’affichageconsole :

Bonjour3.14xOxOfin

CBGM (IUT-RT) Prog 1 Version 20/21 45 / 96

Page 46: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Fonctions Instructions de sortie : affichage console

Variantes de print

1 Avec plusieurs paramètres à afficher : print(donnee1, donnee2, ...)

affiche, sur une même ligne et séparée (par défaut) par un espace,toutes les données passées en paramètres.

Exemple (Affichage de données (extrait de code))

1 msg = "Bonjour"2 valeur = 3.143 print(msg, valeur, "dit Pi")4 print("fin")

donnent à l’affichageconsole :

Bonjour 3.14 dit Pifin

CBGM (IUT-RT) Prog 1 Version 20/21 46 / 96

Page 47: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Fonctions Instructions de sortie : affichage console

Variantes de print

2 Avec paramètres nommés :print( donnee1, donnee2, ..., sep=chaine_sep, end=chaine_fin )

affiche les données :en les séparant par la chaine_sep fournie dans le paramètre (optionnel) sep(par défaut sep=" ")en terminant l’affichage par la chaine_fin précisée dans le paramètre(optionnel) end (par défaut end="\n")

Exemple (Affichage de données (extrait de code))

1 msg = "Bonjour"2 valeur = 3.143 print(msg, valeur, sep="--")4 print("et" )5 print(msg, valeur, end=">>")6 print("fin" )

donne à l’affichageconsole :

Bonjour--3.14etBonjour 3.14>>fin

CBGM (IUT-RT) Prog 1 Version 20/21 47 / 96

Page 48: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Fonctions Instructions de sortie : affichage console

Bonne pratique pour l’affichage console

print peut être utilisé partout dans le code (fonctions, programme principal,...) ; il produit un affichage "instantané" d’une donnée mémoire qui :

est destiné à l’utilisateur pour voir le résultat attendu du programmepeut être utile au développeur pour suivre le bon déroulement de sonprogramme même si rien ne vaut l’exécution en mode debug avec un IDEmais n’est pas exploitable par le code : o ne pas confondre :

le return d’une fonction qui renvoie un objet informatique exploitable en lestockant dans une variableet l’affichage avec print de la valeur de cet objet

Bonnes pratiques du print

Une bonne pratique consiste à coder les instructions d’affichage :soit dans le main

soit dans des fonctions spécifiquement dédiées à l’affichage (doncayant pour valeur de retour None)

CBGM (IUT-RT) Prog 1 Version 20/21 48 / 96

Page 49: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Chapitre 4

Structures alternatives

CBGM (IUT-RT) Prog 1 Version 20/21 49 / 96

Page 50: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Expressions booléennes Type booléen et expressions booléennes

Expressions booléennes

Définition (Le type booléen, expression booléenne)

Une variable de type booléen (bool) ne peut prendre que 2 valeurs : True ouFalse . Une expression est booléenne si elle s’évalue par un booléen.

Opérateurs de comparaison et opérateurs booléens

Les booléens sont souvent :le résultat d’une comparaison entre deux données du même type(numérique, chaîne), utilisant les opérateurs de comparaisonle résultat d’une opération logique (opérateurs booléens et/ou/non) entreplusieurs comparaisons.

Remarque : Les expressions booléennes peuvent bien sûr servir à affecterune variable.

Exemple (Une instruction avec expression booléenne)

reponse = (x == 5) # résultat de "x est-il égal à 5 ?"

CBGM (IUT-RT) Prog 1 Version 20/21 50 / 96

Page 51: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Expressions booléennes Opérateurs de comparaison

Principaux opérateurs de comparaison

Les principaux opérateurs de comparaison

Op. Signification Op. Signification== égal (même valeur) != différent> strictement supérieur < strictement inférieur>= supérieur ou égal <= inférieur ou égalb<x<B x est compris entre b et Bin appartenance à une liste

d’élementsnot in non appartenance à une

liste d’élémentsisinstance(x, t) x est du type t? is égal (même objet en mé-

moire)

Exemple (Des expressions booléennes avec opérateurs de comparaison )Condition Expression PythonLa variable prog1 est-elle égale à 10? prog1 == 10

La variable prog2 est-elle comprise entre 10 et 20? 10 < prog2 < 20

La moyenne des notes prog1 et prog2 est-elle supérieure à 10? (prog1+prog2)/2 > 10

La note prog1 est-elle divisible par 3? prog1 % 3 == 0

Le jour est-il "lundi", "mardi" ou "mercredi"? jour in ["lundi", "mardi", "mercredi"]

x est-il différent de 2.2, 3.3 et de 4.4? x not in [2.2, 3.3, 4.4]

x est-il du type int? isinstance(x, int)

CBGM (IUT-RT) Prog 1 Version 20/21 51 / 96

Page 52: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Expressions booléennes Opérateurs booléens

Opérateurs booléennes

Principaux opérateurs booléens

Symb. Signification Symb. Significationor union logique and intersection logiquenot négation logique

Remarque : o aux priorités des opérateurs

Exemple (Des conditions booléennes )Condition Expression PythonLa variable jour est-elle égale à "lundi" et la variable annee (jour == "lundi") and (annee > 2000)

est-elle supérieure à 2000?Le jour est-il dans le WE? (jour == "samedi") or (jour == "dimanche")

jour in ["samedi", "dimanche"]

La variable x est-elle différente de 0? x != 0

(x > 0) or (x < 0)

La variable x est-elle comprise entre 0.5 inclu et 1.5? (x >= 0.5) and (x < 1.5)

0.5 <= x < 1.5

CBGM (IUT-RT) Prog 1 Version 20/21 52 / 96

Page 53: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures alternatives Structures alternatives élémentaire : Si sinon

Structure alternative "Si ... sinon"

Structure alternative "Si ... sinon"

# Début du si/sinonif condition_booleenne:

# Instructions si la condition est vraieinstructioninstruction

else:# Instructions si la condition est fausseinstructioninstruction

# Fin du si/sinonsuite_du_programme

uniquement si la condition est True

uniquement si la condition est False

suite du déroulement séquentiel

teste la condition_booleenne :Si elle s’évalue True, le bloc d’instructions qui suit le if est exécuté ;Sinon, le bloc d’instructions qui suit le else est exécuté.

Une fois les instructions de la structure if/else exécutées, le programmecontinue son déroulement avec la 1e instruction de suite_du_programme.

CBGM (IUT-RT) Prog 1 Version 20/21 53 / 96

Page 54: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures alternatives Structures alternatives élémentaire : Si sinon

L’art de la tabulation

Identifiant des blocs d’instructions

C’est l’indentation (tabulation avec la touche −−→−−→ ) qui définit les blocsd’instructions en Python.

Une structure alternative dans une fonction

def une_fonction( ... ):#...if condition_booleenne:

# Instructions si la condition est vraie# ...

else:# Instructions si la condition est fausse# ...

# suite du programme

# ...# fin de une_fonction

−−→−−→

−−→−−→

CBGM (IUT-RT) Prog 1 Version 20/21 54 / 96

Page 55: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures alternatives Structures alternatives élémentaire : Si sinon

Exemple

Exemple (Alternative si sinon)

def est_sup_a_4( var ):if var > 4:

# Instructions si la condition est vraieres = "oui"

else:# Instructions si la condition est fausseres = "non"

return res

donnent pour différents contextes d’appel :Cas 1 : l’appel (extrait du main)

print("Est-ce que 5 > 4 ?")res = est_sup_a_4( 5 )print(res)

donne :

Est-ce que 5 > 4 ?oui

Cas 2 : l’appel (extrait du main)

print("Est-ce que 3 > 4 ?")res = est_sup_a_4( 3 )print(res)

donne :

Est-ce que 3 > 4 ?non

CBGM (IUT-RT) Prog 1 Version 20/21 55 / 96

Page 56: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures alternatives Structure conditionnelle élémentaire : Si

Structure conditionnelle Si

Structure conditionnelle "Si"

if condition_booleenne:# Instructions si la condition est vraieinstruction...instruction

# Fin de la condition et suite du programmesuite_du_programme

uniquement si la condition est vraie

"omis" sila conditionest fausse

suite du déroulement séquentiel

teste la condition_booleenne :Si elle s’évalue True, le bloc d’instructions qui suit le if est exécuté.Sinon, le bloc d’instructions qui suit le if n’est pas exécuté.

Dans les deux cas, le programme se poursuit avec la 1e instruction de lasuite_du_programme.

CBGM (IUT-RT) Prog 1 Version 20/21 56 / 96

Page 57: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures alternatives Structure conditionnelle élémentaire : Si

Exemple

Exemple (La fonction valeur absolue avec un "si")

def valeur_absolue( var ):res = varif res < 0:

# Instructions si la condition est vraires = -res

# Fin de la condition et suite du programmereturn res

Cas 1 : l’appel (extrait du main)

print("Val. abs. de 5 =")res = valeur_absolue(5)print(res)

donne :

Val. abs. de 5 =5

Cas 2 : l’appel (extrait du main)

print("Val. abs. de -3 =")res = valeur_absolue(-3)print(res)

donne :

Val. abs. de -3 =3

CBGM (IUT-RT) Prog 1 Version 20/21 57 / 96

Page 58: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures alternatives Structure alternative multiple : si ... ou si ... sinon

Alternative Si ... ou si ... sinon

Structure alternative Si ... ou si ... sinon

if condition_booleenne_1:instructioninstruction

elif condition_booleenne_2:instructioninstruction

else:instructioninstruction

suite_du_programme

s’exécute si la condition 1 est True

s’exécute si la condition 1 est Falseet la condition 2 est True

s’exécute si les conditions 1 et 2sont False

Le bloc elif peut apparaître autant de fois que l’on souhaite deconditions alternativesDès que l’une des conditions booléennes est True, les conditions testéesdans les elif qui suivent ne sont plus évaluées et le programme passe àla suite du programmeLe bloc else est optionnel

CBGM (IUT-RT) Prog 1 Version 20/21 58 / 96

Page 59: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures alternatives Structure alternative multiple : si ... ou si ... sinon

Alternative Si ... ou si ... sinon

Exemple (La fonction signe avec un si ... ou si ... sinon)

def signe( var ) :if var < 0:

res = "negatif"elif var > 0:

res = "positif"else:

res = "nul"return res

Cas 1 : avec l’appel :

res = signe(2)print("2 est", res)

donne :

2 est positif

Cas 2 : avec l’appel :

res = signe(-3)print("-3 est", res)

donne :

-3 est negatif

Cas 3 : avec l’appel :

res = signe(0)print("0 est", res)

donne :

0 est nul

CBGM (IUT-RT) Prog 1 Version 20/21 59 / 96

Page 60: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures alternatives imbriquées

Structures alternatives imbriquées

Les structures alternatives peuvent être imbriquées les unes dans les autresautant de fois qu’on le souhaite.

Exemple (La fonction signe avec des structures alternatives imbriquées)

def signe( var ):# test 1if var >= 0:

# test 2 (sachant var >=0)if var > 0:

res = "positif"else:

res = "nul"# fin du test 2

else:# (sachant var >= 0 faux)res = "negatif"

# fin du test 1return res

CBGM (IUT-RT) Prog 1 Version 20/21 60 / 96

Page 61: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures alternatives imbriquées

Un même programme, différentes structuresalternatives

Pour un même programme, le code peut s’écrire de manière équivalente enutilisant l’une ou l’autre des structures alternatives : si/sinon si/sinon ou desstructures imbriquées.

Une bonne pratique pour les structures alternatives

Le choix de la structure se fera souvent de sorte :à avoir une expression des conditions faciles à relireà ne pas oublier de cas de figure

CBGM (IUT-RT) Prog 1 Version 20/21 61 / 96

Page 62: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures alternatives imbriquées

Structures alternatives et fonctions : les return multiples

Des return multiples sont souvent utilisés dans les fonctions dont le résultatdépend d’un test (avec sortie de la fonction dès le return rencontré).

Exemple (La fonction signe avec des return multiples)

1 def signe( var ):2 if var > 0:3 return "positif"4 elif var < 0:5 return "negatif"6 else:7 return "nul"

L’appel signe(3) s’arrête à la ligne 3L’appel signe(-4) s’arrête à la ligne 5L’appel signe(0) s’arrête ligne 7

CBGM (IUT-RT) Prog 1 Version 20/21 62 / 96

Page 63: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures alternatives ternaires

Syntaxe ternaire de l’alternative

Définition (Syntaxe ternaire)

Lorsque la structure alternative if ... else sert à choisir parmi deux valeursobtenues dans deux cas opposés (dépendant d’une condition, elle peuts’écrire avec une syntaxe ternaire :

1 valeur_si_vrai if condition else valeur_si_faux

Exemple (Une structure ternaire)

Etant donnée unenote :

if note >= 10:res = "validé"

else:res = "non validé"

est équivalent à :

res = "validé" if note >= 10 else "non validé"

voire même à :

res = ("" if note >= 10 else "non ") + "validé"

CBGM (IUT-RT) Prog 1 Version 20/21 63 / 96

Page 64: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Chapitre 5

Structures répétitives

CBGM (IUT-RT) Prog 1 Version 20/21 64 / 96

Page 65: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structure répétitive

Définition (Structure répétitive)

Une structure répétitive est un bloc d’instructions parcouru un certainnombre de fois (de 0 à une infinité).

Boucle for

En pratique, le nombre de répétitions est très souvent connu par leprogrammeur (parcours des éléments d’une liste, répétition d’une mêmeaction N fois, ...) ; on utilise une syntaxe simple appelée boucle for.

Remarque : dans certains cas, le nombre de répétitions n’est pas connu àl’avance (cas d’une saisie utilisateur ou boucle de jeu) : les instructions serépètent tant qu’une condition est vérifiée, avec pour condition uneexpression booléenne. On utilise alors une syntaxe while/tant que (vue enprog 2).

CBGM (IUT-RT) Prog 1 Version 20/21 65 / 96

Page 66: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for Boucle avec compteur d’itération

Boucle for

Définition (Boucle for)

La boucle for, pour répéter un bloc d’instructions N fois, peut s’appuyer surun compteur d’itération :

for compteur in range( N ) :instruction # Début du bloc à répéter...instruction

# Fin du forsuite_du_programme

Une itération est l’une des N exécutions (ou N répétitions) du blocd’instructions de la boucleLe compteur s’initialise à 0 ; après chaque itération, il augmente de 1.Lorsqu’il atteint N, le bloc d’instructions a été exécuté N fois ; il n’est plusexécuté et le programme passe aux instructions qui suivent le bloc.

CBGM (IUT-RT) Prog 1 Version 20/21 66 / 96

Page 67: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for Boucle avec compteur d’itération

Une répétition simple

Exemple (Boucle itérant le même affichage 3 fois)

1 for i in range(3):2 print("*", end=" ")3 # fin de la boucle for4 print("fin")

donne : � PythonTutor

* * * fin

Ligne i Affichage Iter. Commentaire1 0 1e Initialisation du compteur à 02 0 * Fin de la 1ère itér. de boucle1 1 * 2e2 1 * * Fin de la 2ème itér. de boucle1 2 * * 3e2 2 * * * Fin de la 3ème itér. de boucle1 2 * * * o Le compteur atteint le nbre d’itér. voulu ; fin de la boucle3 2 * * * fin

CBGM (IUT-RT) Prog 1 Version 20/21 67 / 96

Page 68: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for Boucle avec compteur d’itération

Une répétition utilisant le compteur de boucle

Le compteur de boucle, une variable comme une autre ...

Le compteur peut être utilisé dans les instructions de la boucle pour fairevarier leurs résultats d’une itération à une autre

Exemple (Boucle affichage des nombres de 2 jusqu’à 6 (exclu))

1 for i in range(4):2 print(i + 2, end=" ")3 # fin de la boucle for4 print("fin")

donne : � PythonTutor :

2 3 4 5 fin

... o le compteur de boucle ne doit en général pas être modifié par lesinstructions de la boucle

Les valeurs du compteur sont pré-calculées au 1e passage dans la bouclepour aller de 0 à N-1.

CBGM (IUT-RT) Prog 1 Version 20/21 68 / 96

Page 69: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for Plage de valeurs du compteur : la fonction range

Boucle for avec valeur initiale différente de 0

Définition (Boucle for avec valeur initiale non nulle)

for compteur in range(val_ini, val_fin_exclue) :instructions...

# fin de la boucle for

Le nombre d’itérations est alors de val_fin_exclue - val_ini ; la boucles’arrête lorsque le compteur atteint la valeur val_fin_exclue.

Exemple (Boucle d’affichage des nombres de 2 jusqu’à 5 (exclu))

1 for i in range(2, 5):2 print(i, end=" ")3 # fin de la boucle for4 print("fin")

donnent � PythonTutor :

2 3 4 fin

Ligne i Affichage Iter Commentaire1 2 1e Initialisation du compteur à 22 2 2 Fin de la 1ère itér. de boucle1 3 2 2e2 3 2 3 Fin de la 2ème itér. de boucle1 4 2 3 3e2 4 2 3 4 Fin de la 3ème itér. de boucle1 4 2 3 4 Le compteur a atteint sa valeur finale3 4 2 3 4 fin

CBGM (IUT-RT) Prog 1 Version 20/21 69 / 96

Page 70: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for Plage de valeurs du compteur : la fonction range

Boucle for avec incrément différent de 1

Définition (Boucle for avec un incrément du compteur différent de 1)

1 for compteur in range(val_ini, val_fin_exclue, increment) :2 instructions3 ...4 # fin de la boucle for

initialise le compteur à la val_ini et à chaque itération augmente la valeur ducompteur de increment jusqu’à ce qu’il égale ou dépasse val_fin_exclue

Exemple (Boucle 5, affichage des nombres pairs de 2 jusqu’à 8 (exclu))

1 for i in range(2, 8, 2):2 print(i, end=" ")3 # fin de la boucle for4 print("fin")

donne � PythonTutor :

2 4 6 fin

Ligne i Affichage Iter Commentaire1 2 1e Initialisation du compteur à 22 2 2 Fin de la 1ère itér. de boucle1 4 2 2e2 4 2 4 Fin de la 2ème itér. de boucle1 6 2 4 3e2 6 2 4 6 Fin de la 3ème itér. de boucle1 6 2 4 6 Le compteur atteint sa valeur max.3 6 2 4 6 fin

CBGM (IUT-RT) Prog 1 Version 20/21 70 / 96

Page 71: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for sur une collection ordonnée Les listes

Listes

Définition (Listes)

Les listes (classe list) sont des collections ordonnées d’éléments (detype quelconque) identifiées par une référence (stockée dans une variable).

Définition (Déclaration d’une liste)

Une liste de N élements se déclare par :

liste = [elm0, elm1, ..., elmN_1]

La variable liste référence alors leséléments elm0, elm1, ..., elmN_1 enmémoire, en leur attribuant un ordre : elm0est le 1e, elm1 le 2d... et elmN_1 le dernier.

Contexte Mémoire

liste [0] elm0

[1] elm1

[2] elm2

. . . . . .

[N-1] elmN_1

Nombre d’éléments d’une listeLe nombre d’éléments d’une liste est renvoyé par la fonction len(liste).

CBGM (IUT-RT) Prog 1 Version 20/21 71 / 96

Page 72: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for sur une collection ordonnée Les listes

Accès élémentaires aux éléments d’une liste

Définition (Indices des éléments d’une liste)

Les éléments d’une liste liste = [elm0, elm1, ..., elmN_1] étant ordonnés,chaque élément de la liste est lié à un indice ; cet indice est la position del’élément dans la liste : 0 pour elm0, 1 pour elm1, ... et len(liste)-1 pour ledernier élément elmN_1.

Accès aux éléments d’une listePour un indice i donné, la syntaxe liste[i] accède à l’élément d’indice i dela liste (en lecture comme en écriture).

Remarque : Si l’indice n’est pas entre 0 et len(liste)-1, l’expression liste[i]

peut provoquer une erreur de type IndexError: list index out of range.

CBGM (IUT-RT) Prog 1 Version 20/21 72 / 96

Page 73: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for sur une collection ordonnée Les listes

Exemple

Exemple (Une liste)

1 liste = [1, 15, "bob", 2]2 print("liste =", liste)3 print("type =>", type(liste))4 print("liste[1] =>", liste[1])5 print("liste[2] =>", liste[2])6 print("longueur =>", len(liste))

Contexte Mémoire

liste [0] 1

[1] 15

[2] ’bob’

[3] 2

donne sur la console :

liste = [1, 15, ’bob’, 2]type => <class ’list’>liste[1] => 15liste[2] => boblongueur => 4

CBGM (IUT-RT) Prog 1 Version 20/21 73 / 96

Page 74: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for sur une collection ordonnée Parcours de listes

Parcours itératif de tous les éléments d’une liste

Définition (Objet itérable)

La liste est un objet itérable, c’est à dire une collection d’éléments dont onpeut prendre (ou parcourir) les éléments un à un.

Parcours naturel d’une liste par le biais des indices

Le parcours naturel consiste à prendre les éléments d’une liste, un par un,via leur indice dans l’ordre croissant (indices allant de 0 à len(liste)-1) :

for i in range(0, len(liste)):# instruction portant sur liste[i]# ...

# fin du parcours# suite_du_programme

CBGM (IUT-RT) Prog 1 Version 20/21 74 / 96

Page 75: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for sur une collection ordonnée Parcours de listes

Exemple de parcours par indices

Exemple (Affichage des éléments d’une liste séparés par des ’/’)

1 liste = ["un", 2, "trois", "soleil"]2 for i in range(0, len(liste)):3 elm = liste[i]4 print(elm, "/", end="")5 # fin de la boucle6 print("fin")

donne :Lignes Iter. i ligne[i] Affichage2/3/4 1e 0 "un" un /

2/3/4 2e 1 2 un /2 /

2/3/4 3e 2 "trois" un /2 /trois /

2/3/4 4e 3 "soleil" un /2 /trois /soleil /

2 o Dernière valeur de i atteinte5 3 "soleil" un /2 /trois /soleil /fin

d’où l’affichage final :

un /2 /trois /soleil /fin

CBGM (IUT-RT) Prog 1 Version 20/21 75 / 96

Page 76: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for sur une collection ordonnée Parcours de listes

Parcours d’une liste par éléments

La boucle for est prévue pour parcourir directement les éléments d’une listesans passer par leur indice :

Parcours itératif d’une liste par éléments

for elm in liste:# instruction sur elm# ...

# fin du parcours# suite_du_programme

A chaque itération, elm prend pour valeur l’un des éléments de la liste (du 1e

au dernier) et exécute les instructions.

CBGM (IUT-RT) Prog 1 Version 20/21 76 / 96

Page 77: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for sur une collection ordonnée Parcours de listes

Exemple de parcours par élément

Exemple (Un parcours par élément)

1 liste = ["papier", "caillou", "ciseau"]2 for elm in liste:3 print(elm, " -> ", end="")4 # fin de la boucle for5 print("fin")

donne :Lignes Iter. elm Affichage2/3 1e "papier" papier ->

2/3 2e "caillou" papier -> caillou ->

2/3 3e "ciseau" papier -> caillou -> ciseau ->

2 o Dernier élément de la liste atteint4 "ciseau" papier -> caillou -> ciseau -> fin

Remarque : la boucle for i in range(n) cache un parcours itératif : lafonction range renvoie un objet (de type range) correspondant à la collectionordonnée itérable 0, 1, 2, ..., n-1 (o ce n’est pas une liste).

CBGM (IUT-RT) Prog 1 Version 20/21 77 / 96

Page 78: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle for sur une collection ordonnée Parcours de listes

Des parcours équivalents

Exemple (Affichage des éléments d’une liste précédés de leur indice)

Pour une même liste liste = [’a’, 1, ’b’] :

1 Parcours par indices :

for i in range(len(liste)):print(i, ":", end="")print(liste[i], "//", end="")

# fin de la boucleprint("fin")

2 Parcours par éléments :

i = 0for elm in liste:

print(i, ":", end="")print(elm, "//", end="")i = i+1

# fin de la boucleprint("fin")

donnent à l’exécution :

0 : a // 1 : 1 // 2 : b // fin

Remarques : Le parcours par indices est à privilégier si le programme doitaccéder aux indices. Sinon, le parcours par éléments est plus efficace.

CBGM (IUT-RT) Prog 1 Version 20/21 78 / 96

Page 79: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle avec variable d’accumulation Principe

La variable d’accumulation

Principe de la variable d’accumulation

Les boucles s’utilisent couramment avec une variable d’accumulation,dont la valeur s’actualise à chaque itération dans le bloc d’instructionsde la boucle.L’actualisation peut être :

l’ajout à la variable d’une valeur numérique : nbre += increment

l’ajout d’une chaîne de caractères à une autre : chaine += chaine_ajoutee

la multiplication de la variable par une valeur : nbre = nbre*increment

CBGM (IUT-RT) Prog 1 Version 20/21 79 / 96

Page 80: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle avec variable d’accumulation Accumulation additive

Exemple d’accumulation additive

Exemple (Solde d’un compte bancaire après certain nombre de mois)

Partant d’un compte bancaire initialement à 0, sur lequel est versé un montantfixe de 50 e tous les mois, après 4 ans de fonctionnement :

1 solde = 0 # Initialisation2 for mois in range(1, 4 * 12):3 solde = solde + 504 # fin de la boucle5 print("solde final :", solde)

donne à l’exécution � PythonTutor :

solde final : 2350

Y Il n’y a pas trace des valeurs intermédiaires du solde (cf. listes en Prog2)

CBGM (IUT-RT) Prog 1 Version 20/21 80 / 96

Page 81: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle avec variable d’accumulation Accumulation additive

Exemples d’accumulation additive

Exemple (Somme des entiers de 1 à 36 (inclus))

La variable d’accumulation peut utiliser le compteur de boucle :

1 somme = 0 # Initialisation2 for i in range(1, 36 + 1):3 somme = somme + i4 # fin de la boucle5 print("somme finale :", somme)

donne :

somme finale : 666

� PythonTutor

Exemple (Nombre binaire sur 8 bits choisis au hasard)

La variable d’accumulation peut exploiter la concaténation de chaîne decaractères :

1 chaine = ""2 for i in range(8):3 chaine += random.choice( [’0’, ’1’]

)4 # fin de la boucle5 print("binaire :", chaine)

peut donner :

binaire : 01101001

CBGM (IUT-RT) Prog 1 Version 20/21 81 / 96

Page 82: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle avec variable d’accumulation Accumulation multiplicative

Exemple d’accumulation multiplicative

Exemple (Calcul itératif d’une puissance)

La fonction puissance2 calcule 2n dans res en utilisant le fait que2n = 2× 2× ...× 2 (avec n multiplications) ; res étant modifiée paraccumulation de multiplication, sa valeur initiale sera donc 1.

1 def puissance2(pN):2 res = 13 for i in range(pN):4 res = res * 25 # fin de la boucle for6 return res

� PythonTutor

Ligne i Iter res détail du calcul2 1 res = 1

3/4 0 1e 2 res=1×23/4 1 2e 4 res=1×2×23/4 2 3e 8 res=1×2×2×23/4 3 4e 16 res=1×2×2×2×23 3 o i a atteint sa dernière valeur5 3 16

CBGM (IUT-RT) Prog 1 Version 20/21 82 / 96

Page 83: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Boucle avec variable d’accumulation Accumulation multiplicative

Bilan

Conclusion : structure des programmes avec une variable d’accumulation

Un programme utilisant une variable d’accumulation doit toujours :1 initialiser la variable d’accumulation,2 programmer une structure répétitive qui actualise sa valeur.

La valeur finale de la variable est obtenue en sortie de boucle.

CBGM (IUT-RT) Prog 1 Version 20/21 83 / 96

Page 84: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures imbriquées Boucles et structures alternatives

Boucles et structures alternatives

Y Les instructions d’une boucle peuvent contenir des structures alternatives,avec l’indentation pour identifier les blocs d’instructions.

Exemple (Affichage des nombres impairs de 0 à 20)

1 for i in range(20):2 if i % 2 != 0:3 print(i, end=" ")4 else:5 print("-", end=" ")6 print("fin")

donne à l’exécution (20 itérations) :

- 1 - 3 - 5 - 7 - 9 - 11 - 13 - 15 - 17 - 19 fin

� PythonTutor

CBGM (IUT-RT) Prog 1 Version 20/21 84 / 96

Page 85: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structures imbriquées Boucles imbriquées

Boucles imbriquées

Les instructions d’une boucle peuvent en contenir une autre : on parle deboucles imbriquées.

Exemple (Tracé d’un triangle d’étoiles)

1 for i in range(0, 3):2 ligne = ""3 for j in range(0, i+1):4 ligne += "* "5 # fin de la boucle sur j6 print(ligne)7 # fin de la boucle sur i

donne :

** ** * *

� Démo PyCharm, PythonTutor

Ligne Iter. sur i i Iter. sur j j ligne Commentaire1/2

1e 0

’’ i initialisé à 03/4 1e 0 ’* ’ j initialisé à 03 o j a atteint sa valeur max < 0+16 0 ’* ’ affichage1/2

2e 1

’’ i s’incrémente3/4 1e 0 ’* ’ j ré-initialisé à 03/4 2e 1 ’* * ’ j s’incrémente3 o j a atteint sa valeur max < 1+16 0 ’* * ’ affichage1/2

2e 3

’’ i s’incrémente3/4 1e 0 ’* ’ j ré-initialisé à 03/4 2e 1 ’* * ’ j s’incrémente3/4 3e 2 ’* * * ’ j s’incrémente3 o j a atteint sa valeur max < 2+16 0 ’* * * ’ affichage3 o i a atteint sa valeur max : fin de la boucle

CBGM (IUT-RT) Prog 1 Version 20/21 85 / 96

Page 86: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Chapitre 6

Fonctions

CBGM (IUT-RT) Prog 1 Version 20/21 86 / 96

Page 87: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Rappel : Fonction

Définition (Fonction)

Une fonction est un bloc d’instructions autonome décrit par une signature :

nom_module.nom_de_fonction(param1, param2, ..., paramN,param_nomme1=val1, ... param_nommeN=valN)

indiquant son nom (d’appel), son (éventuel) module, ses paramètresd’entrée obligatoires (positionnels) ou optionnels (nommés).Elle renvoie une unique valeur servant de résultat à la fonction. En l’absencede return, la fonction renvoie None.La déclaration d’une fonction s’appuie sur la syntaxe :

1 def nom_fonction(param1, ...):2 """Documentation"""3 instructions4 ...5 return valeur_retour | None

CBGM (IUT-RT) Prog 1 Version 20/21 87 / 96

Page 88: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Portée des variables dans une fonction Notion de portée locale

Rappel : contexte de nommage et mémoire

1 L’exécution d’un programme s’appuie sur :un contexte des paramètres/variables, propre à chaque fonctionla mémoire (stockant les valeurs) partagée par l’ensemble des fonctions.

2 Chaque appel à une fonction crée un contexte local :temporaire : il est recréé ("à neuf") à chaque nouvel appel à la fonction et esteffacé au retour (return) de la fonctionétanche : il n’y a pas d’interférences entre les contextes locaux de deuxappels (même si c’est la même fonction)économe en mémoire : les paramètres reçoivent une copie des référencesdes arguments (et non une copie des arguments)

3 On dit que la portée des variables d’une fonction est locale à lafonction : les variables n’existent que lors de l’appel à la fonction etpeuvent donc avoir le même nom que les variables d’une autre fonction(main compris) sans conflit

CBGM (IUT-RT) Prog 1 Version 20/21 88 / 96

Page 89: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Portée des variables dans une fonction Contexte local d’une fonction

Contexte local d’une fonction avec paramètres

Exemple (Contexte local d’une fonction avec paramètres)

1 def illustration(a, b):2 a = 33 res = a + b4 return res5

6 def main():7 a = 18 b = 29 res = illustration(a, b)

10 mais = a + b

Contextedu main

MémoireContexte deillustration

3

a 1 a

b 2 b

res5res

3mais

%

Appel : illustration()

return res

res diffère de res ;L’objet en mémoire, crée et renvoyé par la fonction, est celui récupérédans le res du main

Les paramètres a et b référencent les même objets que a et bToute réaffectation des objets désignés par les paramètres n’aurad’impact que dans la fonction

CBGM (IUT-RT) Prog 1 Version 20/21 89 / 96

Page 90: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Appel de fonctions Chaînage de fonctions

Chaînage de fonctions

Une fonction peut en appeler une autre : toutes deux auront leur proprereturn et leur propre contexte de nommage étanche.

Exemple (somme4, utilisant somme2, pour sommer ses 4 paramètres)

1 def somme2(a, b):2 total = a + b3 return total4

5 def somme4(a, b, c, d):6 res1 = somme2(a, b)7 res2 = somme2(c, d)8 res = res1 + res29 return res

somme4( , , , )a b c d

1 2 3 4

res1 3

res2 7

res 10

somme2( , )a

1

b

2

total 3

appel

return

somme2( , )a

3

b

4

total 7

appel

return

créant, lors d’un appel à somme4, 3 contexteslocaux. � PythonTutor

CBGM (IUT-RT) Prog 1 Version 20/21 90 / 96

Page 91: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Appel de fonctions Fonctions récursives

RécursivitéUne fonction peut s’appeler elle-même : elle est dit récursive ; o son codedoit obligatoirement prévoir une condition d’arrêt des récursions.

Exemple (Somme s(N) de tous les entiers de 0 jusqu’à N)

s(N) = 1 + 2 + ...+ (N − 1)︸ ︷︷ ︸s(N−1)

+N avec l’état

initial s(0) = 0 s’implémenterécursivement avec, par ex. pour l’appel àsommeN(4), 4 contextes locaux (dont 3appels récursifs à sommeN).

1 def sommeN( N ):2 if N == 0: # arrêt

recursion3 res = 0 # valeur4 else:5 sN_1 = sommeN( N-1 )6 res = sN_1 + N7 return res

sommeN( )N

3

res 7

sommeN( )N

2

res 3

sommeN( )N

1

res 1

sommeN( )N

0

res 0

appel appel appel

return return return

CBGM (IUT-RT) Prog 1 Version 20/21 91 / 96

Page 92: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structure modulaire Modules fait-maison

Module

Définition (Module)

Un module est un fichier .py regroupant :des fonctionsun (éventuel) programme principal (fonction main)des constantes (variables globales au module) dont la valeur n’est pascensée être modifiée

Exécution vs import d’un module

Un module nom_module.py peut être :exécuté, avec la ligne de commande python nom_module.py, déclenchantl’exécution du main si le module inclut la directive :

1 if __name__=="__main__":2 main()

importé avec la syntaxe import nom_module, pour utiliser les fonctions qu’ildécrit

CBGM (IUT-RT) Prog 1 Version 20/21 92 / 96

Page 93: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structure modulaire Constantes de module

Constantes de module

Définition (Constantes de module)

Une constante de module est une variable déclarée en dehors d’une fonctionet dont le nom est (par convention) en majuscule. Elle est accessible enlecture avec la syntaxe [nom_module.]NOM_CONSTANTE

Définition (LGI)

Python résout/trouve la valeur d’une variable en la cherchant, dans l’ordre :1 localement dans le bloc d’instructions de la fonction où elle est utilisée ;

s’il ne la trouve pas :2 globalement dans le fichier/module (hors fonctions et main), où elle est

utilisée ; s’il ne la trouve pas :3 en interne, parmi les objets standards Python (built-in).

On parle de résolution de nom par recherche LGI.

CBGM (IUT-RT) Prog 1 Version 20/21 93 / 96

Page 94: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Structure modulaire Constantes de module

Exemple

Exemple (Pi et ses arrondis)

1 import math2

3 # Constante de module4 PI_ARRONDI = 3.145

6 # Fonctions7 def degre2radian_imprecis( angle ):8 pi = 3 # variable locale9 return pi / 180 * angle

10

11 def degre2radian_arrondi( angle ):12 return PI_ARRONDI / 180 * angle13

14 def degre2radian_exact( angle ):15 return math.pi / 180 * angle

pi est locale à la fonctiondegre2radian_imprecis etn’existe que pour l’appel àcette fonctionPI_ARRONDI n’est pas locale àla fonctiondegre2radian_arrondi, maisest globale au module courant(c’est une constante demodule)math.pi fait référence à uneconstante de module déclaréedans math

CBGM (IUT-RT) Prog 1 Version 20/21 94 / 96

Page 95: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Les prototypages classiques de fonctions

Prototypages classiques des fonctions d’un module

Les fonctions forment trois grandes catégories (prototypages) :1 Les fonctions dédiées aux saisies clavier de l’utilisateur (cf. prog 2) :

qui n’ont en général pas de paramètrequi renvoient la valeur saisie

2 Les fonctions dédiées à l’affichage :qui peuvent avoir en paramètres des données à afficher,qui s’occupent de l’affichage console avec print,qui ont pour valeur de retour (return) None

3 Les fonctions dédiées aux calculs/traitements :qui ont des paramètres,qui ont une valeur de retour (return) et dépendante du traitement,qui n’ont pas de saisie-clavier avec input car ce sont les arguments d’appelqui dirigent l’évaluation de la fonctionne font pas d’affichage avec print (sauf pour aider au déboggage duprogramme)

L’affichage du résultat est alors fait, soit par le programme principal, soitpar une fonction dédiée à l’affichage.

CBGM (IUT-RT) Prog 1 Version 20/21 95 / 96

Page 96: Programmation Python...L’informatique en R&T Les modules d’informatique L’informatique en R&T Sem. Modules Intitulé S1 M1105 Unix M1103 Architecture des équipements Informatiques

Les prototypages classiques de fonctions

Exemple des prototypages de fonctions

Exemple (Scipt qui, pour la suite un+1 = 2un + 1 avec u0 = 1, affiche la valeurdu terme de rang N donné en constante de module)

1 # Constante2 N = 5 # Rang choisi pour les calculs3

4 # Fonction dédiée à l’affichage de u_n et de n5 def affichage(u_n, n):6 print("u_", n, " vaut ", u_n, sep="")7

8 # Fonction dédiée au calcul du terme u_n, connaissant n9 def calcul_u_n( n ):

10 u = 1 # Valeur initiale u_011 for i in range(n):12 u = 2*u + 113 return u14

15 # Programme principal16 def main():17 u_N = calcul_u_n(N)18 affichage(u_N, N)

L’exécution donne par exemple :

u_5 vaut 63

CBGM (IUT-RT) Prog 1 Version 20/21 96 / 96