\documentclass[a4paper, 10pt]{article}
\usepackage[pythontex]{cp-sujet}
\newcommand{\nomfichier}{[2GT.ALGO05] Algorithmique et boucles}
\author{Pierquet}
\title{\nomfichier}
\hypersetup{pdfauthor={Pierquet},pdftitle={\nomfichier},allbordercolors=white,pdfstartview=FitH} 
\usepackage[french,boxed]{algorithm2e}
\DontPrintSemicolon
\setlength{\algomargin}{0.5cm}
\SetKw{KwTo}{à}
\SetKw{KwFrom}{allant de}

\begin{document}

\pagestyle{fancy}
\lhead{\entete{[ALGO]}}
\chead{\entete{\lycee}}
\rhead{\entete{2GT - Avril 2018}}
\lfoot{\pied{}}
\cfoot{\pied{- \thepage{} -}}
\rfoot{\pied{}}

\grandtitre{Algorithmique : conditions et boucles}

\section{Une brève introduction aux conditions et aux boucles}

\subsection{Conditions}

Une condition est une \textbf{expression} qui peut prendre l’une des deux valeurs suivantes \textbf{vrai} ou \textbf{faux}. On dit également que c’est une valeur de type \og \textbf{logique} \fg{} ou  \og \textbf{booléen} \fg.

Les principaux opérateurs de comparaison que vous rencontrerez sont les suivants :
\begin{itemize}
	\item égal à (= en pseudo code)
	\item différent de (!= en pseudo code)
	\item strictement supérieur (> en pseudo code) ; strictement inférieur (< en pseudo code)
	\item supérieur ou égal (>= en pseudo code) ; inférieur ou égal (<= en pseudo code)
\end{itemize}
Ces comparaisons n’ont un sens que si les variables que l’on compare sont de \textbf{même type}.

On peut écrire des conditions plus complexes à l’aide des \textbf{opérateurs logiques} ET, OU et NON.

\begin{center}
	\begin{minipage}{8cm}
		\begin{algorithm}[H]
			\Si{condition}{
			\textit{instructions}
			}
	\end{algorithm}
\end{minipage}
\end{center}
\begin{center}
	\begin{minipage}{8cm}
		\begin{algorithm}[H]
			\eSi{condition}{
			\textit{bloc du alors}
			}{
			\textit{bloc du sinon}
			}
		\end{algorithm}
	\end{minipage}
\end{center}

\subsection{Les boucles}

Une boucle permet de \textbf{répéter} un traitement un certain nombre de fois (\textbf{connu} ou \textbf{inconnu}).

\begin{center}
	\begin{minipage}{8cm}
		\begin{algorithm}[H]
			\Pour{\dots{} \KwFrom \dots{} \KwTo \dots{}}{
			\textit{instructions}
			}
		\end{algorithm}
	\end{minipage}
\end{center}
\begin{center}
	\begin{minipage}{8cm}
		\begin{algorithm}[H]
			\Tq{condition}{
			\textit{instructions}
			}
		\end{algorithm}
	\end{minipage}
\end{center}

On utilise généralement une instruction  \og \textbf{pour} \fg{} lorsqu'on connaît le nombre d’itérations à réaliser dès le début de la boucle et une instruction  \og \textbf{Tant que} \fg{} lorsque ce nombre est inconnu ou difficile à déterminer.

\section{Trois petits exemples}

\subsection{Conditions}

\textbf{Situation 1}\strut\hrule

\medskip

Un groupe de personnes souhaite réserver un chalet pour les sports d'hiver. Le prix de la location à la semaine est 800\,\euro{}. Le forfait pour skier toute la semaine est de 220\,\euro{} par personne, mais il existe un tarif \og groupe \fg{} à 180\,\euro par personne à partir de 5 personnes d'un même groupe.
\begin{enumerate}
	\item Quel est le prix payé pour un groupe de 4 personnes ? Pour un groupe de 6 personnes ?
	\item Compléter l'algorithme suivant afin qu'il affiche en sortie le prix payé (P) par le groupe pour la semaine, selon le nombre de personnes ($n$) du groupe :
	\begin{center}
		\begin{minipage}{8cm}
			\begin{algorithm}[H]
				\eSi{$n \pg 5$}{
				P $\leftarrow$ \dots\dots\dots
				}{
				P $\leftarrow$ \dots\dots\dots
				}
			\end{algorithm}
		\end{minipage}
	\end{center}
	\item Sur EduPython, écrire le programme (version fonctionnelle) de l'algorithme précédent.
%	
%	\hfill{}\url{http://cpierquet.fr/algo/td_2gt_situation1.webm}
\end{enumerate}

\subsection{Boucles}

\textbf{Situation 2}\strut\hrule
 
\medskip

Mme Langlois effectue un unique versement de 20~000\,\euro{} sur un livret d'épargne.

Le capital est augmenté chaque année de 100\,\euro{} par le versement d'intérêts.
\begin{enumerate}
	\item Déterminer le capital disponible au bout d'un an sur le livret d'épargne de Mme Langlois.
	\item Compléter l'algorithme suivant pour qu'il affiche le capital (C) disponible sur au bout de 15 ans :
	\begin{center}
		\begin{minipage}{8cm}
			\begin{algorithm}[H]
				C $\leftarrow$ 20000 \;
				\Pour{$i$ \KwFrom 1 \KwTo 15}{
				C $\leftarrow$ \dots\dots\dots
				}
			\end{algorithm}
		\end{minipage}
	\end{center}
	\item Modifier l'algorithme précédent afin qu'il affiche le capital (C) disponible sur au bout de $n$ années.
	\item Sur EduPython, écrire le programme (version fonctionnelle) de l'algorithme précédent.
%	
%	\hfill{}\url{http://cpierquet.fr/algo/td_2gt_situation2.webm}
\end{enumerate}

\bigskip

\textbf{Situation 3}\strut\hrule

\medskip

En 2014, Carole verse sur son livret d'épargne 3~000\,\euro{}.

Chaque année, la somme disponible sur le livret est multipliée par 1,03 (intérêts de 3\,\%).

L'algorithme ci-dessous permet de déterminer l'année à partir de laquelle Carole disposera pour la première fois d'au-moins 3~500\,\euro.
\begin{center}
	\begin{minipage}{8cm}
		\begin{algorithm}[H]
			S $\leftarrow$ 3~000 \;
			A $\leftarrow$ 2014 \;
			\Tq{$S<3500$}{
			$S \leftarrow S \times 1,03$ \;
			$A \leftarrow A+1$
			}
		\end{algorithm}
	\end{minipage}
\end{center}
\begin{enumerate}
	\item Quelle variable contient les valeurs successives de l'épargne disponible ?
	\item Quel est le rôle de la variable A ?
	\item Compléter le tableau (d'exécution) suivant :
	\begin{center}
		\begin{tabular}{|l|C{2cm}|C{2cm}|c|}
			\hline
			\textbf{Étapes} & \textbf{S} & \textbf{A} & \textbf{Condition vérifiée ?} \\ \hline
			Avant la boucle & 3~000 & 2014 & oui \\ \hline
			1\up{er} passage dans la boucle & \dots\dots & \dots\dots & \dots\dots \\ \hline
			2\up{e} passage dans la boucle & \dots\dots & \dots\dots & \dots\dots \\ \hline
			\dots\dots\dots\dots\dots\dots\dots\dots\dots & \dots\dots & \dots\dots & \dots\dots \\ \hline
			\dots\dots\dots\dots\dots\dots\dots\dots\dots & \dots\dots & \dots\dots & \dots\dots \\ \hline
			\dots\dots\dots\dots\dots\dots\dots\dots\dots & \dots\dots & \dots\dots & \dots\dots \\ \hline
			\dots\dots\dots\dots\dots\dots\dots\dots\dots & \dots\dots & \dots\dots & \dots\dots \\ \hline
		\end{tabular}
	\end{center}
	\item Conclure quant au problème initial.
	\item Sur EduPython, écrire le programme (version fonctionnelle) de l'algorithme précédent.
%	
%	\hfill{}\url{http://cpierquet.fr/algo/td_2gt_situation3.webm}
\end{enumerate}

\end{document}