Алгоритмы и исполнители: инструкция, которая всегда работает
Рецепт бутерброда и сборка рюкзака — это тоже алгоритмы. Учимся писать инструкции, которые исполнитель выполняет ровно так, как написано.
Ты уезжаешь на каникулы и пишешь бабушке инструкцию: как включить твою приставку и зайти в игру. Через день звонок: «Я нажала кнопку, а там непонятно что». Значит, инструкция была неполной — какой-то шаг пропущен или непонятен. Любая программа, рецепт и маршрут — это алгоритм, и от его точности зависит результат. Что должен уметь исполнитель и как писать команды, которые нельзя понять двояко — тема урока.
Алгоритм и исполнитель
Алгоритм — конечная последовательность шагов, приводящая к результату. Тот, кто выполняет шаги, — исполнитель: человек, собака-поводырь, стиральная машина или робот. У каждого исполнителя есть система команд — список действий, которые он понимает. Стиралке не прикажешь «поиграть с котом» — её система команд ограничена программами стирки. И главное свойство исполнителя: он работает формально, то есть делает ровно то, что написано, не додумывая смысла. Пропустил шаг «включи розетку» — исполнитель честно ничего не включит.
- алгоритм разбит на отдельные шаги, каждый — одно понятное действие;
- шаги идут в строгом порядке: поменяешь местами — испортится результат;
- алгоритм заканчивается за конечное число шагов и даёт результат;
- все команды входят в систему команд исполнителя.
Линейный алгоритм, ветвление и цикл
Простейший алгоритм — линейный: шаги идут один за другим, как список покупок. Но жизнь сложнее, поэтому появляются ветвление («если идёт дождь — возьми зонт, иначе — кепку») и цикл — повторение («помой пять тарелок» — это пять раз одно действие). Цикл экономит запись: вместо пяти одинаковых строк пишут «повторить 5 раз». В блок-схемах шаги рисуют прямоугольниками, условия — ромбами, а стрелки показывают, куда идти дальше. Эти три конструкции — линейная, ветвление, цикл — составляют любой алгоритм на свете, от микроволновки до игры.
| Вид алгоритма | Как работает | Пример |
|---|---|---|
| линейный | шаги идут один за другим | список покупок, рецепт |
| ветвление | выбор: если условие верно — один путь, иначе другой | если идёт дождь — зонт, иначе — кепка |
| цикл | действия повторяются несколько раз | помыть пять тарелок: одно действие пять раз |
Робот выполняет алгоритм из 8 шагов, на каждый шаг уходит 3 секунды. Прикинь время выполнения.
Попробуй сам: запиши алгоритм «собрать портфель» для первоклассника так, чтобы он не мог ошибиться. Сравни свой список со списком соседа — почти наверняка у одного из вас найдётся пропущенный шаг вроде «проверь расписание». Именно так программисты ищут ошибки: прогоняют алгоритм по шагам чужими глазами и смотрят, где результат уходит не туда.
Робот на клетчатом поле: команды в действии
Классический исполнитель — Робот на клетчатом поле. Его система команд короткая: «вперёд» — шаг на одну клетку, «направо» и «налево» — повороты, «закрасить» — покрасить клетку, на которой стоишь. Робот не догадывается: если не сказал «закрасить», клетка останется белой. Составим алгоритм «закрась три клетки подряд»: вперёд, закрасить, вперёд, закрасить, вперёд, закрасить. Шесть команд — и полоска готова. А если клеток двадцать? Тогда пишут цикл: «повтори 20 раз: вперёд, закрасить» — две строки вместо сорока команд.
Сравни две записи: «вперёд, закрасить, вперёд, закрасить, вперёд, закрасить» и «повтори 3 раза [вперёд, закрасить]». Обе дают одинаковую полоску, но вторая короче и её легче менять: захотел десять клеток — меняй тройку на десятку, команды переписывать не надо. Именно поэтому циклы придумали для повторов, а не для красоты.
Прогон с ошибкой: написали «вперёд, вперёд, закрасить» для трёх клеток — что вышло? Робот прошёл две клетки, закрасил вторую и остановился: третья осталась белой, полоска не готова. Разбор показал пропущенную пару «вперёд, закрасить» в конце. Так работает отладка: прогнали, увидели несоответствие, нашли шаг.
Ветвление в жизни: навигатор и чайник
Ветвление окружает тебя ежедневно. Навигатор рассуждает так: «если на маршруте пробка — построй объезд, иначе веди прямо». Чайник: «вода закипела — выключись». Стиральная машина выбирает режим по тому, что нажал ты. Во всех случаях есть условие и два пути: если условие верно — делай одно, иначе — другое. В блок-схеме условие рисуют ромбом, и из него выходят две стрелки — «да» и «нет». Ошибаются обычно так: забывают ветку «иначе», и исполнитель замирает, если условие не сработало.
Прогон ветвления: алгоритм «если идёт дождь — возьми зонт, иначе надень кепку». Сегодня пасмурно, но дождя нет: условие ложно, выполняется ветка «иначе» — берём кепку. Проблема появляется, когда вторую ветку забыли и вышел человек без головного убора вообще: исполнитель без ветки «иначе» не знает, что делать. Формальный исполнитель в такой ситуации либо остановится, либо сделает непредсказуемое.
Три вида ошибок в алгоритме
Ошибки в алгоритме бывают трёх видов. Первая — команда не из системы команд: сказал стиральной машине «спой», она не выполнит. Вторая — логическая: команды правильные, порядок нет; насыпать заварку после того, как налил кипяток, можно, но чай получится не тот. Третья — зацикливание: условие выхода недостижимо, и исполнитель крутится вечно. Программисты ловят ошибки прогоном: выполняют алгоритм по шагам на маленьком примере и сравнивают результат с ожидаемым. Этот трюк работает и на контрольной: проверь свой алгоритм на числах поменьше.
Способы записи: словами, схемой, программой
Один и тот же алгоритм можно записать тремя способами. Словами — как рецепт: просто, но длинно и легко запутаться. Блок-схемой — фигурами и стрелками: овал начала, прямоугольники действий, ромб условия; такую запись читают глазами и сразу видят пропущенные ветки. Программой — точными командами на языке программирования: так её выполняет компьютер. Школьные исполнители вроде Робота — промежуточный вариант: команды уже строгие, как в программе, но писать их просто. Для контрольной важно уметь переводить запись из одного вида в другой: из слов в блок-схему и обратно.
Тренировка перевода: возьми рецепт яичницы в три шага, нарисуй блок-схему с овалом «начало» и прямоугольниками, а потом запиши те же шаги командами исполнителя с системой команд «взять», «разбить», «жарить», «выключить». Три записи — один алгоритм: идея не меняется, меняется форма.
Разбор типовой задачи
- Робот стоит в углу квадрата 3 на 3 клетки и смотрит вдоль стороны.
- Одна сторона — 3 клетки, значит 3 команды «вперёд».
- На угле выполняем «направо» и идём по следующей стороне.
- Сторон четыре, поэтому пишем цикл: «повтори 4 раза: вперёд, вперёд, вперёд, направо».
- Считаем команды: 3 × 4 = 12 шагов «вперёд» плюс 4 поворота — всего 16 команд.
- Проверка: после четвёртой стороны робот стоит в стартовой клетке и смотрит в исходную сторону — алгоритм верный.
Обрати внимание: в разборе есть и подсчёт, и проверка. Если в контрольной просят составить алгоритм — всегда добавляй проверку в конце: она показывает, что ты понимаешь задачу, а не просто перечисляешь команды.
Словарь урока
- Алгоритм#
- конечная последовательность шагов, приводящая к результату
- Исполнитель#
- тот, кто выполняет команды: человек, робот, программа
- Система команд#
- все команды, которые исполнитель понимает
- Линейный алгоритм#
- шаги идут один за другим, без условий и повторов
- Ветвление#
- выбор одного из двух путей по условию
- Цикл#
- повторение блока команд несколько раз
Нажми на элемент, затем на категорию. Нажми на разложенный элемент — вернётся в пул.
Как это спрашивают на контрольной
- Назови три конструкции алгоритма и объясни, что рисуют в блок-схеме для каждой.
- Составь алгоритм «полить цветок» из пяти шагов для формального исполнителя.
- Сколько команд выполнит исполнитель, если цикл «повтори 6 раз» содержит 3 команды?
- Приведи пример алгоритма с ветвлением из повседневной жизни.
- Почему исполнитель должен работать формально? Что сломается, если он начнёт додумывать?
В задачах на циклы считают команды: число повторов умножают на число команд в блоке и не забывают прибавить команды вне цикла. В задачах на ветвление проверяют обе ветки: что случится, если условие верно, и что — если нет. Если просят составить алгоритм, пиши так, чтобы каждый шаг мог выполнить человек, не знакомый с задачей.
Частый вопрос-ловушка: «является ли алгоритмом список без конца?» — нет, потому что нарушено свойство конечности. Вторая ловушка — «является ли алгоритмом фраза «будь внимательным»?» — тоже нет: это не последовательность шагов, её нельзя выполнить по действиям.
Что дальше: алгоритмы управляют всем вокруг — от светофора до игр. Следующий урок — про графические данные: как картинка превращается в пиксели и байты.
Проверь себя
Клавиши 1–9 выбирают вариант, Enter — «Проверить»
1 Что такое исполнитель алгоритма?
2 Алгоритм из 6 шагов, каждый шаг — 5 секунд. Сколько секунд займёт выполнение? Запиши число.
3 Исполнитель выполняет команды формально, то есть ровно так, как они записаны.
4 Определи тип алгоритма.
Разложи элементы по категориям: нажми на элемент, потом на категорию.
5 Дополни свойства алгоритма.
Выбери подходящее слово в каждом пропуске.
Алгоритм состоит из отдельных . Он должен завершаться за число шагов. Исполнитель выполняет команды , не додумывая смысл.
6 Соедини термин и определение.
Нажми на элемент слева, затем на его пару справа. Повторное нажатие отменяет связь.
7 Расставь шаги алгоритма «заварить чай».
8 Цикл — это выбор одного из двух действий по условию.
Было понятно? Скажи — так мы видим, какие темы переписать.
Частые вопросы
Что такое алгоритм простыми словами?
Это чёткая пошаговая инструкция, которая приводит к результату: рецепт, маршрут, инструкция по сборке. Шаги идут в определённом порядке, а их конечное число гарантирует завершение.
Кто такой исполнитель и что у него есть?
Исполнитель — тот, кто выполняет алгоритм: человек, робот, программа. У него есть система команд — набор действий, которые он понимает, и он выполняет команды формально, не додумывая.
Чем цикл отличается от ветвления?
Цикл повторяет одни и те же шаги несколько раз: «помой пять тарелок». Ветвление выбирает одно из действий по условию: «если дождь — зонт, иначе кепка».
Почему важно, чтобы команды были точными?
Потому что исполнитель не понимает намерений. Пропущенный или двусмысленный шаг сломает весь результат: алгоритм для первоклассника должен работать без твоих пояснений.