Les fonctions en algorithmique
- Comprendre et utiliser les fonctions en langage Python.
- Identifier les entrées et les sorties d’une fonction.
- Structurer un programme en utilisant des fonctions.
- Dans un programme, il arrive d’utiliser plusieurs
fois la même succession d’instructions.
Créer une fonction permet de réduire le nombre de lignes et d’éviter les erreurs en exécutant directement cette suite d’instructions. - Pour définir une fonction en langage Python, on écrit : def nom_de_fonction(a) où a est la donnée d’entrée (appelée argument ou paramètre).
- Une fonction peut avoir une seule, plusieurs ou aucune donnée(s) d’entrée.
- Pour simplifier la programmation, une liste de fonctions a été prédéfinie. Ainsi, pour appeler le programme donnant l’arrondi, on utilise la fonction round(a). Une fonction prédéfinie est un objet informatique qui appelle un programme déjà existant.
- Fonctions mathématiques, antécédents et images
Créer une fonction permet de réduire le nombre de lignes et d’éviter les erreurs en exécutant directement cette suite d’instructions.
Même si le terme
« fonction » est différent
en mathématiques et en informatique, il y a une
analogie entre les deux : on retrouve des
données d’entrée et des
données de sortie.
En mathématique, les données
d’entrée sont les
antécédents, les données de sortie
sont les images.
Parfois, les fonctions n’ont pas de donnée d’entrée.
On crée une fonction double qui multiplie le nombre d’entrée par 2.
Mathématiquement, cela représente la fonction f(x) = 2x.
L1 def double(a):
L2 p=a*2
L3 return(p)
L4
L5 print(double(8))
À la ligne 3, return(p) indique ce que renvoie la fonction en sortie : p. Or, on a défini en ligne 2 que p vaut a × 2.
À la ligne 5, pour utiliser cette fonction, on remplace a par le nombre 8. La fonction renverra alors le nombre 16.
La fonction random() ne nécessite pas de donnée d’entrée, elle renvoie automatiquement un nombre réel compris entre 0 et 1.
L1 a=random.random()
L2 print(a)
L3 0.38233820555263487
- La fonction sqrt(a) renvoie la racine
carrée du nombre a.
sqrt(2) donne la racine carrée du nombre 2 :
L1 import math
L2 math.sqrt(2)
L3 1.4142135623730951
Pour utiliser la fonction, il faut d’abord importer la librairie math (ligne 1) qui contient plusieurs fonctions mathématiques.
- La fonction floor(a) donne la partie
entière du nombre a.
floor(101.265) donne la partie entière du nombre 101,265 :
L1 math.floor(101.265)
L2 101
La fonction randint(a,b) nécessite en entrée deux nombres entiers, entre lesquels la fonction tire aléatoirement un nombre entier.
randint(1,10) tire aléatoirement un nombre entier compris entre 1 et 10.
L1 import random
L2 a=random.randint(1,10)
L3 print(a)
L4 7
On cherche à simuler plusieurs lancers d’une pièce équilibrée et à compter le nombre de « face » obtenus. On voudrait d’abord faire 10, 50 puis 100 lancers. On utilise un générateur aléatoire de nombres entiers entre 1 et 0. Si on obtient 1, c’est un « face » et si on obtient 0, c’est un « pile ».
Pour cela, on tape le programme suivant :
L1 n1=10
L2 n2=50
L3 n3=100
L4
L5 for i in range (n1):
L6 a=random.randint(0,1)
L7 if a==1:
L8 k=k+1
L9 print(k)
L10
L11 for i in range (n2):
L12 b=random.randint(0,1)
L13 if b==1:
L14 l=l+1
L15 print(l)
L16
L17 for i in range (n3):
L18 c=random.randint(0,1)
L19 if c==1:
L20 m=m+1
L21 print(m)
On observe que l’on répète 3 fois la même suite d’instructions, en changeant simplement le nombre de valeurs parcourues par i dans la boucle for (lignes 5, 11, 17).
Pour alléger le programme et éviter les erreurs, on peut remplacer cette suite d’instructions par une fonction aleatoire :
L1 def aleatoire(n):
L2 k=0
L3 for i in range (n):
L4 a=random.randint(0.1)
L5 if a==1:
L6 k=k+1
L7 return(k)
L8
L9 print(aleatoire(10))
L10 print(aleatoire(50))
L11 print(aleatoire(100))
On remarque que le programme prend un nombre de lignes bien plus petit grâce à cette fonction.
Par défaut, un langage de programmation ne peut effectuer que des opérations élémentaires (addition, soustraction, division euclidienne…), grâce à des opérateurs :
Opérateur | Description |
a+b | Somme de a et b |
a–b | Différence entre a et b |
a*b | Produit entre a et b (a × b) |
a/b | Quotient entre a et b |
a%b | Reste de la division euclidienne de a par b |
a**b | a à la puissance b |
Les calculs plus complexes nécessitent l’utilisation de fonctions.
Pour déterminer, par exemple, l’arrondi d’un nombre, on pourrait au préalable définir un programme capable de donner cet arrondi. Ce serait long et fastidieux, d'autant que l’arrondi est une opération courante en mathématiques.
Fonction prédéfinie | Description |
math.sqrt(a) |
Donne la racine carrée
de a (![]() |
math.floor(a) | Donne la partie entière de a |
math.factorial(a) | Donne factorielle a (a!) |
Pour utiliser ces fonctions prédéfinies, il faut d’abord importer le module math en utilisant la commande import math.
On veut construire la fonction f : x ➝

On utilise pour cela la fonction prédéfinie math.sqrt():
L1 import math
L2 def f (n):
L3 n=math.sqrt(n+4)
L4 return(n)
Il est également possible d’écrire la fonction de cette façon (à privilégier) :
L1 import math
L2 def f (n):
L3 return(math.sqrt(n+4))

Fiches de cours les plus recherchées
Découvrir le reste du programme


Des profs en ligne
- 6 j/7 de 17 h à 20 h
- Par chat, audio, vidéo
- Sur les matières principales

Des ressources riches
- Fiches, vidéos de cours
- Exercices & corrigés
- Modules de révisions Bac et Brevet

Des outils ludiques
- Coach virtuel
- Quiz interactifs
- Planning de révision

Des tableaux de bord
- Suivi de la progression
- Score d’assiduité
- Un compte Parent