Inform e Glulx/Le basi di Inform/L'utilizzo delle costanti

Indice del libro

L'utilizzo delle costanti

modifica

Possiamo raffinare ulteriormente il nostro esempio sull’istruzione for, utilizzando una costante per identificare il numero dei tentativi massimi possibili:

! Esempio che utilizza una costante

Include "Parser"; Include "VerbLib"; Include "Replace";
Constant TENTATIVI 5;
[ Funz_princip; ClearScreen(); ! pulisce lo schermo Domanda(); print "^Premi un tasto per uscire^"; KeyCharPrimitive(); ! legge un carattere dalla tastiera ];
[ Domanda x count; for (count=0: count<TENTATIVI: count++) { print "^Ogni quanti anni compare la cometa di Halley? "; x = GetNumber(2); if (x == 76) { print "La risposta è esatta!!!^"; break; } else print "Spiacente, la risposta non @`e esatta...^"; } ];
[ Initialise; Funz_princip(); quit; ! fine del programma ];
Include "Io"; Include "ItalianG";

in questo modo, se si vuole aumentare o diminuire il numero dei tentativi, basta andare a modificare il valore della costante, ad esempio:

Constant TENTATIVI 7;

Forse, alcuni di voi non riescono ancora a comprendere il vantaggio di utilizzare una costante in un listato così semplice. Immaginate allora, cosa accade in un listato più complesso se devo andare a cambiare i valori di tutte le condizioni di controllo dei cicli. Una cosa davvero noiosa, soprattutto quando ci sono più cicli che terminano dopo lo stesso numero di tentativi. Dal momento che una costante è dichiarata al di fuori di una qualsiasi funzione o altra struttura, è globale, e quindi visibile in tutto il programma: con un solo cambiamento (quello del valore della costante stessa), metto a posto tutte le funzioni e tutti i cicli che si rifanno a quel valore. Insomma, è proprio il caso di dire che con un piccione prendo più di una fava...

Attenzione però a non confondere una costante con una variabile: una costante è un valore fisso, che non muta durante l’esecuzione del programma, mentre una variabile sì[1].

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