
Churilov_otchet_lr2
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
Кафедра проблемно-ориентированных вычислительных комплексов
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
доцент _________________ А.В. Аграновский
подпись, дата
ЛАБОРАТОРНАЯ РАБОТА №1
Использование условных конструкций
по дисциплине «Технологии программирования»
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. Z9411 __________________ А.С. Чурилов
подпись, дата
Студенческий билет № 2019/3684
Санкт-Петербург 2021г.
Оглавление
1. Постановка задачи 3
2. Математическая модель 3
3. Описание разработанной программы 3
4. Описание тестового набора 6
5. Примеры работы программы 6
Вывод 7
Приложение 1. Листинг программного кода 8
Постановка задачи
Формулировка задания (задание №9, строка №11): вычислить значение функции 𝑓рез(𝑥) при условии, что функция вычисляется по формуле
Входным параметром является вещественное число, которое в программе выступает в качестве аргумента функции.
Конечная цель программы – нахождение значения функции fрез после анализа введенного параметра x и определения соответствующего выражения для вычисления и вывод на экран полученного результата.
Математическая модель
В зависимости от величины введенного аргумента x результирующая функция будет вычисляться по одному из трёх заданных выражений.
Если значение x меньше 1 (x<1), искомая функция определяется по следующей формуле:
Если значение x лежит в диапазоне от 1 до 2 (1≤x≤2), искомая функция определяется по следующей формуле:
Если значение x больше 2 (x>2), искомая функция определяется по следующей формуле:
Описание разработанной программы
В качестве входных параметров имеем одну характеристику, равную значению аргумента функции (см. табл. 1).
Таблица 1 – Перечень входных параметров |
||
Имя переменной |
Тип переменной |
Описание |
x |
float |
Аргумент функции fрез |
Введенная переменная должна являться вещественным числом, причем она может принимать как отрицательное значение, так и положительное, а также может быть равно 0.
В таблице 2 приведен перечень выходных характеристик. Таковой является значение результирующей функции, вычисляемое по одной из формул, описанных в разделе «Математическая модель».
Таблица 2 – Перечень выходных параметров |
||
Имя переменной |
Тип переменной |
Описание |
f_res |
float |
Значение искомой функции |
Разработанный для данной задачи алгоритм содержит разветвленные и циклические структуры (см. рис. 1).
|
Рисунок 1 – Блок-схема алгоритма |
Вся программа состоит из трёх функций. Первая функция is_number(inp) даёт возможность проверить, содержит ли полученный параметр сторонние символы, отличные от цифр. Во второй функции LAB2_VAR_19(x) после осуществления проверок выполняется вычисление искомой функции на основе численного значения введенного аргумента x. В третьей функции TEST_LAB2_VAR_19() прописан автоматический тестовый сценарий, позволяющий проанализировать поведение программы при граничных условиях и различных форматах входных и выходных данных.
Листинг программного кода приведен в Приложении 1.
Описание тестового набора
Изучим набор тестовых случаев (см. табл. 3).
Таблица 3 –Тестовый набор |
|||
Описание тестового случая |
Входные данные |
Ожидаемый результат |
Результат теста |
Переменная x содержит буквенные символы |
x = ”test” |
Ошибка. «Была введена строка!» |
Пройден |
Переменная х имеет значение меньше 1, функция должна вычисляться по первой формуле |
x = -1 |
f_res = -21 |
Пройден |
Переменная х имеет граничное значение в диапазоне от 1 до 2, функция должна вычисляться по второй формуле |
x = 1 |
f_res = 7 |
Пройден |
Переменная х имеет значение в диапазоне от 1 до 2, функция должна вычисляться по второй формуле |
x = 1,5 |
f_res ≈ 4,67 |
Пройден |
Переменная х имеет граничное значение в диапазоне от 1 до 2, функция должна вычисляться по второй формуле |
x = 2 |
f_res = 3,5 |
Пройден |
Переменная х имеет значение больше 2, функция должна вычисляться по третьей формуле |
x = 3 |
f_res = -3,5 |
Пройден |
Ожидаемые результаты вычислялись вручную согласно описанной математической модели.
Примеры работы программы
Далее представлен пример работы написанной программы с подобранными тестовыми значениями (см. рис. 2).
|
Рисунок 2 – Пример работы программы |
Вывод
В ходе выполнения лабораторной работы была реализована программа расчета значения функции с выбором выражения для вычисления в зависимости от величины введенного параметра. Были получены практические навыки написания структурно продуманных программ на языке программирования Python3.
Было проведено тестирование разработанной программы. Во всех случаях полученный результат совпал с ожидаемым, что позволяет сделать вывод о корректной работе созданной программы.
Приложение 1. Листинг программного кода
import math #модуль для мат. операций
#функция проверки введенного числа на сторонние символы
def is_number(inp):
try:
float(inp)
return True
except ValueError:
return False
#основная функция
def LAB2_VAR_19(x):
if is_number(x)==False:
print("Была введена строка!")
return('Error!')
elif x<1:
return(7*(2*x-1))
elif x>=1 and x<=2:
return (3.5*(2/((x-1)+1)))
else:
return (-3.5*(2*(x-2)-1))
#автоматический тестовый сценарий
def TEST_LAB2_VAR_19():
print('ТЕСТ №1: x="test".')
x='test'
f_res=LAB2_VAR_19(x)
if f_res=='Error!':
print('Тест пройден!')
else:
print('Тест не пройден!')
print('\nТЕСТ №2: x=-1.')
x=-1
f_res=LAB2_VAR_19(x)
print("Значение функции равно ", f_res)
if f_res==-21:
print('Тест пройден!')
else:
print('Тест не пройден!')
print('\nТЕСТ №3: x=1.')
x=1
f_res=LAB2_VAR_19(x)
print("Значение функции равно ", f_res)
if f_res==7:
print('Тест пройден!')
else:
print('Тест не пройден!')
print('\nТЕСТ №4: x=1,5.')
x=1.5
f_res=LAB2_VAR_19(x)
print("Значение функции равно ", f_res)
if round(f_res,3)==4.667:
print('Тест пройден!')
else:
print('Тест не пройден!')
print('\nТЕСТ №5: x=2.')
x=2
f_res=LAB2_VAR_19(x)
print("Значение функции равно ", f_res)
if f_res==3.5:
print('Тест пройден!')
else:
print('Тест не пройден!')
print('\nТЕСТ №6: x=3.')
x=3
f_res=LAB2_VAR_19(x)
print("Значение функции равно ", f_res)
if f_res==-3.5:
print('Тест пройден!')
else:
print('Тест не пройден!')
TEST_LAB2_VAR_19() #вызов тестовой функции