Le istruzioni condizionali Le istruzioni condizionali In questa lezione introdurremo le istruzioni condizionali, ossia delle istruzioni che permettono a Visual Basic di "prendere delle decisioni" e scegliere come comportarsi in base ad alcune condizioni. La sintassi base di una istruzione condizione è Proviamolo in un nuovo progetto che ci darà anche modo di conoscere nuovi controlli Visual Basic. Create un nuovo progetto e chiamatelo CalcolaPreventivoAlbergo. Inserite sul nuovo form un controllo ComboBox (Figura 1): ci serve, infatti, una casella combinata da cui scegliere il tipo di stanza di albergo che vogliamo prenotare. Figura 1 Chiamate la casella combinata cbostanza. Sopra al controllo CombBox inserite una etichetta che ne descriva la funzione ("scegli il tipo di stanza che desideri"). Alessandra Salvaggio - Merlin Wizard DMC 2010 Tutti i diritti riservati 1
A questo punto dobbiamo configurare le proprietà della ComboBox in modo da inserire al suo interno le voci che l'utente può selezionare. Selezionate la ComboBox e, nella finestra delle proprietà, individuate la proprietà Items (Figura 2). Premete poi il pulsante con tre puntini posto li accanto. Figura 2 Visualizzerete la finestra Editor dell'insieme string (Figura 3). Scrivete le voci che devono comparire nella casella combinata su righe diverse Figura 3 Premete ok per confermare. Ora ci serve un pulsante con il quale, più avanti, avvieremo il calcolo del totale della prenotazione, per ora lo useremo solo per capire quale tipo di stanza l'utente ha selezionato. Il pulsante si chiamerà cmdcalcolapreventivo. Fate doppio clic su di esso per inserire la routine che ne gestisce l'evento clic. Completatela come segue. Private Sub cmdcalcolapreventivo_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles cmdcalcolapreventivo.click Alessandra Salvaggio - Merlin Wizard DMC 2010 Tutti i diritti riservati 2
End sub Il codice va a controllare che la proprietà SelectedItem dell'oggetto ComboBox sia uguale a "Singola". La proprietà SelectedItem rappresenta appunto la voce selezionata nella casella combinata. Nel caso in cui sia effettivamente uguale a Singola, viene mostrata la finestra MsgBox con un messaggio. Se è selezionato qualsiasi altro valore non accade nulla. Prima di proseguire, osserviamo un po' l'istruzione MsgBox. Già abbiamo parlato del carattere underscore (_) che permette di mandare a capo il codice che dovrebbe essere scritto su una unica riga. Oggi vogliamo parlare di vbcrlf che permette di mandare a capo una stringa nell'output del programma (non nel codice). In questo caso specifico, otteniamo una finestra con un messaggio su due righe (Figura 4). Figura 4 Dopo aver chiarito questi aspetti torniamo alle nostre istruzioni condizionali. Molto spesso la verifica di una sola condizione non è sufficiente. Ad esempio, in questo caso, se la selezione non è "singola" non succede nulla. Almeno dovremmo mostrare un messaggio alternativo, se la condizione non si verifica. Per questo ci serve lì istruzione, con questa sintassi azione da eseguire se la condizione non si verifica Potremmo quindi correggere l'istruzione vista sopra, così Private Sub cmdcalcolapreventivo_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles cmdcalcolapreventivo.click Alessandra Salvaggio - Merlin Wizard DMC 2010 Tutti i diritti riservati 3
MsgBox("NON hai selezionatouna singola", MsgBoxStyle.DefaultButton1,_ "attenzione") End sub In realtà, in questo caso, la semplice istruzione è un po' riduttiva, perché non possiamo andare a verificare altre ipotesi. In certi casi, è più utile ricorrere alle istruzioni if che permettono di verificare altre condizioni se la prima non si verifica. Con questa sintassi if condizione da verificare se la prima non si verifica then azione da eseguire se la seconda condizione si verifica if condizione da verificare se la seconda non si verifica then azione da eseguire se la terza condizione si verifica. Con if si può verificare più di una condizione, inoltre if può anche essere combinata a per specificare l'azione da compiere se nessuna delle condizioni esposte si verifica if condizione da verificare se la prima non si verifica then azione da eseguire se la seconda condizione si verifica if condizione da verificare se la seconda non si verifica then azione da eseguire se la terza condizione si verifica. azione da eseguire se le condizioni non si verificano Nel nostro caso specifico l'istruzione if si potrebbe trasformare come segue If cbostanza.selecteditem = "Doppia" Then MsgBox("hai selezionato una stanza doppia" & vbcrlf & "costa 80 a notte",_ If cbostanza.selecteditem = "Tripla" Then MsgBox("hai selezionato una stanza tripla" & vbcrlf & "costa 90 a notte",_ If cbostanza.selecteditem = "Quadrupla" Then MsgBox("hai selezionato una stanza Quadrupla" & vbcrlf & _ "costa 100 a notte", If cbostanza.selecteditem = "Suite" Then Alessandra Salvaggio - Merlin Wizard DMC 2010 Tutti i diritti riservati 4
MsgBox("hai selezionato una Suite" & vbcrlf & "costa 120 a notte", _ MsgBox("NON hai selezionato nessun tipo di stanza", _ Con questo codice abbiamo previsto un comportamento per qualsiasi tipo di scelta da parte dell'utente. Per ora ci limitiamo a mostrare un messaggio. Nella lezione di domani proveremo a utilizzare il risultato dei diversi test per compiere delle azioni pratiche. L'esempio che vi proporremo vi permetterà di fare conoscere altri controlli Visual Basic. Alessandra Salvaggio - Merlin Wizard DMC 2010 Tutti i diritti riservati 5