Manuels | TOP 20 | Labels PC | Conversion | Graphisme | Organiseurs | Divers | Add-ins | MLC | LuaFX |
Calculatrices
Graph 35 à 100 (CFX)
Graph 25/25+ (Pro) (fx-7400)
Graph 35+USB/75/85/95 (SD)
Graph 100/100+ (AFX)
ClassPad 300/330
Fx-CG 10/20
Fx-CP 400

Retour aux miniatures
Tri avancé
Liste des programmes
Nom Date
Date
Diviseur
StmgComptaCours
JDENES
MentalCalc
Pi - Brent
Formel
Ppcm et pgcd
PGCD
Multiplieurs
Hasard
Anagramme Gener
Shoutbox
Hyperfocale
Music Writer
Doc-secret
Reduc distances
Minecraft stronghold
Digicode
Code secret
Pages: 1,2,3,4,5,6,7,8,9 >>

¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Utilitaires >> Graphs 35 à 100 >> Divers >> Formel
Formel
Version : 1 Taille : 8272 octets Ajouté le : 2016-12-04 15:20 Modifié le : 2016-12-25 10:41
Auteur et posteur :
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9829
Défis: 130
Message
Planète Casio - Programme Casio - Formel - lephenixnoir - Calculatrices
Nombre de visites sur cette page : 1172
Score au progrank : 25
Pas encore de note !

Vous devez être inscrit(e) et avoir 20 points ou plus pour noter.
221 téléchargements | Soumettre un test



Ce programme a participé à l'édition n°21 des Casio Programming Contest.
Pour plus d'informations sur cet événement, cliquez ici.
Description :

Voici ma participation au 7 Days CPC #21 !

Formel a remporté le 7 Days CPC #21 ! Merci !


Un défi technique plus que tout le reste. Je me défends tout de suite, Legolas, je disais que c'est possible avec les outils appropriés (notamment des arbres et du C), pas que ça l'était en Basic ; il y a tromperie !

Description

Formel est un programme qui analyse les fonctions qu'on lui donne en entrée. Il est capable d'interpréter le texte de la formule, pour l'évaluer plus tard. Plus fondamentalement, il peut dériver les fonctions pas trop compliquées (il dérive pas les quotients. Hmm... j'ai manqué de temps x_x).

Le programme comporte une petite aide. Utilisez la première fonction pour entrer vos formules ; elles sont stockées dans la matrice A. Tout le programme travaille ensuite avec cette matrice. La seconde fonction vous permet de visualiser l'arbre de la formule (histoire d'être sûr que Formel a bien compris ce dont vous parliez). La troisième évalue la fonction en certains points fournis par l'utilisateur, et la quatrième dérive la matrice.

En tant que moteur formel, ce programme est en-dessous du sub-standard. Il ne fait que fusionner les noeuds similaires ; aucune optimisation n'est fait. Attendez-vous à ce que votre dérivation sorte des produits avec un zéro au milieu.

Quelques détails : n'utilisez ni le symbole carré ni le symbole fraction. Ah et, soyez patients. C'est pas hyper rapide (surtout le parser).

J'ai pas testé de manière exhaustive donc il peut rester des bugs (j'espère pas !). Normalement le parser est assez intelligent, quant à la fonction de dérivation, je n'ai pas plus de craintes.

The icing

Formel manipule des expressions à plusieurs variables (X, Y, Z) et est capable de calculer les dérivées partielles par rapport à chacune de ces variables

Fichiers disponibles

1- formel.g1m : transférez ça sur votre machine pour utiliser le programme.
2- formel-doc.txt : lisez-le si vous voulez comprendre comment Formel marche.

Détails techniques

Bon, j'ai fini par implémenter un vrai parser, des piles, des arbres dans des foutues matrices auxquelles on ne peut ni facilement ajouter ni enlever des lignes, de la récursivité sans récursivité. Je comprends de nouveau le luxe que c'est de pouvoir coder en C.

L'arbre est stocké en préfixe dans la matrice, et tous les enfants d'un noeud sont stockées dans les lignes le suivant immédiatement. L'algorithme d'évaluation est totalement irrespectueux : il parcourt la matrice de bas en haut (soit l'arbre en postfixe) et calcule la valeur de la fonction en notation polonaise inversée en utilisant la liste Ans comme un pile.

Il y a plus de détails gores mais peut-être intéressants : voyez le second fichier.


Commentaires :


-florian66-
Hors ligne
Rédacteur
Niveau: Aucun
Points: 2216
Défis: 19
Message
Posté le 04-12-2016 à 22:40
Tu décomposes les fonctions pour les dériver ?
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9829
Défis: 130
Message
Posté le 05-12-2016 à 06:47
Yup. Le programme ne sait dériver que les constantes, les variables, les fonctions (via une table) et quatre opérations (+ - × ^). Pour le reste c'est la grande magie de la récursivité. (Bon du coup c'est pas assez spécialisé donc en sortie c'est moche.)
Fabcvlr
Hors ligne
Membre
Niveau: Confirmé
Points: 1726
Défis: 40
Message
Posté le 12-01-2017 à 13:44
8 ko de code ! Lephé quand tu te mets au BASIC tu fais pas semblant ! Je vais le tester celui-là et le décortiquer...
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 9829
Défis: 130
Message
Posté le 12-01-2017 à 16:19
Pff, 8 kio c'est rien. J'ai des fichiers de code C (donc des petites parties de programmes) qui font allègrement le double.

Il faut que je corrige un bug et mette tout ça à jour avec quelques optimisationsn sinon le programme restera inutilisable pendant longtemps

Publicité et partenaires
Casio Education
Casio éducation

TI-Planet
Casiopeia
Casiopeia
CasioFan, la communauté ClassPad
CasioFan
CodeWalrus
CodeWalrus

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2015 | Il y a 91 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Rugby Manager | Jeu de basket | Jeu de handball | Jeu de tennis | Nova Raider | Réparation téléphone | Soccer Rush | Tasty Tale

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd