
\begin{TP}[Dans la peau d'un programmeur][\algo]
 Vous êtes programmeur pour un concepteur de logiciel de géométrie dynamique.
 
 La capture d'écran du TP.1 présente le logiciel sur lequel vous travaillez.  
 
{\bfseries Votre mission}: gérer l'affichage du milieu d'un point dans la fenêtre {\bfseries Figure}.
%  \begin{center}
%  \begin{tikzpicture}[general]
%   \clip (0,0) rectangle (13.8,5);
%   \draw[color=gray!80, fill=gray!80] (0,0) rectangle (13.8,5);
%   \draw[color=gray!50, fill=gray!50] (8,0) rectangle (13.8,5);
%   \shade[color=gray,top color=A3, bottom color=blue, rounded corners=5pt] (5.6,5) rectangle (9.5,4);
%   \shade[color=gray,top color=A3, bottom color=blue, rounded corners=5pt] (9.6,5) rectangle (13.8,4);
%   \draw[color=gray, fill=A3] (0,0) rectangle (9.5,4.6);
%   \draw[color=C1] (5.6,4.8) node[right] {Figure};
%   \draw[color=C1] (9.6,4.8) node[right] {Description};
%   \draw[fill=white, color=white] (7.2,4.8) circle (0.15);
%   \draw[color=A1] (7.2,4.8) node {\bfseries +};
%   \draw[fill=white, color=white] (7.6,4.8) circle (0.15);
%   \draw[color=A1] (7.6,4.8) node {\bfseries -};
%   \draw[fill=yellow, color=yellow] (8,4.8) circle (0.15);
%   \draw[color=A1] (8,4.8) node {\bfseries i};
%   \draw[fill=white, color=white] (8.4,4.8) circle (0.15);
%   \draw[color=A1] (8.4,4.8) node {$\boxtimes$};
%   \draw[fill=white, color=white] (8.8,4.8) circle (0.15);
%   \draw[color=A1] (8.8,4.8) node {\footnotesize $\curvearrowleft$};
%   \draw[fill=white, color=white] (9.2,4.8) circle (0.15);
%   \draw[color=A1] (9.2,4.8) node {\footnotesize $\curvearrowright$};
%   \draw[fill=white, color=white] (13.5,4.8) circle (0.15);
%   \draw[color=A1] (13.5,4.8) node {\bfseries -};
%   \draw[fill=white, color=white] (12.7,4.8) circle (0.15);
%   \draw[color=A1] (12.7,4.8) node {\footnotesize $\curvearrowleft$};
%   \draw[fill=white, color=white] (13.1,4.8) circle (0.15);
%   \draw[color=A1] (13.1,4.8) node {\footnotesize $\curvearrowright$};
%   \draw[color=gray!50, fill=gray!50] (13.5,0) rectangle (13.8,4.6);
%   \draw[color=gray, fill=gray!30] (13.5,0.5) rectangle (13.8,0.8);
%   \draw[color=gray, fill=gray!30] (13.5,4.6) rectangle (13.8,4.3);
%   \draw[color=gray, fill=A3] (9.6,0.5) rectangle (13.5,4.6); 
%   \shade[color=gray,top color=A3, bottom color=blue, rounded corners=5pt] (9.6,0.4) rectangle (13.8,-0.4);
%   \draw[color=C1] (9.6,0.15) node[right] {Script};
%   \draw[fill=white, color=white] (13.5,0.2) circle (0.15);
%   \draw[color=A1] (13.5,0.2) node {\bfseries +};
%   \draw[color=gray, fill=gray] (13.55,0.75)--(13.75,0.75)--(13.65,0.55)--cycle ;
%   \draw[color=gray, fill=gray] (13.55,4.35)--(13.75,4.35)--(13.65,4.55)--cycle ;
%    \draw (2.19,2.23) node[below right, color=A1] {A};  
%    \draw (6.99,3.55) node[below right, color=A1] {B};  
%     \draw (4.59,2.98) node[below right, color=A1] {M};    
% %    \draw (6.34,1.85) node[below right, color=A1] {C'};
% %    \draw[axe] (2.19,2.23)--(6.99,3.55);
%   \draw (2.19,2.23) node[ color=A1] {$\times$};  
%    \draw (6.99,3.55) node[ color=A1] {$\times$};  
%     \draw  (4.59,2.98) node[ color=A1] {$\times$}; 
% %    \draw (6.34,1.85) node[ color=A1] {$\times$};
%    \begin{small}
%      \draw (9.7,4.3) node[right, color=A1] {@ \textcolor{C1}{libre};};
%      \draw (9.9,3.9) node[right, color=A1] {A=point(2.19,2.23);};
%      \draw (9.9,3.5) node[right, color=A1] {B=point(6.99,3.55);};
%      \draw (9.7,3.1) node[right, color=A1] {@ \textcolor{C1}{lié};};
%      \draw (9.9,2.7) node[right, color=A1] {M=milieu(A,B);};
% %      \draw (9.9,1.3) node[right, color=A1] {C'=point(6.34,1.85);};
%    \end{small}
%  \end{tikzpicture}
% \end{center}
\begin{enumerate}
 \item Proposer un algorithme, qui à partir des coordonnées des points $A$ et $B$, affiche une croix aux coordonnées du milieu et affiche un lettre  à gauche sous la croix. 
 \item L'utilisateur pouvant faire bouger $A$ et $B$ comme il le souhaite, l'affichage de la lettre nommant le milieu peut dépasser du cadre alors que la croix est toujours à l'intérieur. 
 
\`A partir des coordonnées du coin en haut à droite du cadre (L'origine des coordonnées est le coin en bas à gauche.) et de la longueur et la largeur de la lettre (dépendant tous du Zoom demandé par l'utilisateur), proposer une modification de l'algorithme précédent, qui:
\begin{enumerate}
  \item vérifiera qu'il y a la place d'afficher la lettre; 
  \item si besoin, changera la position de la lettre. \textit{Les autres possibilités sont : dessous au centre, dessous à gauche, à gauche, dessus à gauche, dessus au centre, dessus à droite, à droite. }
 \end{enumerate}


\end{enumerate}

\end{TP}