Browse Source

notice ; corrections mineures

master
bollet.c 9 months ago
parent
commit
30c2372a86
  1. 44
      README.md
  2. 2
      infixe.py
  3. 2
      interface.py

44
README.md

@ -0,0 +1,44 @@
# Calculatrice
Une calculatrice.
## Principe de fonctionnement
Il est possible d'entrer dans la barre de saisie une expression en notation préfixe, infixe ou postfixe. Pour cela, sélectionner la notation voulue dans le menu : `Notation > ... `.
Pour la notation postfixe, il y a deux mode :
* le mode expression, accessible par `Notation > postfixe (polonaise inversée) > mode expression` ; c'est le même mode qui est utilisé pour les autres notations.
* et le mode interactif, accessible par `Notation > postfixe (polonaise inversée) > mode interactif`. Le principe de fonctionnement est alors similaire aux calculatrices NPI classiques, comme les HP : les termes sont entrés un à un.
## Fonctionnalités
Les nombres entrés peuvent être entiers ou flottants, positifs ou négatifs.
(Les nombres complexes ne sont pas implémentés, toutefois, en effectuant le calcul `-1 ^ 0.5 + 1 - 1`, on obtient précisément `1j`, donc il est *techniquement* possible de les employer, mais seules sont utilisables les opérations de base.)
Les opérations et fonctions suivantes sont disponibles partout:
`+` (addition), `-` (soustraction), `*`, `/`, `^`, `sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `factorielle` (qui est en fait la fonction gamma, pour pouvoir entrer des flottants), `sqrt`.
Les constantes `pi` et `e` sont disponibles.
# En notation préfixe et postixe (mode expression)
Le signe `+` peut aussi être utilisé pour l'identité.
Le signe `-` peut aussi être utilisé pour l'opposé.
# En notation postixe (mode interactif)
L'opposé s'obtient en entrant `opp` dans la barre de saisie.
La fonction factorielle peut aussi être entrée avec le signe `!`.
`somme` effectue la somme de tous les termes dans la pile.
`produit` effectue le produit de tous les termes dans la pile.
`moy3` effectue la moyenne des 3 termes au sommet de la pile.
# En notation infixe
Il n'y a pas plus de notations, mais les multiplications implicites sont comprises.
Ex : `2 sin 3` est compris comme `2 * sin ( 3 )`
Sont également comprises les multiplications très implicites :
`2 2` est compris comme `2 * 2`
En fait, dès qu'il manque une opération, le programme rajoute une multiplication. Pour éviter cela, il suffit d'ajouter l'opération voulue.

2
infixe.py

@ -81,7 +81,7 @@ def infixe2npi(liste_en_infixe):
#identité
pass
else:
raise ValueError("Opérateur mal utilisé","n'a ici qu'un seul opérande, quand il devrait en avoir deux.",index_token)
raise ValueError("Opérateur mal utilisé","n'a ici qu'un seul opérande (ou aucun), quand il devrait en avoir deux.",index_token)
else:
try:
while pile_op.sommet() != "(" and (priorite[pile_op.sommet()] < priorite[token] or (priorite[pile_op.sommet()] == priorite[token] and associativite[token] == "gauche")):

2
interface.py

@ -149,6 +149,8 @@ class Interface(tk.Frame):
try: self.entrer_terme_dans_stack(self.saisie_expression.get().replace(" ",""))
except ValueError:
messagebox.showerror("Saisie invalide", "Le résultat de l'opération n'est pas un nombre réel.")
except TypeError:
messagebox.showerror("Saisie invalide", "L'opérande n'est pas un nombre réel.")
else:
self.evaluer_expr()
except OverflowError:

Loading…
Cancel
Save