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

1 семестр / лаб 6 / Отчет лаб 6

.docx
Скачиваний:
0
Добавлен:
05.06.2026
Размер:
62.07 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

Факультет «Радио и телевидение»

Кафедра «Системы и сети радиосвязи и телерадиовещания»

Лабораторная работа № 6

по дисциплине «Информационные технологии и программирование»

«Основы объектно-ориентированного программирования»

Выполнил:

Вариант №13

Цель работы

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

Задание

Выберите для выполнения лабораторной работы свой вариант. В разрабатываемом классе перегрузите потоковые операции для объектов класса. Для выполнения задания предложенного варианта перегрузите необходимые математические операции. При разработке класса вашего варианта учтите индивидуальные уточнения для функций – членов класса.

Разработайте для объектов вашего класса предложенные в каждом варианте пользовательские функции.

Разработайте программу, организующую ввод данных и демонстрацию работы разработанных функций.

Составьте отчет о проделанной работе, который должен включать: цель работы, вариант задания, текст программы (листинг и скриншот) и результат выполнения программы (в виде скриншота).

В соответствии с Вашим вариантом разработать класс. Название класса, приватные данные-члены и необходимые публичные функции-члены указаны в таблице 1.

Индивидуальные варианты функций приведены в Таблице 2.

Вариант выбирается по номеру студента в списке группы, актуальном на начало текущего семестра.

Для всех вариантов необходимо перегрузить арифметические операции.

Составить пользовательскую функцию y, указанную в индивидуальном задании и необходимые вспомогательные функции.

Следует отметить, что для работы с дробями в языке имеется готовый тип Fraction в модуле fractions, однако не следует его применять в данной лабораторной работе. Для работы с комплексными числами также не следует использовать готовые типы и классы, так как задачей данной работы является освоение принципов объектно-ориентированного программирования путем написания собственных классов.

Рисунок 1 – вариант задания

Рисунок 2 – вариант функции

Ход работы

Программа для выполнения задания:

def NOD(a, b):

if int(a) == a and int(b) == b:

if b < a:

while b != 0:

r = a % b

a = b

b = r

return a

else:

while a != 0:

r = b % a

b = a

a = r

return b

return 1

class Rational:

def __init__(self, nom, denom):

while nom != int(nom) or denom!= int(denom):

nom *= 10

denom *= 10

self.nom = nom / NOD(nom, denom)

self.denom = denom / NOD(nom, denom)

def __add__(self, other): return Rational(self.nom*other.denom + self.denom*other.nom, self.denom*other.denom)

def __sub__(self, other): return Rational(self.nom * other.denom - self.denom * other.nom, self.denom * other.denom)

def flip(self): return Rational(self.denom, self.nom)

def __mul__(self, other): return Rational(self.nom*other.nom, self.denom*other.denom)

def print_r(self):

if self.nom * self.denom > 0: print(self.nom, '/', self.denom, sep='')

else: print('-', abs(self.nom), '/', abs(self.denom), sep='')

variant = int(input('Если ваш х - обыкновенная дробь, введите 1. Если десятичная, введите 0: '))

match variant:

case 0:

nom = float(input('Введите ваше число: '))

denom = 1

case 1:

nom, denom = map(float, input('Введите числитель и знаменатель вашей дроби через пробел: ').split())

x = Rational(nom, denom)

y = Rational(3, 7) + Rational(5, 11) * x - Rational(5, 2) * x.flip()

y.print_r()

Конец программы

Рисунок 3 – результат выполнения работы для х = 1/2

Рисунок 4 – результат выполнения работы для х = 0,05

Вывод:

В ходе данной работы научились объектно-ориентированное программирование в python, использовали классы и объекты, а также уже изученные функции.

Таким образом, для определения собственных типов, помимо встроенных, удобно использовать объектно-ориентированное программирование.

Москва 2024