Цикли. Оператори циклу for, while-do, repeat-until. Оператори закінчення циклу break, continue
- 1. Які переваги дає використання операторів циклу в програмах?
- 2. Які є види операторів циклу в мові Паскаль?
- 3. Який вигляд оператора циклу з параметром for?
- 4. Який вигляд має оператор циклу з передумовою while-do?
- 5. Який вигляд має оператор циклу з постумовою repeat-until?
- 6. Приклад обчислення суми з допомогою різних операторів циклу.
- 7. Які є оператори закінчення циклу?
- 8. Приклад використання оператора break.
- 9. Приклад використання оператора continue.
1. Які переваги дає використання операторів циклу в програмах?
Часто алгоритм рішення задачі реалізований таким чином, що потрібно виконувати одні й ті ж операції декілька разів. Алгоритм, у якому певна послідовність команд повторюється декілька разів називається циклічним.
Оператори циклу використовуються для зручної організації циклічного процесу в програмі.
⇑
2. Які є види операторів циклу в мові Паскаль?
У мові Паскаль передбачено три різновиди операторів циклу:
- цикл з параметром (for-to-do);
- цикл з передумовою (while-do);
- цикл з післяумовою (repeat-until).
⇑
3. Який вигляд оператора циклу з параметром for?
Цикл з параметром має два варіанти реалізації.
Варіант 1. Загальний вигляд циклу з параметром:
for Лічильник := ПочатковеЗначення to КінцевеЗначення do begin // Інструкції, оператори end;
де Лічильник – змінна зчисленого типу, яка в циклі має крок приросту рівний 1; ПочатковеЗначення – початкове значення параметру Лічильник; КінцевеЗначення – кінцеве значення параметра Лічильник.
Якщо ПочатковеЗначення більше за КінцевеЗначення, то інструкції між begin та end не виконуються. Якщо між begin та end є лише одна інструкція (оператор), то ключові слова begin і end можна опустити.
Варіант 2. Загальний вигляд циклу з параметром:
for Лічильник := ПочатковеЗначення downto КінцевеЗначення do begin // Інструкції, оператори end;
У цьому випадку значення параметру Лічильник не зростає на 1, а зменшується на 1 (крок зміни рівний -1).
Приклад застосування оператора циклу з параметром.
Скласти програму для обчислення факторіалу. Факторіал обчислюється за такою формулою:
n! = 1 * 2 * 3 * … * n.
Фрагмент коду обчислення факторіалу:
... var i,n:integer; f:real; ... begin // n - задається f:=1; for i:=1 to n do f:=f*i; // f - результат факторіалу end.
⇑
4. Який вигляд має оператор циклу з передумовою while-do?
Загальний вигляд оператора циклу з передумовою:
while умова do begin // деякі інструкції end;
Приклад застосування оператора циклу з передумовою. Фрагмент коду, в якому здійснюється обчислення суми:
S = 2 + 4 + 6 + … + 200
s := 0; i := 0; while i<200 do begin i:=i+2; s:=s+i; end;
⇑
5. Який вигляд має оператор циклу з постумовою repeat-until?
Загальний вигляд оператора циклу з постумовою:
repeat // деякі інструкції until умова;
Оператори, розміщені між ключовими словами repeat і until будуть виконуватись до тих пір, поки логічний вираз, вказаний після until, не прийме значення true.
⇑
6. Приклад обчислення суми з допомогою різних операторів циклу.
Завдання.
З допомогою оператора циклу обчислити суму:
S = 1 + 2 + … + 100
Розв’язок 1. Використання оператору циклу з параметром for.
// опис змінних var s, i : integer; begin ... s:=0; for i := 1 to 100 do s := s + i; ... end.
Розв’язок 2. Використання оператору циклу з передумовою while.
// опис змінних var s, i : integer; begin ... s := 0; i := 0; while i<100 do begin i := i + 1; s := s + i; end; ... end.
Розв’язок 3. З допомогою оператора циклу з постумовою repeat.
// опис змінних var s, i : integer; begin ... s := 0; i := 0; repeat i := i + 1; s := s + i; until i>=100;... ... end.
⇑
7. Які є оператори закінчення циклу?
Для всіх операторів циклу вихід з циклу здійснюється як внаслідок природного закінчення оператора циклу, так і з допомогою операторів переходу і виходу.
У стандартному Паскалі визначені стандартні оператори Break і Continue.
Оператор Break виконує безумовний вихід з циклу. Оператор Continue забезпечує перехід до початку нової ітерації циклу.
⇑
8. Приклад використання оператора break.
Інколи буває зручно вийти з циклу не за результатом перевірки, що здійснюється на початку або в кінці циклу, а якимось іншим способом. Таку можливість представляє інструкція break.
Фрагмент програмного коду, який визначає наявність заданого елементу в масиві m1. Значення елементу описується у змінній x. Якщо елемент є, то недоцільно здійснювати пошук в масиві далі. У цьому випадку корисною є операція break.
... f_is := false; // змінна, що визначає, чи є елемент x в масиві m1 for i := 1 to 100 do begin if m1[i]=x then begin f_is := true; // елемент x є в масиві чисел break; // вихід з циклу, недоцільно проводити пошук далі, // оскільки елемент вже знайдено end; end; ...
⇑
9. Приклад використання оператора continue.
Інструкція continue використовується, коли потрібно зупинити поточну ітерацію і перейти до наступної ітерації.
Приклад фрагменту коду, який множить на 2 усі додатні елементи масиву m1 зі 100 цілих чисел. Якщо зустрічається від’ємний елемент, то він пропускається.
... for i := 1 to 100 do begin if m1[i]<0 then // пропустити від'ємний елемент continue; // і перейти до наступної ітерації m1[i] := m1[i]*2; end; ...