 
        
        Z9411_Чурилов_Техн_прог_ЛР-1
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
Кафедра проблемно-ориентированных вычислительных комплексов
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
доцент _________________ А.В. Аграновский
подпись, дата
ЛАБОРАТОРНАЯ РАБОТА №1
Использование условных конструкций
по дисциплине «Технологии программирования»
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. Z9411 __________________ А.С. Чурилов
подпись, дата
Студенческий билет № 2019/3684
Санкт-Петербург 2021г.
Оглавление
1. Постановка задачи 3
2. Математическая модель 3
3. Описание разработанной программы 3
4. Описание тестового набора 6
5. Примеры работы программы 6
Вывод 7
Приложение 1. Листинг программного кода 9
- Постановка задачи
Формулировка задания (задание №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() #вызов тестовой функции

 
