Вы находитесь на странице: 1из 12

Министерство образования Республики Беларусь

Учреждение образования
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Факультет компьютерных систем и сетей


Кафедра программного обеспечения информационных технологий
Дисциплина: Основы алгоритмизации и программирования (ОАиП)

ОТЧЕТ
по лабораторной работе №5

Тема работы: Итерационные циклы

Выполнил
студент: гр. 151003 Барилко М.А.

Проверил: Фадеева Е.П.

Минск 2021
2
СОДЕРЖАНИЕ

1 Постановка задачи................................................................................................4
3 Текстовый алгоритм решения задачи.................................................................5
4 Структура данных................................................................................................6
5 Схема алгоритма решения задачи по ГОСТ 19.701-90.....................................7
6 Результаты расчетов программы.......................................................................10
Приложение А........................................................................................................11
Приложение Б........................................................................................................13

3
1 ПОСТАНОВКА ЗАДАЧИ

Вычислить значение функции f(x), для значения x от 0.1 до 0.9 с шагом


0.1, c заданной точностью eps равной 10−5 и 1.0E-6:

x 2 k+3
f ( x ) ≔∑
k=1 k (2 k +3)

Результат вынести на печать в виде:

x=значение f(x)=значение eps=значение

4
3 ТЕКСТОВЫЙ АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ

Таблица 1 – Алгоритм решения


Номер Назначение шага
шага
1 xs := 0.1
2 xe := 0.9
3 dx := 0.1
4 eps2 := 1.0E-6
5 eps1 := 1.0E-5
6 x := xs
7 Начало цикла А. Проверка выполнения условия: (x<=xe). Если
условие истинно, то идти к шагу 8, иначе – к шагу 28
8 flag_complited := false
9 k := 1
10 temp1 := x * x * x * x * x
11 temp2 := k * (2 * k + 3)
12 y := temp1 / temp2
13 elem := 1
14 Начало цикла А1. Проверка выполнения условия: (abs(elem) >
eps2). Если условие истино, то идти к шагу 15, иначе – к шаку 24
15 inc(k)
16 temp1 := temp1 * x * x
17 temp2 := k * (2 * k + 3)
18 elem := temp1/temp2
19 y := y + elem
20 dif := y – y0
21 Проверка выполнения условия: (abs(elem) <= eps1) and
not flag_complited. Если условие истинно, то идти к шагу 22, иначе
– к шагу 24
22 Вывод x, y, eps1
23 flag_complited := true
24 Конец цикла А1. Идти к шагу 14
25 Вывод x, y, eps2
26 x := x + dx
27 Конец цикла А. Идти к шагу 7
28 Останов.

5
4 СТРУКТУРА ДАННЫХ

Таблица 2 – Данные
Элементы данных Рекомендуемый тип Назначение
xs Real Начальной значение х
xe Real Конечное значение х
dx Real Шаг изменения х
x Real Аргумент функции
k Integer Коэффициэнт
flag_complited Boolean Флаг обозначающий, что эта
операция уже выполнена и не
должна повторяться
y Real Значение функции
elem Real Элемент функции
temp1 Real Числитель дроби
temp2 Real Знаменатель дроби
eps1 Real Первая точность(10−5 )
eps2 Real Вторая точность(10−6)

6
5 СХЕМА АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ ПО ГОСТ 19.701-90

Рисунок 1 – Схема алгоритма решения задачи по ГОСТ 19.701-90

7
Рисунок 2 – Схема алгоритма решения задачи по ГОСТ 19.701-90

8
Рисунок 3 – Схема алгоритма решения задачи по ГОСТ 19.701-90

9
6 РЕЗУЛЬТАТЫ РАСЧЕТОВ ПРОГРАММЫ

Рисунок 4 – Результаты расчётов программы

10
ПРИЛОЖЕНИЕ А
(обязательное)
Исходный код программы
Program Lab5;

{$APPTYPE CONSOLE}
{$R *.res}

//Объявление констант
Const
eps1 := 1E-5;
eps2 = 0.000001;
xs = 0.1;
xe = 0.9;
dx = 0.1;

//Объявление переменных
Var
eps1: Real;
temp1, temp2, elem, y, x: Real;
k: integer;
{
eps1, eps2 - Точность расчётов
xs - Начальной значение х
xe - Конечное значение х
dx - Шаг изменения х
x - Аргумент функции
k - Коэффициэнт
y - Значение функции
elem - Элемент функции
temp1 - Числитель дроби
temp2 - Знаменатель дроби
flag_comlited – флаг неповторения
}

Begin
x := xs;
//Начало цикла А
while x <= xe do
begin
//Объявление начальных значений
flag_complited := false
k := 1;
temp1 := x * x * x * x * x;
temp2 := k * (2 * k + 3);
y := temp1 / temp2;
elem := 1;
11
//Начало цикла А1
while Abs(elem) > eps2 do
begin
Inc(k);
temp1 := temp1 * x * x;
temp2 := k * (2 * k + 3);
elem := temp1 / temp2;
y := y + elem;
//Вывод значеня с точностью eps1
if (Abs(elem) <= eps1) and
not flag_complited then
begin
WriteLn('x = ',x:1:1, ' f(x) = ', y:1:5, #9,
'eps = ', eps1:1:5);
flag_complited := true;
end;
end;
//Конец цикла А1
WriteLn('x = ',x:1:1, ' f(x) = ', y:1:6, #9,
'eps = ', eps2:1:6);
x := x + dx;
end;
//Конец цикла А
readln;
End.

12
ПРИЛОЖЕНИЕ Б
(обязательное)
Тестовые наборы

Тест 1
Таблица 3 – Тестовые наборы
Тест Исходные данные и ожидаемый Полученный результат
результат (Mathcad)
1

13

Вам также может понравиться