1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Dimension: px
Commencer à balayer dès la page:

Download "1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions"

Transcription

1 Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 4 : Fonctions La construction de fonctions dans un langage de programmation permet aux programmeurs d enrichir la fonctionnalité du langage et faciliter les réalisations des tâches des applications. En effet, pour réaliser une application complexe, un programmeur peut successivement la décomposer en plusieurs tâches simples. Une tâche complexe peut faire appel à un certain nombre de tâches simples. Ces tâches peuvent se structurer en une hiérarchie dont l application est au sommet de l hiérarchie. Chaque tâche est définie par une fonction. L appel d une fonction faire exécuter la tâche correspondante. Une fonction peut définir avec des paramètres et peut retourner une valeur comme une fonction en mathématiques. En programmation, une fonction peut ne pas avoir de paramètres et peut ne pas retourner de valeur. Elle peut simplement réaliser un certaine nombre de tâches comme l impression de messages ou la saisie des valeurs au clavier et les mettre en mémmoire centrale. Lors de l appel d une fonction (pour faire exécuter la tâche correspondante), si ses paramètres existent, les valeurs effectives de ceux-ci (appelées les arguments) sont substituées de manière respective les paramètres dans le corps de la fonction. Et la valeur retournée sont calculée en fonction de ces arguments. Ce cours explique la construction et l appel de fonction en Python. 1 Définition et Appel d une fonction La syntaxe pour définir une fonction : def nomdefonction(liste_de_parametres) : bloc_instructions Le bloc instructions effectue les calculs pour réaliser les tâches confiées à la fonction définie. Les calculs peuvent produire de nouvelles valeurs que l on peut renvoyer dans une expression (affecter à variable, utiliser comme arguments d une autre fonction). 1

2 Pour cela, on utilise l instruction return valeur (ou return tuple de valeurs). Lors qu une instruction return valeur est exécutée dans le bloc, la valeur est renvoyée et l exécution de la fonction s arrête ; toutes autres instructions après cette instruction return valeur sont abandonnées. Dans le bloc instructions on peut avoir plusieurs instructions return, mais une seule return sera exécutée. Exemple 1 : # Recherche le premier élément maximal dans une liste ou #dans une chaine de caractères def max_list(l) : k = len(l) max, x = L[0], 0 i = 1 while i < k : if max < L[i]: max = L[i] x = i i = i + 1 return max, x La fonction max list() a un seul paramètre qui peut être une liste, un tuple, ou une chaine de caractères ; ceci est déduit de la syntaxe L[i]. La fonction retourne un tuple de deux éléments qui représentent respectivement l index de la première valeur maximale de la liste et la valeur elle-même. Notons qu un tuple peut être considéré comme une liste sauf que l on ne peut pas modifier ses éléments une fois qu ils sont définis, et qu il a la syntaxe de représentation entourée par les parenthèses, par exemple (3, abc ), et non pas entourée par les crochets. Une fois une fonction est définie, pour l utiliser on l appelle avec des arguments adéquats : Appels de max list avec une liste de nombres comme argument. print max_list([4,5,6,9,12,5,10,3,18,5,6,7]) 2

3 ou par affectation à une variable : couple = max_list([4,5,6,9,12,5,10,3,18,5,6,7]) Appels de max list avec une chaine de caractères comme argument. print max_list( totovaaumarche ) ou par affectation à une variable : couple = max_list( totovaaumarche ) 2 Définir des fonctions dans un programme Les fonctions définies par un programmeur peuvent être considérées comme les nouveaux opérateurs qui enrichissent le langage. Le principe est que les fonctions doivent être définies avant leurs appels (ou avant de les faire exécuter) Autrement le compilateur (ou l interpréteur) peut ne pas connaître la fonction qu il appel. Une exception : dans le corps d une fonction récursive, on peut faire appel à une fonction qui est en cours de définir. En général, dans un fichier de programme, si l on veut définir de nouvelles fonctions, alors leurs définitions doivent précéder leurs appels. Ce qui suit est un fichier de programme utilisant l exemple ci-dessus. # Fichier max_liste.py ################# Partie de définitions de fonctions ################# # Recherche le premier élément maximal dans une liste ou #dans une chaine de caractères def max_list(l) : k = len(l) 3

4 max, x = L[0], 0 i = 1 while i < k : if max < L[i]: max = L[i] x = i i = i + 1 return max, x ################# Partie d exécution: instructions et appels de fonctions print max_list([4,5,6,9,12,5,10,3,18,5,6,7]) couple = max_list([4,5,6,9,12,5,10,3,18,5,6,7]) print max_list( totovaaumarche ) couple = max_list( totovaaumarche ) ##################### Fin du Fichier de Programme #################### L exécution directe du programme (fichier max liste.py) en utilisant la commande python max liste.py commence par la création de la fonction dans l espace du programme. Ensuite, l exécution dans cette espace les instructions de la partie d exécution. 3 Définir des fonctions dans un fichier séparé Les fonctions peuvent être définies dans un fichier et le programme dans un autre fichier séparé. Dans ce cas, pour pouvoir être exécuté directement avec la commande python nomfichierprogramme.py, le fichier du programme doit importer d abord les fonctions du fichier dans lequel les fonctions sont définies. Pour l exemple ci-dessus, on édite deux fichiers séparés : 4

5 1) Fichier de fonctions : # Fichier fonc_max_liste.py # Recherche le premier élément maximal dans une liste ou #dans une chaine de caractères def max_list(l) : k = len(l) max, x = L[0], 0 i = 1 while i < k : if max < L[i]: max = L[i] x = i i = i + 1 return max, x 2) Fichier de programme : Pour utilser les fonctions définies dans d autres fichiers, le fichier de programme doit commencer par les instructions qui importent ces fichiers de fonctions ou directement les fonctions de ces fichiers. Dans la syntaxe ci-dessous, on importe une ou toutes les fonctions du fichier fonc max list. # Fichier prog_max_list.py from fonc_max_list import max_list # ou plus simple: # from fonc_max_list import * print max_list([4,5,6,9,12,5,10,3,18,5,6,7]) couple = max_list([4,5,6,9,12,5,10,3,18,5,6,7]) print max_list( totovaaumarche ) couple = max_list( totovaaumarche ) 5

6 Au lieu d importer les fonctions, on peut importer le fichier qui définit les fonctions avec la syntaxe qui suit. Dans ce cas, le fichier de programme sera changé comme suit : # Fichier prog2_max_list import fonc_max_list print fonc_max_list.max_list([4,5,6,9,12,5,10,3,18,5,6,7]) # la syntaxe indiquant le chemin d acces a la fonction max_list utiliser. couple = fonc_max_list.max_list([4,5,6,9,12,5,10,3,18,5,6,7]) print fonc_max_list.max_list( totovaaumarche ) couple = fonc_max_list.max_list( totovaaumarche ) L exécution directe du premier fichier de programme : python prog max list.py L exécution directe du seconde fichier de programme : python prog2 max list.py 4 Module Tout fichier qui contient au moins une définition d une fonction ou d une variable est appelé un module (une bibliothèque). Le nom du module est le nom du fichier enlevé le suffixe.py. Ainsi, un fichier de programme qui contient au moins une définition d une fonction ou un fichier qui ne contient que des définition de fonctions sont des modules. On peut importer un module ou des fonctions ou variables d un module dans un programme, comme nous avons vu dans les exemples ci-dessus. 6

7 Pour faciliter la programmation, Python définit un certain nombre de modules internes. Nous avons utilisé quelques modules internes, par exemple : Lors de l ouverture d une session interactive, on est dans un module interne nommé main. Toutes les variables définies par affectation au niveau de ce module sont valides globalement dans la session. D autres modules internes que nous avons utilisées sont string, math, random Dans une session de travail sous l interpréteur Python, la première importation d un module qui, à part des fonctions qu elle définit, contient des instruction de programme fait exécuter ces instructions. Dans la même session, les importations suivantes ne font pas exécuter ces instructions. Pour les exécuter, on utilise la fonction reload(nomdumodule) (sans sufffixe.py). 5 Paramètres, variables locales et globales Les paramètres d une fonction sont connues seulement dans le corps de la fonction. Ils sont donc locaux à la fonction. Lors de l appel d une fonction ayant des paramètres, on peut substituer les variables d un module à la place des paramètres. Notons que la substitution se faire en générale par valeur : Les paramètres reçoivent repectivement les valeurs des variables, et non pas les variables elles-mêmes. Par conséquent, si on tente à changer les valeurs de ces variables à l intérieur de la fonction, ces changements ne seront pas persistés après l exécution de la fonction. Cependant, cette remarque n est pas valide pour les paramètres de type list. A part des paramètres, une fonction peut utiliser des variables pour effectuer les calculs dans sa tâche. Rappelons qu en Python, la déclaration d une variable se fait par sa première affectation. Ainsi, dans le corps d une fonction, la première affection d une variable déclare que cette variable est locale à la fonction : à l extérieur de la fonction, le même nom de variable ne se réfère pas à la même variable. Pour échapper à cette règle, si l on veut que la variable soit connue globalement au niveau du module de la fonction, alors avant la première affectation dans le corps de la fonction, on déclare global x. Pour toute autre variable manipulée (sans être liées par une affectation) dans le corps d une fonction, Python cherche sa portée dans le module définissant la fonction puis 7

8 dans les modules internes importés. 8

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

MIS 102 Initiation à l Informatique

MIS 102 Initiation à l Informatique MIS 102 Initiation à l Informatique Responsables et cours : Cyril Gavoille Catherine Pannier Matthias Robine Marc Zeitoun Planning : 6 séances de cours 5 séances de TD (2h40) 4 séances de TP (2h40) + environ

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Initiation à l algorithmique

Initiation à l algorithmique Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -

Plus en détail

Chapitre 1 Qu est-ce qu une expression régulière?

Chapitre 1 Qu est-ce qu une expression régulière? Chapitre 1 Qu est-ce qu une expression régulière? Les ordinateurs n ont pas du tout la même conception des textes que nous : pour nous, un texte est un ensemble d idées couchées sur papier. Nous nous en

Plus en détail

Initiation à la programmation orientée-objet avec le langage Java

Initiation à la programmation orientée-objet avec le langage Java Initiation à la programmation orientée-objet avec le langage Java Pôle Informatique 2013-2014 158 cours Fauriel 42023 Saint-Étienne Cedex 02 Gauthier Picard gauthier.picard@emse.fr Institut Henri Fayol,

Plus en détail

Cours d Informatique

Cours d Informatique Cours d Informatique 1ère année SM/SMI 2007/2008, Info 2 Département de Mathématiques et d Informatique, Université Mohammed V elbenani@hotmail.com sayah@fsr.ac.ma 2007/2008 Info2, 1ère année SM/SMI 1

Plus en détail

Programmes des classes préparatoires aux Grandes Ecoles

Programmes des classes préparatoires aux Grandes Ecoles Programmes des classes préparatoires aux Grandes Ecoles Filière : scientifique Voies : Mathématiques, physique et sciences de l'ingénieur (MPSI) Physique, chimie et sciences de l ingénieur (PCSI) Physique,

Plus en détail

Support de Cours de Langage C. Christian Bac

Support de Cours de Langage C. Christian Bac Support de Cours de Langage C Christian Bac 15 février 2013 ii Table des matières Avant-propos xi 1 Historique et présentation 1 1.1 Historique........................................... 1 1.2 Présentation

Plus en détail

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle. Université Montpellier-II UFR des Sciences - Département Informatique - Licence Informatique UE GLIN302 - Programmation Applicative et Récursive Cours No 3 : Identificateurs, Fonctions, Premières Structures

Plus en détail

1 Définition d une classe en Java

1 Définition d une classe en Java Université Montpellier-II UFR des Sciences - Département Informatique Licence Informatique - Ingénierie Logicielle - Concepts et Outils de la modélisation et du développement de logiciel par et pour la

Plus en détail

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Vérification de programmes et de preuves Première partie. décrire des algorithmes Vérification de programmes et de preuves Première partie. décrire des algorithmes Yves Bertot September 2012 1 Motivating introduction A partir des années 1940, il a été compris que l on pouvait utiliser

Plus en détail

Réservation de matériel

Réservation de matériel Manuel Utilisateur Réservation de matériel Auteur : Logica Version : 3.1 Droit d auteur Ce texte est disponible sous contrat Creative Commons Paternité - Pas d'utilisation Commerciale - Partage des Conditions

Plus en détail

Premiers pas. Shell? Les processus vu comme des filtres. commandes

Premiers pas. Shell? Les processus vu comme des filtres. commandes Les vu d exécution du Les s Formation continue Université Lille 1 Pour toutes remarques : Alexandre.Sedoglavic@univ-lille1.fr Licence trimestre 3 2008-09 Les vu d exécution du Les s Très schématiquement

Plus en détail

Manuel Utilisateur. Boticely

Manuel Utilisateur. Boticely Manuel Utilisateur Boticely Auteur : Logica Version : 1.4 Droit d auteur Ce texte est disponible sous contrat Creative Commons Paternité - Pas d'utilisation Commerciale - Partage des Conditions Initiales

Plus en détail

Scala par l exemple. Martin Odersky

Scala par l exemple. Martin Odersky Scala par l exemple Martin Odersky Scala par l exemple Martin Odersky Table des matières Notes du traducteur... v 1. Introduction... 1 2. Premier exemple... 2 3. Programmer avec des acteurs et des messages...

Plus en détail

MATHÉMATIQUES. Les préalables pour l algèbre MAT-P020-1 DÉFINITION DU DOMAINE D EXAMEN

MATHÉMATIQUES. Les préalables pour l algèbre MAT-P020-1 DÉFINITION DU DOMAINE D EXAMEN MATHÉMATIQUES Les préalables pour l algèbre MAT-P020-1 DÉFINITION DU DOMAINE D EXAMEN Mars 2001 MATHÉMATIQUES Les préalables pour l algèbre MAT-P020-1 DÉFINITION DU DOMAINE D EXAMEN Mars 2001 Direction

Plus en détail

Mise en place d un intranet de travail collaboratif. Guide utilisateur

Mise en place d un intranet de travail collaboratif. Guide utilisateur Mise en place d un intranet de travail collaboratif Guide utilisateur 03/05/2010 Sommaire 1. Introduction... 4 2. Premier contact avec Le portail... 4 2.1 Se connecter au portail.... 4 2.1.1 Inscription

Plus en détail

Programmons avec Phrogram

Programmons avec Phrogram Programmons avec Phrogram Guide pour le vrai débutant Par Jon Schwartz Traduction Philippe Tanguy Mise à jour : Juin 2007 Site Web : Programmons avec Phrogram Page 1/42 Programmons avec Phrogram Table

Plus en détail

Fiche PanaMaths Calculs avec les fonctions sous Xcas

Fiche PanaMaths Calculs avec les fonctions sous Xcas Fiche PanaMaths Calculs avec les fonctions sous Xcas Cette fiche destinée aux élèves des classes de Terminale requiert un premier niveau de connaissance du logiciel Xcas. Définition d une fonction Fonctions

Plus en détail

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE PRISE EN MAIN D UN TABLEUR Version OPEN OFFICE Prise en main d un tableur page 2 1. L utilisation de la souris Pour faire fonctionner un tableur, on utilise le clavier mais aussi la souris. Rappelons,

Plus en détail

Modification d une feuille de style

Modification d une feuille de style Modification d une feuille de style Septembre 2005 Modification d un feuille de style Contenu Aperçu Page 3 Comment démarrer Page 4 Modifier une feuille de style Page 6 Partage d un style Page 10 Page

Plus en détail

Rapport de stage de première année de Master Optimisation de cache d instructions

Rapport de stage de première année de Master Optimisation de cache d instructions Rapport de stage de première année de Master Optimisation de cache d instructions Benoit Boissinot Benoit.Boissinot@ens-lyon.fr Université Lyon 1 sous la direction de Fabrice Rastello Fabrice.Rastello@ens-lyon.fr

Plus en détail

Conférence des Cours constitutionnelles européennes XIIème Congrès

Conférence des Cours constitutionnelles européennes XIIème Congrès Conférence des Cours constitutionnelles européennes XIIème Congrès Les relations entre les Cours constitutionnelles et les autres juridictions nationales, y compris l interférence, en cette matière, de

Plus en détail

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit

Plus en détail

Synthèse «Le Plus Grand Produit»

Synthèse «Le Plus Grand Produit» Introduction et Objectifs Synthèse «Le Plus Grand Produit» Le document suivant est extrait d un ensemble de ressources plus vastes construites par un groupe de recherche INRP-IREM-IUFM-LEPS. La problématique

Plus en détail

Version default Titre : Gestion mémoire : JEVEUX Date : 14/06/2012 Page : 1/35 Responsable : Jean-Pierre LEFEBVRE Clé : D6.02.

Version default Titre : Gestion mémoire : JEVEUX Date : 14/06/2012 Page : 1/35 Responsable : Jean-Pierre LEFEBVRE Clé : D6.02. Titre : Gestion mémoire : JEVEUX Date : 14/06/2012 Page : 1/35 Gestion mémoire : JEVEUX Résumé : Ce document présente les différentes fonctions d'une bibliothèque logicielle appelée JEVEUX permettant de

Plus en détail

Travaux Dirigés n 1 : chaînes de caractères

Travaux Dirigés n 1 : chaînes de caractères UE LE315 Travaux Dirigés n 1 : chaînes de caractères Exercice 1 Ecrire une fonction int nombre_caract(char *chaîne) qui retourne la taille d une chaîne de caractères. Exercice 2 Ecrire la fonction void

Plus en détail

Scilab pour les vrais débutants

Scilab pour les vrais débutants Scilab pour les vrais débutants Scilab Enterprises S.A.S - 143 bis rue Yves Le Coz - 78000 Versailles - www.scilab- enterprises.com Ce document a été co- écrit par Scilab Enterprises et Christine Gomez,

Plus en détail