Projet : imaple
I Présentation de Maple
- Présentation générale et caractéristiques
o Les différents logiciels mathématiques
o Caractéristiques graphiques
- Le langage Maple
o Affectation des variables
o Procédures et fonctions
o boucles
- Performances et limitations
o plus de 2500 fonctions usuelles
o rapidité de calcul
o une syntaxe « barbare »
o un programme en ligne de commande
- Cmaple.exe
II Interface logiciel avec le C++
- La fonction pipe
- Quelques caractéristiques du C++
o un langage orienté objet
o le polymorphisme
o l’héritage
- Windows.h
o Structure des pages Windows
III Le logiciel
- Capture d’écran
- Structure
Bibliographie
Annexe
- Le fichier source du programme
Maple est un logiciel orienté vers le calcul mathématique formel. Cette application est maître dans le domaine théorique et calculatoire. Elle reste donc largement répandu en université et couramment utilisé par les enseignants de mathématique
- Présentation générale et caractéristique
o Les différents logiciels mathématiques
Voici deux autres logiciels orientés vers le calcul mathématique
Matlab
Matlab est un environnement de calcul numérique orienté vers des applications professionnelles, largement connu et utilisé dans l'industrie.
Mathematica
Mathematica est un système logiciel modulaire dans lequel le noyau qui effectue les calculs est séparé de l’interface frontale qui traite les informations avec l’utilisateur
o Caractéristiques graphiques
Interface
L’interface de Maple se présente sous la forme d’un éditeur de texte sur lequel il est possible d’ouvrir des feuilles de calcul ( appelé woksheet ) afin d’exécuter des requêtes. Une fois une fonction définie, elle peut être représentée graphiquement, intégrée, dérivée ou évaluée grâce à un menu sur le click-droit. D’autre fonctions sur disponibles sur la barre d’outil tel que des outils pour modifier un tracé de courbe ou un graphique (zoom, déplacer, changer les repère), pour importer des images (ou autre document flash, power point, words…).
Latex
Latex est un petit programme additionnel de Maple permettant de représenter les diverses fonctions mathématiques sous la forme d’image et de les exporter sur la feuille de calcul. C’est cet outil qui génère les tracés de courbe et permet l’utilisation des symboles mathématiques
Graphisme 2d
Voici deux exemples de la fonction plot:
restart;
with(plots):
plot( sin(x), x=0..infinity );
Graphisme 3d
restart;
with(plots):
animate3d(cos(t*x)*sin(t*y),x=-Pi..Pi, y=-Pi..Pi,t=1..2);
fieldplot3d([2*x,2*y,1],x=-1..1,y=-1..1,z=-1..1,grid=[5,5,5]) ;
Expression mathématique
Latex permet également d’utiliser les symboles mathématiques
Int(sqrt(x)*exp(-x^2)*ln(x),x = 0 .. infinity);
Exportation html
Maple offre également la possibilité d’exporter une fonction vers une page html incluant les images crées avec latex. ( utile pour la publication de ses recherches )
- Le langage Maple
Le langage Maple est un langage linéaire un peu particulier puisqu’il a du être adapté aux équations mathématiques. Quelqu’une de ses particularités sont détaillés si dessous.
o Affectation des variables
X : = 5 ;
o Procédures et fonctions
Les procédures sont des fonctions admettant en entrée une unique variable
restart;
f := proc(x) x^2 end;
f := proc(x) x^2 end
f(a+b);
2
(a + b)
a := 3; b := 4.5;
a := 3
b := 4.5
f(a+b);
56.25
la fonction ici réalisé est la fonction carré
o boucle
Comme tout langage de programmation, Maple offre la possibilitée de réaliser des boucles
for i from 6 by 2 to 100 do print(i) od;
afficher les nombres de 6 à 100 par pas de 2
- Performance et limitation
o plus de 2500 fonctions usuelles
Le nombre de fonctions mathématiques répertoriées par Maple est relativement important. De plus, ce logiciel nous permet de redéfinir les fonctions à notre convenance ou d’en recréer d’autre. Voici une liste non exhaustive de fonctions utilisées par Maple :
Fonctions trigonométriques
|
sinus |
cosinus |
tangente |
secante |
cosecante |
cotangente |
direct |
sin |
cos |
tan |
sec |
csc |
cot |
hyperbolique |
sinh |
cosh |
tanh |
sech |
csch |
coth |
inverse |
arcsin |
arccos |
arctan |
arcsec |
arccsc |
arccot |
Hyperbolique inverse |
arcsinh |
arccosh |
arctanh |
arcsech |
arccsch |
arccoth |
intégrale |
Si |
Ci |
|
|
|
Hyperbolique intégrale |
Shi |
Chi |
|
|
|
Autre fonction définie par une intégrale
Li - Logarithme intégral
Ei - Exponentielle intégrale
Logarithme , exponentielle, factorielle et racine carrée
ln - logarithme naturel
log - logarithme sur une base arbitraire
log10 - log de base 10
exp - fonction exponentiel
factorial - fonction factoriel ( x ! )
sqrt - racine carrée
Séquentiel
max, min - maximum/minimum of a sequence of real values
round - l’entier le plus proche d’un nombre
ceil - l’entier inférieur le plus proche d’un nombre
Complexe
argument - argument d’un nombre complexe
conjugate - calcul le conjugué d’un nombre complexe
Im - partie imaginaire d’un nombre complexe
Re - partie réelle d’un nombre complexe
Polar - représentation des nombres complexe en coordonnés polaire
abs - valeur absolue
Fonction Eulérienne
Beta - fonction Beta
GAMMA - Gamma and incomplete Gamma functions
Zeta - Fonction Zeta de Riemann and Hurwitz
Fonction Erreur
erf - fonction erreur
erfc - fonction erreur complémenté
erfi - fonction erreur imaginaire
Dirac - fonction Dirac
Heaviside - fonction Porte
Autre fonction :
Jacobienne, Kelvin, Bessel, Kummer, Legendre, LerchPhi, Lommel, Meijer, Lamber, Weber, Weierstras, Whittaker
o rapidité de calcul
Un des logiciels le plus rapide sur le marché.
o output et input
Les fichiers Maple sont enregistrés aux formats *.mws et *.txt. Le logiciel enregistre également dans le fichier les résultats (avantage pour la publication mais inconvénient pour la réutilisation du code).
o une syntaxe « barbare »
La syntaxe utilisée par Maple présente une grande féxibilité pour l’utilisation ou l’élaboration de fonctions mathématiques .Toutefois, l’utilisation de ce logiciel pour les personnes non-habituées représente une réelle difficulté. De plus il est difficile de lire les fichiers msw pour un utilisateur ne connaissant pas la syntaxe.
o un programme en ligne de commande
Un avantage et un inconvénient de ce programme est l’interprétation des résultats en ligne de commande.
- Cmaple.exe
Il existe une alternative à l’utilisation de Maple version Windows : cmaple.exe. Ce programme utilise la base de calcul de Maple et fonction en mode dos
Le C est un langage système (donc permettant d’accéder à un niveau de ressource dis bas permettant l’accès aux disque dur, à la mémoires vive, aux registre ,aux ports…) et un langage évolué (utilisant une syntaxe interprétée et donc plus facile d’écriture) créé dans les années 1970 par un ingénieur du nom de Dennis Ritchie.
Le C++ ( baptisé C with classes) est né en 1980
- Quelques caractéristiques du C++
Ce langage a révolutionné l’informatique
o Un langage orienté objet
Les premiers langages de programmation étaient généralement constitués d’une suite d’instructions s’exécutant de manière linéaire. (nous avons vu l’année précédente un exemple avec l’assembleur. C’est également le cas de Maple). Cette approche linéaire, bien que simple à mettre en œuvre, a très rapidement montré ses limites. En effet les programmes monolithiques de ce type ne se prêtent pas à l’écriture de grosses applications et ne favorisent pas la réutilisation du code.
L’approche procédurale (ou modulaire) consiste à découper un programme en une série de fonctions. Dans le cas de l’approche procédurale, un programme correspond à l’assemblage de plusieurs fonctions qui s’appellent entres-elle. Ce qui n’est pas le cas de Maple puisqu’il n’existe pas de fonction principale et l’exécution est en ligne de commande. Le C++ passe de la programmation procédurale à la programmation orientée objet.
Le terme objet est parfois abusivement employé pour désigner ce que l’on appelle en C++ une classe (un moule, un gabarit correspondant à la déclaration d’un type de donné).
Un programme qui utilise l’approche objet s’appuie sur trois techniques fondamentales qui sont :
L’encapsulation permettant de réunir au sein d’une même entité les variables et les fonctions. Cette technique s’accompagne d’un système de protection qui permet de contrôler l’accès aux donnés. Cela signifie qu’il est possible de cacher le fonctionnement interne d’une classe.
l’héritage permettant de réutiliser les classes existantes. Grâce à cette technique, il est possible de définir des arborescences de classes (générales vers spécialisées).
le polymorphisme s’appliquant aux fonctions membres des classe et permettant à deux objets de réagir différemment au même appel d’une méthode (pour des types différant par exemple).
- Windows.h
Windows.h est une librairie d’entête (.h) permettant de réaliser des applications windows.
- la fonction pipe
Une fonction intéressante du C++ est la fonction pipe permettant d’ouvrir un programme (dans notre cas cmaple.exe), de lui transférer des arguments en ligne de commande ici –c « read(fichier_transfert) » commandant à Maple d’ouvrir un fichier texte et de l’exécuter. Le résultat de la requête est retourné par la fonction print() de Maple.
Nous avons à présents tous les outils pour réaliser une interface de contrôle à Maple
- Capture d’écran
Sur cette capture d’écran on peux voir les deux principaux dialogues du logiciel : l’interface permettant d’éditer le texte Maple avant d’envoyer la requête, la calculette permettant de rendre le langage Maple transparent (ou presque) à l’utilisateur et la fenêtre résultat du calcul. On peut également remarquer le fichier créé transfert_in dans lequel est enregistrer la requête envoyé à Maple
- Sa structure
Imaple est constitué de 5 fichiers
o Imaple.dev :
Fichier projet du programme. Ce fichier n’est pas indispensable puisqu’il est créé par Dev C++ (le compilateur utiliser pour ce projet) lors de la première compilation du programme
o main.cpp :
Fichier source principal du programme . Ce fichier contient la majorité des fonctions utilisées pour le logiciel.
Il comprend entre autre le point d’entrée de l’application avec la fonction WinMain (qui correspond à la fonction main() pour Borland C++ et pour le C en exécution dos) ainsi que les deux procédures DialogProc et WindowProc recevant les messages envoyés par exemple par les boutons.
Les deux procédures correspondent aux deux fenêtres interface Maple et calculette et possèdent chacune leur handle (boucle fermer testant l’existence d’un message msg d’entrée)
Ce fichier comprend également la définition des classes du logiciel (icône, curseur, background …) ainsi que la déclaration de la fonction transfert_maple() permettant de créer le pipe entre le logiciel et cmaple.exe
o res.rc :
fichier ressource du projet. Ce fichier comprend essentiellement le template de la boite de dialogue calculette.
Dans le dossier includes
o ressources.h :
Fichier comportant les fonctions : CreateWindows, CreateButton, CreateStatic, CreateEdit permettant respectivement de créer la fenêtre principale, les boutons, le texte et une boite d’édition. Ces fonctions ont été réalisées dans un souci de meilleur lisibilité du programme principal.
o define.h :
Fichier contenant les variables statiques interprétées par le pré-procésseur . Leurs valeurs ne peuvent pas être changées. Ces variables sont écrites en MAJUSCULE et sont remplacer avant la compilation par leur valeur attribuées.
o app_winedi.ico :
fichier icône du programme
o app_ediwin.cur :
Curseur utilisé dans le programme
Les autres fichier sont créés lors de la compilation et ne sont pas indispensable. On trouve entre autre
- main.o fichier objet relatif au lien lors de la compilation
- projet01_private.rc ressource privé du compilateur
- projet01_private.res
- Makefile.win
- Le fichier transfert_in est créé par le programme et correspond à la requête envoyé à maple
Attention pour cette version du programme ( V 1.2 ) le dossier interface maple v1.2 doit obligatoirement être dans le dossier BIN.WNT de maple pour fonctionner correctement.
Livre :
Le langage C++ collection CampusPress, 425 pages, écrit par Stéphane Dupin
Site Internet :
Ressources ou fichiers sources de quelques programmes :
o http://www.CPPfrance.com
o http://www.programmationworld.com
o http://www.planet-source-code.com
forum
o http://www.developpez.com
tutorial
o http://perso-iti.enst-bretagne.fr/~brunet/Cours/Tutorial_C++/index.html
L’aide du logiciel Maple (relativement complète)
Télécharger documentation programme (exe)
|