You are on page 1of 5

ЛЕКЦІЯ № 8

ОПЕРАТОР ОРГАНІЗАЦІЇ ЛІЧИЛЬНИХ ЦИКЛІВ – for

В алгоритмічній конструкції «лічильний цикл» облік числа виконання операцій


ведеться автоматично, тому її зручно використовувати, коли кількість повторень циклу
відомо заздалегідь. При цьому вводиться новий параметр циклу – лічильник ітерацій.
Лічильник – це змінна, котра під час виконання циклу змінюється заданим чином. Даній
алгоритмічній конструкції мови програмування С відповідає оператор for (рис. 8.1).
Оператор for синтаксична конструкція, яка виконує блок із одного або декілька
операторів визначене число разів.
Синтаксис оператору for:
for (<ініціалізація>;<умова>;<приріст>)
<оператор>;

Ініціалізація

ні
Умова

так
Оператор
(тіло циклу)

Приріст

Вихід з
циклу
Рис. 8.1. Блок схема алгоритмічної
конструкції лічильного циклу

Три його елементи <ініціалізація>;<умова>;<приріст> − це вирази, а оператор


може бути як простим, так і складним.
Алгоритм виконання оператору for:
Крок 1. Обчислення виразу <ініціалізація>. Зазвичай це оператор присвоєння, який
встановлює значення деякої змінної – параметра циклу.
Крок 2. Обчислення виразу <умова>. Як правило, це логічний вираз, що виражає
відношення між величинами.
Крок 3. Якщо умова «хибна» (тобто дорівнює нулю), виконання оператору for
завершується, і керування передається наступному за циклом оператору.
Крок 4. Якщо умова «істина» (тобто не дорівнює нулю), то виконується оператор в
циклі (простий або складний).
Крок 5. Обчислення виразу <приріст> та виконання переходу на крок 2.
Оператор for не виконується жодного разу, якщо <умова> виявиться «хибною» на
першому кроці. Значення параметру циклу for, може змінюватися, як з позитивним, так і
негативним приростом, причому величина цього приросту також може бути різною.
Приклад 8.1 Програма виводить на екран монітору числа від 1 до 20.
#include <stdio.h>

int main()
{int count;
printf("\n");
for (count=1;count<=20;count++)
printf("%5d",count);
return 0;
}

#include <stdio.h>

int main()
{int count;
printf("\n");
for (count=1;count<=20;count=count+2)
printf("%5d",count);
return 0;
}

#include <stdio.h>

int main()
{int count;
printf("\n");
for (count=20;count>=1;count--)
printf("%5d",count);
return 0;
}
8.1 Варіанти застосування циклу for в програмі

Лічильний цикл for – одна з найбільш гнучких конструкцій мови програмування С,


оскільки вона дозволяє отримати широкий діапазон варіантів її використання:
а) для керування циклом можна використовувати декілька змінних. Наприклад:
for(x=0,y=10;x<=10;++x,--y)
printf(“%d %d\n”, x, y);
В прикладі задані два елементи <ініціалізація>, та два елементі <приріст> –
змінних, розділених комою. В даному випадку кома представляє собою оператор, який
означає «зробити це і те» (виконується зліва направо). В елементах <ініціалізація> та
<приріст> циклу for можна використовувати будь-яку кількість інструкцій, але зазвичай,
щоб не ускладнювати програму – не більше двох;
б) дозволяється пропускати будь-який елемент заголовку циклу або – всі відразу.
Наприклад:
for(x=0;x!=125;) // відсутній приріст
{ printf(“введите число \n”);
scanf(“%d”,&x);
}
в) допустима ініціалізація параметрів циклу поза циклом for:
x= 100*sqrt(x)+pow(x,4.3);
for(;x!=65;)
{ z=sqrt(x);
++x;
}
Не варто перевантажувати заголовок циклу for операторами. Найчастіше буває
зручно помістити велику частину коду в тіло циклу. До розміщення виразу ініціалізації за
межами циклу, вдаються в тому випадку, коли початкове значення генерується складним
процесом, який не зручно помістити в заголовок циклу;
г) лічильний цикл можна використовувати всередині іншого оператору for. Такі
оператори називаються вкладеними. За допомогою вкладених операторів можна
програмувати достатньо складні задачі.
Приклад 8.2 Роздрукувати значення ij, де i=1..5; j=1..5/
#include <stdio.h>
int main()
{
int i;
int j;
for(i=1;i<5;i++)
{printf("\n");
for(j=1;j<5;j++)
printf("i=%d j=%d %4d ", i, j, i*j);
}
return 0;
}

Щоб текст програми краще читався, використовуйте відступи від початку рядка:
на одну позицію далі в кожному наступному вкладеному циклу.
8.2 Нескінченні цикли мови С/С++

Нескінчений цикл – це такий цикл, виконання якого ніколи не закінчиться


природним образом за його умовою. Нескінчений цикл може належати до будь-якого з
відомих видів циклів: цикл з передумовою, цикл з після умовою, лічильний цикл.
Наприклад:
while(1)
{<оператори тіла циклу>
}

do
{<оператори тіла циклу>
} while (1);
В циклі перевіряється умова продовження, це константа рівна одиниці, яка
відповідає логічному значенню true.
for( ; ;)
{<оператори тіла циклу>
}
Нескінчений цикл використовується там, де необхідно звіряти багато умов
продовження циклу та тяжко помістити всі ці умови в заголовок циклу, тоді можна
організувати перевірку цих умов окремо в тілі циклу та виходити з циклу за допомогою
конструкції break. За допомогою нескінченого циклу, можна організувати систему меню,
яка буде направляти роботу програми.

8.3 Використання засобів дострокового виходу із циклів

В мові програмування С/С++ передбачена можливість дострокового виходу з


поточної ітерації циклу. Для цього використовуються оператори:
− continue – виконує примусовий перехід до наступної ітерації, пропускає
виконання коду, що залишився в тілі циклу на поточній ітерації. Виконання наступної
ітерації, починається з перевірки умови;
− break – організує негайний вихід із циклу, опустивши виконання коду, який
остався в його тілі та перевірку умовного виразу. Керування передається оператору, що є
наступним після циклу.

Приклад 8.3. Програма виводить тільки парні числа від 0 до 100.


#include<stdio.h>
int main()
{
int x;
for (x=0;x<=100;x++)
{
if (x%2) continue;
printf("%d ",x);
}
return 0;
}
Приклад 8.4. Програма виводить прості числа від 2 до 100.

#include<stdio.h>
int main()
{
int i,j;
for (i=2;i<100;i++)
{
for(j=2;j<=(i/j);j++)
if (!(i%j)) break; //якщо число має множник,це означає – воно не просте
if (j>(i/j)) printf("\n %d - simple ",i);
}
return 0;
}

You might also like