"Информатика (в 2 частях)", Павлов Д.И., Полежаева О.А., Коробкова Л.Н. и др./ Под ред. Горячева А.В.
Алгоритм — точный план действий, который помогает решить задачу и получить результат. Его выполняет человек, устройство или программа, понимающие определённые команды. Один алгоритм можно записать словами, схемой или псевдокодом, а для компьютера его переводят на язык программирования и получают программу. Чтобы решение работало, команды должны быть однозначными, выполнимыми, правильно расположенными и приводить к результату за конечное число шагов.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Алгоритм — точное и понятное исполнителю описание последовательности команд для решения задачи. Иными словами, это план, в котором указано, что делать сначала, что потом и чем закончить. Алгоритм нужен, чтобы решение можно было повторить без догадок и пропусков.
Исполнитель — человек, устройство или программа, которые могут выполнять команды алгоритма. Исполнитель не придумывает действия сам, а следует доступным инструкциям. Это понятие помогает понять, для кого составлен алгоритм и какие команды можно в него включить.
Система команд исполнителя — набор команд, которые данный исполнитель понимает и умеет выполнять. Например, у робота могут быть команды «вперёд» и «поверни», а у калькулятора — арифметические действия. Знание этой системы не позволяет предложить исполнителю невыполнимую операцию.
Программа — алгоритм, записанный на языке программирования и предназначенный для выполнения компьютером. Такой язык имеет свои слова, знаки и правила записи. Программа превращает понятный план решения в инструкции, которые компьютер может обработать.
Решение задачи превращается в алгоритм, когда действия расположены в определённом порядке и каждое из них однозначно понятно исполнителю. Если сказать «сделай вычисления», исполнитель не узнает, какие числа сложить и когда вывести ответ. Поэтому общий замысел разделяют на небольшие команды: ввести данные, выполнить действие, сравнить результат, сообщить ответ.
Алгоритм зависит от возможностей исполнителя, потому что один и тот же приказ разные исполнители понимают по-разному. Человек может прочитать инструкцию и взять предмет, а простая программа не умеет выполнять действия, которых нет в её командах. Перед составлением алгоритма выясняют, что исполнитель знает и какие операции ему доступны.
Алгоритм должен состоять из отдельных команд, приводить к результату за конечное число шагов и применяться к однотипным задачам. Разбиение на команды делает ход решения проверяемым, конечность не даёт ему продолжаться бесконечно, а применимость позволяет решать не один случай, а целый класс похожих задач. Например, формула периметра работает для любых прямоугольников, если известны их длина и ширина.
Один и тот же алгоритм можно представить словами, схемой или псевдокодом, потому что содержание решения не зависит от формы записи. Схема помогает увидеть порядок действий, а псевдокод приближает описание к будущей программе. Для компьютера используют формальный язык программирования, ведь машина не может надёжно выполнять свободные человеческие фразы.
Компьютер выполняет программу последовательно: получает исходные данные, обрабатывает их по командам и выдаёт результат. Если в записи нарушены правила языка, программа может не запуститься, а если команда составлена неверно, результат будет ошибочным. Поиск и исправление таких ошибок называют отладкой; во время неё программу проверяют на разных данных.
Таблица показывает, что алгоритм и программа связаны, но не совпадают. Сначала можно разработать способ решения, а затем записать его на подходящем языке программирования. Сравнивая строки, проверяйте, изменились ли назначение, форма записи, исполнитель и требования к командам.
| Признак | Алгоритм | Программа |
|---|---|---|
| Назначение | Способ решения задачи | Запись алгоритма для компьютера |
| Форма записи | Слова, команды, схема или псевдокод | Команды языка программирования |
| Исполнитель | Человек, устройство или программа | Компьютер |
| Требования к командам | Команды должны быть понятны выбранному исполнителю | Команды должны соответствовать правилам языка программирования |
| Результат выполнения | Решение поставленной задачи | Результат работы компьютерной программы |
Условие. Нужно составить алгоритм приготовления бутерброда и указать его исполнителя. Выберем исполнителем человека, который понимает обычные бытовые команды. Команды должны быть конкретными и идти в порядке, необходимом для получения готового бутерброда.
Ответ. Исполнитель алгоритма — человек, а результат — бутерброд на тарелке. Если заменить исполнителя, команды нужно проверить заново: робот, например, может не уметь намазывать масло без специальных команд и приспособлений.
Условие. По длине a и ширине b нужно найти периметр прямоугольника, а затем представить решение как программу. Сначала определим формулу P = 2(a + b), затем расположим действия: ввести данные, вычислить значение, вывести ответ. Такой порядок связывает исходные данные с результатом.
Ответ. Алгоритм готов, а его программная запись должна использовать команды ввода, вычисления и вывода выбранного языка. Например, при a = 5 и b = 3 получится P = 2 · (5 + 3) = 16. Перед запуском нужно проверить, что введены именно числа и формула записана без ошибки.
Условие. Программа получает число и определяет, является ли оно чётным. Для этого используют остаток от деления на 2: у чётного числа он равен 0. Алгоритм должен предусматривать оба результата проверки, иначе для нечётного числа компьютер не поймёт, что вывести.
Ответ. Получился алгоритм с условием и двумя возможными ветвями. При n = 14 остаток равен 0, поэтому программа сообщит, что число чётное, а при n = nine?
Команды формулируют слишком общо: «сделай вычисления» или «подготовь ответ». Так бывает, когда ученик держит часть шагов в голове и не замечает, что исполнитель их не знает. Проверьте себя вопросом: сможет ли другой человек или устройство выполнить команду без дополнительных пояснений?
Не учитывают систему команд исполнителя и предлагают действие, которого он не умеет выполнять. Причина обычно в том, что внимание сосредоточено на цели, а не на возможностях исполнителя. Составьте список доступных команд и убедитесь, что каждая команда алгоритма есть в этом списке.
Алгоритм смешивают с программой, называя любое описание действий программой. Ошибка появляется, когда забывают о языке программирования и его правилах. Проверьте форму записи: если это слова или схема, перед вами алгоритм, а не обязательно готовая программа.
Пропускают шаги, нарушают порядок команд или не предусматривают завершение. Тогда программа может дать неверный результат или выполнять одни и те же действия бесконечно. Проверьте алгоритм на простом примере, отмечая результат после каждого шага и последний шаг выполнения.
До изучения алгоритмов нужны понятия информации, исходных данных, результата и последовательности действий. Они помогают описать, что поступает на вход задачи и что должно получиться на выходе. Без этого трудно определить цель алгоритма.
Тема связана с блок-схемами, исполнителями и командами в средах программирования. Блок-схема показывает порядок действий графически, а среда программирования позволяет записать и запустить программу. Эти средства помогают проверять ход решения.
Дальше алгоритмы и программы понадобятся при изучении переменных, ветвлений, циклов и отладки. Переменные хранят данные, ветвления выбирают действие по условию, а циклы повторяют команды. Отладка помогает исправить ошибки в получившейся записи.
Чем алгоритм отличается от программы?
Алгоритм — общий способ решения задачи, который можно описать словами, схемой или псевдокодом. Программа — это тот же алгоритм, записанный на языке программирования для выполнения компьютером.
Почему один и тот же алгоритм нельзя выполнить любому исполнителю?
У каждого исполнителя есть своя система команд и свои возможности. Например, компьютер умеет выполнять команды программы, но не может сам взять нож или намазать хлеб.
Обязательно ли алгоритм записывать на языке программирования?
Нет, алгоритм можно представить обычными словами, схемой или псевдокодом. Язык программирования нужен, когда алгоритм должен выполнить компьютер.
Что произойдёт, если в алгоритме пропустить одну команду?
Исполнитель может получить неверные исходные данные для следующего шага или не прийти к нужному результату. Иногда пропуск делает выполнение невозможным, например если забыта команда ввода числа.
Почему программа может не дать правильный результат, даже если алгоритм был составлен верно?
При записи можно допустить синтаксическую ошибку, перепутать знак или неправильно указать команду. Кроме того, программа может неверно обрабатывать отдельные случаи, поэтому её проверяют и отлаживают.
28. Алгоритмы и программы