Notion de fonctionCours

I

La fonction dans un programme informatique

En informatique, une fonction a un sens proche des fonctions en mathématiques, mais plus souple.

Fonction dans un programme informatique

Une fonction dans un programme informatique peut être considérée comme une boîte noire qui, à chaque entrée, fournit une sortie qui dépend de l'entrée.

définition fonction dans un programme informatique

En Python, on note deux nombres flottants x pour la taille en mètres et y pour le poids. Une fonction qui retournera l'indice de masse corporelle (IMC) calculera la grandeur y / x**2. x et y sont les entrées, y / x**2 est la sortie.

II

La syntaxe des fonctions en Python

Pour utiliser les fonctions en informatique, il faut d'abord les définir en programmant les instructions qu'elles exécutent au moment de l'appel.

Pour définir une fonction, il faut fournir à Python :

  • le nom de la fonction ;
  • les paramètres dont elle a besoin pour fonctionner, c'est-à-dire son entrée ;
  • ce qu'elle renvoie, c'est la sortie.

 

En Python, on utilise la structure suivante :

\verb+   def <nom de la fonction>(<liste des entrees>) :+
\verb+      <instructions>+
\verb+      return <la sortie>+

Il faut placer le groupe d'instruction avec une série d'espace ou une tabulation pour chaque instruction de la fonction. Il faut penser au deux-points à la fin de la ligne qui contient de mot-clé def. Le mot-clé return permet à Python de savoir quand sortir de la fonction, et avec quelle valeur.

La fonction suivante calcule l'aire d'un rectangle, dont la longueur et la largeur sont indiquées en entrée :

\verb+      def aire_rectangle(longueur,largeur):+
\verb+         resultat = longueur * largeur+
\verb+         return resultat+

Il est possible de ne pas avoir besoin de paramètres, on met alors des parenthèses vides.

La fonction suivante retourne un nombre entier au hasard entre 1 et 10 quand elle est appelée :

\verb+      def nombreAleatoire() :+
\verb+         return math.randint(1, 10)+

Pour écrire une fonction qui permet de simuler un lancer de pièce, on fait appel à la fonction \verb+randint(1{,}2)+ qui renvoie 1 ou 2 de façon aléatoire. On décide alors d'attribuer à 1 une pièce qui tombe sur la face « pile » et à « 2 » une pièce qui tombe sur la face « face ».

\verb+   import random+

\verb+def lancerPiece() :+
\verb+    resultat = random.randint(1{,}2)+
\verb++
\verb+    if resultat == 1 :+
\verb+        return "pile"+
\verb+    else :+
\verb+        return "face"+

Cette fonction ne prend donc pas de paramètres, et donne en sortie soit la chaîne de caractère « pile », soit la chaîne de caractère « face ».

Pour écrire une fonction qui effectue la simulation de 100 lancers de pièce, on écrit une boucle qui va compter le nombre de piles obtenus pour 100 lancers.

\verb+def echantillon100Lancers() :+
\verb+    nombreDePiles=0 # On initialise la variable nombreDePiles a 0 avant la boucle+
\verb++
\verb+    for i in range(100) : # On effectue 100 lancers de pieces+
\verb+        simulationLancer = lancerPiece()+
\verb++
\verb+        if simulationLancer == "Pile" :+
\verb|            nombreDePiles += 1|
\verb++
\verb+    return nombreDePiles+

On peut écrire une fonction qui calcule le nombre moyen de piles obtenus. On sait que l'on a effectué 100 lancers.

\verb+def frequenceDePile(nombreDePiles) :+
\verb+   return nombreDePiles/100.0 # Attention, si on met 100 sans decimale, +
\verb+   # la division sera considere comme entiere.+

III

L'utilisation des fonctions en informatique

Après avoir défini une fonction en Python, le développeur peut la réutiliser très simplement n'importe où dans son code.

Tant qu'une fonction n'est pas appelée dans un code, ses instructions ne sont pas exécutées. On doit donc faire appel à une fonction en utilisant son nom et en mettant entre parenthèses les paramètres demandés.

Le programme Python suivant affiche l'aire du rectangle de longueur et de largeur données par les variables \verb+x+ et \verb+y+ :

\verb+   def aire_rectangle(longueur, largeur):+
\verb+      return longueur * largeur+
\verb++
\verb+   x = 10+
\verb+   y = 5+
\verb++
\verb+   print("L'aire vaut", aire_rectangle(x, y))+

On peut aussi appeler une fonction en donnant directement les nombres qu'elle va utiliser sans passer par des variables :

\verb+   def aire_rectangle(longueur, largeur):+
\verb+      return longueur * largeur+
\verb++
\verb++
\verb+   print("L'aire vaut", aire_rectangle(10, 5))+

Les deux programmes vont retourner 50.

On cherche à vérifier s'il y a, en moyenne, autant de chance de tomber sur « pile » que sur « face » pour une pièce simulée dans un programme Python. Pour cela, on va simuler un grand nombre de lancers de pièce, sur plusieurs séries, puis calculer la moyenne du nombre de « pile » obtenus.

On peut utiliser les fonctions \verb+ lancerPiece() +\verb+ echantillon100Lancers() + et \verb+ frequenceDePile() + définies dans la partie précédente.

\verb+for i in range(10) :+
\verb+    nombreDePiles = echantillon100Lancers() +
\verb++
\verb+    print(frequenceDePile(nombreDePiles))+

Voici un résultat obtenu :

0,51
0,49
0,53
0,5
0,62
0,41
0,47
0,52
0,41
0,36

L'ordre des paramètres est très important.

\verb+      def soustraction(a, b):+
\verb+         return a -b+
\verb++
\verb+      # Si on fait le test suivant :+
\verb+      print( soustraction(10, 5) == soustraction(5, 10))+

Python retournera \verb+False+.

Le nom des variables d'entrée ne concerne que l'intérieur de la fonction.

Dans le programme :

\verb+      def carre(x):+
\verb+         return x*x+
\verb++
\verb+      cote = 5+
\verb+      x=3+
\verb+      print(carre(cote))+

Le programme retourne \verb+25+ et n'est pas affecté par la ligne \verb+x=3+. Le nom \verb+x+ dans la fonction \verb+carre+ ne désigne pas la même variable que le nom \verb+x+ dans le programme principal.

Questions fréquentes

Quelles sont les matières disponibles sur Kartable ?

Sur Kartable, l'élève accède à toutes les matières principales de la primaire au lycée, y compris pour les spécialités et les options. Mathématiques, physique-chimie, SVT, sciences, français, littérature, histoire, géographie, enseignement moral et civique, SES, philosophie, anglais, allemand et espagnol.
Inscrivez-vous

Les cours sont-ils conformes aux programmes officiels de l'Education nationale ?

L'intégralité des cours sur Kartable est rédigée par des professeurs de l'Éducation nationale et est conforme au programme en vigueur, incluant la réforme du lycée de l'année 2019-2020.
Choisissez votre formule

L'élève peut-il accéder à tous les niveaux ?

Sur Kartable, l'élève peut accéder à toutes les matières dans tous les niveaux de son choix. Ainsi, il peut revenir sur les notions fondamentales qu'il n'aurait pas comprises les années précédentes et se perfectionner.
Plus d'info

Kartable est-il gratuit ?

L'inscription gratuite donne accès à 10 contenus (cours, exercices, fiches ou quiz). Pour débloquer l'accès illimité aux contenus, aux corrections d'exercices, mode hors-ligne et téléchargement en PDF, il faut souscrire à l'offre Kartable Premium.
Plus d'info

Qui rédige les cours de Kartable ?

L'intégralité des contenus disponibles sur Kartable est conçue par notre équipe pédagogique, composée de près de 200 enseignants de l'Éducation nationale que nous avons sélectionnés.
Afficher plus

Qu'est ce que le service Prof en ligne ?

L'option Prof en ligne est un service de chat en ligne entre élèves et professeurs. Notre Prof en ligne répond à toutes les questions sur les cours, exercices, méthodologie et aide au devoirs, pour toutes les classes et dans toutes les matières. Le service est ouvert du lundi au vendredi de 16h à 19h pour les membres ayant souscrit à l'option.
Choisissez votre formule