"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В.М. Котов, А.И. Лапо, Е.Н. Войтехович
Алгоритм — это точная последовательность действий, которая помогает решить задачу и получить нужный результат. Его выполняет исполнитель: человек, устройство или программа, понимающие определённые команды. Поэтому недостаточно просто описать задачу: надо указать понятные действия, расположить их в правильном порядке и проверить, что исполнитель способен их выполнить. Хороший алгоритм завершается и подходит для решения целого класса похожих задач.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Алгоритм — точное и понятное описание последовательности действий, которая приводит к решению задачи. В нём указано, что и в каком порядке нужно сделать. Это определение помогает отличить готовый способ решения от простого пересказа условия.
Исполнитель алгоритма — человек, устройство или программа, способные выполнять команды алгоритма. Исполнителю поручают действия, потому что именно он применяет описанный способ на практике. При составлении алгоритма нужно учитывать, что умеет делать выбранный исполнитель.
Команда — отдельное указание исполнителю выполнить определённое действие. Например, команда «поверни налево» задаёт один конкретный шаг. Команды нужны, чтобы разделить решение на части, которые исполнитель может выполнять по очереди.
Система команд исполнителя — набор всех команд, которые данный исполнитель понимает и может выполнить. У разных исполнителей наборы команд могут отличаться: человек способен выполнить указание «возьми карандаш», а простой робот может не знать такой команды. Это понятие нужно, чтобы не включать в алгоритм невыполнимые для исполнителя действия.
Сначала в условии задачи находят исходные данные — то, что уже известно, — и результат, который требуется получить. Затем задают себе вопрос: какие действия могут преобразовать исходные данные в нужный результат? Такой разбор нужен, чтобы не начинать с команд наугад и не упустить важные условия. Например, для пути к предмету важно знать, где находится исполнитель и где лежит предмет.
Исполнитель работает в определённой среде: робот перемещается по клетчатому полю, а программа обрабатывает данные в компьютере. Его возможности ограничены системой команд, потому что каждую команду необходимо заранее уметь распознавать и выполнять. Если нужного действия в наборе нет, исполнитель не сможет догадаться, что имел в виду автор. Поэтому алгоритм составляют с учётом и среды, и доступных команд.
Команды располагают в строгом порядке, потому что результат одного действия может быть условием для следующего. Если сначала попытаться взять предмет, а потом подойти к нему, действие может оказаться невозможным. Однозначная команда задаёт исполнителю только один понятный шаг, а не предлагает самому выбрать, что делать. Это делает выполнение предсказуемым и позволяет проверить алгоритм заранее.
Исполнитель начинает с первой команды, выполняет её, затем переходит к следующей и так далее. После каждого шага может измениться состояние среды: например, робот окажется в другой клетке или предмет будет взят. Пошаговое выполнение позволяет проследить, как исходные данные превращаются в результат. Если алгоритм составлен верно, исполнитель дойдёт до предусмотренного конца и получит требуемый результат.
У алгоритма есть несколько важных свойств. Дискретность означает, что решение состоит из отдельных шагов, а определённость — что каждый шаг понятен и не допускает разных толкований. Конечность требует завершить выполнение за конечное число шагов, а результативность — получить нужный результат. Массовость означает, что алгоритм подходит не только для одного примера, но и для класса похожих задач с разными исходными данными.
| Характеристика | Алгоритм | Исполнитель | Система команд |
|---|---|---|---|
| Что представляет собой | Последовательность действий для решения задачи | Объект, выполняющий указания | Набор допустимых команд |
| Основная роль | Определяет способ получения результата | Выполняет команды и изменяет состояние среды | Определяет, какие действия доступны исполнителю |
| Пример | Алгоритм приготовления блюда | Человек или робот | Команды «вперёд», «налево», «взять» |
| Главное требование | Точность и однозначность действий | Понятность и выполнимость команд | Соответствие возможностям исполнителя |
Сначала определите, какой столбец отвечает на ваш вопрос: способ решения, тот, кто выполняет действия, или доступные действия. Затем сравните примеры и требования в одной строке. Так проще заметить, что алгоритм и исполнитель связаны, но обозначают разные вещи.
Задача 1. Запишите алгоритм перехода улицы по пешеходному переходу и укажите исполнителя. Нужно не ограничиваться советом «перейти дорогу», а разбить его на безопасные действия. Команды должны подходить человеку и идти в таком порядке, чтобы переход начинался только при безопасных условиях.
Ответ: исполнитель — пешеход; алгоритм состоит из перечисленных действий. В решении проверено, что шаги понятны человеку и завершаются достижением противоположного тротуара.
Задача 2. Робот находится в клетке A1, а предмет — в A4. Ему доступны команды «вверх» и «взять». Нужно понять, сколько перемещений отделяет начальную клетку от цели, и не использовать команды, которых у робота нет.
Ответ: «вверх», «вверх», «вверх», «взять». Алгоритм заканчивается выполнением заданного действия — предмет взят в клетке A4.
Задача 3. Исполнитель перемещается по клетчатому полю, на котором есть препятствие. Требуется составить алгоритм обхода и проверить его для двух начальных позиций. Поскольку точные размеры поля и расположение препятствия не заданы, решение можно записать как общий план: сохранять выбранное направление обхода, пока препятствие не останется позади.
Ответ: алгоритм задаёт обход свободной стороной и проверяется на двух начальных позициях. Чтобы он был универсальным, команды или правило выбора направления должны подходить обоим случаям, а завершение пути нужно явно проверить.
Считать алгоритмом любое описание задачи — значит забыть, что для решения нужна конкретная последовательность действий. Эту ошибку допускают, когда принимают условие или общий совет за готовый способ. Проверьте себя: сможет ли исполнитель начать работу и пройти шаги, не придумывая их самостоятельно?
Иногда в алгоритм включают команды, которых нет в системе команд исполнителя. Кажется, что исполнитель должен понять обычное для человека указание, но устройство или программа умеют только то, что предусмотрено их командами. Сверьте каждое действие с доступным набором: если команды там нет, замените её выполнимыми шагами или выберите другого исполнителя.
Перестановка команд может изменить результат или сделать действие невозможным, хотя сами команды по отдельности правильны. Ошибку допускают, когда проверяют наличие команд, но не их порядок. Проследите выполнение с самого начала и спросите себя, может ли исполнитель выполнить каждый следующий шаг после предыдущего.
Неоднозначное указание допускает несколько толкований, а незавершающееся может заставить исполнителя продолжать бесконечно. Часто такие ошибки остаются незамеченными, если не пройти алгоритм целиком. Проверьте, одинаково ли исполнитель поймёт каждый шаг и есть ли условие или команда, после которых работа заканчивается.
Для составления алгоритма нужны навыки разбора задачи: выделение исходных данных, требуемого результата и действий между ними. Это помогает перейти от условия к плану решения, а не просто переписать текст задачи. Далее алгоритмы представляют разными способами — словами, блок-схемами и программами. Понятия исполнителя и системы команд пригодятся при создании и отладке программ: они помогают проверить, понимает ли компьютер заданные команды и приводит ли их выполнение к нужному результату.
Чем алгоритм отличается от обычной инструкции?
Алгоритм задаёт точный порядок действий, выполнение которых приводит к результату. Обычная инструкция может быть неполной или допускать разные толкования, поэтому исполнитель не всегда поймёт, что делать.
Может ли один алгоритм иметь нескольких исполнителей?
Да, если каждый исполнитель понимает все команды алгоритма и может выполнить их в своей среде. Например, последовательность действий может быть выполнима человеком и подходящим роботом.
Почему исполнитель не может выполнить понятную человеку команду, если её нет в его системе команд?
Система команд ограничивает действия, доступные исполнителю. Даже если человек легко понимает указание, устройство или программа не смогут выполнить его без соответствующей команды.
Обязательно ли алгоритм должен быть записан словами?
Нет. Алгоритм можно представить разными способами: словами, схемой или программой. Главное, чтобы запись точно передавала действия и была понятна исполнителю.
Что произойдёт, если поменять местами команды алгоритма?
Результат может измениться, а выполнение — стать невозможным. Например, нельзя взять предмет в клетке, если исполнитель ещё не дошёл до неё.
§ 8. Алгоритмы и исполнители