Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Sep 30, 2020. It is now read-only.

📰 [ISEN] Un mini-interpréteur pour un mini-langage mathématique.

License

NotificationsYou must be signed in to change notification settings

lowlighter/language-theory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Plot Twist est un mini-langage mathématique réalisé parFabien Delattre etSimon Lecoq dans le cadre d’un projet ISEN en 2016.Il n'est pas parfait, mais nous n'allons pas en faire tout un fromage, sinon les bisons seront jaloux des vaches...Démonstration

Installer le projet

Télécharger les dépendances

Ce programme nécessite l'utilisation d'un analyser lexicale et syntaxique, ainsi que diverses autres bibliothèques.Tapez la commande ci-dessous pour installerflex,bison,cmake,boost etopenssl.

    sudo apt-get install flex bison cmake libboost-all-dev libssl-dev

Démarrer le projet

Une fois prêt, rendez-vous à la racine du dossier parent puis exécutez la commande suivante, qui vous permettra de compiler les resources et de démarrez le serveur :

    make&& ./start_server

Rendez-vous ensuite dans le dossier/client puis ouvrez le fichierindex.html dans votre navigateur préféré.

Premiers pas

Une fois le client lancé, vous pouvez rentrez des formules et des expressions. Appuyez ensuite sur la toucheEntrée pour évaluer le résultat.

>>>1+12

Il est possible d’écrire plusieurs commandes sur une seule ligne.Il suffit pour cela de les séparer par un; (point-virgule).Notez qu’en mode ligne de commande, chaque résultat individuel sera affiché.

>>>1+1;33

Opérations arithmétiques

Addition

>>>2+4042

Soustraction

>>>69-2742

Multiplication

Note : la multiplication implicite entre un nombre et une variable est également supportée.

>>>21*242>>>a=21;2a42

Division

>>>84/242

Modulo

>>>142%10042

Factorielle

>>>4!24

Puissance

>>>4^216>>>e^27.38906

Variables

Il est possible de déclarer des variables.Les variables peuvent être composées de caractères alphanumériques (underscore inclus) mais ne peuvent pas commencer par un chiffre.A noter que certains identificateurs sont réservés par le langage et ne peuvent être utilisés en tant que nom de variable.

Déclarer et utiliser une variable

>>>a=13>>>a=a*226

Certaines variables sont prédéfinies par le langage.

Les variables prédéfinies

Pi

>>>pi3.14159265358979

e

>>>e2.71828182845905

true

>>>true1

false

>>>false0

La variable ans

Celle-ci est une variable spéciale contenant le résultat de la dernière opération effectuée.Elle ne possède aucune valeur si la ligne précédente était une déclaration de fonction ou de variable ou lors d’un affichage graphique ou tabulaire.

>>>1+12>>>40+ans42

Fonctions

Déclarer et utiliser une fonction

Il est possible de déclarer des fonctions. Les noms de fonctions peuvent être composées de caractères alphanumériques (underscore inclus) mais ne peuvent commencer par un chiffre.A noter que certains identificateurs sont réservés par le langage et ne peuvent être utilisés en tant que nom de fonction.

Nota Bene : Il est impératif que qu'il n'y aitpas d'espace entre la déclaration de la fonction et le signe égal.

>>>polynome2(x)=x^2+x+1>>>polynome2(3)13

Il est aussi possible de passer un tableau en paramètre d’une fonction.

>>>polynome2(x)=x^2+x+1>>>polynome2([0,10,1])

Tableau de données

Vous pouvez bien évidemment utiliser d’autres noms pour vos variables d’évaluation :

>>>degree_to_rad(theta)=((2*pi)/360)*theta>>>degree_to_rad(360)6.28318530717959

Mais aussi utiliser des variables que vous avez (ou allez) définir !Note : la variable doit être définie au moment vous exécutez votre fonction, au quel cas une erreur variable indéfinie sera retournée.

>>>a=2>>>f(x)=a*x+b>>>b=3>>>f(1)5

Et aussi faire des compositions de fonctions :

>>>f(x)=x ;g(x)=x*f(x) ;>>>g(f(10))100

Fonctions mathématiques

Les fonctions mathématiques prennent en argument soit un nombre, soit une variable, ou même une expression !Vous pouvez donc faire des calculs entre les parenthèses de celles-ci, incroyable n’est-ce-pas ?Notez cependant que vous ne pourrez pas déclarer de variables ou de fonction ayant le même nom qu’une des fonctions listées ci-dessous.

Racine carréCette fonction retourne la racine carrée de l’expression évaluée.

>>>sqrt(42^2)42

AbsoluCette fonction retourne la valeur absolue de l’expression évaluée.

>>>abs(-42)42

Fonctions trigonométriquesCette catégorie regroupe les fonctions suivantes :cos (cosinus),sin (sinus) ettan (tangente) ainsi que leurs inversesacos,asin etatan.

>>>cos(pi)^2+sin(pi)^21>>>tan(pi/4)1

Fonctions hyperboliquesCette catégorie regroupe les fonctions suivantes :cosh (cosinus hyperbolique),sinh (sinus hyperbolique) ettanh (tangente hyperbolique) ainsi que leurs inversesacosh,asinh etatanh.

>>>cosh(pi)^2-sinh(pi)^21>>>tanh(0)0

Exponentielles et logarithmesCette catégorie regroupe les fonctions suivantes :exp (exponentielle),ln (logarithme népérien) etlog (logarithme décimal).

>>>log(10^42)42>>>ln(e)1

Fonctions utilitaires

Ici sont répertoriées les fonctions plus ou moins utiles !

Nombre premierCette fonction retourne1 (true) si l’expression évaluée est un nombre premier.

>>>prime(2)1

Minimum et maximum entre deux nombresCes fonctions retournent respectivement le minimum et le maximum entre deux valeurs.

>>>min(-42,42)-42>>>max(-42,42)42

Variable définieCette fonction retourne1 (true) si la variable est définie.Note : cette fonction ne fonctionne uniquement que pour les variables, et non les fonctions.

>>>isset(a)0>>>a=1>>>isset(a)1

Fonctions cools

Coeur

>>>f(x)=sqrt(cos(x))*cos(30*x)-0.1+sqrt(abs(x))

Afficher une fonction

Il est possible d’afficher une fonction en utilisant la fonctionplot :

>>>f(x)=x^3>>>plot(f)

Affichage simple

Il est également possible d’afficher plusieurs fonctions.

>>>f(x)=x>>>g(x)=x^2>>>h(x)=x^3>>>plot(f,g,h)

Affichage multiple

Il est possible de spécifier les bornes du graphe en passant unerange en dernier paramètre de la fonction plot.

    [from,to,step(optionnel)]

Les expressions au sein des ranges sont également supportés.

>>>f(x)=cos(x)>>>plot(f, [0,2*pi])

Affichage bornée

Structures conditionnelles

Expressions booléennes et opérateurs logiques

Plot Twist supporte l’utilisation des opérateurs de comparaison d’égalité==, de différentiabilité!=, de supériorité> et>=, ainsi que ceux d’infériorité< et<=.Les expressions booléennes retourne la valeur1 (true) si celle-ci est vérifiée, et0 (false) dans le cas contraire.

>>>1==true1>>>1+1<=21

Les opérateurs logiques&& (ET) et|| (OU) permettent de réaliser des expressions plus complexes.Cependant, pour être sur de l’exactitude de votre formule, n’oubliez pas d’utiliser des parenthèses !

>>>true&&true1>>>true||false1>>> (true&&false)||(1<42)1

Expressions ternaires

Plot Twist permet l’utilisation de structures conditionnelles.Elles s’utilisent ainsi:

<SI>?<ALORS>:<SINON>

Par exemple :

>>>b=1>>>b=b<2 ?3 :1>>>b3

Et peuvent être chaînées les unes dans les autres :

>>>true ?true ?1 :0 :01>>>true ?false ?0 :1 :01>>>false ?true ?0 :0 :11

Notez que ces dernières peuvent être utilisées dans des fonctions et permettre ainsi de faire de la récursivité.

>>>f(x)=x>0 ?1+f(x-1) :1>>>f(1)2

Compilation et tests

Il est possible d’utiliser l’interpréteur directement côté serveur en se plaçant à la racine et en tapant la commande suivante :

    make fast

Ce mode est plus restreint et ne peut évidemment pas afficher de graphique.L’affichage des fonctions par range est également désactivé.

Ligne de commande

Vous pouvez faire réaliser les tests unitaires en utilisant la commande:

    maketest

Tests unitaires

Interface utilisateur

Historique

Plot Twist inclut un historique des commandes précédemment tapées. Vous pouvez le parcourir grâce aux flècheshaut etbas du clavier.

Barre d'outils

La barre d'outils offre tout un tas de possibilités.Barre d'outil

  • Enregistrer localement le plot sous format png
  • Enregistrer le plot dans le cloud puis l’éditer
  • Zoomer par sélection
  • Se déplacer (Cela actualise automatiquement l’affichage)
  • Zoomer / Dézoomer
  • Afficher / Masquer les données au survol

Il est aussi possible, lorsque plusieurs fonctions sont affichées, de masquer ou non certaines fonctions.Afficher ou masquer des courbes

About

📰 [ISEN] Un mini-interpréteur pour un mini-langage mathématique.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors2

  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp