Циклічні обчислювальні процеси 1

Цикл - це багаторазове повторення певної послідовності дій.

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

Циклічні алгоритмічні структури бувають двох типів:

1) цикли з параметром, в яких тіло циклу виконується певна (заздалегідь відоме) кількість разів;

2) цикли з умовою, в яких тіло циклу виконується, поки умова істинно або хибно.

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

Циклічні обчислювальні процеси 1

Малюнок 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.

Циклічні обчислювальні процеси 1

Малюнок 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);

Циклічні обчислювальні процеси 1

Малюнок 12 - Алгоритм розв'язання задачі прикладу 7

із застосуванням оператора REPEAT

Відмінні риси операторів циклу з невідомим числом повторень repeat і while

1 Оператор while працює, коли значення логічного виразу - істина, repeat - коли брехня.

2 В операторі repeat тіло циклу виконується хоча б один раз, навіть якщо значення логічного виразу істина; в операторі while, якщо значення логічного виразу брехня, то тіло циклу не виконається жодного разу.

Таким чином, для організації циклічного обчислювального процесу в мові Турбо Паскаль є три оператора:

· For - для організації циклів з заданим числом повторень;

· While, repeat - для організації циклічних структур з невідомим числом повторень.

Вирішити за допомогою циклу з передумовою.

Скласти програму обчислення значень функції F (x) на відрізку [a; b] з кроком h. Результат представити у вигляді таблиці, перший стовпець якої - значення аргументу, другий - відповідне значення функції. Вихідні дані представлені в таблиці 5.

Таблиця 5 - Вихідні дані