\documentclass[twocolumn,a4paper]{article}
\usepackage{french,tp}
\begin{document}

\begin{header}
\Huge Troisième TP
\bigskip
\end{header}

\subsection*{Premiers exercices}
\subsubsection*{Dessins}
L'instruction {\tt Write('...')} affiche
à l'écran une chaîne de caractères sans
passer à la ligne, et {\tt WriteLn('...')}
fait la même chose en passant à la ligne.

Le programme ci-dessous affiche une ligne
composée de quelques symboles {\tt *}.
\begin{verbatim}
PROGRAM Ligne;
VAR i, n : INTEGER;
BEGIN
  WriteLn('Choisissez le nombre de *');
  ReadLn(n);
  FOR i := 0 TO n DO
    Write('*');
  WriteLn;
END.
\end{verbatim}

$\bullet$
Le modifier pour faire un programme
qui dessine des rectangles $n\times m$.

$\bullet$
$\bullet$
Faire un programme qui dessine des
triangles isocèles comme celui-ci.
\begin{center}
\begin{verbatim}
      *
     ***
    *****
\end{verbatim}
\end{center}

\subsubsection*{Produit de deux entiers}
$\bullet$
Écrire un programme qui demande deux entiers
et calcule leur produit sans faire de
multiplication (uniquement des additions).
Compter le nombre d'additions nécessaires
pour calculer $16\times 131$.

$\bullet$
$\bullet$
$\bullet$
On remarque que $16\times 131 = 2 \times 2 \times 2 \times 2 \times 131$
et que la multiplication par 2 se fait en une addition.
Ce calcul peut donc être fait en seulement 4 additions.
Utiliser cette remarque pour améliorer les performances
du programme précédent en testant la parité du multiplicateur.

\newpage

\subsection*{Itération conditionnelle}
La boucle {\tt FOR} est répétée un nombre fixe de fois.
Les structures d'itération conditionnelle sont répétées
selon la valeur d'une exepression booléenne.

L'instruction est exécutée {\em tant que} la condition
est vraie.
\\ {\tt WHILE} {\em ExpressionBooléenne}
\\ {\tt DO} {\em Instruction};

Les instructions sont exécutées {\em jusqu'à ce que} la condition
soit vraie.
\\ {\tt REPEAT}
\\ \quad {\em Instruction1};
\\ \quad ...
\\ \quad {\em InstructionN};
\\ {\tt UNTIL} {\em ExpressionBooléenne}

\subsubsection*{Mise en pratique}
$\bullet$
Transformer les programmes précédents
en remplaçant les boucles {\tt FOR}
par l'utilisation de {\tt WHILE}
ou {\tt REPEAT}.

$\bullet$
$\bullet$
Faire un programme qui choisit
nombre aléatoire entre 0 et 999,
et qui vous demande de deviner
ce nombre secret.
Ce programme vous dit si votre
essai est plus grand, plus petit
ou si vous avez gagné.
Il compte le nombre d'essais.

\subsubsection*{Calculs de PGCD}
$\bullet$
$\bullet$
$\bullet$
Algorithme d'Euclide :
Si un entier $d$ divise les entiers $a$ et $b$,
alors il divise $a \bmod b$.
En déduire un programme qui calcule le PGCD
de deux nombres à l'aide de l'opération {\tt MOD}.

$\bullet$
$\bullet$
$\bullet$
Que se passe-t-il si on fait des soustractions
au lieu des modulo ?

\end{document}
