Inform e Glulx/Le basi di Inform/While e do... until

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

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]

  1. Cliccate qui per scaricare i listati di questi esercizi (i file (3.09_1.inf e 3.09_2.inf).