{"id":19245734,"url":"https://github.com/candygoose/programming_2_term_ict","last_synced_at":"2025-08-02T11:10:21.394Z","repository":{"id":181293528,"uuid":"659383847","full_name":"CandyGoose/Programming_2_term_ICT","owner":"CandyGoose","description":"Программирование 2 семестр Инфокоммуникационные технологии (ИКТ) ИТМО","archived":false,"fork":false,"pushed_at":"2024-06-04T23:30:50.000Z","size":23768,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-02T15:47:29.279Z","etag":null,"topics":["ict","itmo","programming","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CandyGoose.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-27T18:03:23.000Z","updated_at":"2024-06-04T23:30:53.000Z","dependencies_parsed_at":"2024-11-09T17:31:30.317Z","dependency_job_id":"a21fda6b-73af-4227-aa97-9f757a4c55d1","html_url":"https://github.com/CandyGoose/Programming_2_term_ICT","commit_stats":null,"previous_names":["verakasianenko/programming_2_term_ict","candygoose/programming_2_term_ict"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CandyGoose/Programming_2_term_ICT","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CandyGoose%2FProgramming_2_term_ICT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CandyGoose%2FProgramming_2_term_ICT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CandyGoose%2FProgramming_2_term_ICT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CandyGoose%2FProgramming_2_term_ICT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CandyGoose","download_url":"https://codeload.github.com/CandyGoose/Programming_2_term_ICT/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CandyGoose%2FProgramming_2_term_ICT/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268378812,"owners_count":24240896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ict","itmo","programming","python"],"created_at":"2024-11-09T17:29:12.712Z","updated_at":"2025-08-02T11:10:21.363Z","avatar_url":"https://github.com/CandyGoose.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Программирование 2 семестр\n## Инфокоммуникационные технологии\n\n---\n\n- [Контрольные](https://github.com/CandyGoose/Programming_2_term_ICT/tree/main/kr)\n\n- [Домашнее задание](https://github.com/CandyGoose/Programming_2_term_ICT/tree/main/dz)\n\n__Материалы предоставлены [Игорем Смирновым](https://github.com/Blaaaaaze)__\n\n---\n\n### Урок 1. ООП: атрибуты и методы класса\nУказания: В каждом задании необходимо работать с классами, их методами и\nобъектами. Для тестирования и вывода информации на экран написать функции,\nзапрашивающие у пользователя входные данные, а также создающие объекты класса.\n\n1. Напишите программу с классом Coffee (для определения добавок к кофе),\nкоторый принимает 1 аргумент при инициализации (отвечающий за добавку к\nкофе). В классе реализуйте метод show_my_drink(), выводящий на печать «Кофе и\n{ДОБАВКА}» в случае наличия добавки, а иначе отобразится следующая фраза:\n«Черный кофе».\n\n2. Напишите программу с классом Triangle, который содержит атрибуты класса\n– три стороны треугольника, содержит метод для вычисления площади\nтреугольника по формуле Герона. Создайте три объекта данного класса:\nравносторонний, обычный треугольник, треугольник не существующий.\n\n3. Напишите программу с классом Mathem. Создайте два атрибута — a и b.\nНапишите методы: addition — сложение, multiplication — умножение, division —\nделение, subtraction — вычитание. При передаче в методы параметров a и b с ними\nнужно производить соответствующие действия и печатать ответ. Добавить\nобработку деления на ноль.\n\n4. Создайте класс Tree с конструктором. Создайте атрибуты класса: name\n(название), age (возраст), height (высота). Напишите методы класса: \n   - первый — пересадить дерево, при его вызове выводится сообщение «Дерево пересадили»,\n   либо «уже было пересажено»; \n   - второй — вырубка дерева, выводит сообщение «Дерево вырубили», либо «уже было вырублено»; \n   - третий — присвоение дереву личного имени; \n   - четвертый – изменение возраста дерева;\n   - пятый – изменение высоты дерева;\n   - шестой – вывод всей информации о дереве.\n\n### Урок 2(1). ООП: Абстракция. Полиморфизм. Наследование. Инкапсуляция.\n1. Напишите программу с классом Pupil, в котором есть три атрибута:\nname, age и classNumber. По умолчанию name = Radomir, age = 8, classNumber\n= 1-A. Необходимо создать методы set-ы и get-ы для каждого атрибута\n(установить/получить значение). Один метод для вывода всей информации по\nученику.\nВ программе необходимо создать пять экземпляров класса Pupil, с помощью\nметодов установить им разные имена, возраст и номер класса, вывести\nинформацию о каждом на экран.\n2. Напишите программу с иерархией классов пород кошек. Родительский\nкласс Cat имеет атрибуты кличка, возраст. Возраст кошки не может быть\nотрицательным и не выше 19 лет. Дочерние классы Сфинкс, Мейкун, Корат\nимеют отличительные особенности: длина шерсти (лысый/длинная/средняя) и\nпредназначение в виде метода (охотник/крысолов/играет). Создайте по\nэкземпляру каждого класса-потомка, установите им разные значения и\nвыведите на экран.\n3. Напишите программу с классом Country и атрибутами capital и\npopulation. Опишите методы setPopulation и getPopulation. Наcеление может\nбыть только положительная величина. Опишите наследуемые от класса\nCountry классы Russia, Canada, Germany. В дочерних классах установите\nзначение столицы по умолчанию. Создайте по экземпляру каждого класса-\nпотомка, с помощью методов установите численность населения, выведите\nвсю информацию об объектах на экран.\n4. Написать программу, в которой есть главный класс Doctor с атрибутами\nName (имя) и Age (возраст), в конструкторе установите значения по умолчанию\nимя Айболит и возраст 25 лет, также опишите два метода getName и setName.\nНа основе главного класса путем наследования опишите три класса Pediatrist,\nОкулист, Дантист. Самостоятельно добавьте каждому классу различные\nдополнительные атрибуты и переопределите у всех классов метод getName.\nСоздайте по экземпляру каждого класса-потомка, выведите соответствующие\nзначения атрибутов классов.\n\n### Урок 2(2). ООП: Абстракция. Полиморфизм. Наследование. Инкапсуляция.\n__Указания__: В каждом задании необходимо работать с классами, их методами и\nобъектами. Для тестирования и вывода информации на экран написать функции,\nзапрашивающие у пользователя входные данные, а также создающие объекты класса.\n1. Напишите программу с классом Student, в котором есть три атрибута:\nname, groupNumber и age. По умолчанию name = Radomir, age = 18, groupNumber\n= 1213. Необходимо создать методы set-ы и get- ы для каждого атрибута\n(установить/получить значение). Один метод для вывода всей информации по\nстуденту.\n\n   В программе необходимо создать пять экземпляров класса Student, установить\nим разные имена, возраст и номер группы, вывести информацию о каждом на\nэкран.\n2. Напишите программу с классом Country и атрибутами capital и population.\nОпишите методы setPopulation и getPopulation. Население может быть только\nположительная величина. Опишите наследуемые от класса Country классы Russia,\nCanada, Germany. В дочерних классах установите значение столицы по\nумолчанию. Создайте по экземпляру каждого класса-потомка, с помощью\nметодов установите численность населения, выведите всю информацию об\nобъектах на экран.\n3. Напишите программу с иерархией классов пород собак. Родительский\nкласс Dog имеет атрибуты кличка, возраст. Возраст собаки не может быть\nотрицательным и не выше 20 лет. Дочерние классы ТойТерьер, Спаниель,\nНемецкаяОвчарка имеют отличительные особенности: атрибут класса звук голоса\nи предназначение в виде метода (охотничья/сторожевая/домашняя). Создайте\nпо экземпляру каждого класса-потомка, установите им разные значения.\n4. Написать программу, в которой есть главный класс Games со статическим\nатрибутом Year, опишите конструктор присваивающий значение атрибуту Year,\nтакже опишите метод getName, который возвращает имя игры. На основе\nглавного класса путем наследования опишите четыре класса PCGames, PS4Games,\nXboxGames, MobileGames. Добавьте каждому дочернему классу различающие\nатрибуты и переопределите у всех классов метод getName. Создайте по\nэкземпляру каждого класса-потомка, выведите соответствующие значения\nатрибутов классов.\n\n### Контрольные задания №1-1: ООП\nПостановка задачи\n* Требуется разработать программы согласно указанным ниже заданиям (на выбор, но можно\nреализовать свою тему).\n* Реализация классов должна быть в отдельных модулях.\n* Клиентский код должен импортировать вашу библиотеку и посредством объектов\nвоспользоваться реализуемой в них функциональностью.\n* В тексте использовать комментарии, поясняющие ваши действия и принятые решения.\nРекомендуется сделать их как можно подробными и понятными.\n* Объем задания (конкретные указания, что надо выполнить) указан ниже (см. Варианты\nзаданий).\n* Программное решение общего задания требуется представить в виде отдельных решений\nпо каждому заданию, которые должны показать развитие общего проекта.\nСохранить проект для дальнейшего использования!\n\nЗадание 1. Базовое решение\n* Реализовать класс с конструктором. Определить значения по умолчанию для \nнекоторых аргументов, чтобы их можно было не указывать в тех случаях, когда какие-\nто определенные значения недоступны или бессмысленны.\n* Реализовать с помощью свойств инкапсуляцию.\n* Добавить в класс методы, определяющие поведение.\n* Реализовать производные классы (не менее двух) и методы, характерные для них.\n* Реализовать отношение композиции.\n* Реализовать для базового класса перегрузку двух любых стандартных операторов,\nнапример, сложения и вычитания. Методы перегрузки должны возвращать новый\nобъект того же класса.\n\n### Урок 4. Работа с базой данных\nСхематично работа с базой данных может выглядеть примерно так:\n\n1. Осуществить подключение к базе данных (вызов connect() с получением объекта-\n   соединения)\n2. Создание одного или нескольких курсоров (вызов метода объекта-соединения cursor() с\n   получением объекта–курсора)\n3. Исполнение команды или запроса (вызов метода execute() или его вариантов)\n4. Получение результатов запроса (вызов метода fetchone() или его вариантов)\n5. Завершение транзакции или ее откат (вызов метода объекта-соединения commit() или\n   rollback())\n6. Когда все необходимые транзакции произведены, подключение закрывается вызовом\n   метода close() объекта-соединения\n\nЗадание 1. Подключение к MS Excel с помощью библиотеки __pandas__ и функции read_excel().\n1. Проанализировать код\n```\nimport pandas\nexcelDataDF = pandas.read_excel('vegetable.xlsx', sheet_name='summer')\n# напечатать всё содержимое листа\nprint(excelDataDF)\n```\n2. Создать файл MS Excel «vegetable». На листе «summer» создать таблицу с полями: номер\n   п/п, название овоща, цена, кто любит овощ, количество, стоимость (цена * на количество).\n3. Заполнить таблицу произвольными значениями \u003cins\u003e(не менее 10 строк)\u003c/ins\u003e. Сохранить.\n4. Вывести информацию из файла на экран консоли в Питоне\n\nЗадание 2. Подключение к БД SQLite с помощью библиотеки sqlite3.\n1. Проанализировать и реализовать код\n```\nimport sqlite3\n# Попытаться открыть соединение к базе\ntry:\n   # осуществить подключение к БД sqlitePy\n   connection = sqlite3.connect('sqlitePy.db')\n   \n   # создать курсор для выполнения запросов\n   cursor = connection.cursor()\n   print(\"База данных создана и успешно подключена к SQLite\")\n   \n   # вывести версию базы\n   select_query = \"select sqlite_version();\"\n   cursor.execute(select_query)\n   \n   # вернуть все строки в виде списка\n   record = cursor.fetchall()\n   print(\"Версия базы данных SQLite: \", record)\n   # закрыть курсор\n   cursor.close()\n   \nexcept sqlite3.Error as error:\n   print(\"Ошибка при подключении к sqlite\", error)\nfinally:\n\n   # закрыть соединение с базой\n   if (connection):\n      connection.commit()\n      connection.close()\n      print(\"Соединение с SQLite закрыто\")\n```\n\n2. Создать свою базу __country.db__ с таблицей tCountry и полями: номер п/п (счетчик),\n   название страны.\n3. Используя методы execute(), executemany() и запрос INSERT INTO, заполнить таблицу\n   произвольными значениями \u003cins\u003e(не менее 10 строк)\u003c/ins\u003e\n4. Применить методы fetchone(), fetchmany(), fetchall() вывести значения из базы.\n\nЗадание 3. Самостоятельно создайте БД music.db SQLite с таблицами, установите\nвзаимосвязи между таблицами, заполните данными и отобразите.\n1. Таблицы Музыкант (tMusician), Песни (tSongs), Комментарии (tComments).\n2. Таблица Музыкант содержит поля: id, псевдоним, возраст, пол;\n   Таблица Песни содержит поля: id, название, описание, id_музыканта;\n   Таблица Комментарии содержит поля: id, текст_Комментария, id_песни, id_музыканта.\n3. Установить отношения один ко многим между таблицами:\n   Один музыкант может исполнять несколько песен. Один музыкант можете оставлять\n   много комментариев, и одна песня может иметь несколько комментариев (схема БД\n   представлена на Рисунок 1).\n4. Заполните таблицы произвольными данными \u003cins\u003e(не менее 10 строк)\u003c/ins\u003e\n5. Запустите выборки данных с помощью\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"img/img.png\" alt=\"image\" width=\"600\"/\u003e\n\nРисунок 1. Схема БД music.db\n\n### Контрольные задания №1-2: ООП\n#### Постановка задачи\n\n\u003cins\u003eПродолжить работу над проектом, созданном в Контрольной №1-1\u003c/ins\u003e\n\n* Требуется разработать программы согласно указанным ниже заданиям (на выбор, но можно\nреализовать свою тему).\n* Реализация классов должна быть в отдельных модулях.\n* Клиентский код должен импортировать вашу библиотеку и посредством объектов\nвоспользоваться реализуемой в них функциональностью.\n* В тексте использовать комментарии, поясняющие ваши действия и принятые решения.\nРекомендуется сделать их как можно подробными и понятными.\n* Объем задания (конкретные указания, что надо выполнить) указан ниже (см. Варианты\nзаданий).\n* Программное решение общего задания требуется представить в виде отдельных решений\nпо каждому заданию, которые должны показать развитие общего проекта.\n\n\u003cins\u003eСохранить проект для дальнейшего использования!\u003c/ins\u003e\n\n#### Задание 2. Множественное наследование\n* Реализовать некую сущность вашего решения (обосновать свой выбор) как\nабстрактный класс.\n* Изменить реализацию наследования, добавив наследование от абстрактного класса.\n* Применить в иерархии классов наследование от класса-миксина.\n* Продумать и по возможности реализовать множественное наследование (в случае\nотказа от реализации множественного наследования обосновать свое решение).\n\n#### Задание 3. Расширение функциональности\n* Реализуйте в своем проекте декораторы, которые\n1) Pегистрирует вызовы важных сценариев.\n   \n   Результат декорирования – информация о выполнении сценария (например, факт отработки,\n   время начала и окончания, длительность и т.д.).\n2) Устанавливает/проверяет пре- и постусловия функций.\n3) Что-либо на ваше усмотрение.\n* Реализуйте в своем проекте метаклассы для расширения классов дополнительными\nвозможностями (на ваше усмотрение).\n\n#### Варианты заданий\nНа примере первого задания показан примерный перечень действий по проектированию\nсистемы.\n\n#### Задание. Пиццерия.\n**Постановка задачи.**\n\nПиццерия предлагает клиентам три вида пиццы: Пепперони, Барбекю и Дары Моря, каждая из\nкоторых определяется тестом, соусом и начинкой.\n\n**Требуется:** \n* спроектировать и реализовать приложение для терминала, позволяющее обеспечить\nобслуживание посетителей.\n\n**Рекомендация по проектированию**\n1. По результатам анализа предметной области (бизнес-процесса работы пиццерии) в\n   контексте задачи можно выделить 3 сущности (объекта):\n* Терминал: отвечает за взаимодействие с пользователем:\n  - вывод меню на экран;\n  - прием команд от пользователя (выбор пиццы, подтверждение заказа, оплата и др.);\n* Заказ: содержит список заказанных пицц, умеет подсчитывать свою стоимость;\n* Пицца: содержит заявленные характеристики пиццы, а также умеет себя подготовить\n(замесить тесто, собрать ингредиенты и т.д.), испечь, порезать и упаковать.\n\nПоскольку пиццерия реализует несколько видов пиццы, которые различаются\nхарактеристиками, логично будет сделать общий класс ___Пицца___, а в дочерних классах\n(например, классе ___ПиццаБарбекю___) уточнить характеристики конкретной пиццы.\n2. Рекомендуется разработать для указанных классов диаграмму классов в нотации UML.\n3. Разработать алгоритм работы (сценарий) пользователя с терминалом (основным\n   классом, отвечающим за интерфейс).\n\n#### Задание. Банковские вклады\nБанк предлагает ряд вкладов для физических лиц:\n* Срочный вклад: расчет прибыли осуществляется по формуле простых процентов;\n* Бонусный вклад: бонус начисляется в конце периода как % от прибыли, если вклад\nбольше определенной суммы;\n* Вклад с капитализацией процентов.\n\nТребуется реализовать приложение, которое бы позволило подобрать клиенту вклад по\nзаданным параметрам.\n\n#### Задание. Поединок\nДан класс \"Боец\" – базовый класс.\n\nТребуется реализовать имитацию поединка двух соперников.\n\nРеализовать производные классы (не менее двух) – бойцов определённого единоборства.\n\nОт них создаются два экземпляра-юнита.\n\nПримерная последовательность действий:\n- Перед началом поединка каждому устанавливается здоровье в 100 очков.\n- В ходе поединка противники в случайном порядке бьют друг друга. Тот, кто бьет,\nздоровья не теряет. У того, кого бьют, оно уменьшается на 20 очков от одного удара.\n- После каждого удара надо выводить сообщение, какой юнит атаковал, и сколько у\nпротивника осталось здоровья.\n- Как только у кого-то заканчивается ресурс здоровья, программа завершается\nсообщением о том, кто одержал победу.\n\n#### Задание. Шахматы\nТребуется реализовать объектную модель _Шахматные фигуры_.\n\nУ всех шахматных фигур есть общий функционал, например - возможность фигуры ходить и\nбыть отображенной на доске.\n\nИсходя из этого, необходимо создать абстрактный класс _Фигура_, определить в нем\nабстрактный метод (например, - ход, поскольку каждая фигура ходит по-своему) и реализовать\nобщий функционал (например, отрисовка на доске).\n\nСоздать класс конкретной фигуры, например, ферзя, в котором реализовать нужный\nфункционал.\n\n\n### Контрольные задания №2-1: Расширение проекта. Исключения.\n#### Постановка задачи\n\n\u003cins\u003eПродолжить работу над проектом, созданном в Контрольной №1-2\u003c/ins\u003e\n\n* Требуется разработать программы согласно указанным ниже заданиям (на выбор, но можно\nреализовать свою тему).\n* Реализация классов должна быть в отдельных модулях.\n* Клиентский код должен импортировать вашу библиотеку и посредством объектов\nвоспользоваться реализуемой в них функциональностью.\n* В тексте использовать комментарии, поясняющие ваши действия и принятые решения.\nРекомендуется сделать их как можно подробными и понятными.\n* Объем задания (конкретные указания, что надо выполнить) указан ниже (см. Варианты\nзаданий).\n* Программное решение общего задания требуется представить в виде отдельных решений\nпо каждому заданию, которые должны показать развитие общего проекта.\n\n\u003cins\u003eСохранить проект для дальнейшего использования!\u003c/ins\u003e\n#### Задание 4. Исключения\n* Реализуйте в своем проекте поддержку исключений.\n* Создайте в своем проекте классы исключений и покажите их применение.\n* Предложите в вашей процедуре (любой на ваш выбор) реализацию возбуждения\nисключения в случае нахождения некого соответствия вместо того, чтобы возвращать\nфлаг состояния, который должен интерпретироваться вызывающей программой, т.е. с\nпомощью исключения обеспечить способ подачи сигнала, не возвращая значение.\n\n### Контрольные задания №2-2: Расширение проекта. Взаимодействие с базой данных\n#### Постановка задачи\n\n\u003cins\u003eПродолжить работу над проектом, созданном в Контрольной №2-1\u003c/ins\u003e\n* Требуется разработать программы согласно указанным ниже заданиям (на выбор, но можно\nреализовать свою тему).\n* Реализация классов должна быть в отдельных модулях.\n* Клиентский код должен импортировать вашу библиотеку и посредством объектов\nвоспользоваться реализуемой в них функциональностью.\n* В тексте использовать комментарии, поясняющие ваши действия и принятые решения.\nРекомендуется сделать их как можно подробными и понятными.\n* Объем задания (конкретные указания, что надо выполнить) указан ниже (см. Варианты\nзаданий).\n* Программное решение общего задания требуется представить в виде отдельных решений\nпо каждому заданию, которые должны показать развитие общего проекта.\n\n\u003cins\u003eСохранить проект для дальнейшего использования!\u003c/ins\u003e\n\n#### Задание 5. Многопоточность и асинхронность\n* Добавьте в свой проект реализацию вторичного потока для любого алгоритма.\n* Подберите наиболее наглядный пример, обоснуйте свой выбор.\n* Добавьте в свой проект реализацию асинхронного вызова для любого алгоритма.\n* Подберите наиболее наглядный пример, обоснуйте свой выбор.\n\n#### Задание 6. Реализация взаимодействия с базой данный\nРеализовать хранение данных в базе данных.\n\nРеализовать взаимодействия с базой данных на основе ORM.\n\nВыбор типа СУБД и технологии разработки на усмотрение разработчика – обосновать\nпринятые решения.\n\n### Урок 6. GUI\n\n**Указания:** Программу реализовать с использованием ООП: классы, методы и объекты.\nИспользуя стандартную библиотеку tkinter, реализовать графические возможности на\nязыке Python.\n\n- Задание 1. Создать приложение Графический калькулятор для расчетов с двумя\nаргументами простых операций сложения/вычитания/умножения/деления.\n\n   Две радио кнопки (класс RadioButton) с подписями Калькулятор/Прямоугольник\n   (понадобиться для Задания 3). Значение по умолчанию Калькулятор. Если выбрано\n   значение Прямоугольник в текстовые поля аргументов нельзя вводить\n   отрицательные значения;\n   \n   Текстовые поля (класс Entry) - предназначены для ввода аргументов. Аргументы\n   могут быть положительные/отрицательные, целые/дробные;\n   \n   Множественный выбор (класс Checkbutton) - выполнение вычислений и\n   отображение результатов. Если выбран переключатель Калькулятор, то\n   отображаются результаты суммы/разности/произведения/частного. Если выбран\n   переключатель Прямоугольник, вычисляются и отображаются только Периметр и\n   Площадь;\n   \n   Метки (класс Label) статические для подписи Текстовых полей и динамические для\n   отображения результатов вычислений;\n   \n   Кнопки (класс Button) выполняют операции Поменять местами аргументы,\n   Очистить форму, и Выход из приложения.\n   \n   Предусмотреть отлов возможных ошибок ввода данных, результаты вычислений\n   округлить до сотых.\n   \n   По желанию: задать размеры, цвет, заголовок окна; изменить цвет/шрифт\n   виджетов.\n\n- Задание 2. Расширить функционал приложения Графический Калькулятор, создав\nпункты меню. Добавить три главных пункта: Файл, Операции, Справка.\n   \n   Меню Файл содержит команду Выход\n   \n   Меню Операции содержит возможность Очистить данные и выбор выполнения\n   операции суммы/разности/произведения/частного и визуализацию, что выбрано.\n   \n   Меню Справка отображает окно диалога с информацией о программе.\n\n- Задание 3. Расширить функционал приложения Графический Калькулятор, добавив\nсоздание графического прямоугольника (виджет Canvas и create_rectangle()) внизу\nформы. Длина/Ширина прямоугольника - это аргументы, введенные в текстовые\nполя. Цвет, заливку сделать по желанию.\n\n### Домашнее задание\nТребования: создать программное обеспечение учета грузового транспорта для Автотранспортного\nотдела логистической компании.\n\nЗадача подобрать доступный грузовой транспорт в зависимости от размера (веса)\nперевозимого груза, приложение реализовать с помощью ООП, БД, графического интерфейса.\n\nВ программе должно быть реализовано:\n1. Добавлять/удалять грузовой транспорт;\n2. Просматривать весь доступный транспорт;\n3. Просматривать грузовой транспорт по грузоподъемности;\n4. Просматривать свободный грузовой транспорт;\n5. Вносить заявку на перевоз груза по указанным габаритам;\n6. Подобрать и забронировать транспорт;\n7. Просматривать занятый грузовой транспорт;\n8. Интерфейс программы реализовать на ваше усмотрение;\n9. Реализовать возможность сохранения данных в базу данных.\n   \nТребования к содержанию и структуре отчета:\n1. Титульный лист;\n2. Задание на выполнение домашнего задания;\n3. Описание решения задания с указанием применения элементов программирования;\n4. Графические материалы, диаграмма классов, схема базы данных;\n5. Выводы.\n\nСправочная информация:\n\n| Тип    | Грузоподъемность, тонн | Длина | Ширина | Высота  |\n|--------|------------------------|-------|--------|---------|\n| Газель | 2                      | 3     | 2      | 1.7-2.2 |\n| Бычок  | 3                      | 4.2-5 | 2-2.2  | 2-2.4   |\n| MAN-10 | 10                     | 6-8   | 2.45   | 2.3-2.7 |\n| Фура   | 20                     | 13.6  | 2.46   | 2.5-2.7 |","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcandygoose%2Fprogramming_2_term_ict","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcandygoose%2Fprogramming_2_term_ict","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcandygoose%2Fprogramming_2_term_ict/lists"}