[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