Линейные алгоритмы
Линейный алгоритм: структура «ввод — обработка — вывод», присваивание, целочисленное деление и остаток, обмен значений через третью переменную. С запускаемым кодом и живыми схемами.
Самые простые алгоритмы устроены как рецепт без вариантов: делай шаг 1, потом шаг 2, потом шаг 3 — и готово. Никаких «если» и «повторяй». Такие алгоритмы называются линейными, и с них начинается любое программирование.
Что такое линейный алгоритм
Линейный алгоритм — это алгоритм, в котором все шаги выполняются строго по порядку, один за другим, и каждый шаг выполняется ровно один раз. На блок-схеме это видно сразу: фигуры выстроены в одну цепочку, из каждой выходит ровно одна стрелка, ромбов нет вовсе.
Типичная структура линейного алгоритма — три части:
- ввод — получаем исходные данные;
- обработка — вычисляем то, что нужно;
- вывод — сообщаем результат.
Эту тройку «ввод — обработка — вывод» полезно держать в голове при решении любой задачи: сначала спроси себя, что дано, потом — что с этим сделать, и наконец — что показать пользователю.
Пример: периметр и площадь
Классическая задача: по сторонам прямоугольника найти его периметр и площадь. Запишем решение на Python и сразу запустим — нажми «Запустить»:
a = 6
b = 4
p = 2 * (a + b)
s = a * b
print("Периметр:", p)
print("Площадь:", s)
Вывод:
Периметр: 20 Площадь: 24
А теперь та же программа в виде живой блок-схемы — но уже с вводом сторон. Видишь цепочку: два параллелограмма ввода, два прямоугольника с вычислениями, два параллелограмма вывода. Пройди схему по шагам и проследи, как появляются и меняются переменные:
a = int(input("Сторона a"))
b = int(input("Сторона b"))
p = 2 * (a + b)
s = a * b
print("Периметр:", p)
print("Площадь:", s)
Заметь: порядок шагов важен. Нельзя вычислить p = 2 * (a + b) раньше, чем введены a и b — у исполнителя просто не будет данных. В линейном алгоритме каждый шаг опирается на результаты предыдущих.
Переменные — память алгоритма
Переменная — это именованная ячейка памяти, в которой алгоритм хранит значение. Команда p = 2 * (a + b) читается так: «вычисли выражение справа и положи результат в ячейку с именем p». Знак = здесь не «равно» из математики, а команда присваивания.
Из-за этого в алгоритмах законны записи, которые в математике выглядели бы странно. Например, k = k + 1 означает «возьми текущее значение k, прибавь 1 и положи обратно» — значение k просто увеличивается на единицу.
Два важных оператора: // и %
В линейных задачах постоянно нужны два особых действия с целыми числами:
//— целочисленное деление:17 // 5равно 3 (сколько целых пятёрок в семнадцати);%— остаток от деления:17 % 5равно 2 (что осталось сверх целых пятёрок).
Вместе они умеют «разбирать» число на части. Классическая задача ОГЭ: дано двузначное число, найти сумму его цифр. Десятки — это n // 10, единицы — n % 10. Запусти и проверь на числе 47:
n = 47
d = n // 10
e = n % 10
print("Десятки:", d)
print("Единицы:", e)
print("Сумма цифр:", d + e)
Вывод:
Десятки: 4 Единицы: 7 Сумма цифр: 11
Этот приём — основа множества задач: получить последнюю цифру, проверить чётность (n % 2), узнать, делится ли число нацело (n % 3 == 0).
Задача на понимание: обмен значений
Есть две переменные: x = 3 и y = 8. Нужно поменять их значения местами. Первая мысль — написать x = y, а потом y = x. Но это не сработает: после первой команды в x уже лежит 8, старая тройка потеряна, и вторая команда положит в y ту же восьмёрку.
Правильное решение — взять третью переменную, как третий стакан при переливании воды. Сначала спрячем значение x в переменную t, затем перепишем x, а потом достанем спрятанное:
x = 3
y = 8
t = x
x = y
y = t
print("x =", x)
print("y =", y)
Пройди схему по шагам, следя за таблицей переменных, — момент «переливания» виден очень наглядно. Этот приём с временной переменной встречается в задачах ОГЭ и в реальном программировании постоянно.
Как узнать линейный алгоритм на экзамене
- На схеме нет ромбов и шестиугольников — только цепочка фигур.
- Каждый блок выполняется ровно один раз.
- Результат полностью определяется входными данными: одни и те же входы — всегда один и тот же ответ.
- Чтобы найти ответ, достаточно пройти схему сверху вниз один раз, выписывая значения переменных.
Что мы узнали
- Линейный алгоритм — цепочка шагов, каждый выполняется один раз, строго по порядку.
- Типичная структура: ввод данных, обработка, вывод результата.
- Знак
=— это присваивание: «вычисли справа, положи в переменную слева». - Запись
k = k + 1увеличивает переменную на единицу. - Операторы
//и%разбирают число на части:n // 10— десятки,n % 10— единицы. - Чтобы обменять значения двух переменных, нужна третья — временная.