
\documentclass[10pt,a4paper]{report}
\usepackage[height=250mm,width=183mm]{geometry}
\usepackage{preambule}
\usepackage[upright]{fourier}


\entete{ Informatique 1 - \NomLecon  }{\thesec - \NomSection}{Lycée Jean Perrin - 2\textsuperscript{ale} 8 }

\graphicspath{{/home/moi/Photos/Tehessin/}{/home/moi/Figures/FigSTI/}{/home/moi/Figures/FigXCAS/}}




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



%\TITRE{}{Informatique }{Initiation à la  }{programmation}{}{notice.eps}


%\TITRE{ }{Informatique }{Initiation à la}{programmation}{ }{notice.eps}
%bl

\setcounter{NumLecon}{0}
%         \TITREC{Informatique }{Initiation en Seconde }{0.8white}
         


\vspace{1cm}




\section{Avant de commencer}

XCAS est un logiciel libre de calcul formel. En particulier, vous allez pouvoir le télécharger gratuitement en toute légalité sur 

\begin{center}

\url{http://www-fourier.ujf-grenoble.fr/~parisse/irem.html}

\end{center}


Nous verrons plus tard ce que veut dire calcul formel. Pour aujourd'hui, nous commencerons doucement puisque le but de notre séance est de créer un programme qui teste l'appartenance d'un point de coordonnées (X,Y) à une droite d'équation $y=ax+b$.
On veut qu'il nous donne la réponse si on se contente de lui   rentrer dans l'ordre les coefficients $a$ et $b$ puis les coordonnées X et Y.

\section{Allumons l'ordinateur}

Je pense que vous en êtes capables...

Vous avez cliqué sur l'icône correspondant à \Prog{XCAS}. Vous voyez normalement ceci, à la couleur
près~:


\begin{center}
  \includegraphics[width=\textwidth]{saisiedepart.eps}
\end{center}





Si tel n'est pas le cas, allez dans le menu \code{Cfg->configuration du CAS->niveau} et choisissez
\code{Universite} car vous êtes très fort(e).

Dans ce même onglet \code{Cfg}, vous pouvez modifier la taille de la police, les couleurs.

Nous voici prêts à programmer.


\section{Que voulons-nous que l'ordinateur fasse~?}

Nous voudrions donner uniquement comme renseignements à l'ordinateur les coefficients $a$ et $b$ de
l'équation réduite de la droite et les coordonnées (X,Y) du point à tester. Pour que \Prog{XCAS} comprenne ce que l'on veut de lui, il faudra parler son langage.

\section{Procédure}

Une procédure est une sorte de  fonction informatique qui a un nom,  un début et une fin et qui
dépend d'un certain nombre de variables fournis par l'utilisateur. On peut par exemple appeler notre
procédure \code{pointsurdroite} et son  squelette ressemblera à ça~:

\begin{lstlisting}
pointsurdroite(a,b,X,Y):={  // c'est le titre du programme...
                            // On indique qu'on rentrera dans l'ordre a,b,X et Y
                            // il faudra rentrer des instructions ici
  }                         // marque la fin du programme
\end{lstlisting}

\section{Fonction}

Notre but est de vérifier si $2X+1=Y$. Il faut donc d'abord faire calculer $2X+1$ par
l'ordinateur. On introduit donc une fonction comme on a l'habitude de le faire en cours. Donnons un
nom à la fonction affine associée à la droite~:~soit $f~:~x\mapsto 2x+1$. La syntaxe est
pratiquement la même pour \Prog{XCAS}~:

\begin{lstlisting}
f:=x->2*x+1
\end{lstlisting}


Alors, pour calculer par exemple l'image de 4 par \code{f} on rentre


\begin{lstlisting}
f(4)
\end{lstlisting}

Ben oui, $2\times 4+1=9$.


\section{SI...ALORS...SINON}

Que faites-vous pour savoir si un point appartient à une droite donnée ?

SI ..................  ALORS .............................. SINON....................................

\Prog{XCAS} parle presque la même langue~:

\begin{lstlisting}
si (la condition à tester)
alors action 1; 
sinon action2; 
fsi;     // pour dire que c'est fini...
\end{lstlisting}

Nous y sommes presque....

\section{Variables locales}

La variable \code{f} que nous introduisons \textit{à l'intérieur} du programme n'est pas rentrée par
l'utilisateur : c'est l'ordinateur qui la crée suite à nos instructions. On n'en a plus besoin en
dehors du programme et on va donc libérer la case mémoire où elle se trouvait. On dit que c'est une variable locale.

On l'introduit par~:

\begin{lstlisting}
local f;
\end{lstlisting}




\section{Le programme...}



Récapitulons :

\begin{itemize}

\item Une ligne pour introduire le programme
\begin{lstlisting}
pointsurdroite(a,b,X,Y):={ 
\end{lstlisting}

\item une ligne pour introduire la variable locale~:


\begin{lstlisting}
local f;
\end{lstlisting}

\item une ligne pour dire qui est \code{f}~:



\begin{lstlisting}
f:=x->a*x+b
\end{lstlisting}

En effet, on rentre $f$ de la manière la plus générale car on veut pouvoir
traiter toutes les fonctions affines.

\item le c\oe ur du programme~:



\begin{lstlisting}
si (f(X)==Y) alors "le point appartient à la droite"; 
sinon "le point n'appartient pas à la droite"; 
fsi;
\end{lstlisting}



L'égalité sur \Prog{XCAS} est traitée par \code{==}. 

Pour faire comprendre qu'on rentre une phrase que l'ordinateur n'a pas besoin de lire mais qui est
juste là pour aider l'utilisateur, on la met entre guillemets \verb+" "+.

\item on ferme la procédure~:



\begin{lstlisting}
}:;
\end{lstlisting}

\section{Comment l'utiliser ?}

Pour savoir si le point de coordonnées (2;5) appartient à la droite d'équation $y=3x+1$, on rentre



\begin{lstlisting}
pointsurdroite(3,1,2,5)
\end{lstlisting}

Faites d'autres essais.


\end{itemize}



\section{Un peu d'esthétique...}

Au lieu de répondre impersonnellement \og  le point appartient à la droite \fg, on aimerait obtenir la réponse \og le point de coordonnées (2,5) appartient à la droite d'équation $y=3x+1$\fg.

Ça devrait être possible car les coordonnées du point et les coefficients de l'équation sont stockés par \Prog{XCAS} sous les appellations $a$, $b$, X et Y.

Il suffit ensuite de savoir que \Prog{XCAS} \og colle \footnote{On dit concatène}\fg les morceaux de \og phrases\fg à l'aide du symbole \code{+}.

Cela donne donc~: 


\begin{lstlisting}
"Le point de coordonnées (" + X +" , "+ Y +") appartient à la droite d'équation y="+ a +"x +"+ b; 
\end{lstlisting}

\begin{figure}
              \begin{DANGER}
              On ne met pas X entre guillemets car X doit être lu par \Prog{XCAS} et traduit par la
              valeur qu'on aura rentré en 3\eme position.
               \end{DANGER}
               \end{figure}

\section{Tracé}

On peut aussi demander d'afficher le point de coordonnées (X,Y) et la droite d'équation $y=ax+b$. Pour cela, on utilise \code{point} et \code{graphe}~:

\begin{lstlisting}
D:=graphe(f(t),t);  
A:=point(X,Y);  
\end{lstlisting}

Pour régler l'affichage du point en plus gros pour bien le voir en rouge~:


\begin{lstlisting}
affichage(epaisseur_point_5+rouge);
\end{lstlisting}


Le programme devient alors~:


\begin{lstlisting}
pointsurdroite(a,b,X,Y):={
local f,D,A;
f:=t->a*t+b; // la fonction
affichage(epaisseur_point_5); // le point épai
  D:=graphe(f(t),t,couleur=bleu);  // On affiche D 
  A:=point(X,Y); // on affiche A
si (f(X)==Y) alors 
afficher("Le point de coordonnées ("+X+","+Y+") appartient à la droite d'équation y="+a+"x+"+b);A,D; 
sinon 
afficher("Le point de coordonnées ("+X+","+Y+") n'appartient pas à la droite d'équation
y="+a+"x+"+b);A,D; // de même si le point n'est pas au bon endroit
 fsi;
}:;
\end{lstlisting}






On a rajouté \code{afficher( )}  car nous demandons à \Prog{XCAS} de retourner à la fois la phrase et un graphique : \code{afficher( )} permet en fait d'afficher un résultat intermédiaire.

Le résultat est affiché en-dessous~:

\begin{center}
  \includegraphics[width=\textwidth]{capturedroite.eps}
\end{center}



\section{Sans parachute...}

À vous d'imaginer une procédure \code{AppartientCourbe(expression,X,Y)} qui teste si un point de coordonnées (X,Y) appartient à la courbe d'équation y=expression.

\end{document}










\end{document}
