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


ЛАБОРАТОРНАЯ РАБОТА № 4
Практикум по применению условных операторов для решения задач
Дисциплина: Основы алгоритмизации и программирования
Специальность: 09.02.07 «Информационные системы и программирование» Студент: ________________________ Группа: ______
напиши код готовый для вставки 
ЦЕЛЬ РАБОТЫ
Закрепление практических навыков применения условных операторов (if-elif-else, match-case, тернарный оператор) для решения задач повышенной сложности, требующих комбинирования различных подходов и учета граничных условий.

ЗАДАЧИ РАБОТЫ
1.	Научиться самостоятельно выбирать оптимальный тип условного оператора в зависимости от решаемой задачи.
2.	Развить навыки работы со сложными логическими выражениями.
3.	Освоить обработку множественных условий и вложенных ветвлений.
4.	Научиться учитывать особые и граничные случаи при разработке алгоритмов.
5.	Закрепить навыки тестирования программ на различных наборах входных данных.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Примечание: Теоретический материал по условным операторам (if-elif-else, match-case, тернарный оператор), логическим операторам и обработке исключений был подробно рассмотрен в Лабораторной работе №3. В данной работе предполагается, что студент владеет этой теорией и применяет её на практике.
Напоминание: при решении задач данного практикума необходимо:
	Использовать конструкцию try-except для защиты от некорректного ввода.
	Тщательно тестировать программы на граничных значениях.
	Самостоятельно определять, какой тип условного оператора (if, match-case или тернарный) лучше всего подходит для решения конкретной подзадачи.

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

Задание 1. Возрастная категория
Условие: Напишите программу, которая запрашивает у пользователя его возраст и определяет, к какой категории он относится:
	Ребенок: 0–2 года (включительно)
	Подросток: 12–18 лет (включительно)
	Взрослый: 19–59 лет (включительно)
	Пенсионер: 60 лет и старше
Предусмотрите проверку на корректность введенного возраста (неотрицательное число, не превышающее разумный предел, например, 150 лет). Если возраст не попадает ни в одну из указанных категорий (например, 3–11 лет), выведите сообщение "Возраст не соответствует ни одной категории".

Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с результатами для всех категорий и для некорректного ввода)

Задание 2. Спецсимвол клавиши
Условие: Напишите программу, которая запрашивает у пользователя цифру от 0 до 9 и выводит спецсимвол, который расположен на этой клавише в английской раскладке клавиатуры (верхний регистр):
	1 → !
	2 → @
	3 → #
	4 → $
	5 → %
	6 → ^
	7 → &
	8 → *
	9 → (
	0 → )
Если введено значение вне диапазона 0–9, выведите сообщение об ошибке. Для решения рекомендуется использовать оператор match-case.

Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с результатами для разных цифр и для некорректного ввода)

Задание 3. Одинаковые цифры в трехзначном числе
Условие: Напишите программу, которая запрашивает у пользователя трехзначное число и проверяет, есть ли в нем одинаковые цифры. Программа должна вывести одно из сообщений:
	"Все цифры разные"
	"Есть две одинаковые цифры"
	"Все три цифры одинаковые"
Предусмотрите проверку, что введенное число действительно является трехзначным (от 100 до 999 включительно).

Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с результатами для чисел: 123, 112, 111, а также для некорректного ввода)

Задание 4. Високосный год
Условие: Напишите программу, которая запрашивает у пользователя год (целое положительное число) и определяет, является ли он високосным.
Правила определения високосного года:
	Год является високосным, если он кратен 400.
	Год также является високосным, если он кратен 4, но при этом не кратен 100.
	Во всех остальных случаях год не високосный.

Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с результатами для годов: 2000, 2024, 2100, 2023)

Задание 5. Палиндром (пятизначное число)
Условие: Напишите программу, которая запрашивает у пользователя пятизначное число и определяет, является ли оно палиндромом (читается одинаково слева направо и справа налево, например, 12321, 45654). Программа должна вывести "Да, это палиндром" или "Нет, это не палиндром". Предусмотрите проверку, что введенное число действительно является пятизначным (от 10000 до 99999 включительно).

Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с результатами для чисел: 12321, 12345, и некорректного ввода)

Задание 6. Конвертер валют
Условие: Напишите программу-конвертер валют. Пользователь вводит количество долларов США (USD), а затем выбирает целеую валюту, введя ее код: EUR (евро), UAN (юань) или AZN (азербайджанский манат). Программа должна вывести конвертированную сумму. Курсы валют задайте самостоятельно (например, 1 USD = 0.92 EUR, 1 USD = 7.25 UAN, 1 USD = 1.70 AZN). Используйте match-case для выбора валюты.

Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с результатами для всех трех валют и для некорректного кода валюты)

Задание 7. Скидка на покупку
Условие: Напишите программу, которая запрашивает у пользователя сумму покупки (вещественное число) и выводит итоговую сумму к оплате с учетом скидки:
	от 200 до 300 рублей (включительно) – скидка 3%
	от 300 до 500 рублей (включительно) – скидка 5%
	от 500 рублей и выше – скидка 7%
	Если сумма меньше 200 рублей – скидка не предоставляется.
Программа должна корректно обрабатывать границы диапазонов (например, для суммы ровно 300 рублей применяется скидка 5%, так как это попадает во второй диапазон).

Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с результатами для сумм: 150, 200, 250, 300, 400, 500, 600)

Задание 8. Окружность в квадрате
Условие: Напишите программу, которая запрашивает у пользователя длину окружности (L) и периметр квадрата (P). Определите, может ли такая окружность полностью поместиться в указанный квадрат. Окружность помещается в квадрат, если ее диаметр меньше или равен стороне квадрата.
	Диаметр окружности вычисляется по формуле: D = L / π (число π возьмите равным 3.14).
	Сторона квадрата вычисляется по формуле: a = P / 4.
Программа должна вывести "Окружность помещается в квадрат" или "Окружность НЕ помещается в квадрат".

Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с примерами, когда окружность помещается и когда нет)

Задание 9. Викторина
Условие: Напишите программу-викторину. Задайте пользователю 3 вопроса (на любую тему, например, по географии, истории или программированию). У каждого вопроса должно быть 3 варианта ответа (A, B, C). За каждый правильный ответ начисляется 2 балла. В конце программы выведите количество набранных баллов (от 0 до 6).
Требования:
	Используйте input() для получения ответа пользователя.
	При сравнении ответа пользователя с правильным учитывайте регистр (приведите ответ к верхнему или нижнему регистру).
	Можно использовать как if-elif, так и match-case для проверки каждого вопроса.

Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с примером прохождения викторины)

Задание 10. Следующая дата
Условие: Напишите программу, которая запрашивает у пользователя дату в формате: день, месяц, год (целые числа). Программа должна вывести дату следующего дня. Учтите все возможные переходы:
	Переход на следующий месяц (например, 31.01 -> 01.02).
	Переход на следующий год (например, 31.12 -> 01.01).
	Високосный год в феврале (28 или 29 дней).
	Количество дней в месяцах (апрель, июнь, сентябрь, ноябрь — по 30 дней, остальные по 31, кроме февраля).
Предусмотрите проверку корректности введенной даты.
Программа:
# Вставьте сюда код вашей программы
Результат выполнения:
(Вставьте скриншот консоли с результатами для дат: 31.01.2024, 28.02.2023, 28.02.2024, 31.12.2024, 30.04.2024)

КОНТРОЛЬНЫЕ ВОПРОСЫ
1.	Для каких из выполненных заданий вы использовали оператор match-case и почему? В чем преимущество его применения в этих задачах?
2.	В каком задании вам потребовалось использовать вложенные условные операторы (один if внутри другого)? Опишите логику этого ветвления.
3.	Какие граничные случаи вы учитывали при решении задачи №10 (Следующая дата)? Приведите примеры.
4.	Почему в задаче №3 (Одинаковые цифры) может быть неудобно использовать match-case? Какую конструкцию вы выбрали и почему?
5.	Объясните, как вы организовали проверку корректности ввода в задаче №5 (Палиндром). Какие именно ошибки может допустить пользователь?
6.	В чем отличие проверки условия "от 200 до 300" (включительно) в задаче №7 от проверки "от 12 до 18" в задаче №1? Как это влияет на запись условия?
7.	Какие логические операторы (and, or, not) вы использовали при решении задачи №4 (Високосный год)? Напишите получившееся сложное условие.
8.	Можно ли было решить задачу №8 (Окружность в квадрате) с помощью тернарного оператора? Если да, напишите, как бы выглядела эта конструкция.

ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ ОТЧЕТА
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).