\documentclass[11pt,a4paper]{../../template_cours}

\usepackage{minted}

\title{Introduction à Python — Dessiner avec la tortue}
\author{Adrian Amaglio}
\def\thesequence{Programmation}

\begin{document}
Durée : 1h

% ---
\section{La tortue de Python}
Pour activer la tortue de Python, nous allons écrire la ligne suivante tout en haut de notre fichier python ; veillez à la garder tout le long de l’exercice :
\begin{minted}{python}
from turtle import *
\end{minted}

%Pour que la fenêtre de dessin ne se ferme pas juste après la fin du tracé, ajoutez cette ligne \textbf{à la fin du programme} :
%\begin{minted}{python}
%exitonclick()
%\end{minted}

% Des élèves recopient tout sans réfléchir, je laisse ça là pour détecter ceux qui ne lisent pas le sujet.
Le but de l’activité sera de diriger le curseur (A.K.A. la tortue) pour tracer les formes demandées.
\\\textbf{À titre indicatif,} voici les instructions que nous utiliserons :

Pour aller tout droit de 20 pixels :
\begin{minted}{python}
forward(20)
\end{minted}

Pour tourner sur la gauche de 45° :
\begin{minted}{python}
left(45)
\end{minted}

\section{Triangles, carrés et plus si affinités}

Voici un programme Python qui trace deux traits de 100 pixels
\begin{example}
    \begin{minted}{python}
forward(50)
left(120)
forward(50)
    \end{minted}
\end{example}

\begin{exercice}
    Copiez collez ce programme dans votre éditeur python et exécutez le pour vérifier qu’il trace bien deux traits.\\
    N’oubliez pas la première ligne (import) qui doit être en haut de chaque programme.
\end{exercice}

\begin{exercice}
    Complétez ce programme pour qu’il affiche un triangle.
\end{exercice}

\begin{exercice}
    Modifiez ce programme Python pour qu’il dessine un carré (polygone régulier à 4 côtés).
\end{exercice}

\begin{exercice}
    Une fois que vous arrivez à tracer un carré à l’écran, adaptez le programme pour dessiner un octogone (polygone régulier à 8 côtés).
\end{exercice}


%
\section{Répétons des instructions}
\begin{example}
    Vous aurez remarqué que pour tracer des polygones, on copie colle les instructions forward et left.
    Pour éviter cette pratique inefficace, nous allons utiliser une boucle pour répéter des instructions.
    Par exemple, le programme suivant trace un triangle en répétant trois fois les instructions forward et left.
    \begin{minted}{python}
for compteur in range(3):
    forward(100)
    left(120)
    \end{minted}
    \textbf{Pour que des actions soient répétées, il faut qu’elles soient sous la ligne « for » et qu’elles soient précédées de 4 espaces.}
\end{example}
\begin{exercice}
    Recopiez ce programme et exécutez le. Vérifiez qu’il trace bien un triangle.
\end{exercice}
\begin{exercice}
    Modifiez ce programme pour qu’il trace un carré, puis un hexagone. Quelles modifications faites vous ?
\end{exercice}

%
\section{Des variables}
Nous allons essayer de modifier le programme pour qu’il soit capable de tracer n’importe quel polygone.
Nous aurons besoin d’une variable, contenant le nombre de côtés du polygone.
Le reste du programme tracera ce polygone.
\begin{example}
    Ce programme python trace un triangle équilatéral.
    \begin{minted}{python}
nb_cotes = 3
for compteur in range(nb_cotes):
    forward(100)
    left(360/nb_cotes)
    \end{minted}
\end{example}

\begin{exercice}
    Recopiez ce programme et vérifiez qu’il trace bien un triangle.
\end{exercice}

\begin{exercice}
    Modifiez la valeur stockée dans la variable nb\_cotes (vous pouvez par exemple mettre 4, 6, 8 ou 180). Que se passe t’il ?
\end{exercice}


\section{Écrire un sous-programme}
Pour tracer plusieurs polygone, il nous faudrait copier-coller notre programme.
Le résultat serait difficile à lire et donc à comprendre…
Nous allons créer une fonction (c’est un sous-programme) capable de tracer n’importe quel polygone.
Nous pourrons alors exécuter ce sous-programme dès que besoin.
\begin{example}
    \begin{minted}{python}
def polygone(nb_cotes):
    for compteur in range(nb_cotes):
        forward(100)
        left(360/nb_cotes)
polygone(3)
polygone(5)
    \end{minted}
\end{example}

\begin{exercice}
    Recopiez ce programme et vérifier qu’il trace bien deux polygone. Vous pouvez maintenant en une seule ligne, tracer le polygone de votre choix.
\end{exercice}

\section{Damier (Bonus)}
On peut colorier nos polygones à l’aide des fonctions « begin\_fill » et « end\_fill ».
Voici l’exemple d’un triangle que l’on remplit :
\begin{minted}{python}
begin_fill()
polygone(4)
end_fill()
\end{minted}

\begin{exercice}
    Écrivez un programme qui trace un damier de 6 cases par 6 cases.
    Les couleurs des cases doivent alterner blanc et noir.
    \\\textbf{Faites vérifier le programme par le professeur}
    \\Indices :
    \begin{itemize}
        \item Écrivez une fonction carre() traçant un carré et carreN() traçant un carré noir. Vous pourrez ainsi construire le damier à l’aide de ces deux fonctions.
        \item Écrivez une fonction ligne() qui trace une ligne de damier.
        \item Essayez ensuite d’exécuter la fonction ligne() pour tracer le damier.
    \end{itemize}
\end{exercice}

\end{document}
