Idées de projets
Arbre syntaxique d'expression mathématique
- Même entre opérateurs binaires, un arbre syntaxique d'expression mathématique est un arbre enraciné, et pas un arbre binaire. Il ne peut pas être vide, il existe des opérateurs qui ne sont pas binaires et les feuilles ont un status totalement différents des nœuds internes...
- Les règles de priorités sont assez complexes ; il vaut mieux se limiter dans un premier temps aux seules opérations à opérandes entières et à résultat entier.
Règles de priorités simplifiées
Dans le cas où on se restreint aux opérateurs sur les entiers avec résultat entier, et en suivant les règles de Python, on peut synthétiser les règles de priorité comme suit, du plus prioritaire au moins prioritaire :
- Les opérations entre parenthèses
(...), le plus à l'intérieur possible. - La puissance
**ainsi que les opérateurs+et-unaires,de la droite vers la gauche.
*,//,%(produit, quotient entier et modulo), de la gauche vers la droite.+et-binaires, de la gauche vers la droite.<<et>>(décalages de bits), de la gauche vers la droite.&, le **et bit-à-bit`, de la gauche vers la droite.^, le **ou exclusif bit-à-bit`, de la gauche vers la droite.|, le **ou bit-à-bit`, de la gauche vers la droite.
Source : Expressions - Documentation Python
Idée de projet (1)
- Créer une fonction qui lit une expression (qu'on suppose bien formée) sous forme de chaine de caractères et renvoie la liste des lexèmes.
"14*x - 3*(-y+3)"donnera["14", "*", "x", "-", "3", "*", "(", "-", "y", "+", "3", ")"]- Les espaces seront supprimés.
- Les chiffres resteront collés.
- Sinon, tout est découpé.
- Créer une fonction qui, en accord avec les règles de priorité, renvoie l'opération la moins prioritaire ou le littéral (le nombre ou la variable) à évaluer.
- Créer une fonction qui fabrique un arbre syntaxique à partir d'une expression bien formée sous forme de chaine de caractères.
- Créer une fonction qui évalue une expression accompagnée d'un dictionnaire des valeurs des variables (exemple
{"x": 51, "y": -12}) - On pourra aussi créer une variante qui montre chaque étape de calcul ; une fonction qui sera pédagogique.
- On pourra créer une interface dans un terminal, soit nature, soit avec Rich soit avec PyTermGUI oui bien DearPyGui...
Idée de projet (2)
Créer une fonction qui construit un arbre syntaxique dédié aux fractions et à leur évaluation, avec étapes et affichage vers un document Markdown incluant des mathématiques en LaTeX.
Idée de projet (3)
Créer une fonction qui détermine la dérivée d'une fonction donnée sous forme arborescente.