Inform e Glulx/Le basi di Inform/While e do... until
In Inform, così come in qualsiasi altro linguaggio di programmazione, oltre alle scelte esistono anche i cicli (o loop). Il primo di questi è while (condition)
e il suo funzionamento è illustrato nel seguente esempio:
! Esempio sull’utilizzo del ciclo WHILE
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; x = 0; ! per inizializzare la variabile x al valore zero while (x ~= 76) { 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";
Nella funzione Domanda
, viene definito il ciclo while (condizione)
, la cui funzione è quella di eseguire una serie di istruzioni, racchiusa dalle parentesi graffe, fino a quando il valore contenuto nella variabile x
è diverso da 76. In questo modo, il ciclo termina solo se x
è uguale a 76 (se cioè la risposta esatta), altrimenti va avanti all’infinito (richiede tutte le volte la stessa domanda).
Il ciclo do... until
(esegui... fino a quando vale la condizione) è simile al ciclo while
ma, a differenza di quest’ultimo, esegue le istruzioni in esso contenute almeno una volta:
! Esempio sull'utilizzo del ciclo DO...UNTIL
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 "^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...^"; } until (x == 76); ];
[ Initialise; Funz_princip(); quit; ! fine del programma ];
Include "Io"; Include "ItalianG";
Notate però, che nell’istruzione until
la condizione è esattamente opposta a quella del ciclo while
; infatti, mentre in quest’ultimo il ciclo va avanti fino a quando il valore contenuto nella variabile x
è diverso da 76, nel ciclo do-until
le istruzioni racchiuse nelle parentesi graffe vengono eseguite fino a quando il contenuto della variabile x
è uguale 76. Il risultato è lo stesso, ma la strada intrapresa è esattamente quella opposta[1].
Note
[modifica | modifica sorgente]