Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы Султонов Фирдавс.docx
Скачиваний:
7
Добавлен:
08.11.2023
Размер:
2.08 Mб
Скачать
  1. Выполнение проекта и получение результатов

Ниже представлен результат работы программы (Рисунок 3):

Рисунок 3 - Полученные результаты

На рисунке 4 представлен результат записи ответов в текстовый файл:

Рисунок 4 - Записанные в текстовый файл ответы

Лабораторная работа №2 «Программирование алгоритмов разветвляющихся структур. Нахождение максимального и минимального значения»

  1. Задание на разработку проекта

Согласно варианту задания, запрограммировать систему кусочно-ломанной функции.

Для выполнения задания следовало разработать:

- Пользовательскую функцию minl(x, a, y, b) для поиска минимального и максимального значения

- Пользовательскую функцию minl(x, a, y, b) разместить в модуле

В основной части программы импортировать пользовательскую функцию, осуществить перехват исключений, записать полученные ответы в текстовый файл и записать лог-файл.

Формализация задания

Для того чтобы записать лог-файл и реализовать перехват исключений

необходимо импортировать для начала библиотеку logging и написать код logging.basicConfig(filename = 'log.txt', level = logging.INFO)который будет задавать путь к файлу в котором будут сохраняться данные лог-файла. Далее, чтобы реализовать перехват исключений нужно воспользоваться конструкцией

‘try:

except Exception as e:’, в котором первая часть будет пытаться выполнить код, в случае ошибки будет выполнена вторая часть конструкции. Во второй части конструкции нужно написать logging.error(str(e)), который будет записывать ошибки в лог-файл.

  1. Разработка алгоритма

Ниже представлена блок-схема функции minl() (Рисунок 1):

Рисунок 1 - Блок-схема функции minl(), для нахождения минимального и максимального значения

На рисунке 2 показана блок-схема основной части программы.

Рисунок 2 - Блок-схема основной части программы

Ниже представлен код пользовательской функции основной части программы:

Код пользовательской функции

def minl(x, y, a, b):

if x > 0:

r = x**3 + (math.log(x + a))**2

elif x <= 0 and y <= 0:

if abs(x) + a > abs(y) + b:

minim1 = abs(y) + b

else:

minim1 = abs(x) + a

if a > x:

minim2 = x

else:

minim2 = a

if minim1 > minim2:

r = minim2

else:

r = minim1

else:

if math.e**(a+b) < math.log(x**2 + y**2)**2:

r = math.log(x**2 + y**2)**2

else:

r = math.e**(a+b)

return r

Код основной части программы

import math

import logging

from mindef import *

logging.basicConfig(filename = 'log.txt', level = logging.INFO)

a = float(input('Введите значенние a: '))

b = float(input('Введите значенние b: '))

x = float(input('Введите значенние x: '))

y = float(input('Введите значенние y: '))

rez = minl(x, y, a, b)

print('Результат выражения: ' + str(rez))

try:

print("Открытие файла...")

f = open('lab2.txt', 'a')

f.write('\nВходные параметры: a = ' + str(a) + ' b = ' + str(b) + ' x = ' + str(x) + ' y = ' + str(y))

f.write('\nОтвет полученного выражения: ' + rez)

f.close()

print('Данные успешно записаны в файл!')

except Exception as e:

print('Что-то пошло не так')

logging.error(str(e))