Кратко
Алгоритм — это конечная последовательность точных команд, выполнение которых исполнителем приводит к решению задачи за конечное число шагов.
Два примера: линейный (команды идут одна за другой) и с ветвлением (есть проверка условия).
Ключевые свойства алгоритма: дискретность (разбит на шаги), понятность исполнителю, определённость (одна и та же команда всегда выполняется одинаково), результативность (обязательно даёт результат) и массовость (годится для целого класса похожих задач, а не для одного числа).
Пример 1. Линейный алгоритм: площадь и периметр прямоугольника
Задача: по сторонам \(a\) и \(b\) найти периметр \(P\) и площадь \(S\).
- Ввести \(a\), \(b\).
- \(P := 2 \cdot (a + b)\)
- \(S := a \cdot b\)
- Вывести \(P\), \(S\).
Проверка: при \(a = 3\), \(b = 5\): \(P = 2 \cdot (3+5) = 16\), \(S = 3 \cdot 5 = 15\).
Здесь нет ни условий, ни повторов — все шаги выполняются по одному разу, поэтому алгоритм линейный.
Пример 2. Алгоритм с ветвлением: большее из двух чисел
Задача: вывести большее из чисел \(a\) и \(b\).
- Ввести \(a\), \(b\).
- Если \(a > b\), то \(max := a\), иначе \(max := b\).
- Вывести \(max\).
На блок-схеме шаг 2 — это ромб (проверка условия), из которого выходят две стрелки: «да» и «нет».
Проверка — обязательно на двух наборах, чтобы сработали обе ветви:
- \(a = 7\), \(b = 4\): условие \(7 > 4\) истинно → \(max = 7\);
- \(a = 2\), \(b = 9\): условие ложно → \(max = 9\).
Если проверить только один набор, ошибка в «другой» ветви останется незамеченной.
Как самому сделать похожее задание
- Определи, что дано (вход) и что нужно получить (выход).
- Запиши обработку по шагам, каждую команду — так, чтобы её можно было выполнить однозначно (не «как-нибудь посчитать», а «\(S := a \cdot b\)»).
- Проверь алгоритм трассировкой: подставь конкретные числа и пройди по шагам, записывая значения переменных в таблицу. Для алгоритма с условием пройди обе ветви, для алгоритма с циклом — ещё и случай, когда цикл не выполнится ни разу.
Третий тип, который часто спрашивают в том же задании, — циклический: например, сумма чисел от 1 до \(n\) (повторять \(S := S + i\) при \(i\) от 1 до \(n\)).