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:
    • funzione
    • globale
  • 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