Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C лекції / 3.Оператори мови С.docx
Скачиваний:
32
Добавлен:
05.03.2016
Размер:
46.33 Кб
Скачать

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

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

 

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

 

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

оператор тіла циклу;

 

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

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

2.     Обчислюється вираз умови (якщо він присутній). Якщо умова набуває значення 0, тобто вона є фальш, тоді цикл припиняється, у протилежному випадку він буде продовжений.

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

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

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

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

 

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

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

int main(void)

{

long p;

for(p=500;p>=0;p-=2)

cout << p << endl;

 

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

 

#include

int main(void)

{

long p;

for(p=500;p>=0;cout << p << endl);

system ("pause");

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

 

int main(void)

{

long p;

for(p=500;p>=0;p--)

if (p%%2 == 1)

continue;

else

cout << p << endl;

}

 

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

 

for(вираз1;вираз2;вираз3)

оператор;

/* далі - аналогічний цикл while */

вираз1;

while (вираз2)

{ оператор;

вираз3; }

 

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

 

Приклад 1. Суму цілих чисел з проміжку від 1 до 15 можна обчислити одним із способів:

1)         int n = 1, S = 0;

            for (; n < 16; n++) S += n;

2)         for (int n = 1, S = 0; n < 16; n++) S+=n;

3)         for (int n = 1, S = 0; n< 16; S+=n++);

4)         for (int n = 1, S = 0; n< 16; S+=n, n++);

У результаті виконання команд змінній буде присвоєно значення 120. Зауважимо, що у способах 2,3,4 змінні n ініціалізовано (оголошено) безпосередньо у команді циклу for.

 

Приклад 2. Кількість і добуток усіх парних цілих чисел із проміжку від 4 до 11 можна обчислити так:

int n, D, kil;

for (D = 1, kil = 0, n = 4; n <= 11; n += 2)

{ D*=n; kil++; }