Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
самост1_1new_druk!!!.doc
Скачиваний:
22
Добавлен:
13.11.2019
Размер:
1.61 Mб
Скачать

Тема: Циклічні конструкції.

Вкладені цикли.

У випадку табулювання функції, наприклад, двох змінних потрібно утворити два цикли для зміни однієї і другої змінних. Один цикл називається зовнішнім, інший – внутрішнім циклом. Коли тіло одного циклу повністю знаходиться в тілі іншого циклу, говорять, що внутрішній цикл є вкладеним. Внутрішній цикл виконується більшу кількість разів, у порівнянні зі зовнішнім циклом. Наведемо приклади, які ілюструють використання вкладених циклів.

Приклад. Протабулювати функцію у = (u+y) sin uу, якщо u є [1, 2], hu = 0,1, у є [3, 5], hv = 0,2 і обчислити добуток всіх 0≤y<0,3. Якщо такі значення функції відсутні, то видати відповідне повідомлення.

program zeta;

{описова частина}

var U, V, у, D: real;

К: іntеgеr;

{змінна для обчислення кількості значень функції 0,1≤y≤0,3}

{виконавча частина}

begin

{присвоєння початкових значень}

D:=1; К:=0; U:=1;

{зовнішній оператор циклу для зміни змінної U}

repeat

{присвоєння початкового значення змінної V}

V:=3;

{внутрішній оператор циклу для зміни змінної V}

repeat

{обчислення значення функції}

y:=(U+V)*sin(U*V);

{виведення на друк значень аргументів і функції}

writeln ('U=', U:0:1, , V=',V:0:1, , у= ', у:0:2);

{перевірка умови, і в разі її виконання, обчислення кількості таких значень і добутку}

if (y>= 0.1) and (у<=0.3) then begin К:=К+1; D:=D*Y end;

{збільшення значення змінної У, яка утворює внутрішній цикл на величину кроку }

V:=V+0.2

{перевірка закінчення циклу}

until V>5;

{збільшення значення змінної U, яка утворює зовнішній цикл}

U:=U+0.l

{перевірка закінчення зовнішнього циклу}

until U>2;

{виведення значення добутку, якщо К відмінне від нуля}

if К <>0 then write (' добуток = ', D:7:3) else write (' відповідні значення функції відсутні ')

end.

Приклади ітераційних циклів.

Арифметичний цикл – це такий цикл, коли можна наперед вказати кількість повторень циклу. Якщо кількість повторень циклу наперед визначити не можна, то такий цикл називається ітераційним циклом.

1. Обчислення за рекурентною формулою.

Дано дійсні числа х=2, ε=О,О01. Послідовність а12... утворена за наступним законом

Знайти перший член аn (n≥2), для якого виконується умова |an-an-1|< ε.

program iter;

{описова частина}

var x, е, а1, а: геаl;

{виконавча частина}

begin

{введення змінних}

wrіtе('Введіть значення змінних x та е ');

read(x, е);

{присвоєння початкового значення першому члену послідовності}

а1:=х;

{обчислення наступного члена послідовності за рекурентною формулою}

а:= а1 + х/(4+а1*аl);

{оператор циклу, який забезпечує обчислення членів послідовності з заданою точністю}

while abs( а-а 1) >е do begin аl:=а;

а:= аl+х/(4+аl *аl)

end;

write('a=', а:7:2)

end.

2. Дано дійсні числа х=0,6, ε=0,001. Обчислити з точністю ε нескінчену суму

Позначимо U0=l; U1= ; U3= ,...,Uk =

program syma;

{описова частина}

var х, е, s, u, z: real;

k: integer;

{виконавча частина}

begin

{введення даних}

wrіtе('Введіть значення змінних х та е ');

read (х, е);

{присвоєння початкових даних}

k:=0; s:=0;

u:=1; z:=-1;

{початок оператора циклу}

while abs(u) > Е do begin

s:= s+u; {обчислення суми}

k:=k+ 1; {збільшення змінної на одинацю }

{обчислення наступного члена нескінченої суми}

u:= z* exp(k*ln(x))/sqr(k+1);

z:=-z;

end;

write ('сума=', 5:7:3)

end.

3. Для заданих дійсних чисел х, е (х=0,5 ε =0,001) обчислити з точністю ε нескінчену суму

Випишемо доданки цієї нескінченої суми:

де k!=1∙2∙3∙∙∙k; (k+1)!= 1∙2∙3∙∙∙k(k+1)=k!(k+1);

Знайдемо відношення

Отримаємо рекурентну формулу для обчислення наступного члена ряду :

program rama;

{описова частина}

vаг x, e, s, u: rеаl;

k: integer;

{Виконавча частина}

begin {введення змінних}

writе('Введіть значення змінних х та е ');

read (х, е);

{присвоєння початкових значень}

k:= 1; s:=0; U:= sqr(x)/2;

{оператор циклу, вихід з якого здійснюється тоді, коли n-ний член суми по модулю буде меншим ніж е}

while abs(U)>E do begin

S:=S+U;

U:= U*x*x /(2*k+2);

k:=k+1

end;

{виведення на друк результатів}

write ('S=', S:0:3)

end.

Питання для самоконтролю:

  1. При розв’язуванні яких задач використовують вкладені цикли?

  2. Як вони поділяються?

  3. Що таке зовнішній цикл?

  4. Що таке внутрішній цикл?

  5. Який цикл називається вкладеним?

  6. Що таке арифметичний цикл?

  7. Який цикл називається ітераційним?