\documentclass[a4paper,10pt]{article}
\usepackage{myXsim}
\usepackage{minted}

\author{Benjamin Bertrand}
\title{Python et micro:bit - Cours}
\date{Septembre 2022}

\pagestyle{empty}

\begin{document}

\maketitle

\setcounter{section}{1}
\section{Corpus élémentaire de Python (suite)}
\setcounter{subsection}{4}
\subsection{Boucle non bornée}

\begin{definition}[Boucle while]
    Lorsque l'on veut répéter des actions \textbf{tant que} quelque chose est vrai, on utilise une boucle \mintinline{python}{while}.

    \begin{center}
        \begin{minipage}{0.5\linewidth}
            \begin{minted}[bgcolor=base3,linenos]{python}
while condition:
    instruction 1
    instruction 2
    instruction 3
            \end{minted}
        \end{minipage}
    \end{center}


    La condition doit être de type booléen ou sera considéré comme tel.
\end{definition}

\textbf{Exemple:}

On veut écrire un programme qui modélise la situation suivante: une ville compte 3 millions d'habitants. Sa population augmente de 2\% par an. Combien d'année faudra-t-il attendre pour que la population ait doublée.

\begin{multicols}{2}
    \begin{minted}[bgcolor=base3,linenos]{python}
population = 3
double = population * 2
taux = 2/100
annee = 0
while population < double:
    population = population * (1 + taux)
    annee = annee + 1
print("La population a doublé après ", annee, "ans")
    \end{minted}

    \columnbreak

    Tableau d'états

    \begin{tabular}{|*{4}{p{1.5cm}|}}
        \hline
        & & & \\
        \hline
        & & & \\
        \hline
        & & & \\
        \hline
        & & & \\
        \hline
        & & & \\
        \hline
        & & & \\
        \hline
        & & & \\
        \hline
    \end{tabular}

\end{multicols}

\afaire{compléter le tableau d'états en prenant une colonne par variable. Que va afficher le programme?}

\subsection{Boucle bornée}

\begin{definition}[Boucle for]
    Lorsque que l'on veut répéter des actions sur un ensemble de valeurs données, on utilise la boucle \mintinline{python}{for}.

    \begin{center}
        \begin{minipage}{0.5\linewidth}
            \begin{minted}[bgcolor=base3,linenos]{python}
for element in iterateur:
    instruction 1
    instruction 2
    instruction 3
            \end{minted}
        \end{minipage}
    \end{center}
    À chaque tour de boucle, la variable \mintinline{python}{element} prendra les valeurs successives de l'itérateur.
\end{definition}

\pagebreak

\textbf{Quelques itérateurs:}
\begin{multicols}{3}
   Range(n):

   \begin{minted}[bgcolor=base3,linenos]{python}
for i in range(3):
   print(i)
   \end{minted}

   Table d'états

   \begin{tabular}{|p{2cm}|}
       \hline
       i  \\
       \hline
       \\
       \hline
       \\
       \hline
       \\
       \hline
       \\
       \hline
       \\
       \hline
   \end{tabular}

   \columnbreak
   Chaine de caractères:

   \begin{minted}[bgcolor=base3,linenos]{python}
for lettre in "AZERTY":
   print(lettre)
   \end{minted}

   Table d'états

   \begin{tabular}{|p{2cm}|}
       \hline
       lettre  \\
       \hline
       \\
       \hline
       \\
       \hline
       \\
       \hline
       \\
       \hline
       \\
       \hline
   \end{tabular}

   \columnbreak
   Liste:

   \begin{minted}[bgcolor=base3,linenos]{python}
for chose in ["a", 3, True, 5]:
   print(chose)
   \end{minted}
   Table d'états

   \begin{tabular}{|p{2cm}|}
       \hline
       chose  \\
       \hline
       \\
       \hline
       \\
       \hline
       \\
       \hline
       \\
       \hline
       \\
       \hline
   \end{tabular}

\end{multicols}


\end{document}
