Strutture di controllo in PHP

Scusandomi il tardare della lezione ecco a voi la nuova lezione sulle strutture di controllo in PHP. Nella precedente lezione, abbiamo studiato le variabili: come dichiararle, come usarle e come PHP le utilizza, etc… Questa lezione invece è dedicata alle strutture di controllo come: IF-ELSE, WHILE e i cicli come: FOR e SWITCH. Ovviamente inizieremo senza ombra di dubbio dall’istruzione di condizione if per poi analizzare l’if-else. L’istruzione if è la prima istruzione che si può incontrare quando si parla di codici sorgenti con dei “salti condizionati” o per far prendere delle decisioni al programma. Decisioni ovviamente scelte da noi. Il PHP per l’istruzione if ha una sintassi di base come questa quasi equivalente al C:

if(<condizione>) {

<codice>

}

Infatti la <condizione> è ciò che rende il codice tra parentesi vero oppure falso. Se è vero in questo caso esegue, il codice contenuto tra parentesi graffe, mentre se è falso esegue il codice successivo alla condizione. Per comprendere meglio questo concetto vediamo un esempio… Poniamo come condizione che se uno studente ha una media scolastica pari a 60 viene ammesso all’esame altrimenti viene bocciato (che ometteremo nel sorgente):

<?php

// code

if($grade >= 60){

echo “Promosso”; // spero per voi che siate in questo ramo 😉
}

// Codice non appartenente all’if

?>

Bene, questo codice è molto chiaro perché fa capire che se la variabile $grade è maggiore o uguale al voto stabilito (quindi 60) il codice che verrà mostrato in output, sarà la stringa “Promosso”, ma se un docente di una scuola o di università ci chiede di stampare anche la stringa “Bocciato”? È qui che entra in gioco l’istruzione else e se ci sentiamo in grado di inserirla c’è anche l’istruzione else if con una condizione in più. Come si usano queste istruzioni? Semplicemente aggiungendo all’if anche la condizione else, mi spiego meglio con un esempio:

<?php

$if($grade >= 60){

echo “Promosso”;

}

else{

echo “Bocciato”;

}

?>

Questo è un tipico esempio di condizione if-else. Quindi che SE l’istruzione è maggiore o uguale a 60 stampa “Promosso” mentre se è minore di 60 stampa “Bocciato”. L’istruzione else if invece dicevo che viene inserita una condizione in più per un motivo ben preciso:

<?php

if($name_1 == ‘Ghiro’) // Prima condizione

{

echo “Ciao $name_1, ti ha cercato $name_2”;

}

elseif ($name_2 == ‘Carlo’){ // Seconda condizione

echo “Ciao $name_2, $name_1 non c’è”;

}

else{

echo “Exit.”// Esci se l’utente non è $name_1 o $name_2

}

?>

Questo esempio è molto simile a un login di un forum o di un qualsiasi software richieda un login. Quando l’utente $name_2 si collega dice che utente $name_1 è momentaneamente assente se entra $name_1 dice che l’ha cercato $name_2, con ciò ne deduciamo che SE si collega X il programma stampa una cosa ALTRIMENTI SE si collega Y stampa che X non è in linea ALTRIMENTI esci dal software. Come potete vedere il codice sorgente di questo esempio è stato semplificato apposta per il livello di conoscenza del PHP. Ora che abbiamo incontrato sia l’istruzione if che la else iniziamo a conoscere l’istruzione while.

IL COMANDO DI ITERAZIONE WHILE:

While è un’istruzione che serve a iterare una porzione di codice per n volte fino a che alcune condizioni rimarranno vere. Infatti solitamente nella vita quotidiana quante volte ci è capitato di dire la frase “Nella mia lista della spesa ci sono ancora altre pietanze compra queste pietanze e poi dirigiti verso la cassa”? Tantissime 🙂 e così è la programmazione finché un certo numero di condizioni non saranno terminate continua a iterare! Ecco un rapido esempio di come si itera per 10 volte un numero:

<?php

$val = 1;

while ($val <= 10)

{

$val++;

echo $val;

}

?>

Output:

1

2

3

4

5

6

7

8

9

10

11

IL COMANDO FOR:

Sia il comando while che il comando for sono due iterazioni… Ma cos’è che li distingue tra loro? Il comando for è più versatile anche più sfruttato nel PHP, infatti in C con il comando while ci possiamo scrivere un software che prenda in input un valore flag (o sentinella) per iterare n volte finchè non inserisci tale valore infatti while (x != y) mentre in PHP con l’istruzione for abbiamo la seguente sintassi:

<?php

    for (espressione_iniziale; test; espressione_finale)    {

              codice;

    }

?>

La sintassi qui sopra riportata è solo uno schema base dell’istruzione for, infatti espressione iniziale viene prima di tutte le altre, per poi procedere con l’espressione test…questa espressione valuta in forma booleana, quindi se da come output un valore logico TRUE allora viene eseguita il codice nelle parentesi! Se invece come output viene fuori FALSE ritorna l’espressione_iniziale. Un esempio di script in PHP del ciclo for è:

<?php
for ($i = 1; $i <=$a; $i++)
{
print $i;
}
?>

IL COMANDO SWITCH:

Il comando switch viene chiamato ‘comando di selezione multipla’ infatti questa istruzione ha diversi casi con istruzione break per terminare l’esecuzione alla fine di ogni caso. Quando infatti bisogna strutturare un programma come un ATM bancomat bisogna prendere in considerazione anche la scelta dell’istruzione switch! Lo switch prende decisioni sulla base di valori presi da un’espressione e notiamo che appunto nella condizione dell’esempio che sto per mostrarvi c’è la variabile $pippo all’interno dello switch!

<?php
$toons = 3;
switch($toons)
{
case 1:
$disney = “pippo, pluto, paperino”;
break;
case 2:
$warner_bros = “daffy duck, gatto silvestro, titti, w. coyote”;
break;
case 3:
$pixar = “toy story, nemo, etc..”
break;
default:
$other = “altri cartoni”;
}
print “Che cartone animato ho scelto?”
?>

L’interprete di PHP studia innanzitutto l’espressione nello switch in questo caso la variabile $toons, quindi controlla quella variabile e se c’è un case uguale a tale valore. Se non trova il valore che sta cercando, opta per l’ultimo caso ovvero il DEFAULT. Nel nostro caso l’output sarà case3 quindi la pixar. Fate molta attenzione ai break nei casi, queste dichiarazioni terminano ogni caso, l’inserimento di questi break non sono obbligatori ma in loro assenza quando esiste un caso corretto verrebbero eseguiti comunque gli altri casi! Il caso default neanche è obbligatorio perché se viene omesso lo script esce dall’esecuzione.

Lezione aggiuntiva: OPERATORE TERNARIO IN PHP

L’operatore ternario è molto simile all’if-else ma con un “vantaggio” in più che può essere inserito su una linea, quindi risparmiare spazio e linee di codice! L’operatore ternario valuta le sue espressioni tramite valori booleani. La sua sintassi è: condizione ? test_vero : test_falso dove test_vero e test_falso mostrano un output come valori FALSE e TRUE. Un esempio banale è riportato qui sotto:

<?php
$a = 3;
$b = 4;
$a <= b ? print “Ciao” : print “Addio.”
?>