Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/studb20/public_html/index.php on line 4
 1.6.5 Оператор циклу Тог - Програмування С, С++теорія та практика (частина 1) - Studbook

Програмування С, С++теорія та практика (частина 1)

1.6.5 Оператор циклу Тог

Оператор /ог забезпечує циклічне повторення деякого оператора певне число разів. Оператор, який повторюється називається тілом циклу. Повторення циклу звичайно здійснюється з використанням деякої змінної (лічильника), яка змінюється при кожному виконанні

40                                                   Розділ  1. Мова програмування Сі

тіла циклу. Повторення завершується, коли лічильник досягає заданого значення.

Синтаксис оператора:

їог([ініціалізація];[перевірка_умови];[нове_значення]) оператор;

Рис. 1.9. Синтаксис оператора їог

 

Звернемо увагу на те, що кожен з трьох виразів може бути відсутнім. Перший вираз служить для ініціалізації лічильника, другий

-        для перевірки кінця циклу, а третій вираз - для зміни значення лічильника. Формально роботу циклу можна описати такими кроками:

1.                                                                                      якщо перший вираз (ініціалізація) присутній, то він

обчислюється;

2.     обчислюється вираз умови (якщо він присутній). Якщо умова

виробляє значення 0, тобто вона невірна, цикл припиняється,        у

протилежному випадку він буде продовжений;

3.     виконується тіло циклу;

4.     якщо присутній вираз зміни лічильника, то він обчислюється;

5.     надалі перехід до пункту під номером 2.

Поява у будь-якому місці циклу оператора сопііпие призведе до негайного переходу до пункту 4.

Приклад використання циклу /ог :

/* друк парних чисел у проміжку від 500 до 0   */

#іпс1игі.е <з'Ьгііо.Ь>

Vоігі. таіп ^оігі.)    {

Іопд і;

£ог(і=500;і>=0;і-=2) ргіп££ ("\п%1гі." ,і) ; ргіп-Ь£("\п") ;

}

Для того, щоб продемонструвати гнучкість даного різновиду циклу, розглянемо інші варіанти цієї ж програми. У першому випадку

представимо весь перелік обчислень лише в одному операторі /ог, за яким слідує порожній оператор:

#іпс1ийе <з,Ьгііо.Ь> іп£ таіп^оій.)

{

1опд і;

£ог(і=500;і>=0;ргіп'Ь£("\п%1й" ,і),і-=2)  ;

}

Другий варіант використовує оператор сопґіпие:

#іпс1ийе <з,Ьгііо.Ь> іп£ таіп^оій.)

{

1опд і;

£ог(і=500;і>=0;і--) і£ (і%2 == 1) сопгіпие; еізе

ргіп££("\п %1гі", і ); ргіп££("\п");

}

Справа програміста, який з варіантів обрати - надати перевагу більш стислому викладанню або навіть взагалі скористатися іншим оператором. Цікаво, що різновид циклу /ог можна звести до циклу м>кіїе наступним чином:

£ог(виразі;вираз2;виразЗ) оператор;

/* далі - аналогічний цикл мЬіІе */ вираз1;

мЬіІе (вираз2)

{

оператор; виразЗ;

}

Інша справа - чи є в такій заміні необхідність? Не завжди гнучкість переважає стислість та навпаки. Справа за конкретною ситуацією. Зрештою, вибір циклу може бути й справою смаку конкретного програміста - саме йому вирішувати, які оператори застосувати для вірного запису того чи іншого алгоритму.

 

38