ПЗ №1. Алгоритмы обработки данных на основе алгоритмической конструкции «Ветвление»

Хорошевич Павел Александрович

Шаблон «Инструкция под защитой»

Когда использовать: блок инструкций выполняется только если условие истинно. Иначе блок пропускается.

Псевдокод:

if <условие>:
    <блок инструкций>

Пример на Python:

temperature = float(input("Температура: "))

if temperature < 18.0:
    print("Включаю нагреватель")
print("Программа завершена")

Шаблон «Альтернатива»

Когда использовать: ровно два взаимно исключающих варианта. Один из двух блоков гарантированно выполнится.

Псевдокод

if <условие>:
    <блок инструкций 1>
else:
    <блок инструкций 2>

Пример на Python

# Зачёт или незачёт
grade = int(input("Отметка:"))
if grade >= 4:
    print("Тест пройден!")
else:
    print("Повторите попытку.")

Пример: Принадлежность интервалу

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

Задание 1

Задание 1

Анализ условия

Ввод: x (float), y (float)

Вывод: попадает / не попадает (str)

Тестовые данные:

  • (0, 0) -> “Не попадает”
  • (2, 1) - > “Попадает”
  • (1.5, 3.5) -> “Попадает”

Дизайн алгоритма: ввести координаты точки с клавиатуры. Если x больше или равно 1, y больше или равно 2 и меньше или равно 4, то вывести сообщение “Попадает”. Иначе вывести “Не попадает”.

x = float(input("Координата x: "))
y = float(input("Координата y: "))

if x >= 1 and y >=2 and y <= 4:
    print("Попадает")
else:
    print("Не попадает")

✍🏻 Задание

Известны сопротивления двух несоединённых друг с другом участков электрической цепи и напряжение на каждом из них. По какому участку протекает меньший ток?

Анализ условия: определите входные и выходные данные, их тип. Предложите имена для переменных.

Тестовые данные: запишите набор тестовых входных данных и определите ожидаемый ответ. Обратите внимание, каким образом вы получили ответ, через какую последовательность шагов?

Дизайн алгоритма: запишите алгоритм решения задачи на естественном языке.

Шаблон «Каскад решений»

Когда использовать: выбирается ровно один вариант на основе одного условия.

Псевдокод

if <условие 1>:
    <блок инструкций 1>
elif <условие 2>:
    <блок инструкций 2>
elif <условие 3>:
    <блок инструкций 3>
else:
    <действие по умолчанию>

Пример на Python

score = int(input("Баллы:"))

if score >= 80:
    print("Отлично")
elif score >= 60:
    print("Хорошо")
elif score >= 40:
    print("Удовлетворительно")
else:
    print("Неудовлетворительно")

Пример: Категория боксёра

Определить весовую категорию боксёра:

  1. Лёгкий вес: до 60 кг
  2. Первый полусредний: до 64 кг
  3. Полусредний: до 69 кг

Анализ условия

Ввод: weight (float) - вес боксёра в кг

Вывод: весовая категория (str)

Тестовые данные:

  • 62 -> “Первый полусредний вес”
  • 64 -> “Первый полусредний вес” (граница)
  • 67 -> “Полусредний вес”
  • 75 -> “Категория не определена”
  • 40 -> “Лёгкий вес”

Дизайн алгоритма: Ввести вес боксёра с клавиатуры. Если вес меньше или равен 60, то вывести “Лёгкий вес”. Иначе если вес меньше или равен 64, то вывести “Первый полусредний вес”. Иначе если вес меньше или равен 69, то вывести “Полусредний вес”. Иначе вывести “Категория не определена”.

weight = float(input("Вес боксёра (кг):"))

if weight <= 60:
    print("Лёгкий вес")
elif weight <= 64:
    print("Первый полусредний вес")
elif weight <= 69:
    print("Полусредний вес")
else:
    print("Категория не определена")

✍🏻 Задание

Составить программу, которая в зависимости от порядкового номера месяца (1, 2, …, 12) выводит время года, к которому относится этот месяц.

Анализ условия: определите входные и выходные данные, их тип. Предложите имена для переменных.

Тестовые данные: запишите набор тестовых входных данных и определите ожидаемый ответ. Обратите внимание, каким образом вы получили ответ, через какую последовательность шагов?

Дизайн алгоритма: запишите алгоритм решения задачи на естественном языке.

Шаблон «Независимые альтернативы»

Ситуация использования

Выбор зависит от нескольких независимых факторов. Может потребоваться вложенность if.

Псевдокод

if <условие 1>:
    if <условие 2>:
        <блок инструкций 1>
    else:
        <блок инструкций 2>
else:
    if <условие 2>:
        <блок инструкций 3>
    else:
        <блок инструкций 4>

Пример на Python

# Четверть координатной плоскости
x = int(input("x:"))
y = int(input("y:"))

if x > 0:
    if y > 0:
        print("Первая четверть")
    else:
        print("Четвёртая четверть")
else:
    if y > 0:
        print("Вторая четверть")
    else:
        print("Третья четверть")

Пример: Система управления реактором

Ситуация на электростанции: нужно выбрать режим работы реактора в зависимости от состояния реактора и состояния линий передач. Оба состояния принимают два возможные значения - 0 или 1. Возможные режимы работы - полная мощность, сниженная мощность, остановка.

Таблица состояний

Таблица состояний
reactor_error = int(input("Ошибка реактора (1/0):"))
transmission_error = int(input("Ошибка линий (1/0):"))

if reactor_error == 1:
    if transmission_error == 1:
        print("Режим: Остановка")
else:
    if transmission_error == 1:
        print("Режим: Снижение мощности")
    else:
        print("Режим: Полная мощность")
reactor_error = int(input("Ошибка реактора (1/0):"))
transmission_error = int(input("Ошибка линий (1/0):"))

if reactor_error == 1:
    print("Режим: Остановка")
elif transmission_error == 1:
    print("Режим: Снижение мощности")
else:
    print("Режим: Полная мощность")

✍🏻 Задание

Робот пылесос периодически должен становиться на зарядку. Зарядка должна начинаться, когда аккумулятор робота НЕ заряжен ИЛИ полы подметены И помыты. Напишите программу, которая по значениям трёх состояний (0/1) сообщит, нужно ли роботу становиться на зарядку.

Анализ условия: определите входные и выходные данные, их тип. Предложите имена для переменных.

Тестовые данные: запишите набор тестовых входных данных и определите ожидаемый ответ. Обратите внимание, каким образом вы получили ответ, через какую последовательность шагов?

Дизайн алгоритма: запишите алгоритм решения задачи на естественном языке.

Схема устройства

Схема устройства