Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lek5_cpp_ukr.rtf
Скачиваний:
2
Добавлен:
18.11.2019
Размер:
277.63 Кб
Скачать

7. Оператор циклу for

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

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

Рис. 4. Синтаксис оператора for

      Звернемо увагу на те, що кожен з трьох виразів може бути відсутнім. Перший вираз служить для ініціалізації лічильника, другий - для перевірки кінця циклу, а третій вираз - для зміни значення лічильника. Формально роботу циклу можна описати такими кроками: 1. якщо перший вираз (ініціалізація) присутній, то він обчислюється; 2. обчислюється вираз умови (якщо він присутній). Якщо умова виробляє значення 0, тобто вона невірна, цикл припиняється, у протилежному випадку він буде продовжений; 3. виконується тіло циклу; 4. якщо присутній вираз зміни лічильника, то він обчислюється; 5. надалі перехід до пункту під номером 2. Поява у будь-якому місці циклу оператора continue призведе до негайного переходу до пункту 4.       Приклад використання циклу for : /* друк парних чисел у проміжку від 500 до 0 */ #include <stdio.h> void main(void) {       long i;       for(i=500;i>=0;i-=2)       printf("\n%ld",i);       printf("\n"); }       Для того, щоб продемонструвати гнучкість даного різновиду циклу, розглянемо інші варіанти цієї ж програми. У першому випадку представимо весь перелік обчислень лише в одному операторі for, за яким слідує порожній оператор:

#include <stdio.h> int main(void) {       long i;       for(i=500;i>=0;printf("\n%ld",i),i-=2) ; } Другий варіант використовує оператор continue: #include <stdio.h> int main(void) {       long i;       for(i=500;i>=0;i--)             if (i%2 == 1)                   continue;             else                   printf("\n %ld", i );       printf("\n"); }       Справа програміста, який з варіантів обрати - надати перевагу більш стислому викладанню або навіть взагалі скористатися іншим оператором. Цікаво, що різновид циклу for можна звести до циклу while наступним чином: for(вираз1;вираз2;вираз3)       оператор;

/* далі - аналогічний цикл while */ вираз1; while (вираз2) {       оператор;       вираз3; }       Інша справа - чи є в такій заміні необхідність? Не завжди гнучкість переважає стислість та навпаки. Справа за конкретною ситуацією. Зрештою, вибір циклу може бути й справою смаку конкретного програміста - саме йому вирішувати, які оператори застосувати для вірного запису того чи іншого алгоритму.

8. Оператор переходу goto       Синтаксис : goto <мітка>; /* ... */ <мітка> : <оператор>;       Оператор безумовного переходу goto передає управління безпосередньо на <оператор>, перед яким розташована <мітка>. Область дії мітки обмежена функцією, в якій вона визначена. Тому, кожна мітка повинна бути відмінною від інших в одній і тій самій функції. Також, неможливо передати управління оператором goto в іншу функцію.       Оператор, перед яким розташована <мітка> виконується зразу після виконання оператора goto.       Якщо оператор з міткою відсутній, то компілятор видасть повідомлення про помилку.       Приклад використання goto: if (errorcode>0)       goto exit; … exit : return errorcode;       В свою чергу при появі концепції структурного програмування оператор goto піддався критиці, і його використання стало розглядатися як ознака поганого стилю програмування. Дійсно, надмірно широке використання goto робить структуру програми надмірно заплутаною, тому без особливої необхідності намагайтесь обходитися без оператора goto.

9. "Порожній" оператор       Синтаксис: ;       Порожній оператор - це оператор що складається лише з крапки з комою. Він може використовуватися в будь-якому місці програми, де за синтаксисом потрібний оператор. for (i=0;i<10;printf("%d\n",i);) ;

10. "Складений" оператор       "Складений" оператор представляє собою два або більше операторів. Його також називають "блоком".       Синтаксис : {       [<оператори>] }       Дія складеного оператора полягає в обов'язковому послідовному виконанні операторів, які містяться між { та }, за виключенням тих випадків, коли який-небудь оператор явно не передасть управління в інше місце програми. if (i>0) {printf("i == %d\n",i);       i--; }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]