Istruzioni condizionali in Ruby
Le istruzioni condizionali sono presenti praticamente in ogni linguaggio di programmazione e di scripting. Esse ci consentono di controllare il flusso dei dati ponendo condizioni ed alternative a cui corrispondono differenti comportamenti da parte del codice digitato e della sua interpretazione.
Affrontiamo subito l'argomento con un semplice esempio basato sul costrutto if - else - end:
# uso del costrutto if - else # definiamo una variabile num = 10 # stabiliamo una condizione if num > 9 # se la condizione è soddisfatta allora stampa.. puts 'Valore superiore a 9.' # poniamo un'alternativa alla condizione else # se la condizione non è soddisfatta allora stampa.. puts 'Valore non superiore a 9.' # chiudiamo il blocco if - else endCopiate e incollate lo scriptino ed eseguitelo dopo avergli dato un nome (ad esempio "condizioni.rb"). L'output restituito dall'interprete di Ruby sarà:
Valore superiore a 9.Per chiarire quanto mostrato smonteremo ogni riga di codice del nostro scriptino:
- innanzitutto abbiamo definito una semplice variabile a cui abbiamo associato un valore numerico intero pari a "10"
- in secondo luogo abbiamo introdotto una condizione: se ("if") il valore della variabile dovesse essere superiore a "9" allora dovrà essere stampata la stringa "Valore superiore a 9."
- dato che il valore della variabile è effettivamente superiore a 9 verrà stampata la stringa stabilita in condizione
- ma se invece ("else") il valore della variabile dovesse essere inferiore o uguale a "9" cosa succederebbe? Verrebbe stamapata una semplice stringa alternativa: "Valore non superiore a 9"
- stabilite condizioni e le alternative non ci rimane altro che chiudere l'applicazione ("end")
- "==": operatore di identità, significa "è identico a.."
- "!": operatore di diversita, significa "non è uguale a.."
- ">": operatore di maggioranza, significa "è superiore a .."
- "<": operatore di minoranza, significa "è inferiore a.. "
Le condizioni proposte da un blocco di codice possono essere anche più di una;è per esempio possibile introdurre l'istruzione elsif (attenzione! non "elseif") che pone una condizione alternativa a quella introdotta da "if"; mentre l'alternativa posta da "else" si verifica in tutti i casi in cui la condizione di "if" non è vera , quella di "elsif" si verifica solo quando è vera una precisa condizione diversa da quella di "if". Vediamo un semplice esempio:
# uso del costrutto if - elsif - else # definiamo una variabile nome = 'Chiara' # stabiliamo una condizione if nome == 'Carla' # se la condizione è soddisfatta allora stampa.. puts 'Ciao Carla, come stai?' #stabiliamo una condizione alternativa elsif nome == 'Monica' # se la seconda condizione è soddisfatta allora stampa.. puts 'Ciao Monica, come stai?' # poniamo un'alternativa alla condizione else # se nessuna condizione è soddisfatta allora stampa.. puts 'Ciao Chiara, come stai?' # chiudiamo il blocco if - elsif - else endL'esecuzione del nostro secondo esempio porterà alla stampa della stringa: "Ciao Chiara, come stai?". Perchè?
Semplicemente perchè nessuna della due condizioni introdotte da "if" e "elsif" è vera (la variabile non è identica nè a "Carla" nè a "Monica"), quindi l'unico esito possibile sarà quello proposto come alternativa da "else".
Chi conosce altri linguaggi di programmazione e scipting avrà notato similitudini e differenze nella sintassi utilizzata:
- in Ruby le condizioni e le alternative non vanno scritte all'interno delle parentesi
- le condizioni alternative non si introducono con "else if" o "elseif" come per esempio in PHP ma con "elsif" come in Perl
- l'operatore di assegnazione ("=") e di identità ("==") sono differenti, se utilizzassimo il primo in luogo del secondo modificheremmo il valore della relativa variabile sconvolgendo l'esito della nostra applicazione
- in alcuni linguaggi come PHP, utilizzare l'operatore di assegnazione in una condizione significa semplicemente riassegnare il valore ad una variabile; anche in Ruby avviene questo, ma non prima di aver ricevuto una notifica di errore







