113 lines
3.0 KiB
TeX
113 lines
3.0 KiB
TeX
\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}
|