Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4616__И_ЛР8

.docx
Скачиваний:
0
Добавлен:
25.12.2018
Размер:
65.53 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

      1. Федеральное государственное автономное образовательное учреждение высшего образования

«Санкт-Петербургский государственный университет аэрокосмического приборостроения»

КАФЕДРА № 2

доцент, к.т.н. Бариков Л.Н

Отчёт

по лабораторной работе №8

по дисциплине Информатика

на тему: «Рекуррентные вычисления»

Работу выполнил

студент гр. 4616 Павлов А.В

Санкт-Петербург

2016

Цель лабораторной работы: изучение концепций и освоение технологии структурного программирования, приобретение навыков структурного программирования на языке Паскаль рекуррентных вычислений.

Задание на программирование: используя технологию структурного программирования разработать программу решения индивидуальной задачи, содержащей 3 вида циклических управляющих структур: Цикл - Пока (с предусловием), Цикл - До (с постусловием), Цикл - Для (с параметром). Реализовать интерфейс, обеспечивающий заданное расположение и назначение окон на экране при выполнении программы в соответствии с индивидуальным заданием (вид интерфейса сохраняется из задания на предыдущую лабораторную работу).

Порядок выполнения работы:

1) Получить у преподавателя индивидуальное задание. Выполнить постановку задачи: сформулировать условие, определить входные и выходные данные.

10

Вычислить предел последовательности {Yn} при n  ∞, где Yn вычисляется по формуле:

Yn = 0.3 sin(Yn-1) + Yn-3; n = 3,.4, 5,...

Значения Y0, Y1, Y2 и точность вычисления вводятся с клавиатуры. Вычисления прекратить при выполнении условия YnYn-1 < .

2) Построить схему алгоритма, последовательно используя для решения задачи все три циклические управляющие структуры (операторы while, repeatuntil, for).

3) Составить программу на языке Турбо Паскаль.

Program Recurrent_calculations;

Var

y1,y0,y2, {входное данное - значение аргумента}

eps, {входное данное - точность вычисления}

yn,yn0,yn1,yn2:Real; {текущее значение функции}

n:Integer; {номер предельного элемента}

Begin

WriteLN('Введите значение Y0,y1,y2,eps');

ReadLn(y0,y1,y2,eps);

If (eps<=0) OR (eps>0.1)

Then Begin

Write('Ошибка! ');

Exit;

ReadLn;

end;

{Цикл While}

n:=3;

yn0:=y0;

yn1:=y1;

yn2:=y2;

yn:=(0.3 * sin(y2)+(y0));

While (Abs(yn - y2)>eps)AND(n<MAXINT)

{наибольшее значение типа Integer=32767}

Do Begin

y2:=yn;

y0:=y1;

y1:=y2;

yn:=(0.3 * sin(y2)+(y0));

n:=n+1;

End;

If n=MAXINT

Then WriteLn(' Точность не достигнута.')

Else WriteLn(' Для цикла While предел y(',n,')=',yn,', n=',n);

{Решение с использованием управляющей структуры Repeat-Until}

y0:=yn0;

y1:=yn1;

y2:=yn2;

n:=3;

yn:=(0.3 * sin(y2)+(y0));

Repeat

y2:=yn;

y0:=y1;

y1:=y2;

yn:=(0.3 * sin(y2)+(y0));

n:=n+1;

Until (Abs(yn - y2)<eps) AND (n<MAXINT);

WriteLn(' Для цикла Until предел y(',n,')=',yn,', n=',n);

n:=3;

y0:=yn0;

y1:=yn1;

y2:=yn2;

yn:=(0.3 * sin(y2)+(y0));

For n:=3 To MAXINT

Do Begin

If ((Abs(yn - y2))>eps) AND (n<MAXINT)

Then Begin

y2:=yn;

y0:=y1;

y1:=y2;

yn:=(0.3 * sin(y2)+(y0));

end

else begin

WriteLn(' Для цикла For предел y(',n,')=',yn,', n=',n);

EXIT;

end

end;

ReadLn;

ReadLn;

End.

5-6) Входные данные вводить с клавиатуры по запросу. Выходные данные выводить на экран в развернутой форме с пояснениями.

Соседние файлы в предмете Информатика