Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Pascal.rtf
Скачиваний:
5
Добавлен:
22.11.2019
Размер:
2.69 Mб
Скачать

Тема 6 Організація циклічного обчислювального процесу

Цикл – це процес, що повторюється певну кількість разів. Кожне однократне повторення циклу називається ітерацією циклу. Для організації циклічного обчислювального процесу необхідно задати :

  1. Початкове значення параметру циклу. Параметр циклу – це змінна, яка визначає кількість ітерацій циклу.

  2. Тіло циклу, тобто ту послідовність дій, яка буде повторюватись.

  3. Прирощення параметра циклу.

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

Циклічний обчислювальний процес буває трьох видів:

  • Цикл з перед – умовою, коли умова виходу з циклу перевіряються до виконання тіла циклу.

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

  • Цикл з параметром, коли до початку виконання циклу задається кількість ітерацій.

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

Цикли з перед-умовою

Приклад 1:

Для заданого натурального додатного М знайти ціле додатне К, для якого виконується умова Р=3к буде більше за M.

  1. Вводимо значення М. Задаємо перше значення для К = 0, Р = 30 = 1б.

  2. Якщо P < M, то перехід до п. 3, інакше – до п. 5.

  3. Збільшити показник степені: К = К+1.

  4. Обчислити наступне значення Р =3K або Р = Р*3.

  5. Вивести значення К на екран.На першому кроку задається значення М та початкове значення для К = 0. Для коректного розв’язку задачі відразу необхідно перевірити, а не перевищує Р=3K=30 М. Бо якщо було задано М =0, то ми знайшли К. Інакше, якщо М більше за Р, то необхідно обчислити наступне Р=31 (або необхідно попереднє значення Р помножити на 3) і збільшити К на 1. Ці дії будуть повторюватись доки Р не стане більше за М.

В Паскаль – програмі цикл з перед – умовою задається оператором:

WHILE < умова виконання > DO < тіло циклу >;

< умова виконання > - це логічний вираз. Якщо його результат дорівнює TRUE, то тіло циклу виконується.

< тіло циклу > - це один простий або складений оператор.

Мовою Паскаль, наш алгоритм буде реалізований так:

VAR

Якщо для введення задати М=10, то:

P,K:INTEGER;

Р<M ? ® true

M:REAL;

1 ітерація. K = K+1=2; P=P*3=3.

BEGIN

Р<M ? ® true

READLN (M);

2 ітерація. K = K+1=3; P=P*3=9.

K:=0;P:=1;

Р<M ? ® true

WHILE P<M DO

3 ітерація. K = K+1=3; P=P*3=27.

BEGIN

Р<M ? ® false

K:=K+1;

Вивести на екран значення К=3.

P:=P*3;

END;

WRITE (`K=`,K);

END.

Цикл з пост-умовою

В Паскаль – програмі цикл з пост – умовою задається оператором:

REPEAT < тіло циклу > UNTIL < умова виходу >;

< тіло циклу > - це один або декілька операторів.

< умова виходу > - це логічний вираз. Якщо його результат дорівнює FALSE, то тіло циклу повторюється.

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

Приклад 2.

Протабулювати функцію y = f(x) на інтервалі [Хпочаткове, Хкінцеве ], з кроком Dх.

Табулювання функції – це обчислення значення функції на заданому проміжку з заданим шагом (рис. 11). Тобто, необхідно обчислити:

  1. Y = f(Xпоч)

  2. Y = f(Х1), де Х1 = Xпоч + Dх.

  3. Y = f(Х2), де Х2 = X1+ Dх.

  1. Y = f(Хкінц).

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

VAR

Xn, Xk, dx, X, Y :REAL;

BEGIN

READLN (Xn, Xk, dx);

X:=Xn;

REPEAT

Y:=( SQR (X) +1 )* SIN (X) ;

WRITELN( X:9:3, Y:9:3)

UNTIL X > Xk;

END.

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

Оператор циклу з параметром мови Паскаль має вигляд:

FOR <парам_циклу > := <почат _знач > TO <кінц _знач > DO

< тіло циклу > ;

<парам_циклу > – змінна будь-якого порядкового типу (цілочисельна або символьна);

<почат _знач > – початкове значення параметру – вираз або константа такого ж типу;

<кінц _знач > – кінцеве значення параметру – вираз або константа такого ж типу;

< тіло циклу > – один простий або складений оператор.

При виконанні оператору FOR спочатку обчислюється початкове значення параметру (лічильника циклу). Якщо початкове значення менше за кінцеве, то виконується тіло циклу. Після виконання тіла циклу значення параметру збільшується на 1. Якщо значення параметру не перевищує кінцевого значення (<парам_циклу > £ <кінц _знач >), то тіло циклу повторюється.

Якщо < почат_знач > ³ < кінц_знач >, то цикл не виконується.

Є ще одна форма запису циклу з параметром:

FOR <парам_циклу > := <почат _знач > DOWNTO <кінц _знач > DO

< тіло циклу > ;

<почат _знач > має бути більшим за <кінц _знач >. Крок зміни параметру циклу дорівнює –1.

Приклад 3

Обчислити суму N членів гармонійного ряду, загальний член якого обчислюється за формулою , де і=1,2,… N. Сума ряду

= .

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

В алгоритмі (рис. 13) :

  1. Вводиться значення N – кількість членів ряду, що сумуються. Наприклад, задамо N=5.

  2. Початкове значення суми S=0.

  3. Визначається цикл з параметром і, який буде змінюватись від 1 до 5.

1 ітерація. i=1; S=0+1/1=1.

2 ітерація. i=2; S=1+1/2=1,5.

3 ітерація. i=3; S=1.5+1/3=1.833.

4 ітерація. i=4; S=1.833+1/4=2.083.

5 ітерація. i=5; S=2.083+1/5=2.283.

  1. Виведення S=2.283.

Мовою Паскаль програма записується так:

VAR

I: BYTE;

S:REAL;

BEGIN

READLN (N); S:=0;

FOR I:=1 TO N DO

S:=S+1/І;

WRITE (S);

END.

Контрольні запитання за темою

  1. Що таке цикл? Поняття циклу та принцип його утворення.

  2. Які види циклічних обчислювальних процесів ви знаєте?

  3. Правила використання оператору циклу з перед – умовою мови Паскаль.

  4. Правила використання оператору циклу з пост – умовою мови Паскаль.

  5. Правила використання операторів циклу з параметром мови Паскаль.

  6. Чи може використовуватись в якості параметру циклу for змінна дійсного типу? Символьного? Логічного?

  7. Який крок зміни параметру в циклі for ? Чим відрізняються оператори for – to та for – downto?