- •1. Вступ
- •2. Основи мови програмування
- •§ 2.1 Вступ до мови програмування
- •§ 2.2 Алфавіт мови і структура програми
- •§ 2.3 Стандартні типи змінних
- •§ 2.4 Опис констант і змінних
- •§ 2.5 Організація вводу-виводу
- •§ 2.6 Вправи та завдання
- •3. Стандартні операції, процедури та функції
- •§ 3.1 Стандартні математичні операції мови
- •§ 3.2 Стандартні математичні функції
- •§ 3.3 Стандартні операції для роботи з символьною інформацією.
- •§ 3.4 Логічні операції
- •§ 3.5 Вправи та завдання
- •4. Графічна інформація та її обробка на мові Pascal.
- •§ 4.1 Організація відображення графічної інформації
- •§ 4.2 Вправи та завдання
- •5. Поняття розгалуження і вибору.
- •§ 5.1 Структура “якщо... То... Інакше...”
- •§ 5.2 Інструкція If... Then... Else...
- •§ 5.3 Інструкція Case
- •§ 5.4 Організація розгалужень в програмах
- •§ 5.5 Вправи та завдання
- •6. Організація циклів
- •§ 6.1 Цикл з параметром
- •§ 6.2 Цикл з передумовою
- •§ 6.3 Цикл з післяумовою
- •§ 6.4 Який з циклів використовувати?
- •§ 6.5 Приклади використання циклів при розв’язуванні конкретних задач.
- •§ 6.6 Вправи та завдання
- •7. Поняття про процедури та функції
- •§ 7.1 Чи потрібні процедури і функції
- •§ 7.2 Процедури
- •§ 7.3 Функції
- •§ 7.4 Вправи та завдання
- •8. Масиви § 8.1 Поняття масиву
- •§ 8.2 Пошук найбільшого або найменшого елементу масиву
- •§ 8.3 Сортування елементів масиву
- •§ 8.4 Приклади розв’язання задач з використанням масивів
- •§ 8.5 Вправи та завдання
- •9. Робота з літерними та символьними величинами
- •§ 9.1 Основні операції для роботи з літерними величинами
- •§ 9.2 Приклади розв’язування задач з використанням основних операцій для роботи з літерними величинами
- •§ 9.2 Лексикографічний метод генерації перестановок
- •§ 9.4 Вправи та завдання
- •10. Двомірні масиви
- •§ 10.1 Приклади використання двомірних масивів
- •§ 10.2 Вправи та завдання
- •11. Множини, записи, файли § 11.1 Множини
- •§ 11.2 Записи
- •§ 11.3 Файли
- •§ 11.4 Вправи та завдання
- •Побажання тим, хто відчув себе програмістом
- •Додатки Словник деяких зарезервованих слів та основних операцій мови
- •Основні команди оболонки програмування Turbo Pascal 5.5
- •Список рекомендованої літератури
§ 6.3 Цикл з післяумовою
Якщо нам необхідно, щоб умова виконання циклу перевірялась не на початку циклу, а після першого його виконання, то слід використовувати цикли з післяумовою, які досить часто називають циклами з постумовою. Ми вживаємо термін “цикл з післяумовою”, який на нашу думку більш точно відображає специфіку організації циклу і спосіб організації машинного мислення.
Знову, приведемо спочатку програмну реалізацію задачі про знаходження суми перших ста натуральних чисел з використанням оператора циклу з післяумовою, а потім детально його розглянемо.
Program summa3; { варіант з використанням циклу з післяумовою }
var i, sum : integer;
Begin
sum := 0;
i := 1;
Repeat { цикл з післяумовою! }
sum := sum + i;
inc (i);
until i > 100; { кінець циклу }
Write ('S = ',sum);
Readln;
End.
Зверніть увагу, що при організації початку і кінця циклу з післяумовою не використовується наша нерозлучна пара Begin ... End, а замість неї нами використано нову пару слів: Repeat ... Until.... Власне вона і є способом організації циклу з післяумовою і розшифровується як виконувати (повторювати) ... поки не виконаються умова ...
У шкільній алгоритмічній мові аналогу для циклу з післяумовою немає, але його досить просто організувати використовуючи інші конструкції алгоритмічної мови. Як вже згадувалось, Дейкстрою доведено, що довільну програму можна написати використовуючи лише три конструкції: лінійні команди присвоєння, команду розгалуження та оператор циклу з передумовою.
Даний цикл з точки зору машинної логіки розуміється так: спочатку виконуються команди, що стоять в тілі циклу, а лише потім перевіряється умова закінчення циклу. Якщо умова виконалась, то цикл закінчується, а якщо ні, то цикл починається спочатку. В умовах поставленої нами задачі в приведеній вище програмі розуміється наступне: спочатку до змінної Sum додати значення змінної і, збільшувати параметр і на 1, якщо і стало більше 100, то цикл на цьому закінчити.
Звертаємо увагу, що в циклах з післяумовою, як і в циклах з передумовою значення змінної–параметра (в нашому випадку і) автоматично не змінюється. Тобто знову ж таки, як нам потрібно змінювати параметр – змінну, що відповідає за умову закінчення циклу, ми повинні вказувати самостійно у самому циклі. Як і у випадку циклу з передумовою, якщо ми забудемо змінювати цю змінну в тілі циклу, то такий цикл буде виконуватись “вічно”, якщо у кінці циклу змінна не відповідала умові закінчення циклу.
Отже, по кількості виконань, цикл з післяумовою:
завжди виконується хоча б один раз;
може виконуватись скінчену кількість разів;
може бути “вічним”.
Параметр циклу ми можемо збільшувати або зменшувати на яку завгодно величину, тобто параметр циклу може бути як цілим так і дробовим числом, або взагалі відноситись до інших типів змінних – логічних, символьних і т.д.
Пояснимо логіку машинного мислення при виконанні циклу з передумовою на прикладі нашої задачі. До початку організації циклу ми присвоюємо значення 0 шуканій сумі і крім того задаємо значення параметра циклу – змінній і (що в загальному випадку не є обов’язковим). Цикл починається з значення параметру рівного 1, ПЕОМ виконує операцію циклу Sum := Sum +1, в результаті якої значення Sum = 1, збільшує значення параметра і на 1, і стає рівним 2 і лише тепер виконується перевірка умови завершення циклу, чи 1>100, отримується результат “ні” і оскільки умова закінчення циклу не виконалась, то цикл виконується ще раз. Виконується операція циклу Sum := Sum + 2, в результаті якої значення Sum = 3, збільшується значення параметра і на 1, і стає рівним 3 і т.д. На 99 кроці значення Sum було 4950 і параметр і став 100, перевіряється чи 100>100, отримується результат “ні”, то цикл виконується ще раз – Sum := Sum +100, в результаті якої значення Sum = 5050, збільшується значення параметра і на 1, і стає рівним 101. Перевіряється чи 101>100, отримується результат “так” і цикл на цьому закінчується. Наступною виконується операція, що йде за циклом: надрукувати результат. Весь хід приведених “машинних роздумів” зручно привести в такій таблиці.
-
Дія
S
і
i > 100
0
1
+1
1
2
ні
+2
3
3
ні
+3
6
4
ні
...
...
...
+99
4950
100
ні
+100
5050
101
так
У циклі з післяумовою пара Repeat ... Until є не тільки ознакою циклу, але операторними дужками, які в даній конструкції замінюють пару Begin ... End.
Наголосимо, що оскільки цикл з післяумовою обов'язково виконується хоча б один раз, слід обережно підходити до його застосування. В той же час у багатьох випадках застосування саме цього виду циклу є найбільш зручним, наприклад, у випадку, коли нам потрібно опрацювати натиснення клавіш на клавіатурі
Знову робимо підсумки. Отже, для циклів з післяумовою необхідно запам’ятати, що:
Цикл з післяумовою може виконуватись яку завгодно кількість разів.
Параметром циклу може бути змінна довільного типу.
Зміну параметру циклу повністю покладено на програміста і змінювати його можна як завгодно.
Цикл з післяумовою завжди виконується хоча б один раз, незважаючи на значення змінної, що є його параметром.