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

4сем / tp_lab3_Zhovtyak

.docx
Скачиваний:
1
Добавлен:
27.08.2024
Размер:
95.12 Кб
Скачать

ГУАП

КАФЕДРА № 41

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

доц., канд. техн. наук

А. В. Аграновский

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №3

ЦИКЛИЧЕСКИЕ КОНСТРУКЦИИ

по курсу: ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

4016

Жовтяк М.О.

подпись, дата

инициалы, фамилия

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

Вариант 15 (14-ой вариант 2-ого задания)

Постановка задачи

Задана функция 𝑓(𝑥).

fрез(x) = + (x2 + 5x)

Конечная цель программы – вычисление fрез(x), где x – параметр, получаемый в промежутке от -4 до 7 с шагом 0.5. Все результаты вычисления функции должны быть записаны в массиве.

Входные данные отсутствуют. Массив на выходе может хранить целые числа, числа с плавающей точкой.

Дополнительные требования к программе не были выявлены.

Математическая модель

Согласно заданию, в массив постепенно должны быть записаны результаты значения функции. Но необходимо предусмотреть случаи, где вычисление функции может быть невозможным. Единственным препятствием может быть знаменатель дроби , но так как он всегда положительный, то никаких препятствий для вычисления не будет создано.

Описание разработанной программы

Основная часть программы оформлена в отдельной функции LAB3_VAR15. В этой функции записан цикл с определенным диапазоном (-4; 7) и шагом переменной (0.5) x. Так же объявляется переменная типа list, которая будет хранить результаты вычислений функций. Внутри функции вычисляется значение функции с вложенной переменной x, которое для удобства округляется до 2 знаков после запятой. Затем значение добавляется в массив, после шаг x увеличивается и так до тех пор, пока x не станет равен максимальному значению. Таблица 1 демонстрирует список используемых переменных.

Таблица 1 - Описание переменных

Имя переменной

Тип переменной

Назначение переменной

x

Float

Параметр заданной формулы

f

Float

Вычисление значения формулы, данной по заданию

mass

List

Массив, хранящий значения вычислений формулы

Описание алгоритма работы программы представлено в виде блок схемы на рисунке 1.

Рисунок 1 – Блок-схема алгоритма

Вычислительная сложность реализованного алгоритма в нотации O() является константной (O(1)). Это значит, что вычислительная сложность алгоритма не зависит от входных данных и независимо от полученного на входе корректного значения время работы программы не изменится.

Код программы:

# тестовная функция def TEST_LAB3_VAR15(): pass #основная функция def LAB3_VAR15(): x = -4 mass = [] #основной цикл while x <= 7: #вычисление формулы f = round(((x - 4)/(3 * x**2 + 1) + x ** 2 + 5 * x), 2) mass.append(f) x += 0.5 print(mass) #TEST_LAB3_VAR15() LAB3_VAR15()

Описание тестового набора

Так как программа не принимает на вход никаких данных, то для программы достаточно одного тестового случая. Таблица 2 является описанием тестового случая.

Таблица 2 - Описание тестового набора

Описание тестового случая

Входные данные

Ожидаемые результаты

Результат теста

Вычисление функции

-

[-4.16, -5.45, -6.25, -6.58, -6.46, -5.96, -5.25, -4.82, -4.0, 0.75, 5.25, 9.43, 13.85, 18.67, 23.96, 29.74, 36.0, 42.76, 50.01, 57.77, 66.02, 74.77, 84.02]

Пройден

Листинг тестовых сценариев:

# тестовная функция def TEST_LAB3_VAR15(): if LAB3_VAR15() == [-4.16, -5.45, -6.25, -6.58, -6.46, -5.96, -5.25, -4.82, -4.0, 0.75, 5.25, 9.43, 13.85, 18.67, 23.96, 29.74, 36.0, 42.76, 50.01, 57.77, 66.02, 74.77, 84.02]: print("Тест пройден") else: print("Тест не пройден")

Результат работы тестов до написания основной программы представлен на рисунке 2. После написания работы программы на рисунке 3.

Рисунок 2 – Работа теста, до написания основного кода

Рисунок 3 – Работа теста, после написания основного кода

Пример работы программы на рисунке 4.

Рисунок 4 – Работа программы

Выводы:

В процессе выполнения данной лабораторной работы были изучены и выполнены следующие этапы:

1) Постановка задачи. Разделил программы на чёткие этапы для более удобного просмотра кода и работы кода с помощью простых действий. Ввёл ограничения на ввод данных и рассчитал возможные завершения программы.

2) Математическая модель. Написал код с помощью математических действий, разделив задачу на простые математические действия в цикле.

3) Описание разработанной программы. По коду программы построил блочную модель программы. Выбрал наиболее подходящий способ написания кода с помощью циклов.

Благодаря данной работе закрепил свои навыки программирования, построения алгоритма решения задачи, разбив ее на несколько этапов, укрепил навыки работы с условными конструкциями. Также закрепил применение метода Test-Driven-Development.

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