Загрузка данных


ЛАБОРАТОРНАЯ РАБОТА № 8
Дисциплина: Основы алгоритмизации и программирования
Специальность: 09.02.07 «Информационные системы и программирование» 
Студент: _________________________ Группа: ______

ЦЕЛЬ РАБОТЫ
Закрепление практических навыков создания и использования функций (параметры, возврат значений, параметры по умолчанию, вызов одной функции из другой) для решения задач повышенной сложности.
ЗАДАЧИ РАБОТЫ
1.	Научиться создавать функции с одним и несколькими параметрами.
2.	Развить навыки использования параметров по умолчанию.
3.	Освоить приемы переиспользования функций (одна функция вызывает другую).
4.	Научиться преобразовывать форматы данных (часы-минуты-секунды) с помощью функций.
5.	Закрепить навыки тестирования функций на различных наборах входных данных.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Примечание: Теоретический материал по функциям (определение функций, параметры, аргументы, оператор return, параметры по умолчанию, область видимости переменных) был подробно рассмотрен в Лабораторной работе №7. В данной работе предполагается, что студент владеет этой теорией и применяет её на практике.
Напоминание: при решении задач данного практикума необходимо:
	Каждую задачу оформлять в виде отдельной функции.
	В основной программе (или в блоке тестирования) демонстрировать вызов каждой функции с разными аргументами.
	Использовать созданные ранее функции как вспомогательные для решения более сложных задач.
	Тщательно тестировать функции на граничных значениях.

ХОД РАБОТЫ
Внимание: Вам необходимо самостоятельно написать код для каждой из представленных ниже задач, вставить его листинг в отчет и приложить скриншоты результатов выполнения для различных тестовых данных (включая граничные случаи).

Задание 1. Сравнение двух чисел
Условие: Напишите функцию compare(a, b), которая принимает 2 числа и возвращает -1, если первое меньше второго; 1 – если первое больше второго; и 0 – если числа равны.
Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с результатами для разных пар чисел)

Задание 2. Факториал числа
Условие: Напишите функцию factorial(n), которая вычисляет факториал переданного ей числа.
Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с результатами для 0, 1, 5, 7)

Задание 3. Цифры в число
Условие: Напишите функцию digits_to_number(d1, d2, d3), которая принимает три отдельные цифры и превращает их в одно число. Например: цифры 1, 4, 9 превратятся в число 149.
Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли)

Задание 4. Площадь прямоугольника и квадрата
Условие: Напишите функцию area(length, width=None), которая принимает длину и ширину прямоугольника и вычисляет его площадь. Если в функцию передан только один параметр (ширина не передана), то она вычисляет площадь квадрата.
Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли)

Задание 5. Совершенное число
Условие: Напишите функцию is_perfect(n), которая проверяет, является ли переданное ей число совершенным. Совершенное число – это число, равное сумме всех своих собственных делителей (делители, меньшие самого числа).
Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли)

Задание 6. Диапазон совершенных чисел
Условие: Напишите функцию find_perfect_numbers(min_val, max_val), которая принимает минимальное и максимальное значения для диапазона и выводит (или возвращает список) только те числа из диапазона, которые являются совершенными. Используйте написанную ранее функцию is_perfect для проверки каждого числа.
Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли)

Задание 7. Вывод времени в формате чч:мм:сс
Условие: Напишите функцию print_time(hours, minutes=0, seconds=0), которая принимает время (часы, минуты, секунды) и выводит его на экран в формате «чч:мм:сс». Если при вызове функции минуты и/или секунды не были переданы, выводить их как 00.
Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли)

Задание 8. Перевод времени в секунды
Условие: Напишите функцию to_seconds(hours, minutes, seconds), которая принимает часы, минуты и секунды и возвращает это время в секундах.
Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли)

Задание 9. Перевод секунд в строку времени
Условие: Напишите функцию from_seconds(total_seconds), которая принимает количество секунд, переводит их в часы, минуты и секунды и возвращает результат в виде строки «чч:мм:сс».
Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли)

Задание 10. Разница между датами
Условие: Напишите функцию time_difference(h1, m1, s1, h2, m2, s2), которая считает разницу между двумя моментами времени (в пределах одного дня). Функция принимает 6 параметров (часы, минуты, секунды первой даты и второй) и возвращает результат в виде строки «чч:мм:сс». При выполнении задания используйте функции из предыдущих двух заданий: сначала обе даты переведите в секунды с помощью to_seconds, узнайте разницу в секундах, а потом разницу переведите обратно в «чч:мм:сс» с помощью from_seconds.
Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли)

КОНТРОЛЬНЫЕ ВОПРОСЫ
1.	Для каких из выполненных заданий вы использовали параметры по умолчанию? Приведите пример из вашего кода.
2.	В каком задании потребовалось использовать одну функцию внутри другой? Опишите, как вы это организовали.
3.	Какие граничные случаи вы учитывали при решении задания №5 (Совершенное число)?
4.	В чем разница между оператором return и функцией print() внутри функции?
5.	Зачем в задании №10 потребовалось использовать вспомогательные функции to_seconds и from_seconds? Какие преимущества дает такой подход?
6.	Как вы организовали проверку корректности входных данных в задании №2 (Факториал)?
7.	Может ли функция возвращать разные типы данных в зависимости от условий? Приведите пример.
8.	Объясните, как работает механизм передачи параметров width=None в задании №4.

ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ ОТЧЕТА
1.	Отчет выполняется в текстовом редакторе (MS Word или аналог).
2.	Титульный лист оформляется в соответствии с шаблоном, указанным в начале работы.
3.	В отчете обязательно должны присутствовать: цель работы, задачи, ход работы (с решениями всех 10 задач), ответы на контрольные вопросы и вывод.
4.	Для каждого задания (с 1 по 10) необходимо представить:
o	Условие задачи.
o	Листинг (текст) программы, оформленный моноширинным шрифтом.
o	Скриншоты консоли с результатами выполнения программы для различных тестовых данных (минимум 3-4 разных набора, включая граничные случаи).
5.	Скриншоты должны быть четкими, с видимым текстом программы и результатом ее работы.



ВЫВОДЫ
(Студент самостоятельно формулирует вывод по работе. В выводе необходимо отразить: какие навыки были закреплены, с какими сложностями столкнулись при решении задач, какие из заданий показались наиболее интересными/сложными, как навыки, полученные в ходе работы, могут пригодиться в дальнейшем.)

Отработано часов: 4
Подпись студента: _____________ Дата: ______

СПИСОК ЛИТЕРАТУРЫ
1.	Лутц М. Изучаем Python. Том 1. — 5-е изд. — СПб.: Диалектика, 2019. — 832 с.
2.	Доусон М. Программируем на Python. — СПб.: Питер, 2021. — 416 с.
3.	Документация Python: https://docs.python.org/3/ (Дата обращения: 25.03.2026).