\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}