Vai al contenuto

Inform e Glulx/Le basi di Inform/Switch... case

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Switch... case

[modifica | modifica sorgente]

Questo ciclo permette di operare delle scelte multiple. Ecco un esempio che ne illustra il funzionamento:

! Esempio sull'utilizzo del ciclo SWITCH CASE

Include "Parser"; Include "VerbLib"; Include "Replace";
[ Funz_princip; ClearScreen(); ! pulisce lo schermo Domanda(); print "^Premi un tasto per uscire^"; KeyCharPrimitive(); ! legge un carattere dalla tastiera ];
[ Domanda x; do { print "^Scrivi ogni quanti anni compare la cometa di Halley:"; print "^^50 60 70 76^^"; print "? "; x = Getnumber(2); switch(x) { 50, 60: print "Assolutamente no!!!^"; 70: print "No, ma ci sei quasi...^"; 76: print "Bravo, la risposta @`e esatta...^"; default: print "Sii serio. Il valore da te scritto non @`e tra quelli elencati.^"; } } until (x == 76); ];
[ Initialise; Funz_princip(); quit; ! fine del programma ];
Include "Io"; Include "ItalianG";

Abbiamo la nostra solita domanda sulla cometa di Halley, ma questa volta c’è una novità: ora il computer propone quattro possibili risposte, e l’utente deve indovinare quella giusta. A differenza degli esempi precedenti però, ora viene stampato un messaggio per ogni risposta data, compreso un valore che non rientra nei quattro suggeriti.

Sottolineo ancora una volta l’importanza della formattazione del codice perché, rispettando un certo ordine di spazi e di tabulazioni, è possibile riuscire a capire quali sono le istruzioni che appartengono a un certo ciclo piuttosto che a un altro. Come potete vedere, dopo la riga switch(x) segue un elenco dei valori con, per ognuno, la stampa del relativo messaggio.

La condizione default: è quella che permette al computer di capire se l’utente ha digitato un valore suggerito o no; essa dice al compilatore: per tutto quello che è diverso dai valori elencati, scrivi "Sii serio. Il valore da te scritto non è tra quelli elencati.". Capito dove sta il trucco?[1]

Notate che lo stesso risultato si può ottenere anche con l’istruzione if-then:

[ Domanda x;
  do
  {
     print "^Scrivi ogni quanti anni compare la cometa di Halley:";
     print "^^50  60  70  76^^";
     print "? "; x = Getnumber(2);
     if (x == 50 or 60) print "Assolutamente no!!!^";
     else 
     { 
        if ( x ==  70) print "No, ma ci sei quasi...^";
        else
        {
            if (x == 76) print "Bravo, la risposta @`e esatta...^";
            else
            {     
               print "Sii serio. Il valore da te scritto non @`e tra 
                      quelli elencati.^";
            }
        }
     }
  }
  until (x == 76);
];

tutto funziona alla perfezione (provare per credere), ma è proprio il caso di dire che con l’istruzione switch-case le cose si semplificano di molto. Nell’ambito della programmazione, più diventerete esperti e più vi renderete conto che esisteranno diverse strade per arrivare alla soluzione di un problema; alcune saranno migliori, altre no. Sarete voi a deciderlo.

  1. Cliccate qui per scaricare il listato di questo esercizio (il file 3.12.inf).