From 8626b278cdccd95e628f14c027ae8a1c47133c48 Mon Sep 17 00:00:00 2001 From: biouman Date: Wed, 2 May 2001 22:08:03 +0000 Subject: *** empty log message *** --- doc/description.tex | 18 +------- doc/exemples.tex | 81 ++++++++++++++++++++++++++++++++++++ doc/manuel.tex | 115 ++++++++++++++++++++-------------------------------- doc/polynom.tex | 4 +- 4 files changed, 130 insertions(+), 88 deletions(-) create mode 100644 doc/exemples.tex (limited to 'doc') diff --git a/doc/description.tex b/doc/description.tex index e86c698..78556f0 100644 --- a/doc/description.tex +++ b/doc/description.tex @@ -1,19 +1,3 @@ \chapter{Description} \paragraph{} -Nous allons décrire dans cette première partie tous ce que nous avons effectué comme travail de réflexion afin de -programme ce projet. Il y a beaucoup de détails relatifs à l'implémentation dont nous ne parlerons pas, comme les structures -sur les listes chaînées, ou l'initialisation du terminal pour gérer le menu du programme de test. En revanche, nous appuyerons -sur les détails d'implémentation purement algorithmiques qui nous ont posé problème. -\paragraph{} -En ce qui concerne le langage de programmation, nous avons choisi le C++, car c'est le langage qui nous semblait le plus -adapté pour créer les structures de données nécessaire à la programmation de ce projet. -\paragraph{} -Nous avons implémenté les algorithmes de files de priorités suivants: -\begin{itemize} -\item Tas Binaire -\item Tas Binomial -\item Tas de Fibonacci -\item Liste chaînée triée -\end{itemize} -\paragraph{} -L'algorithme utilisant les files de priorité implémenté est l'algorithme de compression de dictionnaire Huffman. + diff --git a/doc/exemples.tex b/doc/exemples.tex new file mode 100644 index 0000000..a58cc2b --- /dev/null +++ b/doc/exemples.tex @@ -0,0 +1,81 @@ +\chapter{Exemples d'utilisation} +\paragraph{} +Lorsque le programme principal se lance, nous obtenons un invite simple: +\begin{verbatim} +$ ./Polynom +Polynomia v1.0 + + +Performing initialisation... + + +Starting interface... + +> +\end{verbatim} + +La flexibilité de l'interface est extrème, et nous permet, à la manière MAPLE, de taper sous une +forme naturelle nos polynomes. Voici un exemple d'utilisation "simple": + +\begin{verbatim} +> A = x^4 + 2*x^3 - x + 6; + + . x^4 + 2x^3 - x + 6 + +> B = x^3 - 6*x^2 + x + 4; + + . x^3 - 6x^2 + x + 4 + +> A + B; + + . x^4 + 3x^3 - 6x^2 + 10 + +> A - B; + + . x^4 + x^3 + 6x^2 - 2x + 2 + +> A / B; + + . x + 8 + +> A % B; + + . 47x^2 - 13x - 26 + +> A(2); + + . 36 +\end{verbatim} + +Comme à la manière MAPLE, il est possible d'évaluer des polynomes en cours de route. Par exemple: + +\begin{verbatim} +> P = A + 2*x - 3*B; + + . x^4 - x^3 + 18x^2 - 2x - 6 +\end{verbatim} + +Enfin, il y a des appels de fonctions prédéfinis, dont l'appel à la fonction d'évaluation d'un polynôme: + +\begin{verbatim} +> P(3); + + . 204 +\end{verbatim} + +Le parseur de ligne étant totalement flexible, il est possible de mélanger toutes les fonctionnalités ensembles: +\begin{verbatim} +> (2*P + B)(3); + + . 388 + + +> (R = 2*P^2 - 2*x)(36) * x^2 - 10; + + . 1389891136x^2 - 10 + +> R; + + . 2x^8 - 4x^7 + 74x^6 - 80x^5 + 632x^4 - 120x^3 - 424x^2 + 46x + 72 + +\end{verbatim} diff --git a/doc/manuel.tex b/doc/manuel.tex index 9a0d765..b09ea9f 100644 --- a/doc/manuel.tex +++ b/doc/manuel.tex @@ -1,81 +1,56 @@ -\chapter{Manuel d'utilisation} +\chapter{Manuel} +\section{Procédure de compilation} \paragraph{} -Lorsque le programme principal se lance, nous obtenons un invite simple: +L'arborescence de notre projet respecte le standard d'arborescences des projets GNU, +en outre nous avons utilisé les logiciels Autoconf et Automake pour gérer la compilation. +La procédure standard pour compiler ce projet est alors la suivante : \\ \begin{verbatim} -$ ./Polynom -Polynomia v1.0 - - -Performing initialisation... - - -Starting interface... - -> -\end{verbatim} - -La flexibilité de l'interface est extrème, et nous permet, à la manière MAPLE, de taper sous une -forme naturelle nos polynomes. Voici un exemple d'utilisation "simple": - -\begin{verbatim} -> A = x^4 + 2*x^3 - x + 6; - - . x^4 + 2x^3 - x + 6 - -> B = x^3 - 6*x^2 + x + 4; - - . x^3 - 6x^2 + x + 4 - -> A + B; - - . x^4 + 3x^3 - 6x^2 + 10 - -> A - B; - - . x^4 + x^3 + 6x^2 - 2x + 2 - -> A / B; - - . x + 8 - -> A % B; - - . 47x^2 - 13x - 26 - -> A(2); - - . 36 +./configure && make all install \end{verbatim} +Mais étudions plus en détail chacune de ces deux étapes: -Comme à la manière MAPLE, il est possible d'évaluer des polynomes en cours de route. Par exemple: +\paragraph{configure} +Ce script va générer autoatiquement tous les Makefiles en fonction des informations contenues +dans les fichiers Makefile.am ainsi que des informations qu'il aura récupérées sur le système, +notamment relatives au compilateur, à l'éditeur de liens, à la gestion de librairies dynamiques... +On peut avoir l'ensemble de ses options en l'invoquant par la commande : \begin{verbatim} -> P = A + 2*x - 3*B; - - . x^4 - x^3 + 18x^2 - 2x - 6 +./configure --help \end{verbatim} - -Enfin, il y a des appels de fonctions prédéfinis, dont l'appel à la fonction d'évaluation d'un polynôme: - +Si l'on veut par exemple compiler le programme avec un répertoire d'installation qui serait ~/usr/Polynom +en activant l'affichage des messages de débogage, on lancera \begin{verbatim} -> P(3); - - . 204 +./configure --prefix=~/usr/Polynom --with-debug \end{verbatim} -Le parseur de ligne étant totalement flexible, il est possible de mélanger toutes les fonctionnalités ensembles: +\paragraph{make} +L'utilitaire bien connu qui permet de lancer les compilations, il va interpréter tout d'abord le Makefile +principal à la racine du projet puis entrer dans chaque sous répertoire et interpréter récursivement +tous les Makefiles qu'il va rencontrer. L'exécutable final se trouvera dans le répertoire src et se nomme +\textit{Polynom}. +La 'cible' all crée l'exécutable et la cible install l'installe avec ses librairies dans l'endroit +précisé par --prefix dans la ligne de commande de configure. Il est à noter que l'emplacement par défaut +se situe dans /usr/local, or ce dossier n'est typiquement accessible en écriture que par les administrateurs, +c est pourquoi nous vous conseillons de préciser l'option --prefix lors de l'appel de configure. + +\section{Exécution du programme} +Le programme Polynom peut prendre un argument sur la ligne de commande à savoir la chaine de caractères +servant à décrire la variable muette dans les polynomes, par défaut celle-ci est initialisée à "x". +On invoque alors le programe comme suit: % FIXME ligne de commande \begin{verbatim} -> (2*P + B)(3); - - . 388 - - -> (R = 2*P^2 - 2*x)(36) * x^2 - 10; - - . 1389891136x^2 - 10 - -> R; - - . 2x^8 - 4x^7 + 74x^6 - 80x^5 + 632x^4 - 120x^3 - 424x^2 + 46x + 72 - -\end{verbatim} +./src/Polynom +\end{verbatim} +Le programme propose alors son propre interpréteur de commandes, bien entendu dévoué au calcul polynomial. +Les opérateurs reconnus sont les opérateurs classiques sur les polynomes à savoir '+', '-', '*', '/', '\%', '^', '='. +De plus nous avons implémenté quelques fonctions utiles, soit au calcul polynomial, soit à l'uilisation du +programme lui même : +\begin{itemize} +\item les fonctions mathématiques deriv, derivn et int pour le calcul de la dérivée, de la dérivée $n^{ième}$ et de la primitive. +\item les fonctions auxiliaires : printvars() pour l'affichage des variables, help() pour l'aide en ligne, +setdisplay(n) pour le mode d'affichage des scalaires, reinit() pour la réinitialisation su calculateur et exit() pour quitter le programme. +\end{itemize} +On notera que l'évaluation fonctionne comme dans nombre d'interpréteurs en ce qui concerne la ligne de commande, +il est nécessaire de terminer chaque ligne par un point-virgule. +Ce programme possède enfin une variable "interne" ANS, mise-à-jour automatiquement à chaque évaluation, celle-ci contenant +toujours le résultat de l'opération précédente. diff --git a/doc/polynom.tex b/doc/polynom.tex index c4d4157..45aa064 100644 --- a/doc/polynom.tex +++ b/doc/polynom.tex @@ -62,11 +62,13 @@ \part{Synthèse} \input{manuel} \clearemptydoublepage +\input{exemples} +\clearemptydoublepage \input{outils} \clearemptydoublepage \chapter{Code source} -\lstset{language=C++,basicstyle=\scriptsize,stringspaces=false} +\lstset{language=C,basicstyle=\scriptsize,stringspaces=false} \input{source} \clearemptydoublepage -- cgit v1.2.3