Sintesi della lezione
Prendere decisioni
Le strutture di programmazione che mi consentono di prendere decisioni sono essenzialmente due:
- condizionale: faccio una determinata cosa se una condizione risulta vera altrimenti ne faccio un'altra
- iterativa (o loop): ripeto una determinata operazione finche una condizione risulta vera
L'istruzione if
L’istruzione if può avere due forme:
- if ( espressione ) blocco di istruzioni
- if ( espressione ) blocco di istruzioni else blocco di istruzioni
L'espressione che compare dopo la parola chiave if deve essere di tipo logico, se la condizione risulta vera viene eseguita l'istruzione subito seguente; nel secondo caso, invece, se la condizione risulta vera si esegue l'istruzione seguente, altrimenti si esegue l'istruzione subito dopo la parola chiave else.
Per più scelte invece si può usare l'else if che permette di porre una condizione anche per le alternative, lasciando ovviamente la possibilità di mettere l'else (senza condizioni) in posizione finale.
Esempi
/*
Blocco if
*/
if (condizione)
{
//comandi se condizione è vera
}
// il programma continua qui
/*
Blocco if...else
*/
if (condizione)
{
//comandi se condizione è vera
}
else
{
//comandi se condizione è falsa
}
// il programma continua qui
/*
Serie di condizioni
*/
if (condizione1)
{
//comandi se condizione1 è vera
}
else if (condizione2)
{
//comandi se condizione2 è vera
}
else if (condizione3)
{
//comandi se condizione3 è vera
}
else
{
//comandi se tutte le condizioni sono false
}
// il programma continua qui
Operatori logici
operazione |
javascript |
precedenza |
uguaglianza |
== oppure === |
1 |
disuguaglianza |
!= oppure !== |
1 |
maggiore |
> |
1 |
maggiore o uguale |
>= |
1 |
minore |
< |
1 |
minore o uguale |
<= |
1 |
and |
&& |
2 |
or |
|| |
2 |
not |
! |
2 |
Combinare tra loro le condizioni
Prendiamo questi enunciati:
- esco se il tempo è bello ed è caldo
- esco se il tempo è bello o è caldo
- non esco se il tempo non è bello e non è caldo
- non esco se il tempo non è bello o non è caldo
esco se il tempo è bello ed è caldo
enunciato 1 |
congiunzione |
enunciato 2 |
risultato |
tempo bello |
ed |
temperatura caldo |
esco ? |
true |
&& |
true |
true |
false |
&& |
true |
false |
true |
&& |
false |
false |
false |
&& |
false |
false |
esco se il tempo è bello o è caldo
enunciato 1 |
congiunzione |
enunciato 2 |
risultato |
tempo bello |
o |
temperatura caldo |
esco ? |
true |
|| |
true |
true |
false |
|| |
true |
true |
true |
|| |
false |
true |
false |
|| |
fasle |
false |
non esco se il tempo è non bello e non è caldo
|
enunciato 1 |
congiunzione |
enunciato 2 |
risultato |
non |
tempo è bello |
e |
temperatura è caldo |
Esco ? |
! |
true |
&& |
true |
true |
! |
true |
&& |
false |
true |
! |
false |
&& |
true |
true |
! |
false |
&& |
false |
false |
non esco se il tempo è non bello o non è caldo
|
enunciato 1 |
congiunzione |
enunciato 2 |
risultato |
non |
tempo è bello |
o |
temperatura è caldo |
Esco ? |
! |
true |
|| |
true |
true |
! |
true |
|| |
false |
false |
! |
false |
|| |
true |
false |
! |
false |
|| |
false |
false |
Programmazione Iterativa
Flusso naturale del programma:
- viene eseguita un’istruzione dopo l’altra fino a che non si incontra l’istruzione di fine programma.
Programmazione iterativa:
- un'istruzione (o una serie di istruzioni) vengo eseguite continuamente, fino a quando non sopraggiungono delle condizioni che fanno terminare il ciclo.
while
Il ciclo while ripete un blocco di codice fino a quando una condizione specificata è vera.
Sintassi
while (condizione) {
//blocco di codice da eseguire
}
Esempio 1
//Questo ciclo continua fino a che i è minore di 10
function myFunction() {
var i = 0;
while (i < 10) {
var text = "<br>Il numero è " + i;
document.getElementById("demo").innerHTML += text;
i++;
}
document.getElementById("demo").innerHTML += "<br>Il ciclo è finito!";
}
/* ================================================================
!!! ATTENZIONE !!!
Se si dimentica di aumentare la variabile usata nella condizione,
il ciclo diventerà infinito . Questo manderà in crash il browser.
================================================================= */
Esempio 2
/*
Creo una node listi che contiene tutti gli elementi della pagina
HTML che hanno la classe out
*/
var elementi = document.getElementsByClassName("out");
// Il ciclo continua fino a che la nodeList elementi contiene item
while (elementi.length > 0){
elementi[0].classList.remove("out");
// Eliminando la classe "out" dall'insieme delle classi
// dell'elemento elimino anche l'elemento dalla collezione
}
for
Il for inizializza una variabile, pone una condizione e poi modifica (normalmente incrementa o decrementa) la variabile iniziale.
for (inzializzazione; condizione; modifica){
// blocco istruzioni;
}
Il codice <blocco istruzioni> viene eseguito fino a che l’espressione <condizione> risulta vera, poi si passa la all’istruzione successiva al for.
Esempio
/*
Creo un certo numero (espresso dalla varibiale quanti)
di numeri casuali e li aggiungo ad un stringa (str) separandoli
con una virgola e uno spazio
*/
var str = ""; // Inizializzazione della varibile str
for (var i = 0; i < quanti; i++) {
var num = Math.round(Math.random() * 100); // Numero random tra 0 e 100
if ( i > 0) {
str = str + ", "; // Aggiungo virgola e spazio
}
str = str + num; // Aggiungo il numero generato a str
}
// Mostro sullo schermo i numeri generati utilizzando l'elemento con id "casualiGenerati"
document.getElementById("casualiGenerati").innerHTML = "Numeri generati: " + str;
Scope
- In JavaScript, scope (l'ambito) è l'insieme delle variabili, degli oggetti e delle funzioni a cui è posso accedere in un determinato punto di un programma.
- In ECMAScript 5 esistono solo due scope:
- Appartengono allo scope funzione tutte le variabili, funzioni e oggetti che creo all'interno del codice di una funzione.
- Tutti questi elementi saranno accessibili solo dal codice della funzione stessa.
- Appartengono allo scope globale tutte le variabili, funzioni e oggetti che non creo all'interno del codice di una funzione, ma in qualsiasi altro punto del codice Javascript in una pagina web,
- Tutti questi elementi saranno accessibili a tutto il codice che appartiene alla pagina web.
- In una pagina web l'ambito globale in cui è racchiuso il programma Javascript è l'oggetto window che rappresenta la finestra del browser in cui gira il programma Javascript.
- Ogni funzione, oggetto o variabile globale può essere anche scritta come proprietà dell'oggetto predefinito window.
- Se scrivo:
var frullatore = "Frullatore rosso";
- Nel codice posso indifferentemente usare
frullatore
o window.frullatore