"Информатика (в 2 частях)", Нателаури Н.К., Маранин С.С.
Алгоритм — точный порядок действий, который помогает решить задачу и получить нужный результат. Его составляют с учётом исходных данных и возможностей исполнителя: человека или устройства, способного выполнять заданные команды. Алгоритм можно описать словами или записать по правилам специального языка. Если решение записано на языке программирования, компьютер может выполнить его как программу. Чтобы это произошло, команды должны быть понятными компьютеру и соответствовать правилам языка.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Алгоритм — точное и конечное предписание исполнителю, задающее последовательность действий для решения задачи. Это не просто список дел: команды должны вести к нужному результату и завершаться. Понятие алгоритма помогает описать решение так, чтобы его можно было повторить и проверить.
Исполнитель алгоритма — человек или устройство, способное выполнять команды из определённого набора. Этот набор называется системой команд, а входящие в него действия — допустимыми для исполнителя. Если команда не предусмотрена системой, исполнитель не сможет её выполнить, поэтому учитывать его возможности нужно заранее.
Алгоритмический язык — способ записи алгоритмов с помощью установленных правил и конструкций. В отличие от естественного языка, он требует более точной формы записи: смысл команды должен быть понятен без догадок. Такой язык помогает представить решение так, чтобы его можно было внимательно проверить или передать исполнителю, который знает эти правила.
Программа — алгоритм, записанный на языке программирования так, чтобы его мог выполнить компьютер. Программа задаёт команды в форме, предусмотренной правилами языка. Это понятие нужно, чтобы отличать общее описание решения от его записи для автоматического выполнения.
Решение задачи начинается с выяснения, что дано и что нужно получить. Исходные данные — это информация, с которой начинается работа, а результат — ответ, который требуется найти или подготовить. Когда они определены, можно продумать действия, которые связывают одно с другим; без этого трудно понять, какие команды нужны и когда решение можно считать готовым.
Алгоритм составляют для конкретного исполнителя, поэтому команды формулируют с учётом того, что он умеет. Команда вроде «сделай всё правильно» не объясняет, какое действие требуется, а значит, исполнитель должен был бы додумать её смысл. Точный порядок тоже необходим: если переставить шаги или пропустить один из них, результат может измениться или работа остановится.
Конечность и результативность связаны с целью алгоритма: он должен не только работать, но и приводить к ответу. Конечность означает, что выполнение закончится после определённого числа шагов, а результативность — что для допустимых исходных данных эти шаги дадут нужный результат. Если действия повторяются бесконечно или приводят не к ответу задачи, алгоритм не выполняет своего назначения.
Один и тот же способ решения можно записать по-разному: словами, последовательностью шагов или на алгоритмическом языке. Для простой инструкции человеку часто достаточно слов, но сложное описание может стать длинным и неоднозначным. Более строгая запись помогает точнее передать команды; способ выбирают с учётом сложности задачи и того, кто будет её выполнять.
Программирование — это запись решения в командах языка программирования, которые компьютер может обработать. Компьютер выполняет не любые фразы, а команды, соответствующие его возможностям и правилам языка. Поэтому при создании программы нужно и перевести алгоритм в подходящую форму, и проверить запись: ошибка в команде может помешать выполнению даже правильно придуманного решения.
| Способ записи | Как представляется алгоритм | Для кого предназначен | Преимущество | Ограничение |
|---|---|---|---|---|
| Словесная запись | Последовательность команд на обычном языке | Человек | Легко составить и понять простые решения | Возможны неоднозначности и громоздкость |
| Алгоритмический язык | Команды по установленным правилам записи | Человек и исполнитель, понимающий этот язык | Точнее словесного описания | Нужно знать правила языка |
| Программа на языке программирования | Команды, записанные по синтаксису языка программирования | Компьютер после необходимой обработки программы | Позволяет автоматизировать выполнение алгоритма | Ошибки записи могут помешать выполнению |
Сравнивайте способы записи по тому, кто будет выполнять алгоритм, и насколько точным должно быть описание. Для простого задания человеку удобна словесная форма, а для выполнения компьютером нужна программа. Чем строже правила записи, тем меньше места остаётся для неоднозначного толкования, но тем важнее знать эти правила.
Задача 1. Составить словесный алгоритм приготовления напитка из заданных ингредиентов. Порядок действий зависит от условий задачи: например, если требуется добавить чай и сахар в чашку с водой, нужно указать все эти действия, а не рассчитывать на догадку. Сначала выясняем, кто исполнитель и какие действия ему доступны, затем располагаем шаги так, чтобы один подготавливал следующий.
Ответ: получилась последовательность команд, в которой названы нужные действия и указан порядок. Если ингредиенты или условия другие, команды нужно изменить, а не оставлять неподходящий шаг. Проверка состоит в том, чтобы представить выполнение по очереди и убедиться, что исполнитель понимает каждую команду.
Задача 2. Даны два числа. Записать алгоритм нахождения их суммы и указать исходные данные и результат. Обозначим числа a и b. Исходные данные — именно эти два числа, а требуемый результат — их сумма; значит, достаточно выполнить сложение и сохранить ответ под именем s.
Ответ: алгоритм состоит из получения двух чисел, вычисления их суммы и выдачи результата. Например, если a = 4 и b = 7, то s = 11. Подстановка чисел помогает проверить, что команда действительно связывает исходные данные с требуемым результатом.
Задача 3. Описать вычисление среднего арифметического трёх чисел и представить решение как программу на изучаемом языке. Среднее арифметическое получают, складывая числа и деля сумму на их количество. Для трёх чисел a, b и c важно разделить именно на 3, а затем перенести те же действия в команды языка программирования. Точная форма записи программы зависит от изучаемого языка.
Ответ: алгоритм задаёт вычисления m = (a + b + c) / 3, а программа записывает эти шаги по правилам языка. Например, для чисел 3, 6 и 9 сумма равна 18, а среднее арифметическое — 6. Сравнение результата с ручным расчётом помогает проверить, что программа следует алгоритму.
Считать алгоритмом любую последовательность действий. В списке дел могут быть неточные команды, пропуски или шаги, которые не приводят к результату. Ошибку допускают, потому что человеку кажется понятным то, что он подразумевает, но исполнитель не обязан догадываться. Проверьте, можно ли выполнить каждую команду буквально и заканчивается ли последовательность ответом.
Пропускать шаг или менять порядок действий. Промежуточное действие часто кажется очевидным тому, кто составляет инструкцию, поэтому его забывают описать. Другой исполнитель может не знать, что делать дальше, или получить неверный результат из-за перестановки команд. Представьте выполнение с самого начала и проверьте, что каждый шаг возможен после предыдущего.
Смешивать алгоритм и программу. Алгоритм описывает способ решения задачи, а программа записывает этот способ на языке, предназначенном для компьютера. Понятия путают, потому что программа действительно содержит алгоритм, но это не делает их одним и тем же. Для самопроверки спросите себя: речь идёт о последовательности действий вообще или о записи, которую должен выполнить компьютер?
Записывать команды без учёта исполнителя или правил языка. Такая команда может оказаться недоступной устройству или не соответствовать синтаксису — правилам правильной записи языка. Ошибку допускают, когда сосредоточиваются только на идее решения и забывают, кто должен выполнить команды. Проверьте каждую команду по системе команд исполнителя, а запись программы — по правилам языка.
Чтобы составлять алгоритмы, нужно понимать, что такое задача, исходные данные и результат: это помогает определить цель и нужные действия. Точность команд опирается на умение формулировать инструкции без двусмысленности, а порядок шагов — на логическое мышление. Позже эти основы пригодятся при изучении переменных, ветвлений и циклов: с их помощью записывают более сложные решения и создают программы для вычислительных задач.
Чем алгоритм отличается от обычной инструкции?
Алгоритм точно задаёт порядок действий, содержит выполнимые команды и приводит к результату за конечное число шагов. Обычная инструкция может быть неполной или допускать разные толкования.
Почему алгоритм должен быть конечным?
Исполнитель должен закончить работу, а не выполнять действия бесконечно. Конечность позволяет получить результат и проверить, решена ли задача.
Может ли один алгоритм иметь несколько способов записи?
Да. Его можно описать обычными словами, записать по правилам алгоритмического языка или оформить как программу на языке программирования. Выбор зависит от задачи и того, кто будет выполнять команды.
Чем исполнитель отличается от алгоритма?
Алгоритм — это описание порядка действий, а исполнитель — тот, кто эти действия выполняет. Исполнитель действует только по командам, которые входят в его систему команд.
Почему компьютер не может выполнить алгоритм, записанный только обычными словами?
Обычные слова могут быть неоднозначны, а компьютер понимает команды в установленном формате. Чтобы компьютер выполнил решение, его записывают на языке программирования и соблюдают правила этого языка.
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ