Professional Documents
Culture Documents
FP урок 04 new ua
FP урок 04 new ua
Урок № 4
Цикл for
Зміст
1. Конструкція for............................................................ 3
Деякі особливості синтаксису for....................................6
Умова.......................................................................................8
Оператор break.....................................................................9
Оператор continue.............................................................13
Коментарі до прикладу.....................................................14
2. Практичні приклади................................................. 15
Приклад 1.............................................................................15
Приклад 2.............................................................................16
Приклад 3.............................................................................17
Приклад 4.............................................................................19
3. Домашнє завдання.................................................... 24
2
1. Конструкція for
1. Конструкція for
У минулому уроці ми розібрали поняття циклу і дві
його конструкції — while і do while. А тепер настала черга
розглянути ще одну конструкцію циклу — оператор for.
Суть його роботи теж полягає в повторенні дій, але із
заданою кількістю разів. Оператор for містить додаткову
змінну у вигляді лічильника. Саме для неї і налаштову-
ється сам цикл.
Розглянемо приклад, коли вчитель фізкультури по-
просив учня поприсідати 5 разів. Ця ситуація розділена
на дві частини: учитель робить підрахунок присідань,
а учень виконує дії. Так, у той момент, коли вимовля-
ються 1, 2, 3 ..., якраз і спрацьовує лічильник, а сам цикл
повторення дій виконує учень. Тобто ми можемо від-
стежити початковий момент, кінцевий момент і зміну
лічильника.
А тепер приступимо до вивчення самої конструкції.
Загальний синтаксис і принцип роботи конструкції for:
3
Урок № 4
#include<iostream>
using namespace std;
int main() {
for (int count = 1; count <= 5; count++)
{
cout << "The student squatted " << count <<
" time\n";
}
return 0;
}
Малюнок 1
4
1. Конструкція for
Малюнок 2
Коментар до прикладу
1. Усередині циклу оголошується змінна count що дорів-
нює 1. Це й буде керуюча змінна.
2. Потім здійснюється перевірка значення цієї змінної
за допомогою умови count<=5;
3. Якщо умова є істиною (а так буде, поки count не досяг-
не значення 6), виконується показ значення count на
екран (cout <<"The student squatted "<<count << "time\n";)
і зміна керуючої змінної count на 1 (count ++). Потім,
знову перевіряється умова.
4. Якщо умова є брехнею (тобто значення count стало
дорівнювати 6), то програма переходить на наступний
рядок після закриття фігурної дужки циклу.
Примітка. Зверніть увагу, що перший крок —
СТВОРЕННЯ ТА ІНІЦІАЛІЗАЦІЯ ЗМІННОЇ —
завжди виконується тільки один раз.
Найчастіше, на відміну від звичайного життя, у про-
грамуванні відлік йде не з одиниці, а з нуля. Тому є ще
один спосіб реалізації цього прикладу.
5
Урок № 4
#include<iostream>
using namespace std;
int main() {
for (int count = 0; count < 5; count++)
{
cout << "The student squatted " << count <<
" time\n";
}
return 0;
}
Малюнок 3
2. Створення змінної проводиться до циклу, а ініціалі-
зація — у циклі.
6
1. Конструкція for
Малюнок 4
Малюнок 5
Усі три приклади є абсолютно функціонуючими та
рівноважними.
Зміна керуючої змінної
Зміну керуючої змінної можна перенести всередину
тіла циклу, як це відбувається у while і do while.
7
Урок № 4
Малюнок 6
Умова
Умову конструкції також можна пропустити, однак у
цьому разі вона буде вважатися за замовчуванням істин-
ною. Таким чином, ми отримуємо постійно справжню
умову і, як наслідок — НЕСКІНЧЕННИЙ ЦИКЛ.
// нескінченний цикл
for (int x = 1; ; x++)
{
cout << x << " ";
}
cout << endl;
Малюнок 7
8
1. Конструкція for
#include <iostream>
using namespace std;
int main()
{
for (int x = 1;; x++)
{
if (x == 4) break; // якщо x стане дорівнювати 4,
// зупинити цикл
cout << x << " ";
}
cout << "Bye!\n";
return 0;
}
9
Урок № 4
Малюнок 8
Коментарі до прикладу
1. Згідно з правилом, умова циклу завжди є істиною,
адже її просто немає.
2. При значеннях 1, 2 і 3 змінної x умова оператора if
виконуватися не буде. break, звісно, не спрацює, тому
що він знаходиться в тілі if. Тим часом, на екран по-
слідовно будуть виводитися числа 1, 2, 3.
3. Коли х стане дорівнювати 4, програма потрапить у тіло
if і виконається break. Цикл одразу ж буде зупинений,
а виконання програми перейде на наступний рядок
після закриття фігурної дужки оператора for.
4. На екрані з,явиться напис Bye!
5. Цифра 4 на екрані ніколи не з,явиться, тому що, якщо
спрацював break, усе, що знаходиться в циклі нижче
за нього, уже не виконається.
Примітка. break може бути використаний або в
циклі, або в операторі switch. Будь-яке інше розмі-
щення призводить до помилки на етапі компіляції.
Крім цього, оператор break може використовува-
тися не тільки для переривання нескінченного циклу.
Припустимо, ми загадали ціле число в межах від 1 до 10.
Наша програма пропонуватиме вгадати це число за п,ять
спроб. У цьому завданні цикл має виконатися 5 разів (for
10
1. Конструкція for
#include <iostream>
using namespace std;
int main(){
// оголошуємо змінну з задуманим числом
int magicNum = 2;
cout << "==================================\n\n";
cout << " My magic number between 1 and 10\n";
cout << "==================================\n\n";
int user = 0;
for (int n = 1; n <= 5; n++)
{
cout << "Your number is -> ";
cin >> user;
// перевіряємо, чи вгадав користувач наше
// число; якщо так, виводимо привітання
// і перериваємо цикл
if (user == magicNum)
{
cout << "Congrats!!!\n";
break;
}
else
{
// інакше, користувач ще не відгадав
cout << "That’s not my number\n";
}
// якщо лічильник досяг 5, виводимо повідомлення
// спробувати зіграти знову
if (n == 5)
{
cout << "Try again later\n";
}
11
Урок № 4
}
return 0;
}
Малюнок 9
Малюнок 10
12
1. Конструкція for
Оператор continue
Оператор continue використовується для перери-
вання поточної ітерації циклу і здійснення переходу на
наступний крок. У ряді випадків, такі дії є необхідни-
ми. Якщо виконується оператор continue, то, залежно
від виду циклу, відбувається наступне: Цикли while
і do while зупиняють виконання кроку і переходять до
перевірки умови.
Цикл for також зупиняє виконання кроку. Але спо-
чатку переходить до зміни керуючої змінної, а потім уже
до перевірки умови.
Розглянемо приклад: показати на екран усі непарні
цілі числа в діапазоні від нуля до 25 включно.
#include <iostream>
using namespace std;
int main()
{
for (int i = 0; i < 26; i++)
{
13
Урок № 4
Малюнок 11
Коментарі до прикладу
Цикл починає свій рух з нуля і проходить ітерації до
25 включно.
Усередині циклу передбачена умова: якщо число i —
парне, потрібно зупинити поточний крок циклу (continue;)
і перейти до конструкції i++.
Те, що розташовується нижче за оператор continue,
що спрацював, на поточному кроці вже не виконається.
Якщо умова if не виконується, значить число i непарне,
if буде проігноровано, а число — відображено на екрані.
Тепер, коли ми познайомилися з теоретичними мате-
ріалами уроку, давайте перейдемо до наступного розділу,
де буде розглянуто кілька практичних завдань.
14
2. Практичні приклади
2. Практичні приклади
Приклад 1
Постановка задачі
Годинник б,є щогодини стільки разів, скільки зараз
годин. Написати програму, яка підрахує, скільки разів
проб,є годинник за 12 годин.
Код реалізації
#include <iostream>
using namespace std;
int main() {
int sum = 0;
for (int bom = 1; bom <= 12; bom++)
{
sum += bom; // накопичення суми ударів
}
// Годинник пробив 78 разів.
cout << " Hours have punched " << sum
<< " times.\n\n";
return 0;
}
Малюнок 12
15
Урок № 4
Коментарі до коду
1. Спочатку оголошується змінна sum, яка дорівнює нулю.
2. Цикл формується з трьох конструкцій int bom=1; —
початкова ініціалізація, bom<=12; — умова, bom++ —
зміна керуючої змінної.
3. Усередині тіла циклу накопичується сума ударів шля-
хом додавання керуючої змінної до значення загальної
суми.
4. Коли i досягне значення 13, цикл зупиниться, і на екрані
з’явиться результат.
Приклад 2
Постановка задачі
Користувач з клавіатури послідовно вводить цілі числа.
Щойно користувач ввів 0, необхідно показати на екрані
суму всіх введених чисел.
Код реалізації
#include <iostream>
using namespace std;
int main() {
int digit, sum = 0;
for (;;) { // реалізація нескінченного циклу
cout << "Enter digit:";
cin >> digit; // ввід числа
if (digit == 0) // якщо введено 0
break; // зупинити цикл
sum += digit; // накопичення суми
}
16
2. Практичні приклади
// показ результату
cout << "Sum of digits" << sum << "\n\n";
return 0;
}
Малюнок 13
Коментарі до коду
1. У програмі реалізований умовно нескінченний цикл. Тобто
зупинка циклу відбувається штучним шляхом (break).
2. На кожній ітерації користувач вводить число.
3. Здійснюється перевірка, якщо це число — 0, значить
час зупинити цикл, якщо не 0, необхідно додати число
до загальної суми.
4. Після того, як відпрацює break і цикл припинить ро-
боту, на екран виведеться сума всіх введених з клаві-
атури чисел.
Приклад 3
Постановка задачі
Написати програму, яка показує всі числа, яким кратне
число, введене з клавіатури.
17
Урок № 4
Код реалізації
#include <iostream>
using namespace std;
int main() {
int digit;
cout << "Enter digit:";
cin >> digit;
// цикл перебирає числа від 2 до введеного числа
for (int i = 2; i < digit; i++) {
// якщо число не ділиться на поточне значення i
// без залишку, зупинити цей крок і перейти
// до наступного
if (digit%i != 0)continue;
// показати i на екрані
cout<<i<<" ";
}
cout << endl << endl;
return 0;
}
Малюнок 14
Коментарі до коду
1. Користувач вводить число для аналізу.
2. Цикл послідовно перебирає всі числа від 2 до вихід-
ного. Здійснюється перевірка: якщо шукане число на
18
2. Практичні приклади
Приклад 4
Постановка задачі
За добу на заводі виготовляється 4 деталі. Сумарний
час виготовлення однієї деталі не має перевищувати
120 хвилин. При цьому кожна деталь проходить по 2 вер-
стати. Розробити програму, яка має підрахувати кількість
якісно виготовлених деталей за добу без порушення
технології виробництва.
Код реалізації
#include <iostream>
using namespace std;
int main() {
// кількість якісних деталей
int amount = 0;
// цикл для перебору 4 деталей
for (int d = 1; d <= 4; d++)
{
// сумарний час виготовлення деталі
int alltime = 0;
// змінна для зберігання часу на верстаті
int time = 0;
// запитуємо час на першому верстаті
cout << "How much time the first machine "
"spends for " << d << " part\n";
cin >> time;
19
Урок № 4
alltime += time;
// перевіряємо, чи не перевищено ліміт часу
20
2. Практичні приклади
Малюнок 15
Коментарі до коду
1. Оголошуємо змінну amount зі значенням нуль. Саме
вона буде накопичувати значення тільки тих деталей,
які були виготовлені без порушення технології.
2. Налаштовуємо цикл for для змінної d, яка буде змі-
нюватися від 1 до 4 (перебір усіх деталей фабрики за
добу — for (int d = 1; d <= 4; d++)).
3. Спочатку змінна d зберігає номер першої деталі.
4. Перевіряємо, цей номер менше або дорівнює чотирьом?
Якщо так, переходимо до пункту 3, а якщо ні — до
пункту 10.
5. Описуємо тіло циклу, яке буде виконуватися для кож-
ної з 4 деталей. Оголошуємо дві змінні з початковим
значенням нуль для часу виготовлення поточної деталі:
21
Урок № 4
22
2. Практичні приклади
23
Урок № 4
3. Домашнє завдання
1. Користувач вводить з клавіатури число більше за нуль,
необхідно вивести всі його цифри, починаючи з кінця.
Примітка. Наприклад, користувач ввів число 12345.
На екрані має з,явитися число, записане навпаки —
54321.
2. Користувач вводить з клавіатури число, необхідно
показати на екран суму його цифр.
Примітка. Наприклад, користувач ввів число 12345.
На екрані має з,явитися повідомлення про те, що
сума цифр числа є 15.
3. У перший день равлик проповз 15 см. Кожен наступ-
ний день він проповзав на 2 см далі. Визначити, яку
загальну відстань проповзе равлик через N днів.
Примітка. Наприклад, користувач ввів число 4.
Отже, равлик повз 4 дні, тому сумарний шлях
складе 72 см.
4. Для прийняття рішення студент Д. підкидав монету
9 разів. Якщо в результаті кількість монеток, що ви-
пали стороною «орел», була парним числом, приймав
рішення в позитивну сторону, інакше, у негативну.
Напишіть програму, яка 9 разів запитує число 1 або
0 (орел/решка) і видає відповідний результат розв,я-
зання проблеми студента Д.
5. Вивести на дисплей календар на обраний місяць з ура-
хуванням зазначеного номера дня тижня для початку
місяця.
24
3. Домашнє завдання
Малюнок 16
25
Урок № 4
Цикл for
© Тетяна Лапшун
© Компьютерна Академія «Шаг», www.itstep.org