nsi:premiere:definition_fonctions
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:premiere:definition_fonctions [2024/08/21 16:09] – goupillwiki | nsi:premiere:definition_fonctions [2024/08/21 16:21] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Fonctions : Définition et syntaxe Python | + | ====== Fonctions : organiser le code ====== |
| - | {{ : | + | {{ : |
| <WRAP tip>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' | <WRAP tip>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' | ||
| Ligne 84: | Ligne 84: | ||
| print(f" | print(f" | ||
| </ | </ | ||
| + | |||
| + | <WRAP tip> | ||
| + | Conventions pour les noms en plusieurs mots : | ||
| + | * '' | ||
| + | * '' | ||
| + | </ | ||
| === Signature === | === Signature === | ||
| Ligne 175: | Ligne 181: | ||
| Ainsi, le principal est très lisible. On comprend en un coup d'œil ce qu'il fait. | Ainsi, le principal est très lisible. On comprend en un coup d'œil ce qu'il fait. | ||
| - | ====== Définition ====== | + | ===== Avantages |
| - | {{ : | + | Les fonctions ont bien des avantages. |
| - | Il s'agit d'un bloc de programme qui s'**exécute sur demande**. Lors de sa définition, | + | |
| + | | ||
| + | | ||
| + | * facilitent le travail à plusieurs | ||
| + | * simplifient la structure | ||
| + | * modularisation | ||
| - | Quand une fonction n'a pas de sortie, on peut la qualifier de **procédure**, | + | ==== return !!! ==== |
| - | ==== Une fonction | + | * Une fonction |
| - | + | * **SAUF** si la fonction est fait exprès pour l' | |
| - | Reprenons l' | + | * La sortie |
| - | + | ||
| - | <code lang-none linenums> | + | |
| - | 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 | + | |
| - | + | ||
| - | ==== Syntaxe Python ==== | + | |
| - | + | ||
| - | <code python linenums> | + | |
| - | def extraire_solution(a, | + | |
| - | return (sqrt(a**2 + 4*b) - a) / 2 | + | |
| - | </ | + | |
| - | + | ||
| - | * Le mot clé '' | + | |
| - | * La ligne de '' | + | |
| - | * '' | + | |
| - | + | ||
| - | > Notez au passage que le carré est noté '' | + | |
| - | + | ||
| - | <WRAP info> | + | |
| - | En définissant la fonction, on lui donne un nom -- ici '' | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Bien nommer la fonction ==== | + | |
| - | + | ||
| - | Il faut choisir un nom expressif, pas '' | + | |
| <WRAP tip> | <WRAP tip> | ||
| - | Conventions pour les noms en plusieurs mots : | + | |
| - | | + | * Après |
| - | * '' | + | * Il peut y avoir plusieurs |
| </ | </ | ||
| - | ==== Commenter la fonction | + | ==== assert comme précondition |
| - | Il est recommandé d'ajouter des commentaires juste après la signature de façon à expliciter l'usage de la fonction. | + | '' |
| - | <code python | + | <code python> |
| - | def extraire_solution(a, b): | + | # monmodule.py |
| + | def pgcd(a:int,b:int) -> int: | ||
| """ | """ | ||
| - | a, b: réels positifs | + | renvoie |
| - | | + | """ |
| - | """ | + | assert |
| - | | + | ... |
| </ | </ | ||
| - | ==== Typer entrées et sorties ==== | + | Indique clairement la condition à laquelle la fonction fait son travail correctement. |
| - | On peut ajouter des informations de types sur les entrées et sorties. Ici, nous n' | + | ==== assert comme test élémentaire ==== |
| - | <code python linenums> | + | On sait **d' |
| - | def extraire_solution(a: | + | |
| - | """ | + | |
| - | a, b: réels positifs | + | |
| - | renvoie la solution réelle positive de l' | + | |
| - | """ | + | |
| - | return (sqrt(a**2 + 4*b) - a) / 2 | + | |
| - | </ | + | |
| - | ==== Préconditions ==== | + | <code python> |
| - | + | # monmodule.py | |
| - | S'il est important de vérifier que les préconditions sont bien remplies, on peut forcer une vérification grâce au mot-clé '' | + | def pgcd(a:int,b:int) -> int: |
| - | + | ||
| - | > En mathématique, | + | |
| - | + | ||
| - | + | ||
| - | <code python | + | |
| - | def extraire_solution(a:float, b:float) -> float: | + | |
| """ | """ | ||
| - | a, b: réels positifs | + | renvoie |
| - | | + | """ |
| - | """ | + | ... |
| - | | + | |
| - | assert | + | assert |
| - | return | + | |
| </ | </ | ||
| + | C'est même une bonne idée de multiplier ces tests en essayant les cas bizarres. | ||
| - | ===== Exécution ===== | + | <code python> |
| - | + | assert pgcd(2*3*3*7*11*23, 3*7*23*17*17*13) == 3*7 | |
| - | ==== Définir n'est pas exécuter ==== | + | assert pgcd(0,5) == 5 |
| - | + | ||
| - | Si le programme entier est : | + | |
| - | <code python | + | |
| - | # ceci est la totalité du programme | + | |
| - | def extraire_solution(a, b): | + | |
| - | """ | + | |
| - | a, b: réels positifs | + | |
| - | renvoie la solution réelle positive de l' | + | |
| - | """ | + | |
| - | return (sqrt(a**2 + 4*b) - a) / 2 | + | |
| </ | </ | ||
| - | |||
| - | Alors à l' | ||
| - | |||
| - | ==== Demande d' | ||
| - | |||
| - | <code python linenums> | ||
| - | # ceci est la totalité du programme | ||
| - | def extraire_solution(a, | ||
| - | """ | ||
| - | a, b: réels positifs | ||
| - | renvoie la solution réelle positive de l' | ||
| - | """ | ||
| - | return (sqrt(a**2 + 4*b) - a) / 2 | ||
| - | |||
| - | x = extraire_solution(10, | ||
| - | print(x) | ||
| - | </ | ||
| - | |||
| - | * Ligne 2, l' | ||
| - | * Ligne 9, l' | ||
| - | * fonction '' | ||
| - | * exécution de la fonction, retour à la ligne 2 en prenant '' | ||
| - | * ligne 7, le calcul '' | ||
| - | * Retour à la ligne 9. L' | ||
| - | * ligne 10, l' | ||
| ==== Les parenthèses sont signe de fonction ==== | ==== Les parenthèses sont signe de fonction ==== | ||
nsi/premiere/definition_fonctions.1724249376.txt.gz · Dernière modification : de goupillwiki
