Successivo: , Precedente: , Su: Istruzioni   [Contenuti][Indice]


7.4.7 L’istruzione continue

Analogamente a break, l’istruzione continue è usata solo all’interno di cicli for, while e do. L’istruzione ignora il resto del corpo del ciclo, facendo sì che la successiva iterazione del ciclo inizi immediatamente. Questo comportamento è differente da quello di break, che esce completamente dal ciclo.

L’istruzione continue in un ciclo for fa sì che awk ignori il resto del corpo del ciclo e prosegua l’esecuzione con l’espressione incremento dell’istruzione for. Il seguente programma è un esempio di ciò:

BEGIN {
     for (x = 0; x <= 20; x++) {
         if (x == 5)
             continue
         printf "%d ", x
     }
     print ""
}

Questo programma stampa tutti i numeri da 0 a 20 — tranne il 5, in cui l’istruzione printf è saltata. Siccome l’incremento ‘x++’ non viene saltato, x non rimane fermo al valore 5. Si confronti il ciclo for dell’esempio precedente con il seguente ciclo while:

BEGIN {
     x = 0
     while (x <= 20) {
         if (x == 5)
             continue
         printf "%d ", x
         x++
     }
     print ""
}

Questo programma inizia un ciclo infinito dopo che x ha assunto il valore 5, poiché l’istruzione di incremento (‘x++’) non è mai raggiunta.

L’istruzione continue non ha un significato speciale se appare in un’istruzione switch, e non ha alcun significato se usata fuori dal corpo di un ciclo. Le prime versioni di awk trattavano le istruzioni continue che erano fuori da un ciclo allo stesso modo con cui trattavano l’istruzione break fuori da un ciclo: come se fosse un’istruzione next (vedi la sezione L’istruzione next). (a.b.) Versioni recenti di BWK awk non consentono più un tale uso, e lo stesso vale per gawk.


Successivo: , Precedente: , Su: Istruzioni   [Contenuti][Indice]