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

Slides:



Advertisements
Présentations similaires
Python Fonction et procédure
Advertisements

Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
CINI – Li115 1 Semaine 3 Boucles (suite), tirages aléatoires, bibliothèque graphique ● Imbrication d'instructions if et for ● Boucles for imbriquées ●
CINI – Li115 1 Semaine 6 Les fonctions ● Pourquoi écrire des fonctions ? ● Définition de fonctions ● Fonction main ● Appels de fonctions ● Portée des variables.
SQL partie 5 1 LMD create – update – primary key secondary key.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Présentation python : Épisode 2 ● Les fonctions ● Exemples d'application ● Utiliser ses programmes ● Les modules Étienne Loks et David Mentré - 28 janvier.
Le Langage JavaScript pour le web
>>> Amphi Python
Ajouter le code dans une page html
Intégration du P7 dans l’épreuve E41
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Représentation des nombres réels
Quelques Termes INFORMATIQUE ? ORDINATEUR ( Système Informatique)?
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
« Un langage de programmation est une convention pour donner des ordres à un ordinateur. Ce n’est pas censé être obscur, bizarre et plein de pièges subtils.
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Qu'est-ce que POSIX? Une librairie en langage C
Semaine #1 INF130 par Frédérick Henri.
Javadoc et débogueur Semaine 03 Version A17.
Algorithmique demander jeu du pendu.
AO (Architecture des ordinateurs)
Principes de programmation (suite)
Algorithmique Langage C
1°) Un nombre y est-il associé à 3, et si oui lequel ?
11ième Classe (Mardi, 18 novembre) CSI2572
Initiation à la programmation impérative et algorithmique
Les fonctions.
Les fonctions.
Algorithmiques Abdelbasset KABOU
Initiation à la programmation impérative et algorithmique
SIF-1053 Architecture de ordinateurs
Un Algorithme , c'est Quoi ?
Bases de programmation en Python
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Langages de programmation TP3
Python for beginners Qu'est ce que Python
Excel (et toute l’informatique) :
Cours N°6: Algorithmiques Structures Conditionnelles
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Science du traitement rationnel de l'information
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Cours N°9: Algorithmiques Les Tableaux 1
Les tableaux.
Programmation en C++ C++ de base
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Type Concret – Type Abstrait
Synthèse 8 : Langage informatique
Calcul Scientifique Initiation à SCILB
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
Chapitre 1: introduction à Matlab
Semaine #3 INF130 par Frédérick Henri.
Chapitre 3: Les scriptes
ENSEIGNER L’ALGORITHMIQUE ET LA PROGRAMMATION AU COLLÈGE
Compléments sur Python (EduPython)
RABAH M ed Ali 2018/2019
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Flowchart Itération Cours 04.
Analyse et programmation langage ADA
Fonctions Abstractions procédurales.
Python Nicolas THIBAULT
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
LE LANGAGE DE PROGRAMMATION Formation RABAH Mohamed Ali.
Les Commandes de base Linux. 1 L’aide sur les commandes Linux ◦ help : obtenir de l’aide pour une commande interne du shell. Elle permet aussi d'afficher.
Transcription de la présentation:

H. Richard – 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 –

H. Richard – Elodie Laine – 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é

H. Richard – 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 – Exemple de pseudo-code

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – (12h) (18h) (0h) (22h) 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –

H. Richard – 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 –