Successivo: Istruzione continue, Precedente: Istruzione switch, Su: Istruzioni [Contenuti][Indice]
break
L’istruzione break
esce dal ciclo più interno for
,
while
o do
dentro al quale si trova. L’esempio seguente
trova, se esiste, il divisore più piccolo di un dato numero intero, oppure
dichiara che si tratta di un numero primo:
# trova il divisore più piccolo di num { num = $1 for (divisore = 2; divisore * divisore <= num; divisore++) { if (num % divisore == 0) break }
if (num % divisore == 0) printf "Il più piccolo divisore di %d è %d\n", num, divisore else printf "%d è un numero primo\n", num }
Quando il resto della divisione è zero nella prima istruzione if
,
awk
immediatamente esce, a causa del break, dal ciclo
for
in cui è contenuto. Ciò vuol dire
che awk
prosegue immediatamente fino all’istruzione che viene dopo
il ciclo, e continua l’elaborazione. (L’istruzione break
è molto
differente dall’istruzione exit
,
la quale termina l’intero programma awk
.
Vedi la sezione L’istruzione exit
.)
Il seguente programma mostra come la condizione di un’istruzione
for
o while
potrebbe essere sostituita da un’istruzione
break
all’interno di un if
:
# trova il divisore più piccolo di num { num = $1 for (divisore = 2; ; divisore++) { if (num % divisore == 0) { printf "Il più piccolo divisore di %d è %d\n", num, divisore break } if (divisore * divisore > num) { printf "%d è un numero primo\n", num break } } }
L’istruzione break
è usata anche per terminare l’esecuzione di
un’istruzione switch
.
Questo argomento è trattato in L’istruzione switch
.
L’istruzione break
non ha significato se
usata fuori dal corpo di un ciclo o di un’istruzione switch
.
Tuttavia, anche se la cosa non è mai stata documentata,
le prime implementazioni di awk
consideravano l’istruzione break
esterna a un ciclo come 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 fa gawk
.
Successivo: Istruzione continue, Precedente: Istruzione switch, Su: Istruzioni [Contenuti][Indice]