Corso di Perl

Strutture di controllo: if-else

 

oi esseri mortali, devono prendere sofferte decisioni e svolgere compiti noiosi e ripetitivi. Dopotutto, i computer sono stati inventati per liberare gli esseri umani dai lavori ostici e complicati. Non che ci siano riusciti un granché… ma non divaghiamo. Finora i nostri esempi sono stati molto semplici e lineari. Uso la parola “lineari” per intendere che l’ordine di esecuzione delle nostre istruzioni era perfettamente sequenziale: una dopo l’altra, senza nessuna variazione. Nel mondo reale qualunque programma, Perl o altro, che debba fare più di 2+2 ha bisogno di fare delle scelte, e di ripetere varie volte dei segmenti di codice. Per questo, sono state inventate le strutture di controllo.

Un vantaggio sleale

Nella puntata precedente, accennavo al fatto che chi programma in un altro linguaggio sa già di cosa parlo. Per essere più precisi, vorrei informare chi programma in C o in Pascal che sa già quasi tutto quello che occorre, e basterà che legga le puntate su questo argomento soffermandosi giusto sulle particolarità del Perl. Chi invece inizia ora, dovrà sudare un po’ di più :-)

Bivio

Iniziamo dalla struttura più semplice, la cosiddetta struttura condizionale: serve a spezzare il codice in parti che verranno eseguite solo se si verificano certe condizioni. Ad esempio, supponiamo di voler fare una divisione per un numero, e che su questo numero il nostro programma non abbia alcun controllo, a parte il fatto che gli è stato messo nella variabile $divisore. Potremmo scrivere:

$quoziente = $dividendo / $divisore;

Ma il nostro programma non sa quale valore è stato inserito in $divisore. Se qualche burlone ci desse uno zero? Visto che dividere per zero è impossibile per un computer (il concetto di infinito è difficile da far digerire ad una macchina), il nostro programma si fermerebbe bruscamente segnalando un errore. La soluzione corretta è questa:

if ($divisore != 0)
                {
                $quoziente = $dividendo / $divisore;
                }

L’istruzione if (che significa “se” in Inglese) segnala l’inizio di un’istruzione condizionale. Il Perl valuta l’espressione tra parentesi, e se questa è vera procede ad eseguire le istruzioni che sono poste tra le due parentesi graffe. La nostra espressione forse vi ha confuso le idee, perché non vi ho detto che “!=” in Perl significa “non uguale”, “diverso”. Quindi le righe di codice precedenti significano questo:

Se ($divisore diverso da 0)
                {
                fai la divisione
                }

Chi programma in C farà bene a prendere nota del fatto che le parentesi graffe sono sempre obbligatorie, anche se c’è una sola istruzione da eseguire, a meno di casi particolari che esporrò in seguito.

Se la condizione non è rispettata (nel nostro caso, se il divisore è uguale a zero), le istruzioni comprese tra le parentesi graffe vengono saltate a piè pari, e l’esecuzione del programma riprende dalla prima istruzione che segue il blocco di istruzioni condizionali. Blocco è un termine specifico del Perl che denota un gruppo di istruzioni con una relazione logica tra loro, ad esempio quelle facenti parte di un’espressione condizionale. In seguito userò spesso la parola blocco per indicare una o più istruzioni racchiuse tra parentesi graffe.

Ecco la sintassi completa dell’istruzione if:

if (espressione)
                {
                blocco “vero”
                }
else
                {
                blocco “falso”
                }

Che significa: se l’espressione è vera, esegui solo il blocco di istruzioni associato al valore “vero”. Se invece è falsa (else qui significa “altrimenti”), allora esegui solo il blocco marcato come “falso”. In entrambi i casi, salta il blocco sbagliato e riprendi il programma dopo l’ultima parentesi graffa. Tutta la parte dall’else in poi è opzionale: noi prima non l’avevamo messa perché non serviva a nulla, ma a volte vorrete eseguire una cosa o l’altra a seconda dei casi.

Notate come ho incolonnato le istruzioni, grazie al tasto Tab (quello subito sopra il Caps Lock, sulla sinistra della tastiera). All’interprete Perl ignora quegli spazi bianchi aggiuntivi, ma per chi scrive (e soprattutto per chi legge) il codice è importante incolonnare bene i blocchi di codice per mostrare le loro relazioni logiche.

Nella prossima lezione faremo qualche altro esempio su if e parleremo di altre strutture di controllo.

 

Torna all'indice Generale del corso di Corso di Perl di Software Planet