Оператор циклу з передумовою while
Лабораторна робота №3
«Алгоритми циклічної структури»
Мета роботи:навчитися правильно використовувати різні оператори циклів; навчитися складати програми розв'язання задач із використанням циклічних структур.
Загальні відомості
Алгоритм називається циклічним, якщо він містить багаторазове виконання тих самих операторів при різних значеннях проміжних даних. Число повторень цих операторів може бути задано в явній (цикл з відомим заздалегідь числом повторень) або неявної (цикл з невідомим заздалегідь числом повторень) формі.
Перед виконанням роботи необхідно вивчити різні схеми організації циклів та оператори FOR, WHILE, REPEAT. [див. Програми].
Приклад 1. Знайти найбільший спільний дільник (НДД) двох натуральних чисел A та B.
Етапи розв'язання задачі:
1. Для вирішення поставленої задачі скористаємося алгоритмом Евкліда: зменшуватимемо щоразу більше з чисел на величину меншого доти, доки обидва значення не стануть рівними, так, як показано в таблиці.
Таблиця: Пошук НОД для чисел A = 25 та B = 15.
| Вихідні дані | Перший крок | Другий крок | Третій крок | НОД (A, B) = 5 |
| A=25 | A=10 | A=10 | A=5 | |
| B=15 | B=15 | B=5 | B=5 |
2. Складемо схему алгоритму. У блок-схемі розв'язання задачі, представленої малюнку, на вирішення поставленої задачі використовується цикл із передумовою, тобто тіло циклу повторюється до того часу, поки A не дорівнює A. Отже, під час створення програми скористаємося циклом while..do.

Малюнок Алгоритмпошуку найбільшого спільного дільника двох чисел
writeln('введіть два натуральні числа');
Приклад 2. Обчислити факторіал числа N (N! = 1 × 2 × 3 … × N).
Етапи розв'язання задачі:
1. Вхідні дані: N – ціле число, факторіал якого потрібно обчислити.
Вихідні дані: factorial – значення факторіалу числа N, добуток чисел від 1 до N, ціле число.
Проміжні змінні: i – параметр циклу, цілочисленна змінна, що послідовно приймає значення 2, 3, 4 і так далі N.
Отже, вводиться число N. Змінної factorial, призначеної для зберігання значення добутку послідовності чисел, надається початкове значення, що дорівнює одиниці. Потім організується цикл, параметром якого виступає змінна i.
Якщо значення параметра циклу менше або дорівнює N, виконується оператор тіла циклу, в якому з ділянки пам'яті з ім'ям factorial зчитується попереднє значення твору, множиться на поточне значення параметра циклу, а результат знову поміщається в ділянку пам'яті з ім'ям factorial.
Коли параметр i стає більшим за N, цикл закінчується, і виводиться значення зміною factorial.
2. Складемо схему алгоритму.
Малюнок Алгоритм обчислення факторіалу
Var factorial, n, i:integer;
Завдання
Варіант 1
1. Визначити кількість парних чисел на заданому відрізку [a, b].
Варіант 2
Варіант 3
1. Дано послідовність цілих чисел, 0 – кінець послідовності. Знайти найменше число.
Варіант 4
1. Дано натуральнеN. З'ясуйте, скільки цифр воно містить.
Варіант 5
1. Дано послідовність цілих чисел, 0 – кінець послідовності. Знайтикількість позитивних чисел.
Контрольні питання
1. Як записується та як працює оператор FOR?
2. Для організації яких циклів застосуємо оператор FOR?
3. У чому відмінність оператора WHILE від оператора REPEAT?
4. Як програмуються циклічні алгоритми із явно заданим числом повторень циклу?
5. Як програмуються циклічні алгоритми із заздалегідь невідомим числом повторень циклу?
6. Напишіть оператор циклу, який жодного разу не виконується.
7. Напишіть оператор циклу, який виконується необмежену кількість разів.
8. Замініть оператор Repeat A Until B рівносильним фрагментом програми з оператором While.
Додаток 1.
Оператори циклу
Циклічний процес, або простоцикл,- це повторення тих самих дій. Послідовність дій, які повторюються в циклі, називають тілом циклу . Один прохід циклу називаютькроком, абоітерацією. Змінні, які змінюються всередині циклу та впливають на його закінчення, називаютьсяпараметрами циклу.
При написанні циклічних алгоритмів слід пам'ятати таке. По-перше, щоб цикл мав шанс колись закінчитися, вміст його тіла повинен обов'язково впливати на умову циклу.
По-друге, умова має складатися з коректних виразів та значень, визначених ще до першого виконання тіла циклу.
У мові Free Pascal для зручності програміста передбачені три оператори, які реалізують циклічний процес: while, repeat ... until і for.
Оператор циклу з передумовою while.. do
На рис. зображено блок-схему алгоритмуциклу з передумовою.
Малюнок Алгоритм циклічної структури з передумовою.
Оператор,реалізує цей алгоритм у мові Free Pascal, має вигляд:
while вираз do оператор;
тут while .. do – зарезервовані слова мови Free Pascal, вираз – логічна константа, змінна чи логічний вираз, оператор – будь-який допустимий оператор мови.
Працює оператор while наступним чином. Обчислюється значення виразу. Якщо воно є істинним (True), виконується оператор. В іншому випадку цикл закінчується, і керування передається оператору, що йде за тілом циклу. Вираз обчислюється перед кожною ітерацією циклу. Якщо при першій перевірці вираз хибний (False), цикл не виконається жодного разу.
Якщо в циклі потрібно виконати більше одного оператора, необхідно використовуватискладовий оператор:
while умова do
Нехай необхідно вивести на екран значення функціїy=esin(x)cos(x)на відрізку [0;π] с кроком 0.1. Застосуємоцикл із передумовою:
while x sin(x)cos(x)на відрізку [0;π] з кроком 0.1, отримаємо: