TP 3. Fonctions. def nom(liste des paramètres) : blocs d instructions ;

Documents pareils
TP 1. Prise en main du langage Python

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

STAGE IREM 0- Premiers pas en Python

Initiation à la programmation en Python

Présentation du langage et premières fonctions

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Découverte de Python

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Licence Sciences et Technologies Examen janvier 2010

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

TD3: tableaux avancées, première classe et chaînes

Représentation d un entier en base b

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

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

1. Structure d'un programme FORTRAN 95

1 Recherche en table par balayage

Cours Informatique Master STEP

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Algorithmique et Programmation, IMA

Exonet : sauvegarde automatisée d une base de données

Introduction à MATLAB R

ACTIVITÉ DE PROGRAMMATION

DM 1 : Montre Autoquartz ETA

L informatique en BCPST

La mémoire. Un ordinateur. L'octet. Le bit

1 Lecture de fichiers

Calcul Formel et Numérique, Partie I

Tp 1 correction. Structures de données (IF2)

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Utilisation d objets : String et ArrayList

Recherche dans un tableau

AWS avancé. Surveiller votre utilisation d EC2

Principes des langages de programmation INF 321. Eric Goubault

Programmation Web. Madalina Croitoru IUT Montpellier

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Réaliser la fiche de lecture du document distribué en suivant les différentes étapes de la méthodologie (consulter le support du TD!

Initiation à l algorithmique

Maple: premiers calculs et premières applications

Cours 1 : Qu est-ce que la programmation?

Cours 1 : La compilation

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...


Cours d algorithmique pour la classe de 2nde

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

V- Manipulations de nombres en binaire

Chapitre VI- La validation de la composition.

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Cours d Informatique

I. Introduction aux fonctions : les fonctions standards

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Cours d initiation à la programmation en C++ Johann Cuenin

Programme Compte bancaire (code)

Nom de l application

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

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

CORRECTION EXERCICES ALGORITHME 1

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmation C++ (débutant)/instructions for, while et do...while

Java Licence Professionnelle CISII,

Initiation à la Programmation en Logique avec SISCtus Prolog

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Les failles Format String

Rappels Entrées -Sorties

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Solutions du chapitre 4

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Le langage C. Séance n 4

Calcul Formel et Numérique, Partie I

Programme awk------introduction rapide

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Cours d Algorithmique et de Langage C v 3.0

Algorithme. Table des matières

Cours de Génie Logiciel

Initiation à la programmation OEF pour Wims (exercices).

TP1. Outils Java Eléments de correction

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

td3a correction session7az

Compte-rendu de projet de Système de gestion de base de données

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle

Corrigé des TD 1 à 5

Eole - gestion des dictionnaires personnalisés

Transcription:

TP 3. Fonctions Lorsqu on commence à écrire des programmes plus denses il est préférable d éviter d accumuler de grandes quantités de lignes de texte dans un seul et même fichier. Une approche efficace est de décomposer le programme en sous-programmes avec une tâche bien spéficique et plus élémentaire. Par ailleurs, si un même bloc d instructions apparaît à plusieurs reprise dans un programme : il est préférable de le définir une bonne fois pour toute et d éviter de le reprendre systématiquement. Une solution dans le langage Python est de définir des fonctions. Généralités sur les fonctions La syntaxe générale est la suivante : def nom(liste des paramètres) : blocs d instructions ; L appel d une fonction déclenche l exécution des blocs d instructions qui la compose. Exemple. Voici une fonction qui admet un paramètre d entrée et qui retourne la valeur : carré de l argument. >>> carre(2) Remarques.. La définition d une fonction commence par le mot clé def et se poursuit par le nom de la fonction. Vous devez éviter les mots réservés (comme if, while...) et les caractères spéciaux et accentués. 2. La liste des paramètres suit entre parenthèses le nom de la fonction. C est une variable qui va recevoir les arguments (paramètres effectifs) d entrée de la fonction. Le nom d une variable d un programme que nous passons en argument d une fonction n a rien à voir avec le nom du paramètre de la fonction. Les deux exemples ci-dessous illustre cela : >>> x= >>> y= >>> while x<5 : 6 carre(x) x=x+ >>> while y<5 : 6 carre(y) y=y+ Note. Les paramètres sont facultatifs. L exemple ci-dessous montre une fonction qui affiche un message lors de son appel. >>> def coucou() : >>> coucou() Bonjour, ça va? print( Bonjour, ça va? ) Exercice. En ligne de commande. Définir une fonction prenom qui prend en argument une chaine de caractères X (disons un prénom) et affiche le message : Bonjour, X.

3. Il n est pas nécessaire de préciser quel type doit recevoir un paramètre. Il est cependant possible de commenter sa fonction pour indiquer à l utilisateur ce qu elle fait ; il est également possible d attribuer une valeur par défaut aux paramètres. Exemple. Voici l exemple de la fonction carrée bien documentée. >>> def carre(x=3) : >>> carre() """Ceci est la fonction carrée""" Exercice 2. En ligne de commande. Réaliser une fonction valeur absolue (bien documentée) à l aide d une structure conditionnelle.. L instruction return définit la valeur que la fonction renvoie : elle termine l appel de la fonction car elle n est exécuté qu une fois. Elle est à distinguer de la fonction print qui se contente d un affichage et peut-être présente à plusieurs endroits. Exercice 3. Rédiger et exécuter les lignes de commandes ci-dessous : >>> carre(3) + print(x*x) >>> carre(3) + 5. Dans un script : la définition des fonctions doit précéder leur utilisation. Une fois un script exécuté : les fonctions définies dans ce script sont accessibles en ligne de commande. Exercice. Rédiger un programme compteurvoyelle.py constitué des deux fonctions suivantes :. Une fonction testvoyelle, dont le paramètre d entrée est un caractère, qui renvoie T rue si le caractère est une voyelle et F alse sinon. 2. Une fonction comptvoyelle, dont le paramètre d entrée est une chaine de caractères, qui renvoie le nombre de caractères qui sont des voyelles. Indication : une variable k parcourt la chaine de caractère reçue en argument ; un compteur s incrémente à chaque fois que k tombe sur une voyelle : le test est réalisé à l aide de la fonction précédente. Votre programme demande à l utilisateur de saisir une chaine de caractères et lui répond le nombre de voyelles contenues dans la chaine. Remarque. Il est possible de définir une ou plusieurs fonctions dans un premier fichier texte et d y faire appel dans un autre script. Attention : pour ne pas avoir à spécifier le chemin d accès, il est préférable de placer les deux scripts dans un même dossier. Pour accéder aux fonctions placées dans un autre fichier on utilise la même syntaxe que pour les modules prédéfinis avec le mot clé import et le nom du fichier. Exercice 5. Valuation 2-adique. Définir une fonction val2 qui prend un entier en argument et renvoie la plus grande puissance de 2 qui divise (en nombre entier) cet entier. Exemple. La valuation 2-adique de 2 est 3 car 8 divise 2 mais pas 6. 2

Exercice 6. Autour des palindromes. Un mot est un palindrome si l ordre des lettres reste le même qu on le lise de gauche à droite ou de droite à gauche. Exemples : les mots «radar» et «non» sont des palindromes. On se propose de créer des scripts Python qui vont nous permettre de tester si une chaine de caractères est un palindrome. Rappels sur le type str. Par accéder à un caractère d une chaine de caractère Ch, on utilise la syntaxe Ch[k] où k désigne l indice du caractère (la numérotation commence à 0). La fonction len donne le nombre de caractères d une chaine. Par ajouter un caractère à une chaine, on utilise l opérateur +. On teste l égalité de deux chaines de caractères avec l opérateur ==. >>> Ch = coucou >>> Ch[2] u, >>> len(ch) 6 >>> couco + u : coucou >>> Ch == coucou : True >>> Ch == bonjour : False. Méthode. Ouvrir et enregistrer un nouveau fichier palindrome.py. Vous rédigez les commandes dans ce fichier. (a) Définir une fonction egalite, qui prend en entrée deux chaines de caractères Ch et Ch2 et qui retroune True si Ch et Ch2 sont égales et False sinon. (b) Définir une fonction symetrique, qui prend en entrée une chaine de caractères Ch et qui retourne la chaine formée par les caractères de Ch lus de la droite vers la gauche. Exemple. >>> symetrique( coucou ) : uocuoc (c) Pour compléter votre programme : demandez à l utilisateur de saisir un mot ; votre programme réalise l affichage du texte : Ce mot est un palindrome, si c est bien le cas et : Ce mot n est pas un palindrome sinon. 2. Méthode 2 : directe. La méthode présentée dans la question précédente nécessite de tester l égalité de deux chaines et de créer une nouvelle chaine de caractère. On envisage dans cette question une méthode moins coûteuse. Ouvrir et enregistrer un nouveau fichier palindrome2.py. Vous rédigez les commandes dans ce fichier. Fonction : palindrome(ch). Entrée : une chaine de caractères Ch Sortie : un booléen n = longueur(ch) k = 0 # indice qui parcourt la moitié de la chaine reponse=vrai Tant que reponse et k n//2 : reponse= (Ch[k] == Ch[n k]) k = k + # incrémentation de l indice Retourner reponse (a) Lire et comprendre l algorithme ci-dessus puis l implanter en Python. (b) Le compléter pour qu il tienne compte de la chaine vide. (c) Reprendre la question. (c) avec la fonction palindrome. 3. On convient qu une phrase est un palindrome lorsque les lettres des mots qui la compose peuvent être lus dans les deux sens sans tenir compte des espaces. Adapter votre programme précédent pour qu il teste si une phrase est un palindrome. Indication : chercher sur internet une méthode qui permet d enlever les espaces d une chaine de caractères. Tester votre programme sur la locution latine : IN GIRUM IMUS NOCTE ET CONSUMIMUR IGNI 3

2 Variables locales et variables globales Les variables utilisées dans le corps d une fonction sont des variables locales. Elles sont affectées au moment de l appel de la fonction et sont détruites à la sortie. Exercice 7. Cet exercice illustre le fonctionnement des variables locales. Définir en ligne de commande la fonction ci-dessous. Prédire les retours des deux dernières lignes. Le vérifier. >>> def fonctiontest(x) : var= bonjour return (x,var) >>> fonctiontest(0) >>> print(var) 2. Même question en définissant à l extérieur de la fonction une variable var. >>> var = jenesuispaslocale >>> def fonctiontest(x) : var= bonjour return (x,var) >>> fonctiontest(0) >>> print(var) Les variables utilisées à l extérieur d une fonction sont des variables globales. Exercice 8. Définir la fonction suivante et affecté var et var2 comme indiqué. Prédire les retours des deux dernières lignes. Le vérifier. >>> def fonctiontest2() : var= abc >>> var= xyz >>> var2= 23 return (var,var2) >>> fonctiontest2() >>> print(var,var2) Commentaires. À l intérieur de la fonction fonctiontest2 une variable var reçoit abc. C est une variable locale. À l extérieur de la fonction nous définissons var et var2 qui reçoivent respectivement xyz et 23 : ce sont des variables globales. La variable var est utilisé deux fois. Lors de l appel de la fonction elle reçoit temporairement une valeur. À la fin de l appel, cette affectation temporaire est terminée et elle retrouve l affectation globale qu elle avait. Conclusion. Dans un programme, on peut définir des fonctions et utiliser des variables locales dans ces fonctions sans se préoccuper de savoir si elles existent ailleurs dans le script. Les affectations temporaires à l appel de la fonction ne risquent pas d interférer avec les autres variables.

On peut cependant modifier la valeur d une variable globale en la déclarant comme telle dans le corps de la fonction. On utilise l instrution global. Exercice. Définir et tester la fonction suivante. >>> def incremente() : global a return a + >>> a=2 >>> incremente()?... Remarque. L utilisation d une variable globale dans une fonction permet de modifier la valeur d une variable globale. Exercice 0. Définir et tester la procédure suivante. >>> def ecrase(x) : >>> a= global a a=x >>> ecrase( bonjour ) >>> a?... Commentaire. La fonction ci-dessus ne retourne pas de valeur : on parle plutôt de procédure. Elle a cependant en effet non négligeable sur la variable locale a. 3 Passage des arguments Tout comme les variables locales les variables qui représentent les paramètres formels ne sont affectés qu au moment de l appel de la fonction même s ils ont un nom identique à celui d une variable globale. L exemple ci-contre illustre cela. return x**2 >>> a,x=2,3 >>> carre(a),carre(x) (,) >>> print(a,x) (2,3) On peut passer de tout type d objet en argument d une fonction. Il faut alors traiter le paramètre formel en cohérence avec le type qu il doit recevoir. Exercice.. Définir une fonction somme dont les paramètres d entrée sont une fontion f et un nombre entier N. La fonction retourne la valeur f() + f(2) +... + f(n). 2. Tester votre fonction sur les fonctions x x 2 et x exp(x). 5