Inform e Glulx/Le basi di Inform/If (condition) then... else...
Wikibooks, manuali e libri di testo liberi.
[modifica] If (condition) then... else...
Nella stesura di un programma, le scelte sono quasi sempre d’obbligo, proprio come avviene in questo esempio:
! Esempio sull’utilizzo dell’istruzione IF THEN – versione 1
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; print "^Ogni quanti anni compare la cometa di Halley? "; x = GetNumber(2); if (x == 76) print "La risposta @`e esatta!!!^"; ];
[ Initialise; Funz_princip(); quit; ! fine del programma ];
Include "Io"; Include "ItalianG";
Tradotta in italiano, l’istruzione if (condition) then suona più o meno così: se (condizione) allora. In questo caso, se il numero introdotto dall’utente è proprio 76, allora il programma stampa a video "La risposta è esatta!!!", altrimenti prosegue senza visualizzare nulla.
Fate molta attenzione a non confondere l’operatore = con l’operatore ==; il primo, come già sapete da quanto visto finora, assegna un certo valore a una variabile, mentre il secondo verifica che un certo valore (in questo esempio 76) sia uguale a un altro (in questo caso il valore contenuto nella variabile x, ovvero il numero digitato dall’utente mediante l’istruzione Getnumber). Gli altri operatori sono:
- (a ~= b) ➨ a è diverso da b
- (a > b) ➨ a è maggiore di b
- (a < b) ➨ a è minore di b
- (a >= b) ➨ a è maggiore o uguale a b
- (a <= b) ➨ a è minore o uguale a b
È anche possibile usarli insieme, ma in questo caso bisogna utilizzare anche gli operatori logici, nell’ordine:
- && detto anche "AND" ➨ es: if ((a > 5) && (b < 10)) ➨ restituisce true (la condizione è cioè soddisfatta) se il valore contenuto nella variabile a è maggiore di 5 e se il valore contenuto nella variabile b è minore di 10;
- || detto anche "OR" ➨ es: if ((a > 5) || (b < 10)) ➨ restituisce true se il valore contenuto nella variabile a è maggiore di 5 oppure se il valore contenuto nella variabile b è minore di 10.
Questo operatore non deve essere confuso con l’operatore (non logico) or che viene usato per testare più valori in una volta sola (ad es.: if (a == 2 or 3 or 4) print...); - ~~ detto anche "NOT" ➨ es: if (~~ (a > 5)) ➨ restituisce true se il valore contenuto nella variabile a è minore di 5 (la condizione viene cioè negata e di conseguenza invertita).
Così com’è, il nostro esempio stampa un messaggio nel caso in cui l’utente risponda correttamente alla domanda. E se invece sbaglia?
Non è un’idea così malvagia, quella di modificare il nostro programma in modo tale che stampi un messaggio anche nel caso di una risposta errata da parte dell’utente. Ecco una possibile soluzione:
! Esempio sull’utilizzo dell’istruzione IF THEN - versione 2
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; print "^Ogni quanti anni compare la cometa di Halley? "; x = GetNumber(2); if (x == 76) print "La risposta @`e esatta!!!^"; else print "Spiacente, la risposta non @`e esatta...^"; ];
[ Initialise; Funz_princip(); quit; ! fine del programma ];
Include "Io"; Include "ItalianG";
di nuovo c’è solo l’istruzione else, che in italiano significa altrimenti e viene usata solo insieme all’istruzione if-then. Ecco quello che accade: se il numero digitato dall’utente è uguale a 76 viene stampato il messaggio "La risposta è esatta!!!", mentre se è diverso da 76 viene stampato il messaggio "Spiacente, la risposta non è esatta..."[1].
[modifica] Note