Алгоритмы

Геометрия развивает геометрическое мышление, математика — абстрактное математическое, логика — логическое, физика — физическое… А какое мышление развивает информатика? Информатика есть наука, служащая информационным технологиям. Но фундаментальными достижениями этой науки оказались не сами технологии, а общие методы построения систем и решения сложных задач. Базисом этих методов являются алгоритмы и системный подход к решению задач. Поэтому информатика развивает алгоритмическое мышление и учит системному подходу к решению задач.

Алгоритм – это строгая инструкция для некоторого исполнителя, следование которой приводит к ожидаемому результату. Исполнителем может быть человек, робот, компьютер или любая другая система, имеющая возможность считывать информацию и исполнять необходимые действия. Алгоритм, понимаемый компьютером, называют программой. Соответственно, составление алгоритма – это алгоритмизация или написание программы в случае для машинного исполнителя.

Каждый дееспособный человек исполняет десятки различных алгоритмов за день. Например, порядок действий для приготовления завтрака – это тоже алгоритм. Мы не задумываемся над этим, но в нашей памяти хранится инструкция, которую мы сами так и называем «приготовить завтрак», куда входит весь список необходимых действий в определённой последовательности. Соблюдение гигиены, подбор одежды, перемещение до работы или учёбы и множество других рутинных действий – все это заученные и автоматически исполняемые нами алгоритмы.

Большинство людей выполняет огромное количество различной работы, не задумываясь, и не используя слова «алгоритм», «алгоритмизация» или «алгоритмическое мышление». Потому что исполнителями являемся мы сами, и развитый человеческий мозг обладает большой гибкостью при выполнении инструкции. Например, если мы обнаружим, что рубашка, которую собирались надевать грязная, то мы не наденем её, т. е. не свернём весь процесс, а мгновенно переключимся на поиск замены.

С компьютерами дело обстоит немного иначе. Прежде всего, следует понимать, что современный компьютер пока ещё только исполнитель. Компьютер ничего не придумывает, а выполняет строго предписанные команды. Даже если этот набор команд приведёт к аварийному выключению, повреждению программ или данных, машина все равно исполнит их. Для компьютера нет понятий «безопасного», «правильного», «очевидного» или «логичного». Есть только команды, которые предписано исполнить. По этому программисту при составлении алгоритма (написании программы) следует учитывать все нюансы настолько точно, насколько это требуют условия решаемой задачи.

Несмотря на то что происхождение слова «алгоритм» восходит к очень далёким временам, широкое применение оно получило только в ХХ веке с развитием электроники и цифровых технологий. В подавляющем большинстве случаев «алгоритмами» называют инструкции в области цифровых технологий (хотя название для книги рецептов «Алгоритмы праздничных блюд» звучит интригующе). И именно для того, чтобы научиться писать программы важно понять смысл понятий «алгоритм», «алгоритмизация» и «алгоритмическое мышление».

Алгоритмизация – это процесс разработки алгоритма. Алгоритмическое мышление – тип логического мышления, который применяется для алгоритмизации задач. Алгоритмическое мышление представляет собой совокупность знаний, методик и восприятия, необходимых для составления оптимальных алгоритмов. Мыслить алгоритмически – представлять себе достижение результата путём выполнения элементарных команд и операций в строго определённой последовательности.

Основными видами алгоритмов, которые используются в программировании, являются:

Линейный алгоритм — набор команд (указаний), выполняемых последовательно во времени друг за другом.

Разветвляющийся алгоритм — алгоритм, содержащий хотя бы одно условие, в результате проверки которого может осуществляться разделение на несколько альтернативных ветвей алгоритма.

Циклический алгоритм — алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов. Цикл программы — последовательность команд (серия, тело цикла), которая может выполняться многократно (для новых исходных данных) до удовлетворения некоторого условия.

Комбинированные алгоритмы объединяют в себе три этих вида.