

\documentclass[12pt,a4paper]{report}
\usepackage[height=255mm,width=183mm,margin=1cm,bottom=2cm,top=2cm]{geometry}
\usepackage{preambule}
\usepackage[upright]{fourier}

\usepackage{bbding,xlop}
 \usepackage{wasysym,marvosym,keystroke}
\graphicspath{{/home/moi/Photos/Tehessin/}{/home/moi/Figures/FigSTI/}{/home/moi/Figures/FigMaple/}{/home/moi/Lycee/Primaire/}}




\entete{TD Maple n°7}{Le code bibinaire et un peu d'algèbre...}{PCSI 2 - Lycée Clemenceau}%g,d,b

\usepackage{index}
\makeindex
\renewindex{default}{idx}{ind}{Index des commandes vues aujourd'hui}

\newcommand{\indexkeywordsmaple }[1]{\index[default]{maple@\textbf{\large Commandes}!#1@\textcolor{red}{\texttt{#1}}|textbf}}

\newcommand{\indn }[1]{\index[default]{maple@{\large
      Notions }!#1@ #1}}

\newcommand{\indt }[1]{#1\index[default]{maple@{\large
      Touches }!#1@ #1}}


%%% Environnement des réponses du logiciel
\DefineVerbatimEnvironment{boxedverbatim}{Verbatim}{fontsize=\small,formatcom=\color{blue},fontshape=it,gobble=2,frame=single,framesep=4mm,label=\textit{\small \textcolor{black}{Réponse du logiciel}},xleftmargin=10pt,rulecolor=\color{black}}




\newcommand\Com[1]{%
\shorthandoff{;:}\textcolor{red}{{ \ttfamily #1}}\index[default]{maple@\textbf{\large Commandes}!#1@\textcolor{red}{\texttt{#1}}|textbf}}


%%% Com avec syntaxe
\newcommand\Comsi[2]{%
\shorthandoff{;:}\textcolor{red}{{ \ttfamily #1}}(\textcolor{red}{\texttt{#2}})\index[default]{maple@\textbf{\large Commandes}!#1@\textcolor{red}{\texttt{#1}}|textbf}}





%%%%%%  Commande personnelle ou bout de code

\renewcommand{\code}[1]{\textcolor{red}{\texttt{#1}}}





\newcommand{\MAPLE}{\lstset{numbers=none,language=Maple,xleftmargin=10pt,%
keywordstyle =\color{red}\usefont{OT1}{cmtt}{b}{n},basicstyle=\ttfamily\color{red},commentstyle=\normalfont\scriptsize\itshape,
    backgroundcolor=\color{0.9white},index=[2][keywords],indexstyle=[2]\indexkeywordsmaple,breaklines=true}
}

\begin{document}
\setlength{\parindent}{0pt}
\thispagestyle{empty}

\setcounter{NumLecon}{6}
         \TITREL{TD Maple }{Le code bibinaire et un peu d'algèbre...}{0.9white}{0.6}{1.5}
        

\MAPLE

\section{Coder en bibinaire}

\subsection{Qu'est-ce que c'est~?}

\parpic{\fbox{\includegraphics[height=4cm]{bobybouf.eps}}}
Boby \textsc{Lapointe},  célèbre chanteur  français, était aussi  mathématicien à ses  heures. Ayant
trouvé le code binaire trop compliqué à utiliser, il  inventa le code... bibinaire. Il  suffit de remplacer les chiffres  par des lettres. On commence par  couper le nombre
écrit en  binaire en  paquets de 2.  S'il y a  un nombre impair  de chiffres,  on rajoute un  zéro à
gauche, ce qui ne  modifie pas la valeur de nombre.  On commence par le premier
groupe de deux chiffres le plus à droite. On remplace 00 par O, 01 par A, 10 par E, 11 par I.\\
Puis on prend le paquet de deux chiffres suivants en se déplaçant de droite à gauche. On remplace 00
par H, 01 par B, 10 par K, 11 par D.\\
Pour le paquet suivant, on recommence avec les  voyelles. S'il y a encore un groupe, on remplace par
une consonne, etc.


\subsection{Numération en base 2}

Comptez vos doigts en base 2. Quel est le  lien entre l'écriture d'un nombre en base 2 et les restes
des divisions successives d'un nombre par 2~?

Proposez une procédure  \code{bine:=proc(n)} qui renvoie la liste  des chiffres composant l'écriture
binaire  d'un  nombre. Vous  utiliserez  à  bon escient  les  commandes  MAPLE \Comsi{iquo}{a,b}  et
\Comsi{irem}{a,b} qui renvoient respectivement le quotient et le reste de la division euclidienne de
a par b.

\begin{figure}
              \begin{Idee}
              \textbf{«~Retournez une liste~»}

              Soit \code{L:=[1,2,3,4,5]} une liste. Regardez ce que donne 

              \begin{lstlisting}
                M:=NULL:
                for k to nops(L) do M:=M,L[-k]; od:
               [M];
              \end{lstlisting}

              Peut-être en ferez-vous bon usage...
               \end{Idee}
               \end{figure}


\subsection{Évaluation booléenne}

La commande \Comsi{evalb}{test} permet de tester si une proposition est vraie ou fausse~:

\begin{lstlisting}
  evalb(irem(8,2)=0);
  evalb(irem(8,3)=0);
\end{lstlisting}

Cela nous permet de faire des tests à l'aide de \code{if then else}~:

\begin{lstlisting}
  pair:=proc(n)
   if evalb(irem(n,2)=0)=true then print(`Pair`) else print(`impair`); fi;
  end:

 pair(45);
\end{lstlisting}




\subsection{Rajouter un élément à la fin d'une liste}

Observez les lignes suivantes~:

\begin{lstlisting}
  L:=[1,2,3];
  [op(L),4];
\end{lstlisting}


\subsection{Coder en bibinaire}


Écrivez les nombres de 0 à 25 en bibinaire. Pourquoi Boby a-t-il finement choisi le H~?


Écrivez les nombres de 255 à 257 en bibinaire.  Quel est la base du bibinaire~?

Pourquoi est-il  pratique d'écrire les nombres  en base 2 avec  un nombre de chiffres  multiple de 4
avant de les traduire en bibinaire~?

Que pensez-vous de ces quelques lignes de code~:

\begin{lstlisting}
  ib:=bine(n);
  while evalb(irem(nops(ib),4)=0)=false do ib:=[(op(ib),0)];
\end{lstlisting}

À l'aide d'une série de tests  \code{if then else} proposez une procédure \code{bibine:=proc(n)} qui
donne l'écriture bibinaire d'un nombre entré sous forme décimale.


Testez alors~:

\begin{lstlisting}
  bibine(2751);
\end{lstlisting}

\section{Décodez du bibinaire}

\subsection{La commande table}


On construit une table avec la commande... \code{table}~:

\begin{lstlisting}
  note:=table([(maths)=18,(physique)=17,(info)=7]);
  note[maths];
  note[info];
\end{lstlisting}


À quoi correspond alors le code suivant~:

\begin{lstlisting}
  decod:=table([seq(bibine(k)=k,k=0..15)]);
\end{lstlisting}


\subsection{Procédure de décodage}


Proposez à  présent une procédure  \code{enibib:=proc(L)} qui renvoie  un nombre sous  forme décimal
correspondant à la liste L des lettres de son écriture bibinaire.

Vous utiliserez une seule boucle \code{for} connaissant la base du bibinaire.




\section{Un peu d'algèbre~:~les groupes finis}

On considèrera par la suite un groupe multiplicatif $(G,\cdot)$

Un groupe fini est tout simplement un groupe ayant un nombre fini d'éléments.


Un groupe fini est cyclique si chacun de ses éléments peut s'écrire comme une puissance d'un élément
particulier $g$ du groupe appelé générateur. 


On appelle ordre de $a$ le plus petit entier naturel non nul $n$ vérifiant $a^n=1_G$


\subsection{Racines n-ièmes de l'unité}

Dans la suite, on notera $\bbu_n$ l'ensemble des racines $n$-èmes de l'unité.


À l'aide des commandes \code{seq} et \code{exp}, donnez la \emph{liste} des $10$ racines 10-èmes de l'unité.


\subsection{Procédure {\ttfamily ordre}}

Construisez une procédure \code{ordre:=proc(k,U)} qui donne l'ordre du $k$\eme élément de U. 

Vous utiliserez \code{while}, \code{<>} qui veut dire $\neq$ et \Coms{evalc}{}, cette dernière commande renvoyant la forme
algébrique d'un nombre complexe. 


Vous vous en servirez pour donner la liste des ordres de $\bbu_{10}$ par exemple.

\subsection{Tables de multiplications...}


Construisez les tables de multiplications (ou plutôt les tables de Pythagore) de $\bbu_3$. 

Vous vous servirez intelligemment des lignes suivantes

\begin{lstlisting}
  A:=[seq([seq(evalc(U[i]*U[j]),j=1..n)],i=1..n)]:
  T:=convert(A,array);
\end{lstlisting}


Déduisez-en que $\bbu_3$ est un groupe. 

Écrivez  une procédure  \code{GroupeFini:=proc(n)} qui  donnera $\bbu_n$,  la liste  des  ordres des
éléments et la table de Pythagore de ($\bbu_n,\cdot$).

Est-ce que les $\bbu_n$ sont cycliques


\end{document}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
