Циклічні процеси, оператори їх організації в програмі.

Циклічні процеси, оператори їх організації в програмі.

Алгоритми розв’язку багатьох задач є циклічними, тобто для досягнення результату певна послідовність дій повинна бути виконана кілька разів.

Наприклад, програма контролю знань виводе питання, приймає відповідь, оцінює її певною кількістю балів, які додає до загальної кількості балів. Ця послідовність дій відбувається кілька разів, доки будуть виведені всі питання.

Другий приклад. Обчислити вираз . 1

1Хід виконання розрахунків можна описати, як приведено в фрагменті блок-схеми. З цього фрагменту алгоритму видно, що одна й та сама команда повторюється багаторазово, змінюється при цьому тільки підкореневий вираз – зростає на 1. Але виконувати запис цієї команди також багаторазово не раціонально.

На всіх мовах програмування є команди циклу, команди, які дозволяють зробити запис якоїсь послідовності команд один раз, але виконуватись вона буде багаторазово. Цю послідовність команд будемо називати тілом циклу, або просто циклом.

Іноді з умови задачі відома кількість повторення циклу. Тоді такий циклічний процес можна описати в бдок-схемі за допомогою приведеної на малюнку конструкції:

2I – змінна, параметр циклу;

N – початкове значення параметру циклу;

K – кінцеве значення параметру циклу;

H – крок – різниця між послідовними значеннями параметру циклу.

Команда повторення дозволяє виконати послідовність команд, які в конструкції задаються як тіло циклу, для кожного значення параметру циклу, що змінюється від N до К з кроком зміни H.

Така структура може бути використана в випадках, коли з умови задачі відомо, скільки разів треба виконати цикл. Але іноді невідомо, скільки разів треба виконати цикл, щоб досягти певної мети, умови. В таких випадках зациклення організоване за допомогою структур, що мають назву «Цикл з передумовою», або «Цикл з післяумовою».

           3                4

Зациклення відбувається до тих пір, доки не буде досягнута певна умова – співвідношення величин, хоч одна з яких змінюється в циклі.

На мові програмування Delphi  для зациклювання використовуються такі оператори циклу:

51. Цикл з параметром:  

При цьому крок зміни параметра завжди дорівнює 1, і параметр циклу – цілого типу.

Якщо параметр циклу треба зменшувати на 1, то використовуємо оператор циклу:

2.  Цикл з передумовою: 

3. Цикл з післяумовою:  

Якщо тіло циклу складається з кількох операторів, то перетворюємо їх в один за допомогою операторних дужок begin і end.

6Розглянемо проект приведеної на початку задачі: Обчислити вираз 1 , але ускладнимо задачу тим, що початкове та кінцеве натуральне число визначає  користувач.

Приведене вікно програми та вікно з кодом процедури обробки події – кліп по кнопці СТАРТ.

Для зациклення розрахунків використаний оператор циклу з параметром. Параметром є змінна І цілого типу. Тіло циклу складається з одного оператора накопичення суми: s:=s+sqrt(i).

7Розглянемо задачу: знайти найбільший спільний дільник 2‑-х натуральних чисел. Використаємо алгоритм Евкліда. Евклід пропонує зменшувати більше з двох цілих чисел на величину меншого до тих пір, доки вони стануть рівними. На малюнку приведена блок-схема алгоритму. З умови задачі невідомо, скільки разів доведеться виконувати цикл. Але відома умова, при досягненні якої розрахунки закінчуються. В таких випадках використовують оператор циклу з післямовою або оператор циклу з передумовою.

Початкові дані – 2 натуральні числа, їх введення зазвичай визначаємо через рядок введення – Edit1 і Edit2. Поряд з вікном введення – коментарі за допомогою міток Label1 і Label2. Початок розрахунків – клік по кнопці Button1. Виведення результату – в мітку Label3.

8Розглянемо вікно проекту та код процедури.

В математиці часто доводиться дослідити поведінку функції на інтервалі. Властивості функції легко визначити, маючи таблицю значень аргументу на інтервалі та відповідних значень функції.

Алгоритм отримання такої таблиці в програмуванні має назву «Табуляція функції». Для його реалізації використана циклічна структура «цикл з передумовою».

В вікнах проекту використаний оператор «Цикл з перемовою».

                9                 10

Для переходу друку кожного нового рядка таблиці на новий рядок в мітці використана функція chr (13), ця функція перетворює код символа в символ. Але 13 – це код клавіші Enter, вона переводе друк на початок нового рядка.

Якщо надрукована інформація не помістилась в вікні, можна змінити його розмір буксуючи нижню границю.

В алгоритмі змінні a,b,h в програмі замінені змінними xp, xk, dx.

           11                12

Контрольні питання

  1. Що таке цикл, поясніть на прикладах;
  2. Цикл з параметром, його структура, основні параметри;
  3. Цикл з передумовою і післямовою;
  4. Kод проекту «Евклід».