
\begin{enumerate}
\item Dans ce programme, on commence par initialiser trois variables: \texttt{u}, \texttt{s} et \texttt{n}.

Ensuite, on initialise une boucle \textit{conditionnelle}; la condition est que la valeur contenue dans \texttt{s} doit être strictement inférieure à $10^9$ pour que les instructions suivantes s'exécutent.

Les instructions de la boucle sont les suivantes:
\begin{itemize}
\item d'abord, on ajoute 1 à la valeur contenue dans \texttt{n};
\item ensuite, on ajoute à la valeur contenue dans \texttt{s} celle contenue dans \texttt{u};
\item pour finir, on ajoute 1,5 à la valeur contenue dans \texttt{u}.
\end{itemize}

Faisons un tableau pour représenter les valeurs des variables pas à pas.

\textbf{Astuce du chef:} nous allons disposer les variables dans le même ordre où elles apparaissent dans la boucle: d'abord \texttt{n}, suivie de \texttt{u}, puis de \texttt{s}.

\begin{center}
\begin{tabular}{|>{\ttfamily}Sc|*5{Sc|}}
\hline
n & 0    & 1                 & 2                  & 3     & $\cdots$ \\
\hline
u & $-8$ & $-8+1,5=-6,5$      & $-6,5+1,5=-5$     & $-5+1,5=-3,5$  & $\cdots$ \\
\hline
s & $-8$ & $-8+(-6,5)=-14,5$ & $-14,5+(-5)=-19,5$ & $-19,5+(-3,5)=-23$ & $\cdots$ \\
\hline
\end{tabular}
\end{center}

La valeur affichée par le programme est donc la première valeur de \texttt{n} pour laquelle la condition $s<10^9$ n'est pas remplie, à savoir la première valeur de $n$ pour laquelle la valeur stockée dans \texttt{s} est supérieure ou égale à $10^9$.

\item Si on examine de plus près le tableau précédent, on peut imaginer que la variable \texttt{u} représente les termes d'une suite arithmétique de premier terme $u_0=-8$ et de raison $r=1,5$, et \texttt{s} représente $s_n=u_0+u_1+\cdots+u_n$.

Ainsi, lorsque les variables \texttt{u}, \texttt{s} et \texttt{n} sont initialisées, elles représentent respectivement $u_0$, $s_0$ et le premier indice $n=0$.

Vérification pour les premières valeurs:
\begin{itemize}
\item $u_1=u_0+1,5=-8+1,5=-6,5$, qui correspond à la première valeur de \texttt{u} trouvée dans le tableau (après initialisation);
\item $s_1=u_0+u_1=-8+(-6,5)=-14,5$,  qui correspond à la première valeur de \texttt{s} trouvée dans le tableau (après initialisation);

\medskip

\item $u_2=u_1+1,5=-6,5+1,5=-5$, qui correspond à la valeur suivante de \texttt{u};
\item $s_2=u_0+u_1+u_2=-8+(-6,5)+(-5)=-19,5$, qui correspond à la valeur suivante de \texttt{s}.
\end{itemize}

Ainsi, la valeur de \texttt{n} affichée par le programme est la première valeur de $n$ pour\linebreak laquelle $s_n \geqslant 10^9$.

Or, le cours nous donne une valeur de $s_n$:
\begin{align*}
s_n & = u_0 + u_1 + u_2 + \cdots + u_n\\
& = (n+1)\times\dfrac{u_0+u_n}{2}\\
& = (n+1)\times\dfrac{u_0+(u_0+nr)}{2}\\
& = (n+1)\times\dfrac{2u_0+nr}{2}\\
& = (n+1)\left(u_0 + \frac{nr}{2}\right)\\
& = (n+1)(0,75n-8)\\
& = 0,75n^2-7,25n-8.
\end{align*}

On souhaite donc résoudre l'inéquation:
\[
0,75n^2-7,25n-8 \geqslant 10^9  \iff 0,75n^2-7,25n-\numprint{1000000008} \geqslant0.
\]
Le discriminant du polynôme $0,75n^2-7,25n-\numprint{1000000008}$ est :
\[
\Delta = (-7,25)^5-4\times0,75\times(-\numprint{1000000008})= \numprint{3000000076,5625}.
\]
Donc $0,75n^2-7,25n-\numprint{1000000008}\geqslant0$ pour $n\geqslant\dfrac{-b+\sqrt{\Delta}}{2a}$, soit pour\linebreak $n\geqslant \numprint{36519,6709663}$.

Le premier $n$ est donc $n=\numprint{36520}$, et c'est bien ce qu'affiche le programme (après\linebreak vérification sur une machine).
\end{enumerate}
