\clearpage
\section{Le théorème de Pythagore}\label{DocPythagore}
\index{Démontrer}\index[cle]{Pythagore@\lstinline+\Pythagore+}
La commande \lstinline!\Pythagore! permet de rédiger la solution d'un exercice basé sur le
théorème de Pythagore, sa réciproque ou la contraposée. Elle a la
forme suivante :
\begin{lstlisting}[escapechar=!,belowskip=0pt]
  \Pythagore[!\sffamily\textlangle clés\textrangle!]{!\sffamily\textlangle Nom du triangle\textrangle!}{a}{b}{c}
\end{lstlisting}
où
\begin{itemize}
\item\textlangle\lstinline!clés!\textrangle{} constituent un ensemble
  d'options pour paramétrer la commande (paramètres optionnels);
  \item \textlangle{\ttfamily Nom }\lstinline!du triangle!\textrangle{} désigne un triangle donné
    comme en mathématiques (le triangle $ABC$); le (potentiel ?)
    sommet de l'angle droit ayant la position centrale;
  \item \lstinline!a!, \lstinline!b! et \lstinline!c! sont les
    longueurs des côtés (paramètres obligatoires).
\end{itemize}

Pour effectuer les calculs, les paramètres \lstinline!a!,
\lstinline!b! et \lstinline!c! doivent respecter des conditions :
\begin{itemize}
\item calculer la longueur de l'hypoténuse d'un triangle
  rectangle, dont les côtés de l'angle droit mesurent \lstinline!a! et
  \lstinline!b!, se fait avec
  $\text{\lstinline!a!}\leqslant\text{\lstinline!b!}$ et \lstinline!c!
  vide;
\end{itemize}
  \begin{Codes}[listing side text]{0.5}{}
% Comme 7<8 alors la commande
% calcule la longueur
% de l'hypoténuse.
\Pythagore{ABC}{7}{8}{}
\end{Codes}
\begin{itemize}
\item calculer la longueur d'un côté de l'angle droit d'un
  triangle rectangle d'hypoténuse de longueur \lstinline!a! et dont
  l'autre côté de l'angle droit mesure \lstinline!b! se fait avec
  $\text{\lstinline!a!}>\text{\lstinline!b!}$ et \lstinline!c! vide;
\end{itemize}
  \begin{Codes}[listing side text]{0.4}{}
% Comme 10>5 alors la commande calcule
% la longueur du côté de l'angle droit
% manquant.
\Pythagore{IJK}{10}{5}{}
\end{Codes}
\begin{itemize}
\item déterminer si un triangle dont les côtés mesurent
  \lstinline!a!, \lstinline!b! et \lstinline!c! est rectangle se fait
  avec $\text{\lstinline!a!}>\text{\lstinline!b!}$ {\em et }
  $\text{\lstinline!a!}>\text{\lstinline!c!}$.
\end{itemize}
\begin{Codes}{0.4}{}
% Déterminer si le triangle est rectangle.
\Pythagore[Reciproque]{IJK}{5}{3}{4}
\end{Codes}
\subsection*{Calculer avec le théorème de Pythagore}
\begin{tcolorbox}[tikzRemarque]
  L'écriture du nom du triangle est à faire avec soin comme le montrent
  les exemples ci-dessous.
  \begin{multicols}{2}
    \begin{Codes}[colback=Crimson!15,colframe=Crimson!50]{0.5}{}
\Pythagore{AIR}{7}{3}{}
\end{Codes}
    \begin{Codes}[colback=Crimson!15,colframe=Crimson!50]{0.5}{}
\Pythagore{RIA}{7}{3}{}
    \end{Codes}
  \end{multicols}
\end{tcolorbox}
Les clés disponibles portent sur la
présentation générale, sur les calculs ou sur les
figures éventuellement associées aux calculs.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Soustraction|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Egalite|mygobble}
\begin{Key}{Soustraction}{false}
  permet d'afficher le théorème de Pythagore sous sa forme
  soustractive lorsqu'on calcule la longueur d'un côté de l'angle droit.
\end{Key}
\begin{Key}{Egalite}{false}
  permet de passer de l'écriture \og le théorème de
  Pythagore\fg{} à l'écriture \og l'égalité de Pythagore\fg\footnotemark.
\end{Key}
\end{tcolorbox}
\footnotetext{\'Ecriture qui
  était, un temps, apparue dans les programmes du cycle 4.}
\begin{Codes}[listing side text]{0.45}{}
\Pythagore[Soustraction]{IJK}{10}{5}{}
\end{Codes}
\begin{Codes}[listing side text]{0.4}{}
\Pythagore[Egalite]{FBT}{5}{7}{}
\end{Codes}
\clearpage
La partie \og calculs\fg{} de cette commande \lstinline!\Pythagore!
peut être paramétrée\footnote{Depuis la version {\ttfamily 0.99-z-o}, la clé \Cle{Exact} n'est plus utile.}.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Entier|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Racine|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Precision|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Unite|mygobble}
\begin{Key}{Entier}{false}
  supprime l'étape avec la racine carrée.
\end{Key}
\begin{Key}{Racine}{false}
  stoppe la rédaction au niveau de l'écriture de la réponse sous sa forme d'une racine carrée.
\end{Key}
\begin{Key}{Precision}{2}
  indique la précision à utiliser pour
  l'écriture de la valeur approchée de la réponse.
\end{Key}
\begin{Key}{Unite}{cm}
  permet le changement d'unité dans l'écriture finale de la longueur cherchée.
\end{Key}
\end{tcolorbox}
\begin{multicols}{2}
\begin{Exemple}[]{}
\Pythagore[Entier]{RST}{6}{8}{}
\end{Exemple}
\begin{Exemple}[]{}
\Pythagore[Racine]{IFB}{7}{5}{}%
\end{Exemple}
\end{multicols}
\begin{Codes}[listing side text]{0.5}{}
\Pythagore[Precision=3]{FBI}{6}{9}{}
\end{Codes}
\begin{tcolorbox}[tikzRemarque]
  \begin{itemize}
    \item Le calcul de la racine carrée est effectué jusqu'à la cinquième décimale.
    \item L'affichage de la réponse tient compte de la précision demandée mais également des règles mathématiques. Par exemple, on a : \[\sqrt{74}\approx\num{\fpeval{round(sqrt(74),11)}}\] mais avec une précision à $10^{-2}$ près, il est affiché : \[\sqrt{74}\approx\num{\fpeval{round(sqrt(74),2)}}\]
    \item Pour ne pas indiquer d'unité de longueur dans les calculs, on utilise la clé \lstinline!Unite={}! \textit{localement} ou la commande \lstinline!\setKVdefault[ClesPythagore]{Unite={}}! \textit{globalement}.
    \end{itemize}
\end{tcolorbox}
%\clearpage
Dans les calculs, on remarque qu'il n'y a pas de conclusion. Pour celle-ci, chacun peut écrire celle qu'il souhaite en utilisant
la commande \lstinline!\ResultatPytha!.
\begin{Codes}[listing side text]{0.4}{}
\Pythagore[Entier]{RST}{600}{800}{}
Le segment $[RT]$ mesure \ResultatPytha.
% Le nombre 1000 n'est pas "correctement"
% formaté avec la commande \ResultatPytha.
\end{Codes}
Mais attention, le nombre renvoyé par la commande
\lstinline!\ResultatPytha! n'est pas mis en forme automatiquement afin
d'anticiper une éventuelle réutilisation (page
\pageref{EnchainementPytha}). Cela peut se faire avec la commande
\lstinline!\Lg! (page \pageref{Grandeurs}).
\begin{Codes}[listing side text]{0.45}{}
\Pythagore[Entier]{RST}{6}{8}{}
La longueur $RT$ est égale
à \Lg{\ResultatPytha}.
\end{Codes}
%\clearpage
%La clé suivante va permettre de remédier au changement d'unité.
\begin{multicols}{2}
  \begin{Exemple}[]{}
\Pythagore[Unite=mm]{FBI}{9}{6}{}
\end{Exemple}
\begin{Exemple}[]{}
\Pythagore[Precision=3,Unite=km]{FBI}{9}{6}{}
\end{Exemple}
\end{multicols}
%\clearpage
\subsection*{Prouver qu'un triangle est rectangle}
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Reciproque|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Reciproque!ReciColonnes|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Reciproque!Faible|mygobble}
\begin{Key}{Reciproque}{false}
  permet de passer du calcul d'une longueur à la preuve qu'un triangle est ou n'est pas
  rectangle.
  \begin{SousDescription}
  \item[La clé \Cle{ReciColonnes}]\DefautR{false}
    permet de changer la présentation des calculs.
  \item[La clé \Cle{Faible}] \DefautR{false}
  permet d'enlever \og d'après la contraposée du théorème de Pythagore\fg{} dans la rédaction.
\item[La clé \Cle{Egalite}] est également disponible.
  \end{SousDescription}
\end{Key}
\end{tcolorbox}
\begin{Codes}[]{0.4}{}
\Pythagore[Reciproque]{ERS}{17}{15}{8}
\end{Codes}
\begin{Codes}[]{0.4}{}
\Pythagore[Reciproque,Faible]{IJK}{9}{5}{6}
\end{Codes}
\begin{Exemple}[]{}
\Pythagore[Reciproque,Egalite]{RST}{8}{4.8}{6.4}

\Pythagore[Reciproque,ReciColonnes]{IJK}{9}{5}{6}
\end{Exemple}
 \clearpage
%\begin{comment}
\subsection*{Ajouter une figure}
D'un point de vue de l'enseignement, il peut être intéressant
d'associer une figure à une rédaction.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Figure|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Figure!Angle|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Figure!Echelle|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!FigureSeule|mygobble}
  \begin{KeyS}{Figure}{false}
    crée et affiche une figure cohérente au nom du triangle et
    aux valeurs utilisés.
    \begin{SousDescription}
    \item[La clé \Cle{Angle}] \DefautR{0}
      modifie l'orientation des figures.
    \item[La clé \Cle{Echelle}] \DefautR{1cm}
      modifie l'unité de longueur des figures.
    \end{SousDescription}
  \end{KeyS}
  \begin{KeyS}{FigureSeule}{false}
    crée et affiche {\em uniquement} une figure cohérente au nom du triangle et
    aux valeurs utilisés.
    \begin{SousDescription}
    \item[Les clés \Cle{Angle} et \Cle{Echelle}] sont également disponibles.
    \end{SousDescription}
  \end{KeyS}
  \begin{tcolorbox}[tikzRemarque]
    La figure n'est pas centrée; l'utilisateur peut la placer selon ses souhaits.
  \end{tcolorbox}
\end{tcolorbox}

\begin{Codes}{0.4}{}
\Pythagore[Figure]{ILC}{5}{6}{}
\end{Codes}
\begin{Codes}{0.4}{}
\Pythagore[Reciproque,ReciColonnes,Figure,Echelle=8mm,Angle=30]{MJS}{8}{6}{4}
\end{Codes}
\begin{Exemple}[]{}
\Pythagore[FigureSeule,Angle=15,Echelle=7mm]{MJS}{8}{6}{}

\Pythagore[Reciproque,FigureSeule,Angle=30]{MJS}{8}{6}{4}
\end{Exemple}
\clearpage
\subsection*{\og Enchaîner\fg{} des calculs de longueurs}
On peut être amené\footnote{Situation proposée par Laurent {\sc
    Lassalle Carrere}.} à \og enchaîner\fg{} deux calculs de longueur à
l'aide du théorème de Pythagore\label{EnchainementPytha}. Si les nombres entiers et les
valeurs exactes peuvent être réutilisés sans problème, reste le cas de
la réutilisation des valeurs approchées comme sur la figure suivante\footnote{D'après
  \url{https://mep-outils.sesamath.net/manuel_numerique/diapo.php?atome=36618&ordre=1}.}.
\[\includegraphics{PythagoreSesamath-1}\]
\begin{Codes}[]{0.5}{}
\begin{multicols}{2}
  \Pythagore{EIR}{6}{10.5}{}%

  \columnbreak
  
  \Pythagore{NRE}{13.5}{12.09}{}%
\end{multicols}
\end{Codes}
Dans ce cas, si on écrit le théorème de Pythagore sous la forme :
\[\underbrace{\text{\sffamily EnchaineC}}_{\text{\sffamily ValeurC à substituer}}=\underbrace{\text{\sffamily EnchaineA}}_{\text{\sffamily ValeurA à substituer}}+\underbrace{\text{\sffamily EnchaineB}}_{\text{\sffamily ValeurB à substituer}}\]
il faut utiliser les clés ci-dessous.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\Pythagore+!EnchaineA|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!EnchaineB|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!EnchaineC|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!ValeurA|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!ValeurB|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!ValeurC|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!AvantRacine|mygobble}
\begin{KEYSl}{\Cle{EnchaineA}, \Cle{EnchaineB},
  \Cle{EnchaineC}}{false}
  indiquent quelle valeur doit
  être substituée.
  \begin{SousDescription}
    \item[Les clés \Cle{ValeurA},
  \Cle{ValeurB}, \Cle{ValeurC}]\Defauts{0}
  indiquent quelle valeur utiliser pour la substitution.
\end{SousDescription}
\end{KEYSl}
\begin{Key}{AvantRacine}{false}
  arrête l'écriture des calculs avant l'étape de la
  racine carrée.
\end{Key}
\end{tcolorbox}
\begin{Codes}{0.4}{}
\begin{multicols}{2}
  \Pythagore{EIR}{6}{10.5}{}%
  
  \Pythagore[EnchaineB,ValeurB=146.25,Exact,Entier]{NRE}{13.5}{12.09}{}%
\end{multicols}
\end{Codes}
% \columnbreak%
\begin{Codes}{0.4}{}
% Autre exemple.
\[\includegraphics{PythagoreSesamath-2}\]
\begin{multicols}{2}
  \Pythagore{ERN}{13.5}{6}{}%

  \Pythagore[EnchaineC,ValeurC=146.25,Exact,Entier]{EIR}{12.09}{10.5}{}
\end{multicols}
\end{Codes}
\begin{Codes}{0.4}{}
% On peut vouloir insister sur le fait que $ER^2=\num{146.25}$ est
% l'information utile.
\begin{multicols}{2}
  \Pythagore[AvantRacine]{ERN}{13.5}{6}{}%

  \columnbreak
  
  \Pythagore[EnchaineC,ValeurC=146.25,Exact,Entier]{EIR}{12.09}{10.5}{}
\end{multicols}
\end{Codes}
%\clearpage
On peut vouloir également enchainer les calculs avec pour objectif l'utilisation de la réciproque du théorème de Pythagore comme sur la figure suivante pour le triangle $GHM$ : est-il rectangle ?\PfCMAJ{0.99-z-l}
\begin{center}
\begin{Geometrie}[CoinHD={u*(10,6.5)}]
  trace papierisometrique withcolor orange;
  pair A,B,C,D,E,F,G,H,M;
  A=pp(2,2);
  B-A=pp(3,-1.5);
  C-B=pp(4,2);
  D-A=C-B;
  E-D=pp(0,2);
  F-A=E-D;
  G-B=E-D;
  H-C=E-D;
  M=3/5[B,C];
  trace chemin(G,M,H);
  label.llft(btex A etex,A);
  label.bot(btex B etex,B);
  label.rt(btex C etex,C);
  label.urt(btex H etex,H);
  label.top(btex E etex,E);
  label.ulft(btex F etex,F);
  label.bot(btex D etex,D);
  label.llft(btex G etex,G);
  label.bot(btex M etex,M);
  trace appelation(G,B,2mm,btex 4~cm etex);
  trace appelation(F,E,2mm,btex 10~cm etex);
  trace appelation(A,B,-3mm,btex 5~cm etex);
  trace appelation(B,M,-3mm,btex 6~cm etex);
  drawoptions(withpen pencircle scaled1.5bp);
  trace polygone(A,B,C,H,E,F);
  trace chemin(F,G,H);
  trace segment(G,B);
  trace chemin(A,D,C) dashed evenly;
  trace segment(D,E) dashed evenly;
\end{Geometrie}
\end{center}
\begin{Codes}[]{0.4}{}
\Pythagore[Reciproque,ValeurA=52,ValeurB=32,Faible]{GMH}{10}{8}{5}
\end{Codes}
\clearpage
\subsection*{Pour une remédiation}
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\Pythagore+!SansMots|mygobble}
  \index[cle]{Pythagore@\lstinline+\Pythagore+!Perso|mygobble}
\begin{Key}{SansMots}{false}
  écrit la résolution d'un calcul avec le théorème de Pythagore uniquement sous forme de figure.
  \begin{SousDescription}
    \item[Les clés \Cle{Angle} et \Cle{Echelle}] sont également disponibles.
  \end{SousDescription}
\end{Key}
\begin{Keyl}{\Cle{Perso}}{false}
  permet de personnaliser la rédaction.\\On utilisera les commandes \lstinline!\\RedactionPythagore!, \lstinline!\\RedactionReciPythagore! associées aux commandes \lstinline!\\NomTriangle!, \lstinline!\\NomAngleDroit! (ou \lstinline!\\NomSommetB!), \lstinline!\\NomSommetA! et \lstinline!\\NomSommetC!.
\end{Keyl}
\begin{Key}{AllPerso}{false}\index[cle]{Pythagore@\lstinline+\Pythagore+!AllPerso|mygobble}
  permet de personnaliser {\em entièrement} la rédaction du théorème de Pythagore et de sa réciproque.\\On dispose des commandes \lstinline!\\RedactionCalculsPythagore!, \lstinline!\\RedactionCalculsReciPythagore! et \lstinline!\\RedactionConclusionReciPythagore!.
\end{Key}
\end{tcolorbox}
%\clearpage
\begin{multicols}{2}
  \begin{Codes}[]{0.4}{}
\Pythagore[SansMots,Echelle=8mm]{ABC}{3}{5}{}
\end{Codes}
  \begin{Codes}[]{0.4}{}
\Pythagore[SansMots,Echelle=8mm]{IJK}{5}{3}{}
  \end{Codes}
\end{multicols}
%\begin{comment}


\begin{Codes}[listing side text]{0.465}{}
\renewcommand{\RedactionPythagore}{%
  Je sais que le triangle $\NomTriangle$ est rectangle en $\NomAngleDroit$. Donc j'applique le théorème de Pythagore :%
}
\Pythagore[Perso,Exact]{ABC}{10}{6}{}
\end{Codes}
\begin{Codes}[listing side text]{0.4}{}
\renewcommand\RedactionPythagore{%
  Je sais que le triangle $\NomTriangle$ est rectangle en $\pointilles[1.5cm]$. Donc j'applique le théorème de \pointilles[4cm].
}
\Pythagore[Perso,Exact]{IJK}{10}{6}{}
\end{Codes}
\begin{Codes}[]{0.45}{}
\renewcommand\RedactionReciPythagore{%
  Je sais que le côté $[\NomA \NomC]$ est le plus grand côté du triangle $\NomTriangle$.
}
\Pythagore[Reciproque,Perso]{IJK}{8}{5}{4}
\end{Codes}
\begin{Codes}[]{}{}
\renewcommand\RedactionReciPythagore{%
  Je sais que le côté $[\NomA \NomC]$ est le plus grand côté du triangle $\NomTriangle$.
}
\renewcommand\RedactionCalculsReciPythagore{%
  \begin{itemize}
  \item[$\blacktriangleright$] $\NomA \NomC^2=\pointilles[1.5cm]=\pointilles[1.5cm]$
  \item[$\blacktriangleright$] $\NomA \NomB^2+\NomB \NomC^2=\pointilles[1.5cm]+\pointilles[1.5cm]=\pointilles[1.5cm]+\pointilles[1.5cm]=\pointilles[1.5cm]$
  \item[$\blacktriangleright$] $\pointilles[1.5cm]=\pointilles[1.5cm]+\pointilles[1.5cm]$
  \end{itemize}
}%
\renewcommand\RedactionConclusionReciPythagore{%
  D'après la \pointilles[4cm] du \pointilles[4cm] de \pointilles[4cm], $\NomTriangle$ est \pointilles[4cm] en \pointilles[1cm].
}
\Pythagore[Reciproque,AllPerso]{ABC}{17}{8}{15}
\end{Codes}
%\end{comment}