2022-2023/1NSI/04_Fonctions_specifications.../1B_fonctions.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}