While
Ripete la logica mentre la condizione è vera, quindi restituisce il risultato.
Formato
While ( [ variabileIniziale ] ; condizione ; [ logica ] ; risultato )
Parametri
variabileIniziale
- definizioni di variabile disponibili per l'utilizzo nei seguenti parametri.
condizione
- un'espressione booleana valutata prima di ogni iterazione del ciclo. Mentre è vera, il ciclo si ripete. Quando è falsa, il ciclo si arresta.
logica
- definizioni di variabile valutate ogni volta che il ciclo si ripete.
risultato
- un'espressione restituita quando il ciclo si arresta.
Tipo di dati riportato
Testo, Numero, Data, Ora, Indicatore data e ora, Contenitore
Creata nella versione
18.0
Descrizione
La funzione While esegue le seguenti operazioni:
- Valuta il parametro
variabileIniziale
. - Valuta il parametro
condizione
. - Se
condizione
è:- Vera (qualsiasi risultato numerico diverso da zero), valuta
logica
, quindi ripete il passo 2. - Falsa (0), arresta il ciclo e restituisce
risultato
.
- Vera (qualsiasi risultato numerico diverso da zero), valuta
È possibile specificare diverse definizioni di variabile per variabileIniziale
e logica
racchiudendole tra parentesi quadre [ ] e separando ognuna con un punto e virgola. Ad esempio:
While (
[ varIniz1 = valore1 ; varIniz2 = valore2 ; ... ] ;
condizione ;
[ varLogica1 = espressione1 ; varLogica2 = espressione2 ; ... ] ;
result
)
Le variabili specificate nei parametri variabileIniziale
e logica
vengono valutate da sinistra a destra. Queste variabili hanno lo stesso campo di applicazione e possono essere utilizzate nei parametri condizione
e risultato
. Vedere Utilizzo di variabili.
Le variabili che devono conservare le informazioni da un'iterazione del ciclo a quella successiva devono essere inizializzate prima di essere utilizzate nel parametro logica
. In caso contrario, i loro valori verranno eliminati.
Note
- Per evitare cicli infiniti che potrebbero causare il blocco dei client FileMaker, questa funzione restituisce "?" quando il numero di iterazioni del ciclo supera un limite. Per impostare il limite, utilizzare la funzione ImpostaRicorsività.
Esempio 1
Esegue il totale dei valori nella variabile ripetuta $a
. Ogni iterazione del ciclo incrementa il valore conteggio
, lo utilizza per specificare la ripetizione della variabile $a
e aggiunge il valore al totale
progressivo. Questo esempio restituisce 150.
While (
[
conteggio = 0 ;
totale = 0 ;
$a[1] = 25 ;
$a[2] = 50 ;
$a[3] = 75
] ;
conteggio < 3 ;
[
conteggio = conteggio + 1 ;
totale = totale + $a [conteggio]
] ;
totale
)
Esempio 2
Aggiunge cinque punti tra due valori di testo. Il campo di applicazione della variabile della funzione Città
nella funzione While è differente da quello in Dichiara; pertanto, questo esempio restituisce San Francisco.....Parigi.
Dichiara (
Città = "Parigi" ;
While (
[ Città = "San Francisco" ; i = 0 ] ;
i < 5 ;
[
i = i + 1 ;
Città = Città & "."
] ;
Città
)
& Città )
Se ogni istanza della variabile della funzione Città
venisse sostituita con la variabile locale $Città
, l'esempio restituirebbe San Francisco.....San Francisco..... perché $Città
avrebbe lo stesso campo di applicazione in tutto il calcolo.
Esempio 3
Mostra come il campo di applicazione delle variabili delle funzioni sia diverso quando queste vengono definite prima di un ciclo While rispetto a quando vengono definite nei parametri variabileIniziale
e logica
del ciclo While.
I valori di it1
e it2
definiti prima del ciclo While sono disponibili all'interno del ciclo, ma le modifiche apportate a it1
e it2
all'interno del ciclo non influenzano i valori di queste variabili dopo il ciclo. Questo esempio mostra inoltre come il valore 2 della variabile it2
definito nel parametro logica
si perda dopo ogni iterazione del ciclo perché it2
non è inizializzato nel parametro variabileIniziale
.
Dichiara (
[ // Prima del ciclo While; imposta la riga 1.0 del risultato
it1 = "a"; // Definita nel campo di applicazione di Dichiara
it2 = 1; // Definita nel campo di applicazione di Dichiara
out = "1.0 " & it1 & " " & it2 & ¶
];
While
(
[ // variabiliIniziali; imposta le righe 2.0 e 3.0 del risultato
i = 0;
out = out & "2.0 " & it1 & " " & it2 & ¶;
it1 = "b"; // Definita nel campo di applicazione di While
out = out & "3.0 " & it1 & " " & it2 & ¶
];
// condizione
i < 2;
[ // logica; imposta le righe 4.x e 5.x del risultato
// A questo punto le variabili definite nel parametro logica nei precedenti passaggi
// attraverso il ciclo vengono eliminate
i = i + 1;
out = out & "4." & i & " " & it1 & " " & it2 & ¶;
it1 = "c"; // Riutilizzata nel campo di applicazione di While
it2 = 2; // Ridefinita nel campo di applicazione di While
out = out & "5." & i & " " & it1 & " " & it2 & ¶
];
// risultato; imposta la riga 6.0 del risultato
out & "6.0 " & it1 & " " & it2 & ¶
)
// Dopo il ciclo While; imposta la riga 7.0 del risultato
& "7.0 " & it1 & " " & it2 & ¶
)
Il risultato è:
1.0 a 1
2.0 a 1
3.0 b 1
4.1 b 1
5.1 c 2
4.2 c 1
5.2 c 2
6.0 c 2
7.0 a 1