101576 Letture

Linguaggi di scripting lato client: JavaScript per esempi - Terza ed ultima puntata

Ogni giorno noi ci troviamo a compiere delle scelte: "se facciamo una cosa allora le conseguenze sono...." è il nostro ragionamento. L'equivalente in JavaScript è l'istruzione condizionale If...Else che può essere efficacemente tradotta in questi termini: Se...Allora...Altrimenti.
La forma più semplice con cui si può presentare l'istruzione condizionale è la seguente:
if (espressione) istruzione1
[else istruzione2]...

espressione può assumere solamente i valori true (vero) oppure false (falso): è quindi "booleana". Qualora tale espressione assuma il valore true, verrà eseguita istruzione1 altrimenti istruzione2 (l'istruzione che segue l'else).

Quest'esempio mostra l'utilizzo del costrutto if...else. Come nell'esempio visto nella precedente lezione, recuperiamo data e ora attuali servendoci del metodo Date(); usiamo quindi il metodo GetHours(), applicato alla variabile data d, per memorizzare l'ora corrente.


Nel costrutto if...else, inseriamo come condizione l'espressione time < 12. In questo modo, qualora l'ora attuale sia precedente a mezzogiorno, verrà stampata, sulla pagina HTML, l'esclamazione Buongiorno!, altrimenti Buonasera!.

Proviamo ora ad ideare uno script che ci consenta di presentare, all'utente che visita il nostro sito web, o il nostro IlSoftware.it oppure Digifocus (www.digifocus.it). La scelta dovrà essere operata in modo del tutto casuale (il link de IlSoftware.it o quello di Digifocus avranno il 50% di possibilità di venire mostrati).


Il metodo Random(), applicato all'oggetto Math, consente di generare un numero casuale compreso tra 0 ed 1 (decimali compresi): ciò significa che l'istruzione Math.random() genera numeri casuali del tipo 4,345125 oppure 5,899271236 e così via. Memorizziamo il numero prodotto in una variabile: nel nostro esempio l'abbiamo denominata r.
Utilizziamo, quindi, l'istruzione if...then imponendo, come condizione, r>0.5. In pratica se il numero generato è maggiore di 0.5, viene proposto il link verso IlSoftware.it; altrimenti quello di Digifocus.
Lo script è visualizzabile accedendo al codice HTML di questa pagina.

Qualora si debbano effettuare numerosi test su un'unica espressione, conviene ricorrere all'utilizzo dell'istruzione Switch. Il valore assunto dall'espressione viene infatti confrontato, in questo caso, con una serie di possibilità. Anziché uno solo, possono essere eseguiti, in sequenza, numerosi confronti. Analizziamo un possibile utilizzo dell'istruzione condizionale Switch con un esempio pratico (file 08_switch.html).
Supponiamo di voler allietare l'utente che visita il nostro sito web con una frase spiritosa, scelta - in modo del tutto casuale - tra dieci diverse possibilità. Come nel caso precedente, anche qui possiamo ricorrere all'utilizzo del metodo Math.random().
Per ottenere un numero intero da 0 a 9 (le frasi da proporre sono dieci) utilizziamo un semplice "trucco": moltiplichiamo, dapprima, per 10 il contenuto della variabile r (generato da Math.random()) quindi utilizziamo il metodo floor per approssimare, all'intero più vicino, il numero ottenuto. Saremo certi, così, di avere - come contenuto della variabile r - un intero compreso tra 0 e 9.
Il valore assunto dalla variabile r viene quindi confrontato, dall'istruzione switch (r) con una serie di possibilità (indicate con i vari case).
L'istruzione break consente allo script di uscire dal ciclo di switch: se fosse mancante, JavaScript continuerebbe a confrontare il valore.
E' possibile inserire, opzionalmente, anche un'istruzione default: essa viene eseguita solo nel caso in cui il ciclo switch non trovi alcuni corrispondenza tra il valore assunto dall'espressione e le varie istruzioni case (nel nostro esempio default non è necessario).
Va ricordato che sia nelle espressioni if...then che in switch, l'operatore di uguaglianza che va utilizzano è == (come già visto in precedenza) e non = (l'operatore di assegnamento). Si tratta di un errore molto comune che spesso provoca comportamenti inattesi (JavaScript si limita ad ignorare l'espressione).


Linguaggi di scripting lato client: JavaScript per esempi - Terza ed ultima puntata - IlSoftware.it