Cos'è For Loop?
L'istruzione "FOR LOOP" è più adatta quando si desidera eseguire un codice per un numero noto di volte anziché in base ad altre condizioni.
In questo ciclo, verranno specificati il limite inferiore e il limite superiore e finché la variabile del ciclo si trova tra questo intervallo, il ciclo verrà eseguito.
La variabile del ciclo è autoincrementale, quindi in questo ciclo non è necessaria alcuna operazione di incremento esplicita. La variabile loop non deve essere dichiarata, poiché viene dichiarata implicitamente.
FORSpiegazione della sintassi:in … LOOP … END LOOP;
- Nella sintassi precedente, la parola chiave "FOR" indica l'inizio del ciclo e "END LOOP" indica la fine del ciclo.
- La variabile del ciclo viene valutata ogni volta prima di eseguire la parte di esecuzione.
- Il blocco di esecuzione contiene tutto il codice che deve essere eseguito. La parte di esecuzione può contenere qualsiasi istruzione di esecuzione.
- Il loop_variable viene dichiarato implicitamente durante l'esecuzione dell'intero ciclo e l'ambito di questo loop_variable sarà solo all'interno di questo ciclo.
- Se la variabile del ciclo è uscita dall'intervallo, il controllo uscirà dal ciclo.
- Il ciclo può essere fatto funzionare in ordine inverso aggiungendo la parola chiave "REVERSE" prima di lower_limit.
Esempio 1 : in questo esempio, stamperemo il numero da 1 a 5 utilizzando l'istruzione FOR loop. Per questo, eseguiremo il codice seguente.
BEGINdbms Qutput.put linef.Prp.gram started.' );FOR a IN 1… 5LOOPdbms_output.put_line(a);END LOOP:dbms_output.put_iine('Program completed.');END;/
Spiegazione del codice:
- Riga di codice 2 : stampa dell'istruzione "Programma avviato".
- Riga di codice 3: la parola chiave "FOR" contrassegna l'inizio del ciclo e viene dichiarata la variabile loop_variable "a". Ora avrà il valore a partire da 1 a 5
- Riga di codice 5: stampa il valore di "a".
- Riga di codice 6: la parola chiave "END LOOP" indica la fine del blocco di esecuzione.
- Il codice dalla riga 5 continuerà ad essere eseguito fino a quando "a" non raggiunge il valore 6, poiché la condizione fallirà e il controllo uscirà dal ciclo.
- Riga di codice 7: stampa dell'istruzione "Programma completato"
Cicli annidati
Le istruzioni loop possono anche essere annidate. Il ciclo esterno e quello interno possono essere di diversi tipi. Nel ciclo annidato, per ogni valore di iterazione del ciclo esterno, il ciclo interno verrà eseguito completamente.
LOOP -outerSpiegazione della sintassi:LOOP - inner END LOOP; END LOOP;
- Nella sintassi precedente, il ciclo esterno ha un altro ciclo al suo interno.
- I loop possono essere di qualsiasi tipo e la parte della funzionalità di esecuzione è la stessa.
Esempio 1 : in questo esempio, stamperemo il numero da 1 a 3 utilizzando l'istruzione FOR loop. Ogni numero verrà stampato tante volte quanto il suo valore. Per questo, eseguiremo il codice seguente.
DECLAREb NUMBER;BEGINdbms output put line(‘Program started' );FOR a IN 1… 3LOOPb:=1;WHILE (a>=b)LOOPdbms output put line(a);b:=b+1;END LOOP; END LOOP; dbms_output.put_line('Program completed' );END;/
Spiegazione del codice:
- Riga di codice 2 : dichiarazione della variabile "b" come tipo di dati "NUMERO".
- Riga di codice 4 : stampa dell'istruzione "Programma avviato".
- Riga di codice 5: la parola chiave "FOR" segna l'inizio del ciclo e viene dichiarata loop_variable "a". Ora avrà il valore a partire da 1 a 3
- Riga di codice 7: reimpostazione del valore di "b" su "1" ogni volta.
- Riga di codice 8: il ciclo while interno verifica la condizione a> = b.
- Riga di codice 10: stampa il valore di "a" fintanto che la condizione di cui sopra è soddisfatta.
- Riga di codice 14: stampa dell'istruzione "Programma completato"
Sommario
Ciclo continuo | FOR Loop |
Criteri di USCITA | Esci quando il contatore raggiunge il limite |
Utilizzo | Buono da usare quando si conosce il conteggio dei loop da eseguire. |