24 – operatori precedenze e associatività

Operatori

Intanto memorizzo il <br /> in una variabile, così evito di ripeterlo ogni volta

var br = "<br>";

Iniziamo con alcuni operatori aritmetici già visti in precedenza

  • classici
var x = 49.99;
x += 5; //x = x+5
x -= 5; //x = x-5;
x*=2; // x = x*2;
x/=2; // x = x / 2;
document.write( x + br);

Il numero restituito in fondo è quello iniziale

x = 4;
var y = 3;
x += (6 - y) * (x - y);
document.write( x + br); //7

Il risultato è 7

  • pre incremento
x = 0;
y = ++x;
document.write( y + br); //y==1, x==1

pre incremento: prima si incrementa x e poi la si usa

  • post incremento
x = 0;
y = x--;
document.write( y + br); //y==0, x==-1

post decremento: prima si usa la x e poi la si decrementa.

Gli Operatori di incremento e decremento li abbiamo visti nel ciclo for, ma nessuno ci impedisce di utilizzarli ovunque, anche in altri cicli ove vi sia un beneficio.

Stampare in verticale La stringa Alessandro

var nome="Alessandro", conta=0;
while (conta<nome.length)
{
    document.write( nome.charAt(conta) + br);
    conta++;
}

Come già visto il metodo lenght restituisce la lunghezza della stringa. Il metodo charAt restituisce il carattere in quella posizione. Utilizzando il post incremento ottimizzo ancora di più

var nome="Alessandro", conta=0;
while (conta<nome.length)
{
    document.write( nome.charAt(conta++) + br);
}
  • operatori aritmetici
document.write(2**5 + br  + 10**-2 + br + 1.5**3.4 + br); //ancora sperimentale, quindi non fidarsi

anche se ancora sperimentale, questo  è l’ elevamento a potenza , il primo è 2 alla quinta , il secondo con esponente negativo è 1 fratto 10 alla seconda, il terzo utilizza l’esponente decimale.

Ora vediamo alcuni metodi della classe Math :

document.write(Math.abs(-56) + br); //56

con abs (absolute), togliamo il segno, restituisce il valore assoluto

document.write(Math.PI + br); //pi greco

PI è il pi greco.

document.write(Math.ceil(12.001) + br); //13
document.write(Math.floor(12.999) + br); //12

arrotondamento , in alto (ceil), in basso (floor)

document.write(Math.round(11.4999) + br); //11
document.write(Math.round(11.5001) + br); //12
document.write(Math.round(11.5) + br); //12

round è l’arrotondamento classico, se è più della metà in eccesso, altrimenti in difetto

document.write(Math.max(23, 34.6, 7) + br); //34.6
document.write(Math.min(23, 34.6, 7) + br); //7
document.write(Math.min("ABACO", "zucca", "ferro") + br); //NaN

max e min restituiscono rispettivamente il valore massimo e minimo. Non funzionano con le stringhe

document.write(Math.pow(2,10) + br); //1024
document.write(Math.sqrt(49) + br); //7
document.write(Math.trunc(2.456) + br); //2

Nell’ordine pow elevamento a potenza, sqrt radice quadrata, trunc tronca il numero togliendo i decimali.

  • operatore virgola
for (var i = 0, j = 9; i <= j; i++, j--)
{document.write(i + (j + " ") );}
document.write(br);

viene utilizzato per sequenzializzare una serie di istruzioni
Nell’ espressione il ragionamento è: non solo fai partire la i da 0 , ma anche la j da 9 e prima di ripetere ancora il ciclo, se la condizione lo consente, incrementa i e decrementa j