Feat(NSI): Début des cours sur les fonctions
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
d1b35d0d16
commit
c5c70d2d4d
@ -1,14 +0,0 @@
|
|||||||
\documentclass[a4paper,10pt]{article}
|
|
||||||
\usepackage{myXsim}
|
|
||||||
|
|
||||||
\author{Benjamin Bertrand}
|
|
||||||
\title{Fonctions spécifications et tests - Cours}
|
|
||||||
\date{décembre 2022}
|
|
||||||
|
|
||||||
\pagestyle{empty}
|
|
||||||
|
|
||||||
\begin{document}
|
|
||||||
|
|
||||||
\maketitle
|
|
||||||
|
|
||||||
\end{document}
|
|
BIN
1NSI/04_Fonctions_specifications_et_tests/1B_fonctions.pdf
Normal file
BIN
1NSI/04_Fonctions_specifications_et_tests/1B_fonctions.pdf
Normal file
Binary file not shown.
112
1NSI/04_Fonctions_specifications_et_tests/1B_fonctions.tex
Normal file
112
1NSI/04_Fonctions_specifications_et_tests/1B_fonctions.tex
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
\documentclass[a4paper,10pt]{article}
|
||||||
|
\usepackage{myXsim}
|
||||||
|
\usepackage{minted}
|
||||||
|
|
||||||
|
\author{Benjamin Bertrand}
|
||||||
|
\title{Fonctions spécifications et tests - Cours}
|
||||||
|
\date{décembre 2022}
|
||||||
|
|
||||||
|
\pagestyle{empty}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\section{Les fonctions}
|
||||||
|
|
||||||
|
\begin{definition}[Les fonctions]
|
||||||
|
|
||||||
|
\textbf{Les fonctions} sont des séries de blocs d'instructions que l'on souhaite isoler et réutiliser. Elles permettent de \textbf{factoriser} des instructions et, quand elles sont bien nommées, donner des informations sur l'intention du programmeur.
|
||||||
|
|
||||||
|
En Python, les fonctions ont la forme suivante
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{minipage}{0.5\linewidth}
|
||||||
|
\begin{minted}[bgcolor=base3,linenos]{python}
|
||||||
|
def nom_de_la_fonction(argument1, argument2, ...):
|
||||||
|
instruction 1
|
||||||
|
instruction 2
|
||||||
|
instruction 3
|
||||||
|
...
|
||||||
|
return valeur
|
||||||
|
\end{minted}
|
||||||
|
\end{minipage}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
Le mot clé \mintinline{python}{return} permet de renseigner la valeur que la fonction retournera après son exécution. L'exécution de la fonction s'arrêtera au premier \mintinline{python}{return} rencontré. Si aucun \mintinline{python}{return} la fonction ne renverra aucune valeur, mais toutes les instructions s'exécuteront.
|
||||||
|
|
||||||
|
Si une variable est définie dans une fonction, on ne pourra pas accéder à sa valeur en dehors sauf si elle retournée.
|
||||||
|
\end{definition}
|
||||||
|
|
||||||
|
\paragraph{Exemples}
|
||||||
|
|
||||||
|
\begin{multicols}{1}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Fonction qui calcule les coordonnées d'un vecteur
|
||||||
|
|
||||||
|
\begin{minipage}{0.9\linewidth}
|
||||||
|
\begin{minted}[bgcolor=base3,linenos]{python}
|
||||||
|
def coord_vecteur(xA, xB, yA, yB):
|
||||||
|
x = xB - xA
|
||||||
|
y = yB - yA
|
||||||
|
return x, y
|
||||||
|
|
||||||
|
print(coord_vecteur(1, 2, 3, 4))
|
||||||
|
xAB, yAB = coord_vecteur(12, 34, 23, 15)
|
||||||
|
|
||||||
|
\end{minted}
|
||||||
|
\end{minipage}
|
||||||
|
|
||||||
|
\columnbreak
|
||||||
|
|
||||||
|
\item Fonction qui teste si un mot de passe est valide
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{minipage}{0.9\linewidth}
|
||||||
|
\begin{minted}[bgcolor=base3,linenos]{python}
|
||||||
|
mdp = "NSI"
|
||||||
|
def pass_est_valid(password):
|
||||||
|
if password == mpd:
|
||||||
|
return True
|
||||||
|
|
||||||
|
print("Mot de passe invalide")
|
||||||
|
return False
|
||||||
|
|
||||||
|
acces = pass_est_valid("plop")
|
||||||
|
acces2 = pass_est_valid("NSI")
|
||||||
|
print(acces)
|
||||||
|
print(accesé)
|
||||||
|
\end{minted}
|
||||||
|
\end{minipage}
|
||||||
|
\end{center}
|
||||||
|
\end{itemize}
|
||||||
|
\end{multicols}
|
||||||
|
|
||||||
|
\bigskip
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Fonction qui décore du texte
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{minipage}{0.6\linewidth}
|
||||||
|
\begin{minted}[bgcolor=base3,linenos]{python}
|
||||||
|
def decor_pyramide(texte, symbole):
|
||||||
|
chapeau = ""
|
||||||
|
for i in range(len(texte)):
|
||||||
|
chapeau = chapeau + symbole*(i+1) + "\n"
|
||||||
|
|
||||||
|
bas = ""
|
||||||
|
for i in range(len(texte)):
|
||||||
|
chapeau = chapeau + symbole*(len(texte)-i) + "\n"
|
||||||
|
|
||||||
|
return chapeau + "\n" + texte + "\n" + bas
|
||||||
|
|
||||||
|
decoration = decor_pyramide("NSI", "#")
|
||||||
|
print(decoration)
|
||||||
|
print(chapeau)
|
||||||
|
\end{minted}
|
||||||
|
\end{minipage}
|
||||||
|
\end{center}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\end{document}
|
Binary file not shown.
@ -0,0 +1,59 @@
|
|||||||
|
\documentclass[a4paper,10pt]{article}
|
||||||
|
\usepackage{myXsim}
|
||||||
|
\usepackage{minted}
|
||||||
|
|
||||||
|
\author{Benjamin Bertrand}
|
||||||
|
\title{Fonctions spécifications et tests - Cours}
|
||||||
|
\date{décembre 2022}
|
||||||
|
|
||||||
|
\pagestyle{empty}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\setcounter{section}{1}
|
||||||
|
\section{Documenter}
|
||||||
|
|
||||||
|
Programmer c'est écrire du code pour que la machine le comprenne mais aussi et surtout pour que d'autres personnes le comprenne et soit en mesure de l'utiliser ou le modifier. C'est pour cela qu'il est primordiale de \textbf{documenter} les fonctions.
|
||||||
|
|
||||||
|
\begin{definition}[ Les docstrings ]
|
||||||
|
|
||||||
|
Une \textbf{docstring} (chaine de documentation) est la manière choisi pour documenter les fonctions en Python. Elles se placent en dessous de la signature de la fonction (ligne avec \mintinline{python}{def}) et sont entourés de \mintinline{python}{""" ... """}.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{minipage}{0.5\linewidth}
|
||||||
|
\begin{minted}[bgcolor=base3,linenos]{python}
|
||||||
|
def nom_de_la_fonction(argument1, argument2, ...):
|
||||||
|
""" Docstring """
|
||||||
|
instruction 1
|
||||||
|
instruction 2
|
||||||
|
instruction 3
|
||||||
|
...
|
||||||
|
return valeur
|
||||||
|
\end{minted}
|
||||||
|
\end{minipage}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
Pour accéder à la docstring, on utilise l'attribut \mintinline{python}{__doc__} ou la fonction \mintinline{python}{help} en mode interactif.
|
||||||
|
\begin{center}
|
||||||
|
\begin{minipage}{0.5\linewidth}
|
||||||
|
\begin{minted}[bgcolor=base3,linenos]{python}
|
||||||
|
>>> from math import sqrt
|
||||||
|
>>> print(sqrt.__doc__)
|
||||||
|
Return the square root of x.
|
||||||
|
\end{minted}
|
||||||
|
\end{minipage}
|
||||||
|
\end{center}
|
||||||
|
\end{definition}
|
||||||
|
|
||||||
|
\section{Spécifier}
|
||||||
|
|
||||||
|
z
|
||||||
|
|
||||||
|
|
||||||
|
\section{Tester}
|
||||||
|
|
||||||
|
Écrire une fonction qui marche c'est bien mais écrire une fonction qui fait ce qu'on attend d'elle c'est mieux.
|
||||||
|
Pour cela,
|
||||||
|
\end{document}
|
@ -2,7 +2,7 @@ Fonctions spécifications et tests
|
|||||||
#################################
|
#################################
|
||||||
|
|
||||||
:date: 2022-12-02
|
:date: 2022-12-02
|
||||||
:modified: 2022-12-02
|
:modified: 2023-01-03
|
||||||
:authors: Benjamin Bertrand
|
:authors: Benjamin Bertrand
|
||||||
:tags: Programmation
|
:tags: Programmation
|
||||||
:category: 1NSI
|
:category: 1NSI
|
||||||
@ -33,12 +33,16 @@ Progression
|
|||||||
Étape 1: Création de fonctions décoratives
|
Étape 1: Création de fonctions décoratives
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
||||||
Activité capytale pour apprendre a programmer des fonctions en décorant du texte.
|
Activité capytale pour apprendre à programmer des fonctions en décorant du texte.
|
||||||
|
|
||||||
- `Fonctions décoratives (notebook) <./1E fonctions de décorations.ipynb>`_
|
- `Fonctions décoratives (notebook) <./1E fonctions de décorations.ipynb>`_
|
||||||
|
|
||||||
Bilan: structure d'une fonction, arguments, valeur retournée, spécifications
|
Bilan: structure d'une fonction, arguments, valeur retournée, spécifications
|
||||||
|
|
||||||
|
.. image:: ./1B_fonctions.pdf
|
||||||
|
:height: 200px
|
||||||
|
:alt: Cours sur les fonctions
|
||||||
|
|
||||||
|
|
||||||
Étape 2: Coder des fonctions et les documenter
|
Étape 2: Coder des fonctions et les documenter
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
@ -46,3 +50,16 @@ Bilan: structure d'une fonction, arguments, valeur retournée, spécifications
|
|||||||
Fonctions plus classiques à programmer et à documenter.
|
Fonctions plus classiques à programmer et à documenter.
|
||||||
|
|
||||||
- `Fonctions et documentation (notebook) <./2E fonction documentations.ipynb>`_
|
- `Fonctions et documentation (notebook) <./2E fonction documentations.ipynb>`_
|
||||||
|
|
||||||
|
Bilan: documenter et spécifier une fonction
|
||||||
|
|
||||||
|
.. image:: ./2B_specifiction_test.pdf
|
||||||
|
:height: 200px
|
||||||
|
:alt: Documenter et spécifier une fonction
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Étape 3: Tester une fonction
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
Écrire des tests avant d'écrire une fonction. Utilisation d'assert.
|
||||||
|
@ -2,7 +2,7 @@ Spécialité première NSI
|
|||||||
#######################
|
#######################
|
||||||
|
|
||||||
:date: 2022-07-25
|
:date: 2022-07-25
|
||||||
:modified: 2023-01-01
|
:modified: 2023-01-03
|
||||||
:authors: Bertrand Benjamin
|
:authors: Bertrand Benjamin
|
||||||
:category: 1NSI
|
:category: 1NSI
|
||||||
:tags: Progression
|
:tags: Progression
|
||||||
@ -51,17 +51,18 @@ Période 2
|
|||||||
Période 3
|
Période 3
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
|
||||||
.. big_button::
|
.. big_button::
|
||||||
:title: Interaction client/serveur
|
:title: Interaction client/serveur
|
||||||
:link: ./05_Interaction_client-serveur/
|
:link: ./05_Interaction_client-serveur/
|
||||||
|
|
||||||
Étude du protocole HTTP à travers les requests et les responses, construction d'un serveur avec Flask.
|
Étude du protocole HTTP à travers les requests et les responses, construction d'un serveur avec Flask.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. big_button::
|
.. big_button::
|
||||||
:title: Tuple et array
|
:title: Tuple et array
|
||||||
|
|
||||||
|
Découverte des tuples et des arrays en python. Algorithme: recherche d'un élément dans une liste.
|
||||||
|
|
||||||
.. big_button::
|
.. big_button::
|
||||||
:title: Représentation d'un texte
|
:title: Représentation d'un texte
|
||||||
|
|
||||||
@ -77,9 +78,6 @@ Période 4
|
|||||||
.. big_button::
|
.. big_button::
|
||||||
:title: Architecture réseau
|
:title: Architecture réseau
|
||||||
|
|
||||||
.. big_button::
|
|
||||||
:title: Recherche dans une liste
|
|
||||||
|
|
||||||
.. big_button::
|
.. big_button::
|
||||||
:title: Tris
|
:title: Tris
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user