\documentclass[a4paper]{article}
\usepackage{amstex,french,tp}
\advance\topmargin -1cm
\advance\textheight 1cm

\begin{document}

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

\section*{Cryptographie}
Voici une méthode en deux étapes pour coder
un message. L'entier $x$ est compris entre 2 et 9.
\begin{enumerate}
\item Découper le texte en segments de $x$ caractères
et renverser chaque segment de texte.
\item Remplacer la $n^{\text{ième}}$ lettre par celle
qui se situe $n$ positions plus loin dans l'alphabet,
sans toucher aux espaces.
\end{enumerate}
Pour \verb|LE PETIT CHAT A SOIF| et $x=4$,
cela donne \verb|P ELTITEAHC  A TFIOS|
puis \verb|Q HPYOAMJRN  O JWAHM|

Le but de ce TP est de pouvoir faire le codage
et le décodage.

\section*{Première étape}
\subsection*{Renverse}
Faire une procédure {\tt Renverse} qui a trois
arguments : une chaîne de caractères et deux
entiers.

Cette procédure renverse la partie de la chaîne
comprise entre les positions indiquées par les
deux nombres.

Par exemple le morceau de programme ci-dessous
écrit "\verb|exelpme de texte|"
\begin{verbatim}
ch := 'exemple de texte';
Renverse(ch, 3,6);
WriteLn(ch);
\end{verbatim}

\subsection*{Etape1}
Utiliser {\tt Renverse} pour fabriquer une
procédure {\tt Etape1} qui a deux arguments :
une chaîne de caractères et un entier compris
entre 2 et 9 et qui fait la première étape du
codage.

\section*{Seconde étape}
\subsection*{César}
Faire une fonction {\tt Cesar} qui a deux arguments :
un caractère {\tt c} et un entier {\tt n} positif ou
négatif, et dont le résultat est le {\tt n}${}^{\text{ième}}$
caractère après {\tt c}.

Le résultat de \verb|Cesar('a',4)| est {\tt 'e'},
le résultat de \verb|Cesar('W',5)| est {\tt 'B'} et
le résultat de \verb|Cesar('f',-4)| est {\tt 'b'}.

On rappelle que {\tt Ord} transforme un caractère
en nombre et {\tt Chr} fait cette transformation
en sens inverse.

On pourra utiliser les comparaisons de caractères.

\subsection*{Etape2}
Utiliser {\tt Cesar} pour fabriquer une
procédure {\tt Etape2} qui a un argument,
une chaîne de caractères
et qui fait la seconde étape du codage.

\section*{Codage et décodage}
Combiner {\tt Etape1} et {\tt Etape2} pour
faire une procédure {\tt Codage}.

Faire une procédure {\tt Decodage}.

\end{document}
