Зворотний зв'язок

Види циклів

2. "Для"

Розглянемо алгоритм обчислення n!=1 2 … n при n>0, 0!=1, припускаючи, що всі змінні в ньому цілі й значення змінної n є невід'ємним:

f:=1;

{! }

k:=1;

while k<=n do

begin f:=f*k; k:=k+1 end

{k=n+1, останнім співмножником у значенні f було n}

Очевидно, що кількість виконань тіла циклу збігається зі значенням змінної n і, якщо n>0, то оператор f:=f*k виконується при k=1, 2, … , n (за n=0 не виконується жодного разу). "Забудемо на хвилинку" про останнє виконання оператора k:=k+1. Тоді дії, задані операторами після коментарю {!}, можна описати словами "для k=1, 2, … , n виконати f:=f*k" або англійською мовою "for k=1, 2, … , n do f:=f*k". А це вже майже оператор мови Паскаль:

for k := 1 to n do f:=f*k

Його назва – for-оператор, або оператор циклу переліком, оскільки в ньому задано перелік значень змінної k, при яких виконується тіло циклу. Ця змінна називається параметром циклу. Загальний вигляд for-оператора:

for ім'я := вираз1 to вираз2 do оператор

Ім'я позначає змінну цілого типу (параметр циклу), а вирази однотипні з нею. У розд. 6 ми дізнаємося, що параметр циклу може бути не лише цілого типу. Частина оператора від слова for до слова do називається заголовком циклу, а оператор – тілом. Виконується for-оператор не так просто, як це може здатися на перший погляд. Опишемо його докладніше.

Спочатку обчислюються значення виразів у заголовку й порівнюються. Ці значення називаються граничними; позначимо їх відповідно lv і hv. Якщо lv>hv, то виконання закінчується. При цьому тіло циклу не виконується жодного разу, а параметр циклу (нехай його ім'я k) не одержує ніякого значення! Якщо ж lv<=hv, то виконується k:=lv, потім тіло циклу. Потім порівнюються k і hv: при k
Коли після чергового збільшення значення k досягає hv, то виконується тіло циклу та після порівняння k і hv усе закінчується, тобто значення параметра циклу більше не збільшується.

Зверніть увагу на такі особливості:

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

•якщо lv hv, параметр циклу після виконання for-оператора має значення hv, інакше його значення залишається без змін;

•у стандарті мови Паскаль заборонено присвоювання параметрові циклу.У діалекті Турбо Паскаль остання заборона відсутня. Крім того, при порівнянні k і hv насправді обчислюється значення виразу k<>hv. Разом ці особливості дозволяють написати цикл for, тіло якого виконується аж ніяк не при значеннях параметра циклу, указаних у заголовку. Наприклад, для обчислення функції n!!, означеної за непарного n як 1 3 … n і як 2 4 … n за парного, в Турбо Паскаль можна, здавалося б, зробити такий трюк:


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат