Make
a donation:
IBAN: IT36M0708677020000000008016 - BIC/SWIFT:
ICRAITRRU60 - VALERIO DI STEFANO or Privacy PolicyCookie PolicyTerms and Conditions Manuale di Utilizzo di POV-Ray 3.01 - Versione Italiana
7.2.5.4 Istruzioni
SWITCH CASE e RANGE
Un'istruzione condizionale piu potente
è #switch.
La sintassi è la seguente...
#switch (VALORE)
#case (TEST_1)
// Questa sezione è analizzata se VALORE=TEST_1
#break // Fine primo caso
#case (TEST_2)
// Questa sezione è analizzata se VALORE=TEST_2
#break // Fine secondo caso
#range (LOW_1, HIGH_1)
// Questa sezione è analizzata se (VALORE>=LOW_1)& (VALORE<=HIGH_1)
#break // Fine terzo caso
#range(LOW_2, HIGH_2)
// Questa sezione è analizzata se (VALORE>=LOW_2)& (VALORE<=HIGH_2)
#break // Fine quarto caso
#else
// Questa sezione è analizzata se nessun altro case o
// range sono veri.
#end // Fine della parte condizionale
L'espressione decimale VALORE che segue
l'istruzione #switch è
valutata e comparata ai valori nelle istruzioni #case
o #range.
Quando si usa #case,
essa è seguita da un'espressione decimale (TEST_1 nell'esempio)
in parentesi. Essa è comparata a VALORE. Come al solito in POV-Ray,
i confronti di valori decimali sono considerati uguali se la loro differenza
è inferiore a 1e-10. Se i valori sono uguali, l'analisi continua
normalmente fino ad incontrare l'istruzione #break,
#else o
#end.
Se il confronto fallisce POV-Ray salta le istruzioni fino a quando non
trova #case o
#range.
Se usi l'istruzione #range essa
è seguita da due espressioni decimali (LOW_1 ed HIGH_1 nell'esempio)
che sono chiuse in parentesi e separate da una virgola. Se l'interruttore
(switch) VALORE cade nell'intervallo specificato allora l'analisi continua
normalmente fino a che non è raggiunta l'istruzione #break,
#else o
#end.
Se VALORE è al di fuori dall'intervallo il confronto fallisce e
POV-Ray salta fino a quando non viene trovato un altro #case
o #range.
Se nessuna istruzione #case o
#range ha
successo è analizzata la sezione #else.
L'istruzione #else è
opzionale. Se non è specificata nessuna istruzione #else
e nessun confronto riesce, allora l'analisi
riprende dopo l'istruzione #end.
Ci può essere qualsiasi numero di istruzioni #case
o #range
in qualsiasi ordine si voglia. Se una
sezione viene valutata vera ma non è specificato alcuna istruzione
#break,
l'analisi fallirà al successivo #case
o #range
e continuerà fino a un #break,
#else o
#end.
Incontrando un'istruzione #break mentre
il programma è in fase di elaborazione, una sezione che ha successo
provoca un immediato salto all'istruzione #end
senza operare l'analisi delle successive
sezioni, anche se una condizione successiva poteva essere soddisfatta.