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

4сем / tp_lab2_Zhovtyak

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

ГУАП

КАФЕДРА № 41

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

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

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

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

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

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

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

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

УСЛОВНЫЕ КОНСТРУКЦИИ

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

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

СТУДЕНТ ГР. №

4016

Жовтяк М.О.

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

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

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

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

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

Вычислить по значение fрез(x) по заданию:

, где такие параметры:

№ варианта

a1

f1(x)

a2

f2(x)

a3

f3(x)

7

10

f =

5

f =

2,5

f =

Итоговая функция выглядит так:

fрез(x) =

Конечная цель программы – вычисление fрез(x), где x – параметр, заданный пользователем.

Ограничением на входные и выходные данные является соответствие полученного значения условию: целое число или число с плавающей точкой.

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

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

После ввода x и проверки введенных значений производятся вычисления по заданной формуле:

fрез(x) =

, где x –передаваемый параметр. Делитель дроби не может быть равен 0. Так, в первом случае параметр x не может быть равен -1. Остальных ограничений не найдено.

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

Основная часть программы оформлена в отдельной функции LAB2_VAR15. В данной функции происходят вычисления по формуле, указанной в вычислительной модели, и процесс определения, являются ли полученные значения корректными. Если нет, то соответственно будет выведено сообщение об ошибки. Это было реализовано с помощью конструкции try-except, где в блоке try происходит перевод введенных переменных в тип float, но если этот перевод будет невозможен, то в блоке except будет прописано сообщение об ошибке, которое гласит о неправильно введенных данных. Формула имеет условие на проверку x в определенных значениях, поэтому в основной функции была реализована условная конструкция, в ходе которой избирается нужное значение x и вычисление по формуле из задания соответственно. Формулы не сложные, так что дополнительные функции излишни.

Таблица 1

Описание переменных

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

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

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

x

Float

Параметр формулы

f

Float

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

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

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

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

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

# основная функция def LAB2_VAR15(x): # try - обработка возможного исключения try: # Основная формула программы x = float(x) f = 0 if x < 1 and x != -1: f = 20/(x+1) return f elif 1 <= x <= 2: f = 10/x return f elif x > 2: f = 5/(x-1) return f else: print("Введено недопустимое число для функции: -1") return 'error' # Действие при неверном вводе данных except: print("Было введено не число. Программа принимает только " "целочисленные числа или числа с плавающей точкой") return "error" #TEST_LAB2_VAR15() print('Введите значение x ') x = input() print(LAB2_VAR15(x))

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

Таблица 2

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

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

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

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

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

Введено число меньше 1

X = 0

20

Пройден

Введено число в пределах от 1 до 2

X = 2

5

Пройден

Введено число больше 2

X = 3

2.5

Пройден

Одно из значений равно -1

X = -1

Сообщение об ошибке

Пройден

Одно из значений –строка

X = “love”

Сообщение об ошибке

Пройден

Одно из значений – пустая строка

X = “”

Сообщение об ошибке

Пройден

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

# тестовная функция def TEST_LAB2_VAR15(): if LAB2_VAR15(0) == 20: print("Тест, введено число меньше 1, пройден") else: print("Тест, введено число меньше 1, не пройден") if LAB2_VAR15(2) == 5: print("Тест, введено число в пределах от 1 до 2, пройден") else: print("Тест, введено число в пределах от 1 до 2, не пройден") if LAB2_VAR15(3) == 2.5: print("Тест, введено число больше 2, пройден") else: print("Тест, введено число больше 2, не пройден") if LAB2_VAR15(-1) == 'error': print("Тест, где введено число -1, пройден") else: print("Тест, где введено число -1, не пройден") if LAB2_VAR15("love") == 'error': print("Тест, где одно из значений - строка, пройден") else: print("Тест, где одно из значений - строка, не пройден") if LAB2_VAR15("") == 'error': print("Тест, где одно из значений - пустая строка, пройден") else: print("Тест, где одно из значений - пустая строка, не пройден")

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

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

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

Примеры работы программы:

Рисунок 4 – Работа программы, где x меньше 1

Рисунок 5 – Работа программы, где x в пределах от 1 до 2

Рисунок 6 – Работа программы, где x больше 2

Рисунок 7 – Работа программы, где x = -1

Рисунок 8 – Работа программы, где одно из значений – строка

Рисунок 9 – Работа программы, где одно из значений – пустая строка

Выводы:

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

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

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

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

4) Описание тестового набора. Были заданы различные входные данные на проверку работоспособности кода. Были данные, которые должны были как вызвать ошибку, так и довести работу программы до конца.

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

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