logo
методичка_1_05_ВНУ

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

Якщо кількість повторень наперед відома, то доцільно ви­користовувати структуру циклу з параметром, однак не обо­в'язково, оскільки її можна замінити іншою - наприклад, цик­лом з передумовою. Отже, у випадку циклу з параметром кіль­кість повторень оператора, що виконується в циклі, не залежить від результату роботи цього оператора, її обчислюють за до­помогою спеціальної змінної, яку називають параметром циклу. Для неї відоме початкове і кінцеве значення, а також крок її зміни, який задають неявно. Керування циклом відбувається шляхом порівняння поточного значення параметра циклу з кін­цевим.

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

1+1/2+1/3+...+1/n.

Цю суму відшукаємо, якщо виконаємо в циклі операцію s:=s+1/i для і=1,..n, задавши перед циклом присвоєння s:=0. Отже, наперед відомо, що цикл повторюється п разів і параметр циклу змінюється від 1 до n. Обчислення найліпше виконати за допомогою циклу з параметром.

Загальний вигляд оператора циклу з параметром такий:

for <параметр_циклу>:=<вираз1> [to/downto] <вираз2>

do <оператор>;

де <параметр_циклу> - змінна будь-якого простого типу, крім дійсного; <вираз1> і <вираз2> - вирази, тип яких повинен збіга­тися з типом змінної параметра циклу; <оператор> - будь-який оператор мови Паскаль.

Оператор виконується для кожного значення параметра циклу від значення <вираз1> до <вираз2> включно. У цьому випадку під час використання службового слова to значення параметра циклу збільшується за правилом pc:=succ(pc), а в разі використання службового слова downto - зменшується за пра­вилом pc:=pred(pc), де pс- змінна, яка позначає параметр циклу. Отже, якщо параметр циклу є змінною цілого типу, то крок дорівнює 1 у випадку використання to, і -1, якщо застосовують downto. Розглянутий приклад суми гармонічного ряду реалізують так:

s:=0;

for i:=1 to n do s:=s+1/i;

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

Використовуючи оператор циклу з параметром, треба враховувати такі правила.

1. Заборонено змінювати всередині циклу, тобто в тілі цик­лу, значення <параметр_циклу>, <вираз1>, <вираз2>.

  1. Заборонено входити в цикл, оминувши оператор for, ос­кільки значення <параметр_циклу>, <вираз1> і <вираз2> будуть невизначеними.

  2. Цикл не виконується взагалі, якщо початкове значення більше (а у випадку downto - менше) від кінцевого.

  3. Після закінчення виконання циклу значення змінної <параметр_циклу> не визначене і не може бути використане для подальших обчислень.

  4. Після службового слова do може стояти тільки один оператор; якщо в циклі треба виконати групу операторів, то їх беруть в операторні дужки begin-end;

  5. Із складеного оператора можна вийти за допомогою оператора безумовного переходу goto. У цьому випадку останнє значення <параметр_циклу> зберігається.

Розглянемо програму обчислення суми членів числової послідовності

program SumChlPosl;

uses

Crt;

Var

s,a: real;

I,z,n: integer;

Begin

ClrScr;

Write(' Введіть кількість членів',

' послідовності n ');

Readln(n);

s:=0;

z:=-1;

for i:=1 to n do

begin

a:=z*i*i/(3*i*i+5*i+4);

writeln('a[',i:2,']=',a:9:3);

s:=s+a;

z:=-z;

end;

Writeln('Сума членів послідовності s=', s:9:4);

Readln;

End.