La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

H. Richard – 11.09.2014 Initiation à la programmation impérative et algorithmique Cours 4 – Entrées/Sorties et Fonctions Largement inspiré des cours :

Présentations similaires


Présentation au sujet: "H. Richard – 11.09.2014 Initiation à la programmation impérative et algorithmique Cours 4 – Entrées/Sorties et Fonctions Largement inspiré des cours :"— Transcription de la présentation:

1 H. Richard – 11.09.2014 Initiation à la programmation impérative et algorithmique Cours 4 – Entrées/Sorties et Fonctions Largement inspiré des cours : Vercouter, Del Mondo & Delestre, Hérault, Mainguenaud (INSA de Rouen) Elodie Laine – 23.09.2015

2 H. Richard – 11.09.2014 Elodie Laine – 23.09.2015 De la programmation impérative… instruction 1 instruction 2 instruction 3 si condition a vérifiée: instruction conditionnelle a1 instruction conditionnelle a2 instruction 4. Blocs d’instructions séquentielles variables sélections boucles types de données … à la programmation fonctionnelle Fonction f(paramètres d’entrée): instruction f1 instruction f2 retourne valeur de sortie Programme principal: instruction 1 si condition a vérifiée: appel de la fonction f(paramètres d’entrée) fonctions entrées/sorties fichiers récursivité

3 H. Richard – 11.09.2014 Pour écrire un algorithme générique visant à résoudre un problème, il est nécessaire de considérer plusieurs sources et destinations de données. Declaration : effectif, taux, gain : Reel ; an, anMax : Entier effectif ← 100 anMax ← 20 taux ← 0.05 an ← 0 gain ← 0 tant que an < anMax faire gain ← gain + effectif * taux effectif ← effectif * (1+taux) an ← an + 1 afficher ‘La population a gagne’, gain, ‘individus.’ Données à entrer Données à sortir Elodie Laine – 23.09.2015 Exemple de pseudo-code

4 H. Richard – 11.09.2014 Les traitements sont réalisés par les instructions du programme Les données fournies en entrée de l’instruction subissent un traitement Un traitement produit des informations qui sont les sorties de l’instruction Informatique = Traitement de l’information L’instruction lire est associée à un périphérique d’entrée spécifique : le clavier L’instruction ecrire est associée à un périphérique de sortie spécifique : l’écran Indépendance vis-à-vis de l’IHM Entrées et sorties Elodie Laine – 23.09.2015

5 H. Richard – 11.09.2014 Pourquoi concevoir des algorithmes les plus génériques possibles ? => Pour optimiser leur transférabilité & modularité, et ainsi pouvoir les réutiliser d’un problème à l’autre Declaration : an : Entier Entree : effectif, taux : Reel ; anMax : Entier Sortie : gain : Reel an ← 0 gain ← 0 tant que an < anMax faire gain ← gain + effectif * taux effectif ← effectif * (1+taux) an ← an + 1 Exemple de pseudo-code Elodie Laine – 23.09.2015

6 H. Richard – 11.09.2014 AA BB BB CC DD AA BB CC DD code répété Appel de la fonction Définition de la fonction Programmation structurée Elodie Laine – 23.09.2015

7 H. Richard – 11.09.2014 Un programme est composé de sous-programmes L’exécution débute par le sous-programme principal L’exécution se déroule par des appels successifs de sous- programmes Les sous-programmes interagissent par le passage de données en entrée et en sortie Structure d’un programme Programmation structurée Elodie Laine – 23.09.2015

8 H. Richard – 11.09.2014 Les fonctions sont des sous-programmes admettant des paramètres d’entrée et retournant un seul résultat (comme les fonctions mathématiques y = f(x,…)). - les paramètres d’entrée sont en nombre fixe - le type de valeur retournée par une fonction est unique - la valeur de retour est spécifiée par l’instruction retourner Les fonctions peuvent aussi modifier l’état du programme sans retourner de valeur. La modification peut concerner plusieurs variables. Généralement, le nom d’une fonction est soit un substantif (par ex. minimum), soit une question (par ex. isEmpty), soit un verbe (ex. move). Les fonctions Elodie Laine – 23.09.2015

9 H. Richard – 11.09.2014 fonction nom_fonction (parametres_entree) : type_valeur_retournee Declaration variables_locales debut instructions_de_la_fonction retourner valeur fin Déclaration de fonction Fonction renvoyant une valeur fonction nom_fonction (parametres_entree) : None Declaration variables_locales debut instructions_de_la_fonction fin Fonction ne renvoyant pas de valeur Elodie Laine – 23.09.2015

10 H. Richard – 11.09.2014 fonction minimum2 (a, b : Entier) : Entier Declaration res : Entier debut si a ≥ b alors res ← b sinon res ← a finsi retourner res fin Exemple de fonction (1) Elodie Laine – 23.09.2015

11 H. Richard – 11.09.2014 fonction gainDePopulation (effectif, taux: Reel ; anMax: Entier) : Reel Declaration an : Entier ; gain : Reel debut an ← 0 gain ← 0 tant que an < anMax faire gain ← gain + effectif * taux effectif ← effectif * (1+taux) an ← an + 1 retourner gain fin Declaration : an : Entier Entree : effectif, taux : Reel anMax : Entier Sortie : gain : Reel an ← 0 gain ← 0 tant que an < anMax faire gain ← gain + effectif * taux effectif ← effectif * (1+taux) an ← an + 1 Exemple de fonction (2) Elodie Laine – 23.09.2015

12 H. Richard – 11.09.2014 L’exécution d’une fonction A se fait par un appel dans un sous-programme B. L’appel s’effectue par une instruction en utilisant le nom de la fonction A Lors de l’appel, une valeur est affectée à chaque paramètre d’entrée de A A la fin de A, l’exécution reprend après l’appel de A dans le sous- programme B La valeur retournée peut être utilisée dans B pour une affectation, un calcul… Appel de fonction Elodie Laine – 23.09.2015

13 H. Richard – 11.09.2014 Declaration : unEntier, min : Entier debut lire(unEntier) min ← minimum2(unEntier, 0) ecrire(‘Le minimum avec 0 est :’, min) fin fonction minimum3 (a,b,c : Entier) : Entier debut retourner minimum2(a,minimum2(b,c)) fin Dans un programme principal : Dans une fonction : Exemple d’appel Elodie Laine – 23.09.2015

14 H. Richard – 11.09.2014 Pour qu’un sous programme B appelle un sous-programme A, il faut : Que les informations données à A, lors de la définition de son algorithme, soient identifiées/nommées pour pouvoir être utilisées : paramètres formels (paramètres) Que B donne des instructions à A lors de l’appel : paramètres effectifs (arguments) Une fonction est désignée de manière unique dans un programme par sa signature, composée de : Son nom Ses paramètres formels d’entrée Son type de retour Les paramètres La signature Paramètres et signature Elodie Laine – 23.09.2015

15 H. Richard – 11.09.2014 (12h) (18h) (0h) (22h) 1 2 3 4 Ecrire : Une fonction qui renvoie l’étape du cycle dans laquelle est une cellule à un âge donné, exprimé en heures Une fonction qui détermine si un âge est valide pour une cellule Un programme principal qui demande la saisie d’un âge pour une cellule et affiche le stade cellulaire dans lequel elle se trouve Cycle cellulaire Exercice 1/4 Elodie Laine – 23.09.2015

16 H. Richard – 11.09.2014 fonction stadeCellulaire(age : Entier) : Chaîne de caractères Declaration etape : Chaîne de caractères debut si (age ≤ 12) alors etape ← “G1” sinon si (age ≤ 18) alors etape ← “S” sinon si (age ≤ 22) alors etape ← “G2” sinon etape ← “M” finsi retourner etape fin  Fonction qui renvoie l’étape du cycle dans laquelle est une cellule à un âge donné Exercice 2/4 Elodie Laine – 23.09.2015

17 H. Richard – 11.09.2014 fonction estUnAgeValide(age : Entier) : Booleen debut retourner (age > 0 ) et (age ≤ 24) fin  Fonction qui détermine si un âge est valide pour une cellule Exercice 3/4 Elodie Laine – 23.09.2015

18 H. Richard – 11.09.2014 Declaration: age : Entier debut lire(age) si estUnAgeValide(age) alors ecrire(‘Cette cellule est dans le stade cellulaire ’, stadeCellulaire(age)) finsi fin  Programme principal Comment faire pour généraliser l’algorithme à différents types cellulaires ? Exercice 4/4 Elodie Laine – 23.09.2015

19 H. Richard – 11.09.2014 En python, une fonction est définie à l’aide du mot clé def, suivi du nom de la fonction, puis de la liste de ses paramètres formels. Le corps de la fonction doit être indenté. def nom_fonction (paramètres_d_entree): instructions_de_la_fonction_reperees_par_l_indentation Généralement, les premières lignes de la fonction sont dédiées à des commentaires de documentation de la fonction, appelés ‘Docstring’. Les fonctions en Python Elodie Laine – 23.09.2015

20 H. Richard – 11.09.2014 En Python, les fonctions retournent toujours unevaleur, soit explicite, soit implicite. Pour retourner une valeur explicite, la dernière instruction qui est exécutée dans le corps de la fonction doit être return valeur. Si aucune valeur de retour n’est spécifiée, la valeur prédéfinie None lui sera substituée. Les fonctions en Python Elodie Laine – 23.09.2015

21 H. Richard – 11.09.2014 def prem (x): n = 2 while n < x: d = 2 while d < n: if n % d == 0: print n, “=”, d, “*”, n/d break else: d = d + 1 if d == n: print(n, “est premier”) n = n + 1 Déclaration de la fonction 1 er niveau d’indentation: corps de la fonction 2 ème niveau d’indentation: sortie de la boucle 3 ème niveau d’indentation: boucle 4 ème niveau d’indentation: sélection simple 3 ème niveau d’indentation: sortie du bloc if 4 ème niveau d’indentation: sélection alternative 3 ème niveau d’indentation: sélection simple 2 ème niveau d’indentation: sortie du bloc if 2 ème niveau d’indentation: boucle Exemple de fonction en Python Elodie Laine – 23.09.2015

22 H. Richard – 11.09.2014 def carre(x): y = x * x a = 15 carre(a) print(“Le carré de ”, a, “ est égal à ”, y, “.”) def carre(x): y = x * x return(y) a = 15 b=carre(a) Print(“Le carré de ”, a, “ est égal à ”, b, “.”) => Erreur : y n’est pas défini ! => Le carré de 15 est égal à 225. Portée des variables en Python (1) Elodie Laine – 23.09.2015

23 H. Richard – 11.09.2014 Lors de son exécution, une fonction génère une table de symboles qui sera utilisée pour ses variables locales. A chaque fois qu’un nom de variable apparaît à gauche d’un signe d’affectation, une variable locale est créée. Une variable déclarée dans une fonction n’est pas visible depuis les autres sous-programmes. Toute référence à une variable apparaissant à droite d’un signe d’affectation déclenche une recherche de la variable selon l’ordre de priorité Local- Global-Integrated (LGI), soit (1) dans la table locale, (2) dans la table globale, (3) dans la table des noms intégrés. Ainsi, on peut faire référence à une variable globale dans une fonction, mais on ne peut pas lui affecter une valeur. Pour outrepasser cette interdiction, on utilise le mot clé global dans le corps de la fonction. Portée des variables en Python (2) Elodie Laine – 23.09.2015

24 H. Richard – 11.09.2014 def carre(x): global y y = x * x a = 15 carre(a) Print(“Le carré de ”, a, “ est égal à ”, y, “.”) def carre(x): y = x * x return(y) a = 15 b=carre(a) Print(“Le carré de ”, a, “ est égal à ”, b, “.”) => Le carré de 15 est égal à 225. Portée des variables en Python (3) Elodie Laine – 23.09.2015

25 H. Richard – 11.09.2014 def hello(prenom): print("Bonjour", prenom) hello("Patricia") print(x)  Bonjour Patricia  Erreur : x n’est pas défini ! x = 10 def hello(prenom): print("Bonjour", prenom) hello("Patricia") print(x) x = 10 def hello(prenom): print("Bonjour", prenom) print(x) hello("Patricia") print(x) x = 10 def hello(prenom): x = 42 print("Bonjour", prenom) print(x) hello("Patricia") print(x)  Bonjour Patricia  10  Bonjour Patricia  10  Bonjour Patricia  42  10 Portée des variables en Python (4) Elodie Laine – 23.09.2015

26 H. Richard – 11.09.2014 La liste d’appel d’une fonction peut contenir un nombre variable d’arguments. Il est possible d’affecter une valeur par défaut à certains paramètres d’entrée, de sorte de le nombre de paramètres effectifs (arguments) donnés lors de l’appel de la fonction sera inférieur au nombre de paramètres formels (paramètres) qui apparaissent dans sa définition. def afficheAB(a=‘10’,b=“salut”): print(“a : ”, a, “ ; b : ”, b) afficheAB() afficheAB(“bonjour”,“monsieur”) afficheAB(“je te dis”) => a : 10 ; b : salut => a : bonjour ; b : monsieur => a : je te dis ; b : salut Paramètres par défaut Elodie Laine – 23.09.2015

27 H. Richard – 11.09.2014 val = ‘10’ def afficheAB(a=val,b=“salut”): print(“a : ”, a, “ ; b : ”, b) afficheAB() val = ‘20’ afficheAB() => a : 10 ; b : salut La valeur par défaut est évaluée une fois et une seule lors de la définition de la fonction Paramètres par défaut ! Elodie Laine – 23.09.2015

28 H. Richard – 11.09.2014 val = ‘10’ def afficheAB(a=val,b=[]): print(“a : ”, a, “ ; b : ”, b) a = “Maintenant a vaut 20” b.append(“salut”) afficheAB() => a : 10 ; b : salut => a : 10 ; b : [] Dans le cas d’un objet modifiable, les changements qui lui ont été faits sont conservés. La valeur par défaut est évaluée une fois et une seule lors de la définition de la fonction Paramètres par défaut ! Elodie Laine – 23.09.2015

29 H. Richard – 11.09.2014 Il est aussi possible de faire référence à une liste d’appel de fonction par mot clé, c’est-à-dire en utilisant le nom des paramètres formels de la fonction val = ‘10’ def afficheABC(c,a=val,b=[]): print(“a : ”, a, “ ; b : ”, b, “ ; c : ”, c) afficheABC(a=“hello you”,1974) afficheAB(“bouh”) => a : hello you ; b : [] ; c : 1974 => a : 10 ; b : [] ; c : bouh Dans ce type d’appel, l’ordre des arguments est sans importance. Appel par mot clé Elodie Laine – 23.09.2015

30 H. Richard – 11.09.2014 Il est cependant impératif que, dans la définition de la fonction, les paramètres qui reçoivent une valeur par défaut apparaissent après ceux qui n’en reçoivent pas. val = ‘10’ def afficheABC(a=val,c,b=[]): print(“a : ”, a, “ ; b : ”, b, “ ; c : ”, c) afficheABC(a=“hello you”,1974) => Erreur : un argument sans valeur par défaut suit un argument avec valeur par défaut Appel par mot clé ! Elodie Laine – 23.09.2015

31 H. Richard – 11.09.2014 Importer le contenu d’un module import math b = math.sqrt(a) Importer une partie d’un module from math import sqrt Importer tout un module fom math import * (tous les identifiants du module sont chargés) Importer un module de fonctions La fonction standard dir() permet de lister le contenu d’un module. dir(math) ['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan‘, 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs‘, 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10‘, 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan‘, 'tanh'] La fonction help() est la fonction d’aide en ligne de python help(math) Lister le contenu d’un module Quelques fonctions standards Elodie Laine – 23.09.2015

32 H. Richard – 11.09.2014 abs(x) renvoie la valeur ABSolue d’un entier ou d’un réel math.cos(x) renvoie le COSinus de l’argument exprimé en radians math.exp(x) renvoie la valeur de e élevée à la puissance de l’argument math.log(x[,base]) renvoie le LOGarithme népérien de l’argument avec deux arguments, on peut préciser la base souhaitée math.pow(x,y) renvoie l’argument x à la puissance y round(x[,ndigits]) arRONDit l’argument x à ndigits chiffre après la virgule Si ndigits est omis, l’arrondi se fait à l’entier le plus proche sin(x) renvoie le SINus de l’argument exprimé en radians sqrt(x) renvoie la racine carrée de l’argument math.trunc(x) renvoie la partie entière d’un nombre réel x Fonctions mathématiques Quelques fonctions standards Elodie Laine – 23.09.2015

33 H. Richard – 11.09.2014 chr(i) renvoie un caractère à partir de son code ASCII ord(c) renvoie un entier représentant le code ASCII d’un caractère Fonctions pour les caractères len(S) renvoie la longueur de la chaîne de caractères S str.lower(S) renvoie une copie de S, avec les majuscules en minuscules str.upper(S) renvoie une copie de S, avec les minuscules en majuscules Fonctions pour les caractères et chaînes de caractères input([prompt]) affiche l’argument à l’écran, renvoie ce qui est au clavier print([object,...]… ) affiche object(s) à l’écran, avec retour à la ligne open(file[, mode='r‘…) ouvre le fichier file en mode lecture (‘r’), écriture (‘w’)… Fonctions pour les entrées/sorties Quelques fonctions standards Elodie Laine – 23.09.2015

34 H. Richard – 11.09.2014 Au moyen du mot clé lambda, il est possible de définir des fonctions anonymes. x = lambda a,b : a+b z = x(3,5) print(z) def ferm (val): def fonc(nb): return val + nb return fonc x = ferm(100) y = ferm(200) print(“appel de x :”, x(50)) print(“appel de y :”, y(50)) Une fonction s’exécute toujours dans le contexte dans lequel elle a été définie. => 8 => appel de x : 150 => appel de y : 250 Fonctions anonyme et fermeture Elodie Laine – 23.09.2015

35 H. Richard – 11.09.2014 def mettre_au_carre(x): return x ** 2 def appliquer_fonction(fonc, valeur): return fonc(valeur) print appliquer_fonction(mettre_au_carre, 3) => 9 Une fonction callback est une fonction particulière qui, une fois définie, sera utilisée en argument d’une autre fonction. En pratique, rien ne permet de différencier les fonctions callback des autres en Python. Fonction callback Elodie Laine – 23.09.2015

36 H. Richard – 11.09.2014 La prise en compte de différentes sources et destinations de données permet de généraliser un algorithme visant à résoudre un problème. Un programme est conposé de sous programmes, autrement dit des fonctions. Les fonctions admettent des paramètres d’entrée (arguments) et retournent une seule valeur ou bien modifient l’état du programme (sans retour de valeur). La bibliothèque python comporte de nombreux modules, où sont définies un certain nombre de fonctions. Conclusion Elodie Laine – 23.09.2015


Télécharger ppt "H. Richard – 11.09.2014 Initiation à la programmation impérative et algorithmique Cours 4 – Entrées/Sorties et Fonctions Largement inspiré des cours :"

Présentations similaires


Annonces Google