X-Git-Url: https://melusine.eu.org/syracuse/G/git/?p=mp-gdd.git;a=blobdiff_plain;f=doc%2Fmp-gdd-doc.tex;h=f71d136e2e7d697b608dd655fbf723ef37f23fd7;hp=d92b03ad26b87d85f77286f785777f894f4dc3d7;hb=582bd872721899f23a1ef221b9d1abc57d39e759;hpb=eee9c7246fae994a97b84e63bbf9705a9ea490f1 diff --git a/doc/mp-gdd-doc.tex b/doc/mp-gdd-doc.tex index d92b03a..f71d136 100644 --- a/doc/mp-gdd-doc.tex +++ b/doc/mp-gdd-doc.tex @@ -3,16 +3,57 @@ \usepackage[charter]{mathdesign} \usepackage[margin=2.5cm]{geometry} \usepackage{xspace} +\usepackage{xcolor} \usepackage{multicol} \usepackage{listings} +\usepackage{showexpl} % examples \usepackage{mflogo} \usepackage[frenchb]{babel} + +\definecolor{hellgelb}{rgb}{1,1,0.85} +\definecolor{colKeys}{rgb}{0,0,1} +\definecolor{colIdentifier}{rgb}{0,0,0} +\definecolor{colComments}{rgb}{1,0,0} +\definecolor{colString}{rgb}{0,0.5,0} + + +\lstset{% + language=metapost,% + float=hbp,% + basicstyle=\ttfamily\small, % + identifierstyle=\color{colIdentifier}, % + keywordstyle=\color{colKeys}, % + stringstyle=\color{colString}, % + commentstyle=\color{colComments}, % + columns=flexible, % + tabsize=4, % + frame=single, % + extendedchars=true, % + showspaces=false, % + showstringspaces=false, % + numbers=left, + numbersep=0.8em, + numberstyle=\tiny, % + breaklines=true, % + breakautoindent=true, + captionpos=b, + xleftmargin=1em +} +\lstset{explpreset={pos=t,wide=false,rframe={},preset=\centering}} +\lstdefinestyle{syntax}{backgroundcolor=\color{blue!15},numbers=none,xleftmargin=0pt,xrightmargin=0pt, + frame=single} +\lstdefinestyle{code}{backgroundcolor=\color{red!15},%numbers=left, + xleftmargin=0pt,xrightmargin=0pt, + frame=single} + + \newcommand\mpgdd{\texttt{mpgdd}\xspace} \newcommand\fichier[1]{\texttt{#1}} \newcommand\variable[1]{\texttt{#1}} \newcommand\typeMP[1]{\texttt{#1}} \newcommand\typeGDD[1]{\texttt{#1}} +\newcommand\foncGDD[1]{\texttt{#1}} \begin{document} @@ -51,7 +92,7 @@ distributions \TeX. \mpgdd utilise des tables comme structure principale. Chaque objet est numéroté via le compteur \variable{gddO}, son -type\footnote{Les types son propres à \mpgdd et seront décrit plus +type\footnote{Les types sont propres à \mpgdd et seront décrit plus tard.} est stocké dans la table \variable{gddT[]} à la place \variable{gddT[gddO]}. Les propriétés des objets sont définies dans, là encore, des tables de type \typeMP{numeric} qui sont @@ -66,7 +107,9 @@ Il y a deux tables particulières \variable{gddP[]} qui est du type \typeMP{string}. Nous verrons plus tard quelle est leur utilité. Bien entendu, lors d'une utilisation classique de \mpgdd, l'appel à -toutes ces tables n'est pas chose courante. +toutes ces tables n'est pas chose courante. Les fonctions que nous +allons décrire dans la suite de ce documents permettent de ne pas +avoir recours trop précisément à cette machinerie. \section{Les types} @@ -82,7 +125,7 @@ leurs propriétés respectives. \paragraph{Le type \typeGDD{point}} Ce type correspond au point de l'espace euclidien. Pour être plus clair voici la fonction principale pour créer un tel objet : - +% \begin{lstlisting} vardef Point(expr a,b) = gddT[incr gddO] = "point"; @@ -90,6 +133,40 @@ vardef Point(expr a,b) = enddef; \end{lstlisting} +Cette fonction «retourne» le compteur \variable{gdd0} et crée dans la +table de type une entrée \typeGDD{point} et les attributs (coordonnées) +correspondants \variable{a} et \variable{b} dans les tables +\variable{gddA} et \variable{gddB}. + +Avec un tel type de fonctionnement, la plupart des manipulations se +fait sur des \typeMP{numeric}s. En effet, pour déclarer un +\typeGDD{point}, il suffit d'écrire +\begin{lstlisting} +A = point(2,3); +\end{lstlisting} +\variable{A} prend alors la valeur courante de \variable{gddO}. C'est +l'identifiant de du point. + +\paragraph{Le type \typeGDD{vecteur}} Ce type correspond aux vecteurs +définis à l'aide de deux points de l'espace euclidien. La fonction +créatrice d'un tel objet est celle-ci +% +\begin{lstlisting} +vardef Vecteur(expr a,b) = + save n; n = incr gddO; + gddT[n] = "vecteur"; gddA[n] = PointImp(a); gddB[n] = PointImp(b); n +enddef; +\end{lstlisting} +Cette fonction a la même architecture que celle correspondante au +\typeGDD{point} : elle retourne la valeur courante de \variable{gddO} +après incrémentation, puis affecte le type \typeGDD{vecteur} à +l'entrée correspondante dans la table \variable{gddT}. Par contre, les +entrées des tables \variable{gddA} et \variable{gddB} sont +différentes. En effet, on stock ici les identifiants des points +formant le vecteur. La fonction \foncGDD{PointImp} s'assure que +l'entrée correspond bien à un identifiant de point et non pas une +\typeMP{pair} \MP. Elle sera décrite plus en détail ultérieurement. + \section{Fonctions générales}