Циклічні обчислювальні процеси 1
Цикл - це багаторазове повторення певної послідовності дій.
У алгоритмічну структуру «цикл» входять оператори, що виконуються багаторазово. Така послідовність команд утворює тіло циклу.
Циклічні алгоритмічні структури бувають двох типів:
1) цикли з параметром, в яких тіло циклу виконується певна (заздалегідь відоме) кількість разів;
2) цикли з умовою, в яких тіло циклу виконується, поки умова істинно або хибно.
Цикл з параметром використовується, коли заздалегідь відомо, яка кількість повторень тіла циклу необхідно виконати (рисунок 6).

Малюнок 6 - Цикл з параметром
На початку виконання циклу значення змінної i встановлюється рівним in.
При кожному проході циклу змінна i збільшується на величину кроку.
Коли вона досягає величини, більшої Ik, то цикл завершується, і виконуються наступні за ним оператори.
У Паскалі цикл з заданим числом повторень реалізується за допомогою оператора FOR.
Загальний вигляд оператора FOR
FOR i: = In TO Ik do <тело цикла>;
FOR i: = In TO Ik do
begin <тело цикла> end;
де FOR (для), TO (до), do (виконати) - службові слова, i - керуюча змінна циклу (параметр циклу), яка повинна бути перераховується типу (ціла, символьний і т.д.)
Найчастіше параметр циклу використовують як змінну целочисленного типу, крок її дорівнює +1 (або - 1).
Параметр циклу не може бути дійсного типу;
In, Ik - вираження, тип яких відповідає типу керуючоїзмінної i,
In - початкове значення керуючої змінної циклу,
Ik - кінцеве значення керуючої змінної циклу,
тіло циклу - простий або складений оператор Турбо Паскаля.
Робота оператора FOR
1. Параметру циклу присвоюється початкове значення;
2. Початкове значення порівнюється з кінцевим значенням, і, якщо воно не більше кінцевого значення, виконується тіло циклу;
3. Параметр циклу змінює своє значення - збільшується на крок (одиницю, якщо параметр циклу має цілий тип);
4. Циклічна частина виконується повторно для кожного значення параметра циклу від його початкового значення In до кінцевого значення Ik включно;
5. Коли параметр циклу перевищить кінцеве значення, оператор FOR припиняє роботу і передає управління наступного оператора.
Параметр циклу i не повинен перевизначатися всередині циклічної частини.
Якщо крок зміни параметра циклу дорівнює +1, а In> Ik, то циклічна частина не виконається жодного разу.
Приклад 3. Нехай є фрагмент програми зі змінними цілого типу:
FOR I: = 1 to 5 do
Циклічна частина програми виконується повторно п'ять разів, при цьому параметр циклу I змінює своє значення від 1 до 5. В результаті виконання програми змінні отримують наступні значення:
При програмуванні може бути використана інша форма оператора циклу, в якій відбувається зменшення значення керуючої змінної:
FOR i: = In downto Ik do
FOR i: = In downto Ik do
Приклад 4. Нехай є фрагмент програми зі змінними цілого типу:
FOR I: = 5 downto 1 do
У процесі виконання даного фрагмента програми змінні приймають наступні значення:
Приклад 5. Надрукувати всі букви латинського алфавіту в зворотному порядку. Алгоритм рішення у вигляді блок-схеми представлений на малюнку 7.

Малюнок 7 - Алгоритм розв'язання задачі
Програма на мові Паскаль виглядає наступним чином:
FOR i: = 'Z' downto 'A' do
1 Дано натуральне число N. Обчислити:
2 Дано натуральне число N. Обчислити:
3 Дано натуральне число N. Обчислити твір перших N сомножителей
4 Дано натуральне число N. Обчислити:
5 Дано натуральне число n. обчислити:
6 Дано натуральне число n. Обчислити: де n> 2.
7 Дано натуральне число n. Обчислити: (n> 1).
8 Дано натуральне число n. обчислити:
10 Дано натуральне число n. обчислити:
У Паскалі цикли з невідомим заздалегідь числом повторень (ітераційні цикли) організовані за допомогою операторів While і repeat.
Ці оператори, на відміну від оператора FOR, мають більш широку сферу застосування.
Цикли з передумовою
Цикл з передумовою реалізується в Паскалі допомогою оператораWhile. Тема оператора While (в перекладі «поки») не містить явних вказівок на кількість ітерацій - він містить логічне вираження. значення якого автоматично обчислюється перед початком виконання кожної чергової ітерації (рисунок 8). Поки логічне вираз «істинно», ітерації циклу триватимуть; як тільки після завершення чергової ітерації логічне вираз стане «помилковим», наступна ітерація циклу не буде виконано, і управління отримає оператор програми, наступний після оператора While.
Очевидно, що якщо в заголовок циклу помістити тотожне помилкове логічне вираз, цей цикл не виконає жодної своєї ітерації, а якщо цей вислів тотожно істинно, цикл буде нескінченним (останню ситуацію називають зацикленням програми). Для того, щоб уникнути подібних ситуацій, в число операндів логічного виразу повинні бути включені одна або більше змінних, що змінюють свої значення в тілі циклу таким чином, щоб цикл був кінцевим.
Малюнок 8 - Цикл з передумовою
Паскаль працює з оператором WHILE наступної структури:
де while (поки), do (виконати) - службові слова, х - логічне вираження, що задає умову продовження роботи;
<тело цикла> - оператори Турбо Паскаля;
Тіло циклу виконується до тих пір, поки логічне вираження х істинно, в іншому випадку відбувається вихід з циклу.
Змінні оператора циклу повинні бути визначені до входу в циклічну частину. Необхідно передбачити вихід з циклу. Якщо цього не передбачити, наприклад, логічний вираз х - завжди істина, циклічні обчислення будуть виконуватися нескінченно. У цьому випадку говорять, що відбулося «зациклення» виконання програми.
Робота оператора WHILE
1 Перевіряється значення логічного виразу х.
2 Поки значення х одно істина, виконується циклічна частина.
3 Якщо з самого початку значення х помилково, то оператори циклічної здебільшого не виконаються жодного разу.
Приклад 6. Знайти, скільки доданків необхідно, щоб сума 2 + 4 + 6 + ... виявилася більше цілого позитивного числа N.
Введемо наступні позначення:
S - поточне значення суми;
Sl - значення чергового доданка;
K - кількість доданків в сумі.
Алгоритм рішення у вигляді блок-схеми представлений на малюнку 9. Програма розглянута нижче.
Var N, K, S, Sl: integer;
Write ( 'Вкажіть позитивне число');
Малюнок 9 - Алгоритм розв'язання задачі прикладу 6
Приклад 7. Дано числа x. e. Обчислити sinx = x з точністю до e.
Для забезпечення необхідної точності e. необхідно в обчислюється суму Знакозмінні ряду включити тільки ті складові Un. які задовольняють умові.
Для обчислення чергового члена ряду Un корисно скористатися рекуррентной формулою U1 = x;
Алгоритм рішення у вигляді блок-схеми представлений на малюнку 10.
Програма на мові Паскаль:
Write ( 'введіть значення х');
Write ( 'введіть точність');
While abs (U)> = e do
Writeln ( 'sin (x) =', S: 8: 4);
Малюнок 10 - Алгоритм розв'язання задачі прикладу 7
Цикли з умовою поста
Умова виходу з циклу можна поставити після тіла циклу. Такий цикл називається циклом з умовою поста (рисунок 11).
Цикл виконується, поки логічне вираз має значення брехня. Як тільки логічне вираження приймає значення істина, виконання циклу закінчується.
Цикл з умовою поста виконується як мінімум один раз.
Малюнок 11 - Цикли з умовою поста
Цикл з умовою поста в Паскалі реалізований за допомогою операторів Repeat ... until, який має вигляд:
repeat (повторювати) і until (до тих пір) - службові слова,
<тело цикла> - будь-які оператори Турбо Паскаля,
х - логічне вираження, що задає умову закінчення циклу.
Робота оператора repeat ... until
1 Виконується тіло циклу
2 Перевіряється логічне вираз.
Якщо його значення дорівнює істина, то оператор repeat свою роботу припиняє і передає управління наступному за ним оператору.
В іншому випадку, якщо логічний вираз помилково, виконується тіло циклу.
Приклад 7 з використанням оператора repeat виглядає наступним чином (малюнок 12):
Програма на мові Паскаль:
Write ( 'введіть значення х');
Write ( 'введіть точність');
Writeln ( 'sin (x) =', S: 8: 4);

Малюнок 12 - Алгоритм розв'язання задачі прикладу 7
із застосуванням оператора REPEAT
Відмінні риси операторів циклу з невідомим числом повторень repeat і while
1 Оператор while працює, коли значення логічного виразу - істина, repeat - коли брехня.
2 В операторі repeat тіло циклу виконується хоча б один раз, навіть якщо значення логічного виразу істина; в операторі while, якщо значення логічного виразу брехня, то тіло циклу не виконається жодного разу.
Таким чином, для організації циклічного обчислювального процесу в мові Турбо Паскаль є три оператора:
· For - для організації циклів з заданим числом повторень;
· While, repeat - для організації циклічних структур з невідомим числом повторень.
Вирішити за допомогою циклу з передумовою.
Скласти програму обчислення значень функції F (x) на відрізку [a; b] з кроком h. Результат представити у вигляді таблиці, перший стовпець якої - значення аргументу, другий - відповідне значення функції. Вихідні дані представлені в таблиці 5.
Таблиця 5 - Вихідні дані