Corso PHP/ Lezione 6: Costrutti di controllo

In questa puntata vediamo quali sono e come si usano i costrutti che controllano il flusso di esecuzione di uno script

In questa puntata mostreremo, tramite semplici esempi, quali sono e come si utilizzano, nel linguaggio PHP, i costrutti che controllano il flusso di esecuzione del programma, cioè del nostro script. Possiamo distinguerne due tipologie: i costrutti condizionali ed i costrutti iterativi.

I costrutti condizionali sono quelli che utilizziamo quando vogliamo che l'esecuzione di un certo blocco di istruzioni avvenga o meno in funzione del valore di una espressione (la condizione); questo è il caso del costrutto if. Questa situazione comprende anche il caso in cui abbiamo diversi blocchi di istruzioni e vogliamo che, in base al valore dell'espressione data, venga eseguito soltanto uno di questi (costrutto switch).

I costrutti iterativi, invece, sono quelli che ci permettono di ripetere (iterare, per l'appunto) l'esecuzione di un blocco di istruzioni; il numero di iterazioni potrà sia dipendere dal valore di una condizione (costrutto while) sia essere prefissato (costrutto for).
Il costrutto if permette di eseguire un certo insieme di istruzioni solo quando risulti verificata una certa condizione. Nell'esempio seguente, la divisione tra due numeri $a e $b avviene solo se il divisore, $b, è diverso da zero.

// $a e $b sono due numeri
if ($b != 0) {
// Il divisore e' diverso da zero
$c = $a / $b;
}


In generale, la sintassi da utilizzare è la seguente:

if (condizione)
blocco-istruzioni


dove blocco-istruzioni può essere sia una singola istruzione PHP sia un insieme di più istruzioni racchiuso tra parentesi graffe. Se condizione è vera allora si esegue blocco-istruzioni.

E' possibile anche fare in modo che un secondo blocco di istruzioni venga eseguito nel caso la condizione risulti falsa. In modo informale, il significato è "se è vera la condizione esegui il blocco 1, altrimenti esegui il blocco 2". La sintassi è la seguente:

if (condizione)
blocco-istruzioni1
else
blocco-istruzioni2


Supponiamo adesso di avere più blocchi di istruzioni e di voler selezionare quale di questi debba essere eseguito in base al valore di una espressione; il modo più conveniente ci viene fornito dal costrutto switch. Vediamo un esempio.

// La schedina!
switch($segno) {
case 1:
echo "E' uscito il segno 1!";
break;
case 2:
echo "E' uscito il segno 2!";
break;
default:
echo "E' uscito il segno X.";
}


La sintassi generale di switch è la seguente:

switch(espressione) {
case valore1:
blocco-istruzioni1
case valore2:
blocco-istruzioni2
...
}


Ogni blocco di istruzioni si chiude con il costrutto break, che determina l'uscita da switch. Come si evince dall'esempio, tramite la parola chiave deafult si può prevedere un caso residuale, il cui blocco di istruzioni viene eseguito solo se tutti i confronti precedenti hanno dato esito negativo.