Outils pour utilisateurs

Outils du site


nsi:premiere:definition_fonctions

Ceci est une ancienne révision du document !



Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149

Warning: Trying to access array offset on value of type null in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149

Warning: Trying to access array offset on value of type null in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149

Warning: Trying to access array offset on value of type null in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149

Warning: Trying to access array offset on value of type null in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149

Warning: Trying to access array offset on value of type null in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Fonctions : Définition et syntaxe Python

On a dit qu'un programme était la traduction d'un algorithme dans un langage de programmation. Ce n'est pas tout à fait exact. Il est plus juste de dire que le programme traduit un ensemble d'algorithmes, chaque algorithme réalisant une fonction. Un programme ordinaire est donc constitué de fonction chacune réalisant une petite partie du travail.

Quand les programmes sont très simples, il peut paraître inutile de s'embarrasser avec trop d'organisation. Mais notre but est d'apprendre de bonnes méthodes de façon à pouvoir plus tard envisager des programmes plus ambitieux. Le découpage du programme en fonction est alors INDISPENSABLE. D'ailleurs, l'essentiel de votre travail de programmation va vite être d'écrire des fonctions ou de les compléter.

Définition

Il s'agit d'un bloc de programme qui s'exécute sur demande. Lors de sa définition, on précise s'il faut lui fournir des entrées et s'il fournit en réponse des résultats en sortie.

Quand une fonction n'a pas de sortie, on peut la qualifier de procédure, même si ce terme technique n'a pas grande importance.

Une fonction traduit un algorithme

Reprenons l'exemple de l’algorithme de Al-Kwarizmi.

ENTRÉES : a et b, réels positifs
SORTIE : solution réelle positive de x^2 + a * x = b
DÉBUT
    RENVOYER (racine(a^2 + 4*b) - a) / 2
FIN

Les termes entrées / sortie montrent bien la proximité entre les idées d'algorithme et de fonction.

Syntaxe Python

def extraire_solution(a, b):
    return (sqrt(a**2 + 4*b) - a) / 2
  • Le mot clé def introduit la définition,
  • La ligne de def se termine par :, donc indentation après,
  • return est le mot-clé pour RENVOYER.
Notez au passage que le carré est noté **2 en Python. Pour disposer de la fonction sqrt (square-root = racine carrée) il faudra au préalable aller la chercher dans la bibliothèque de fonction mathématique : from math import sqrt.

En définissant la fonction, on lui donne un nom – ici extraire_solution – et on précise les entrées – ou arguments – ici a et b. La ligne de définition est appelée la signature de la fonction.

Bien nommer la fonction

Il faut choisir un nom expressif, pas f ou fonction qui ne disent rien. Le nom est choisi de façon à dire ce que fait la fonction. Ici, elle extrait la solution d'une équation, il est donc naturelle de l'appeler “extraire solution”. Mais on n'a pas le droit aux espaces dans les noms de variables ou de fonctions. Dans ces cas là, il existe des conventions pour harmoniser les pratiques.

Conventions pour les noms en plusieurs mots :

  • snake_case, la casse du serpent : tout en minuscule, mots séparés par _. Pour l'exemple extraire_solution. C'est la convention recommandée en Python.
  • camelCase, la casse du chameau : changement de mot avec une majuscule. Pour l'exemple extraireSolution.

Commenter la fonction

Il est recommandé d'ajouter des commentaires juste après la signature de façon à expliciter l'usage de la fonction.

def extraire_solution(a, b):
    """
    a, b: réels positifs
    renvoie la solution réelle positive de l'équation x**2 + a x = b
    """
    return (sqrt(a**2 + 4*b) - a) / 2

Exécution

Définir n'est pas exécuter

Si le programme entier est :

# ceci est la totalité du programme
def extraire_solution(a, b):
    """
    a, b: réels positifs
    renvoie la solution réelle positive de l'équation x**2 + a x = b
    """
    return (sqrt(a**2 + 4*b) - a) / 2

Alors à l'exécution, ce programme ne fait rien. En lisant ce programme, l'interpréteur Python se contente de noter qu'une fonction nommée extraire_solution, demandant deux arguments, est définie des lignes 2 à 7.

Demande d'exécution

# ceci est la totalité du programme
def extraire_solution(a, b):
    """
    a, b: réels positifs
    renvoie la solution réelle positive de l'équation x**2 + a x = b
    """
    return (sqrt(a**2 + 4*b) - a) / 2

x = extraire_solution(10, 39)
print(x)
  • Ligne 2, l'interpréteur note qu'il y a une définition pour extraire_solution et passe à la suite, ligne 8.
  • Ligne 9, l'interpréteur exécute ce qui est à droite de = :
    • fonction extraire_solution reconnue avec les arguments 10 et 39
    • exécution de la fonction, retour à la ligne 2 en prenant a = 10 et b = 39,
    • ligne 7, le calcul (sqrt(a**2 + 4*b) - a) / 2 donne 3. La fonction renvoie 3
    • Retour à la ligne 9. L'exécution de la fonction a produit le nombre 3. Donc x = 3,
  • ligne 10, l'affichage de x conduit à l'affichage de 3.
nsi/premiere/definition_fonctions.1624268419.txt.gz · Dernière modification : de goupillwiki