J’apprends à programmer : les fonctions

J’apprends à programmer : les fonctions

<<< Article précédent : Mon premier programme

Les fonctions

Un bon informaticien est un informaticien fainéant !

Voila la phrase que l’on peut entendre dans les écoles de développement de logiciels ! Etonnant, non ? Alors pourquoi cette phrase ?

Cela veut dire tout simplement, qu’il ne faut jamais faire 2 fois le même travail. Un bon informaticien doit savoir réutiliser quelque chose déjà existant plutôt que de le refaire à nouveau.

Comme d’habitude, pour que cela soit plus simple à comprendre, reprenons notre exemple qui calcule et affiche l’age :

(n’oubliez pas de lancer votre environnement de développement : en cliquant ici : https://www.jdoodle.com/python-programming-online )

Exemple

 

Si je dois calculer l’age de plusieurs personnes, je vais réaliser l’opération suivante :

annee_calcul = 2050; 
annee_naissance = 2000; 
prenom = "Pierre";
age= annee_calcul - annee_naissance;
print "En", annee_calcul,",", prenom, "aura",age,"ans !";
annee_calcul = 2050; 
annee_naissance = 1991; 
prenom = "Caroline";
age= annee_calcul - annee_naissance;
print "En", annee_calcul,",", prenom, "aura",age,"ans !";

et lorsque vous cliquez sur « Execute », vous devez avoir ce résultat :

les fonctions

 

 

 

 

On l’a bien compris, beaucoup de lignes pour peu de résultat. Il faut optimiser tout ça et pour cela nous allons utiliser une fonction.

 

Définition d’une fonction.

Tout d’abord regardons la définition d’une fonction.

Je pourrais résumé tout cela en disant :

  • Une fonction est un programme dans le programme. (une sorte de sous-programme)
  • Une fonction va permettre de réutiliser plusieurs fois du code déjà écrit (et donc, il n’est pas nécessaire de le réécrire)
  • Une fonction va permettre aussi de faciliter la lecture du code source et en faciliter ainsi le débogage.

 

Les règles pour une fonction

Une fonction se définit et doit respecter les règles suivantes :

  • Elle commence par « def » suivi du nom de la fonction.
  • Vous êtes libre d’utiliser le nom de la fonction que vous voulez (mais il doit respecter les mêmes règles que les variables (pas d’espaces, d’accents, …) relisez : Les variables 
  • Le nom de la fonction est suivi de () dans lequel nous pourrons mettre des paramètres, nous verrons cela plus loin
  • On termine la ligne de définition de la fonction par « : »
  • Les lignes qui suivent sont décalées (on dit indentées) à l’aide d’une tabulation. Pas des espaces ! 
  • La définition de la fonction et les instructions de la fonction doivent être saisis avant le reste du code qui les appelle,
  • Pour utiliser la fonction, il suffit de l’appeler en saisissant son nom.

 

Création et Utilisation d’une fonction

Pour répondre à la question « qu’est-ce que je vais mettre dans ma fonction », il faut essayer de regarder les instructions qui reviennent le plus souvent.

Alors imaginons maintenant le code du dessus en utilisant une fonction.

def calcul():
age= annee_calcul - annee_naissance;
print "En", annee_calcul,",", prenom, "aura",age,"ans !";
annee_calcul = 2050; 
annee_naissance = 2000; 
prenom = "Pierre";
calcul();
annee_calcul = 2050; 
annee_naissance = 1991; 
prenom = "Caroline";
calcul();

Et si j’exécute ce code, j’ai bien le même résultat :

les fonctions

 

 

 

 

 

Maintenant, si l’on observe le code ci-dessus, que peut-on remarquer ?

  1. Le code de la fonction même s’il est en premier n’est pas exécuté
  2. et pour appeler la fonction, je l’appelle en écrivant son nom.

 

Les paramètres d’une fonction

Le code du dessus est plus optimisé que le tout premier code mais on peut faire mieux en passant certaines valeurs en paramètres à la fonction. Ça veut dire quoi ?

Eh bien, on va envoyer des valeurs en même temps que l’on appelle la fonction.

Commençons simplement, je vais envoyer le prénom à la fonction. Ce qui veut dire qu’il faut que je change la définition de ma fonction pour qu’elle accepte de recevoir des arguments. Voici comment on fait :

def calcul(prenom):
age= annee_calcul - annee_naissance;
print "En", annee_calcul,",", prenom, "aura",age,"ans !";
annee_calcul = 2050; 
annee_naissance = 2000; 
calcul("Pierre");
annee_calcul = 2050; 
annee_naissance = 1991; 
calcul("Caroline");

les fonctions

 

 

 

 

 

Ca tombe bien, on a toujours le même résultat :

 

L’optimisation du code.

Nous l’avons vu, les fonctions permettent d’optimiser le code en réutilisant des morceaux de code. Elles vont aussi permettre une meilleure lisibilité. 

Essayons d’optimiser au maximum notre code, et voici que nous pourrions avoir :

def calcul(prenom, an_calcul, an_naiss):
print "En", an_calcul,",", prenom, "aura",an_calcul-an_naiss,"ans !";
calcul("Pierre", 2050, 2000);
calcul("Caroline", 2050, 1991);

Et toujours le même résultat !

Vous voyez les fonctions ont vraiment permis d’optimiser le code. Regardez les lignes de codes tout en haut au début de cet article et comparez avec ces quelques lignes de codes pour vous en rendre compte.

 

Les résultats d’une fonction.

Les fonctions peuvent aussi renvoyer des résultats. Il faut utiliser le mot clé return pour que la fonction renvoie un résultat. Regardons l’exemple ci-dessous :

def calcul_age(annee_calcul, annee_naiss):
return annee_calcul - annee_naiss;
print calcul_age(2050, 2000);

fonctions

 

 

 

 

 

 

Les fonctions permettent également de réutiliser du code qui est souvent appelé. Nous le voyons avec notre fonction « Calcul » du dessus, nous pouvons réutiliser à l’infini cette fonction. Voila un fonctionnement très intéressant puisque les langages sont tous fournis avec des bibliothèques des fonctions toutes prêtes à être utilisées. Il suffit de les appeler.

 

Utilisation des fonctions du langage

Dans nos exemples, nous avons déjà utilisé une fonction de langage appelée « print ». Cette fonction permet d’afficher à l’écran les valeurs passées en paramètres. Mais il en existe des milliers d’autres.

Imaginons que vous vouliez calculer la racine carré d’un nombre. Il faudra utiliser la fonction qui calcule la racine carré. Cette fonction s’appelle : sqrt

Essayons le code suivant : 

print sqrt(9);

Cela doit nous donner cela : 

les fonctions

 

 

 

 

 

 

L’import de fonctions

Si notre fonction n’est pas reconnue c’est que nous ne l’avons pas importé (autrement dit, nous n’avons pas indiqué où est-ce qu’il fallait aller la chercher). Voici comment faire :

Nous savons que cette fonction fait partie du module de fonctions mathématiques appelé « math ». Il faut donc importer ces fonctions.

from math import sqrt;
print sqrt(9);

Nous indiquons au programme d’importer la fonction sqrt depuis la librairie math, et le résulat est bien meilleur :

 

 

 

 

Pour la petite histoire, il est également possible d’importer l’ensemble des fonctions du module math. Par contre, il aurait fallu préciser lors de l’utilisation de la fonction que celle-ci faisait partie du module math comme ceci :

import math;
print math.sqrt(9);

 

Où trouver la liste des fonctions Python ?

Sur le site de référence de Python, vous pouvez trouver toutes les fonctions et toutes les informations du langage.

Voici la bible : https://docs.python.org/fr/3/

A partir de l’index, utilisez la recherche en haut pour retrouver les fonctions que vous recherchez, vous y verrez aussi le nom du module contenant cette fonction.

 

 

Fonctions, Procédures et Méthodes ?

Dans le langage que nous étudions (le Python), nous utilisons des fonctions. Mais dans d’autres langages, on peut parler de fonctions, procédures ou méthodes. Si vous trouvez ces définitions, cela veut dire pratiquement la même chose avec quelques variantes qui n’existent pas dans tous les langages. Dans les autres langages (lorsque ces définitions existent), on pourrait résumer cela comme ça (c’est un rapide résumé)

  • Une fonction est un ensemble d’instructions qui renvoie ou pas une valeur,
  • Une procédure est un ensemble d’instructions qui ne renvoie pas de valeur. (n’existe pas en Python),
  • Une méthode est un ensemble d’instructions (comme les fonctions et procédures) mais qui s’applique aux objets. (Je ne me lancerai pas ici sur la programmation objet même si cela est passionnant, mais c’est un peu complexe pour des cours débutants).

 

 

 

 

Retrouvez l’ensemble des articles sur la programmation :

 

Comme d’habitude, tous les commentaires sont les bienvenus.

N’hésitez pas à vous inscrire à la lettre d’information pour être informé de la parution de nouveaux articles. (vous trouverez la zone d’inscription à la lettre d’information sur la droite de l’écran).

 

Cliquez ici pour retrouver tous les articles classés par thèmes.

 

Partager cet article ...

Laisser un commentaire

  

  

  

banner
banner