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