[Cabrinews] Cambio segno e elevamento a potenza
Paolo Bonavoglia
paolo.bonavoglia a aruba.it
Dom 22 Nov 2009 13:14:36 CET
Paolo Bonavoglia ha scritto:
> Non me ne ero mai accorto! Il bello è che se si scrive 3 -2^2 si ottiene correttamente -1
> (non 7), e addirittura se si scrive 0-2^2 si ha di nuovo correttamente -4: e forse è questo il motivo per cui era sfuggito,
Ho ripensato a questo paradossale risultato che dà -2^2 diverso da
0-2^2. Avendo io stesso realizzato in passato alcuni parser di
espressioni algebriche per miei programmi, credo di aver capito il
problema.
Di solito i parser algebrici come prima cosa traducono l'espressione
algebrica in un'espressione RPN (o postfissa) molto più adatta per la
valutazione o altra elaborazione automatica. Per esempio l'espressione
(2+2)*3 viene tradotta in 2 2 + 3 * (prima la somma poi il prodotto),
mentre 2 + 2*3 diventa 2 2 3 * + (prima la somma poi il prodotto).
Tra i vantaggi della notazione RPN, non sono necessarie le parentesi,
l'ordine delle operazioni è sempre univoco.
Non so per certo se Excel e OOCalc usino la RPN ma è molto probabile che
sia così.
Ora l'espressione 0 - 2^2 diventa 0 2 2 ^ - (corretto) dove il segno
meno rappresenta la sottrazione tra due numeri.
L'espressione - 2^2 invece non rappresenta un'operazione binaria come
addizione, moltiplicazione, potenza, ma un'operazione unaria
(cambiamento di segno) e viene quindi gestita da una procedura diversa.
Correttamente -2^2 si dovrebbe tradurre in 2 2 ^ - (prima la potenza,
poi il cambiamento di segno); evidentemente invece in Excel viene
tradotta in 2 - 2 ^.
Se poi questo errore sia dovuto a ignoranza delle buone regole
dell'algebra da parte del programmatore o a una svista resta da stabilirsi.
--
Paolo Bonavoglia
Cannaregio 3027/R
30121 V E N E Z I A
========================================================
Astronomia e Calendari http://astro.liceofoscarini.it/
Crittografia http://critto.liceofoscarini.it/
Maggiori informazioni sulla lista
Cabrinews