"Информатика (в 2-х частях)", Горячев А.В., Макарина Л.А., Паволоцкий А.В., Платонова Н.С.
Алгоритм — точное описание действий, которые помогают решить задачу и получить нужный результат. Его выполняет человек или устройство, но только если понимает каждую команду и умеет её выполнить. Поэтому при составлении алгоритма нужно учитывать возможности исполнителя, выбирать ясные команды и располагать их в правильном порядке. Записанный на понятном исполнителю языке алгоритм называют программой.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Алгоритм — точное и понятное исполнителю описание последовательности действий для решения задачи. Обычный совет вроде «постарайся быстрее» оставляет выбор самому человеку, а алгоритм указывает, что делать. Поэтому по нему можно выполнять задачу шаг за шагом и проверять, получен ли нужный результат.
Исполнитель алгоритма — человек или устройство, способное выполнять команды алгоритма. Команды должны быть ему понятны: нельзя поручить исполнителю действие, смысл которого он не может определить. Это помогает составлять инструкции с учётом того, кто именно будет их выполнять.
Система команд исполнителя — набор команд, которые исполнитель умеет выполнять. Например, робот может уметь двигаться вперёд и поворачивать, но не уметь перепрыгивать препятствия. Поэтому при составлении алгоритма выбирают только доступные ему действия.
Программа — алгоритм, записанный на языке, понятном исполнителю. В программе команды расположены в нужном порядке, и исполнитель выполняет их одну за другой. Такая запись позволяет передать алгоритм устройству или другому исполнителю.
Сначала нужно понять, какой результат требуется получить: это цель задачи. Затем определяют исходные данные — то, что уже известно и понадобится для решения. После этого задачу раскладывают на действия в таком порядке, чтобы каждое помогало приблизиться к цели. Если пропустить нужный шаг, исполнитель может не получить необходимый результат.
Алгоритм может выполнять только тот исполнитель, которому доступны все его команды. Человек способен понять указание «поверни налево», а простое устройство может распознавать только команды «вперёд» и «назад». Поэтому сначала выясняют возможности исполнителя, а затем подбирают подходящие действия. Иначе алгоритм остановится на команде, которую исполнитель не умеет выполнять.
Точность означает, что каждое действие сформулировано так, чтобы его можно было выполнить без догадок. Например, команда «положи тетрадь на парту» понятнее, чем «разберись с тетрадью»: во втором случае непонятно, что именно нужно сделать. Чёткая формулировка помогает разным исполнителям одинаково понять команду. Она также упрощает поиск ошибки, если результат оказался неверным.
Порядок команд влияет на ход решения, потому что некоторые действия зависят от предыдущих. Чтобы вычесть одно число из другого, сначала нужно знать оба числа; если данных ещё нет, вычисление выполнить нельзя. В другой задаче перестановка шагов может привести к иному результату. Поэтому команды располагают в соответствии с тем, какие данные нужны на каждом шаге.
Представим, что нужно сложить числа 8 и 5. Исполнитель сначала берёт первое число, затем прибавляет к нему второе и сообщает полученную сумму. Он выполняет действия по порядку: 8 + 5 = 13, значит, результат — 13. Если исполнитель понимает команды и умеет складывать числа, алгоритм приводит его к ответу.
| Понятие | Что означает | Пример или пояснение |
|---|---|---|
| Алгоритм | Точная последовательность действий для решения задачи. | Шаги, по которым находят сумму чисел. |
| Исполнитель алгоритма | Человек или устройство, выполняющее команды. | Ученик, робот или компьютер. |
| Система команд исполнителя | Все команды, которые исполнитель умеет выполнять. | Для робота: «вперёд», «назад», «поворот». |
| Программа | Алгоритм, записанный на понятном исполнителю языке. | Запись команд, которую выполняет компьютер. |
| Связь между исполнителем и командами | Команды должны входить в систему команд исполнителя и быть ему понятны. | Роботу нельзя дать команду, которой он не умеет следовать. |
Пользуйся таблицей, чтобы различать сам порядок действий, того, кто его выполняет, и доступные ему команды. При проверке алгоритма сначала выясни, подходит ли исполнитель, а затем проверь каждую команду. Запись алгоритма на понятном языке — программа.
Задача 1. Составить инструкцию, как пройти от входа в класс до своей парты. Выберем исполнителя — человека, который знает, где находится его парта. Команды «иди вперёд» и «поверни направо» ему понятны, но направление и число шагов нужно указать достаточно точно. Сначала мысленно определим маршрут, затем запишем его без расплывчатых указаний.
Ответ: инструкция задаёт последовательность действий от входа до парты. Если расположение парт или исходное направление другие, маршрут нужно уточнить, иначе команды могут привести не туда.
Задача 2. Записать алгоритм вычисления значения выражения по заданным числам: (a + b) × c. Здесь сначала нужно выполнить действие в скобках, потому что его результат затем умножают на c. Если сразу умножать отдельные числа, получится другое выражение. Поэтому обозначим промежуточный результат и используем его на следующем шаге.
Ответ: алгоритм: s = a + b; результат = s × c. Например, при a = 2, b = 3 и c = 4 получаем s = 5, а затем 5 × 4 = 20.
Задача 3. Исполнитель перемещается по клетчатому полю к цели и умеет выполнять только команды «вверх», «вниз», «влево» и «вправо» на одну клетку. Нужно составить маршрут с учётом того, что исполнитель не может сразу пройти несколько клеток или перепрыгнуть препятствие. Сначала выясним, сколько клеток отделяет его от цели по горизонтали и вертикали. Затем запишем каждое перемещение отдельно и проверим маршрут.
Ответ: алгоритм составляют только из доступных команд, например: «вправо», «вправо», «вверх». Точный маршрут зависит от расположения старта, цели и препятствий на поле.
Расплывчатая команда. Указание «сделай аккуратно» не говорит исполнителю, какое действие выполнить. Такую формулировку часто выбирают, потому что человек сам догадывается о смысле совета. Проверь себя: можно ли выполнить команду, не задавая уточняющих вопросов? Если нет, опиши конкретное действие.
Команда не входит в систему команд. Исполнитель не сможет выполнить, например, поворот, если не умеет поворачивать. Ошибку допускают, когда пишут алгоритм, не подумав о возможностях исполнителя. Сверь каждую команду с тем, что исполнитель действительно умеет делать.
Зависимые действия переставлены местами. Тогда команда может потребовать результат, который ещё не получен, например умножение промежуточной суммы до её вычисления. Обычно шаги меняют местами, потому что не замечают связи между ними. Проверь, есть ли перед каждым действием все нужные данные.
Любую последовательность принимают за алгоритм. Набор команд может не привести к цели или выполняться бесконечно. Такое происходит, если проверяют наличие шагов, но не их результат и завершение. Выполни алгоритм по порядку и выясни, решена ли задача и останавливается ли исполнитель.
Чтобы разобраться в алгоритмах, полезно уметь выполнять инструкции по шагам и понимать, что действия образуют последовательность. Это помогает увидеть, почему нельзя пропускать или произвольно менять шаги. Позже понятие алгоритма понадобится при изучении способов записи алгоритмов и программирования. Оно также лежит в основе решения задач на компьютере: компьютер выполняет команды программы в заданном порядке.
Чем алгоритм отличается от обычной инструкции?
Алгоритм не просто советует, что можно сделать, а задаёт точные действия для решения задачи. Исполнитель должен понимать каждую команду и получить результат, следуя указанному порядку.
Может ли один алгоритм быть понятен разным исполнителям?
Может, если все команды понятны каждому исполнителю и доступны в его системе команд. Если возможности исполнителей различаются, алгоритм для одного из них может оказаться невыполнимым.
Что делать, если исполнитель не умеет выполнять одну из команд?
Нужно заменить эту команду на последовательность действий из доступных исполнителю команд или выбрать другого исполнителя. Иначе выполнить алгоритм полностью не получится.
Почему важно точно указывать порядок действий?
Одни команды используют результат предыдущих, поэтому перестановка может изменить решение или сделать его невозможным. Точный порядок помогает исполнителю пройти все шаги и прийти к цели.
Любая ли последовательность команд является алгоритмом?
Нет. Она должна быть точной, выполнимой данным исполнителем и вести к решению задачи. Кроме того, выполнение должно завершиться, а не продолжаться бесконечно.
§ 1. Алгоритм