2022-2023/1NSI/02_Programmation_Python_et_microbit/3B_boucles.tex
Bertrand Benjamin 4882eb6a66
All checks were successful
continuous-integration/drone/push Build is passing
Feat: ajoute 3B sur les boucles et fix l'utilisation des leds
2022-09-24 09:40:07 +02:00

182 lines
3.6 KiB
TeX
Executable File

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