62
ROZDZIA L 9. INSTR UKCJE STER UJĄCE
Break i pętle nieskończone
W przypadku pętli for nic trzeba podawać warunku. W takim przypadku kompilator przyjmie, że warunek jest stale spełniony. Oznacza to. że poniższe pętle są równoważne:
for (;;){/*...*/} for (;1;> {/*...*/}
for (a;a;a) { /* ... */} /*gdzie a jest dowolną liczba rzeczywistą różną od 0*/ while (1) {/*...*/ > do { /* ... */ } while (1);
Takie pętle nazywamy pęt kuni nieskończonymi, które przerwać może jedynie instrukcja break* (z racji tego, że warunek pętli zawsze jest prawdziwy) 2.
Wszystkie fragmenty kodu działają identycznie:
int i ■ 0;
for (;i!-5;++i) {
/♦ kod ... */
int i ■ 0; for (;;++i) {
if (i == 5) break;
int i * 0; for (;;) {
if (i ■■ 5) break;
++i;
Instrukcja continuc
W przeciwieństwie <lo break, która przerywa wykonywanie pętli instrukcja conti-nue powoduje przejście do następnej iteracji, o ile tylko warunek pętli jest spełniony. Przykład:
int i;
for (i ■ 0 ; i < 100 ; ++i) { printf ("Poczatek\n"); if (i > 40) continue ; printf ("Koniec\n");
*Tak naprawdę podobną operacje, możemy wykonać za pomocą polecenia goto. W praktyce jednak stosuje się zasadę, że break stosuje się do przerwania działania |>ętli i wyjścia z niej, goto stosuje się natomiast wtedy, kiedy chce się wydostać się z kilku zagnieżdżonych pętli za jednym zamachem.
Do przerwania pracy pętli mogą nam jeszcze posłużyć polecenia exit() lub return, ale wówczas zakończymy nie tylko działanie |>ętli, ale i całego prograinu/fuukcjL
3Żartobliwie można powiedzieć, że stosując pętlę nieskończoną to najkpiej korzystać z pętli for(;;)\\, gdyż wymaga ona napisania najmniejszej liczby znaków w porównaniu do innych konstrukcji.