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

\begin{header}
\Huge Contr\^ole
\par\bigskip
\normalsize
Les quatre exercices sont indépendants
\end{header}

\small

\section*{Premier exercice}

Donner la nature (instruction, déclaration, expression)
de chacune des 10 lignes ci-dessous.
Pour les instructions, préciser le genre d'instruction :
affectation, appel de procédure, sélection (ou branchement),
itération (ou boucle), ....
Pour les déclarations, dire de quelle nature est ce
qui est déclaré.
Pour les expressions, donner le type du résultat.


$\bullet$ {\tt 17 $<$ 2}

$\bullet$ {\tt FOR i:=1 TO 10 DO WriteLn(i)}

$\bullet$ {\tt 7 / 5}

$\bullet$ {\tt WriteLn('2+2=',4) }

$\bullet$ {\tt VAR i:INTEGER}

$\bullet$ {\tt 17. * 2}

$\bullet$ {\tt IF (a=0) THEN ReadLn(z)}

$\bullet$ {\tt a := 2+2}

$\bullet$ {\tt WHILE (a<>0) DO a:=a-1}

$\bullet$ {\tt FUNCTION Somme(a,b:INTEGER):INTEGER}

\section*{Deuxi\`eme exercice}

$\bullet$
D\'efinir en PASCAL un type {\tt Serie}
qui soit un tableau de 100 r\'eels.

$\bullet$
\'Ecrire une fonction {\tt Produit} qui prenne
en argument une s\'erie et qui renvoie
la valeur du produit des 100 \'el\'ements qui composent
la s\'erie.

$\bullet$
\'Ecrire une proc\'edure {\tt Negation}
qui change le signe de tous les \'el\'ements de la s\'erie
donn\'ee en argument.

$\bullet$ 
\'Ecrire une proc\'edure {\tt Renversement}
qui transforme la s\'erie donn\'ee en argument de la fa\c{c}on suivante:
si la s\'erie est par exemple $[1,2,3,\cdots,99,100]$, elle devient
$$[100,99,98,\cdots,52,51,1,2,3,\dots,49,50].$$

$\bullet$
\'Ecrire une proc\'edure {\tt Somme} qui transforme la s\'erie
de la fa\c{c}on suivante:
si la s\'erie est par exemple $[1,2,3,\cdots,99,100]$, elle devient
$$ [2+100,1+3,2+4,3+5,\dots,97+99,98+100,99+1].$$
Cette proc\'edure ne devra pas utiliser de variable locale
de type {\tt Serie}.


Lorsqu'on d\'efinira une fonction ou une proc\'edure,
on se demandera \`a chaque fois si les arguments sont transmis
par valeur ou par r\'ef\'erence, et on en déduira
la présence ou non du mot clé {\tt VAR} dans la déclaration
des arguments.

\newpage
\section*{Troisi\`eme exercice}

$\bullet$ \'Ecrire la d\'ecomposition binaire,
et la d\'ecomposition en base 16 (base hexad\'ecimale) de l'entier 91.

$\bullet$ \'Ecrire en PASCAL l'expression bool\'eenne
qui est vraie si et seulement si
$$x \ge y+z \ge x \left( a-\frac{c+2}{d} \right)+1.$$
(les variables sont toutes r\'eelles, pas enti\`eres)

\section*{Quatri\`eme Exercice}

\'Ecrire ce qu'affiche \`a l'\'ecran le programme suivant:

\begin{verbatim}
PROGRAM Mystere;

VAR i,j,k:INTEGER;

PROCEDURE Aff(i:INTEGER);
VAR j:INTEGER;
  
  PROCEDURE Aff2;
  VAR i:INTEGER;
  BEGIN
    i := 5;
    IF (i >= 4)
    THEN writeln(j+i+k)
    ELSE writeln(-j-i-k);
  END;

BEGIN
 j := i+1;
 IF (i>=0)
 THEN writeln(i+1)
 ELSE writeln(-i-1);
 i := i+2;
 Aff2;
END;

BEGIN
  i := 2; j := 7; k := 3;
  Aff(j);
  writeln(i);
  writeln(j);
END.
\end{verbatim}

\end{document}
