Lezioni pratiche sulla programmazione in Perl

Privilegi degli operatori
Alla pari dei più diffusi linguaggi di programmazione an il Perl ha le sue brave regole di precedenza e di associatività degli operatori all'interno di espressioni più complesse, contenenti un insieme di operatori ed operandi, al fine di produrre un nuovo valore, abbiamo già visto alcuni semplici esempi tramite la lezione sulle operazioni, ora vedremmo di illustrare situazioni più complesse.
Cominciamo quindi a stabilire la precedenza tra quali operatori hanno il privilegio di essere valutati prima di altri. Come ormai ovvio il Perl fa di tutto per rendere le cose più normali e naturali possibili, risolvendo qualunque ambiguità su cosa debba essere eseguito prima, in base alle più normali regole della matematica e dell'algebra, facciamo un esempio per capirci ulteriormente meglio: 

$a = 3;
$b = $a**2/2;
# l'espressione $b vale 32/2
# quindi uguale a 4,5
# e non 32/2 con un valore errato di 3
# nel qual caso avremmo dovuto 
# scrivere $a**(2/2);
print  "$b \n";
# vale 4,5
$c = $a**2*2;
print  "$c \n";
# vale 18

L'associatività risolve invece un altro problema  d'ambiguità inerente alle modalità d'incorporazione degli operatori con ugual livello di priorità. L'associazione tra operatori può essere si destra, sia sinistra che addirittura nulla, vediamo ora un esempio:

$a = 3;
$b = $a**2**2;
print  " $b \n";
# in questo caso l'asociazione tra operatori
# è rivolta a destra, in quanto risulta di maggiore
# priorità risolvere prima tutte le operazioni di potenza
# quindi il risultato sarà dato da $a**(2**2) uguale a 81
$c = 6/3*2;
# pur non essendoci alcun conflitto tra la divisione e la
# moltiplicazione assoceremo, per semplicità , a sinistra
# i privilegi dell'operazione in questo modo (6/3)*2
print " $c \n";
# vale 4

Ovviamente si consiglia sempre l'uso delle parentesi per risolvere l'espressioni più complesse, ed anche per facilitarne la leggibilità dello script stesso ad altri.

Per esercizio provate a calcolare la seguente espressione

            Q2(0,32+1.25S)S
s= -----------------------------------
        Q2(0,32)4+(1,25+S)S/Q

s= valore dell'espressione da calcolare
Q= 1.845
S= 5.35