l

Чайник уже стоит на полу

05.02.2014 2212 Пишу 1 комментарий компьютерная теория

Начать эту статью — не уверен, что она вырастет до целой серии — мне бы хотелось с небольшой вводной. Абу Абдуллах Мухаммад ибн Муса аль-Хорезми, более известный как Аль-Хорезми, жил в VIII-IX веках нашей эры в Персии. Всему миру он известен как математик, астроном и географ, чьи карты были точнее Птолемеевых; как человек, рассчитавший диаметр Земли; и, наконец, как учёный, чьё имя послужило появлению таких понятий как харизма и алгоритм.

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

Нетрудно убедиться, что алгоритмы можно применять не только при написании программ для компьютеров, а использовать их в повседневной жизни. В бытность мою студентом, преподаватель нам дал упражнение, которое я попробую воспроизвести. Задание достаточно простое: на полу стоит наполненный водой чайник, необходимо вскипятить в нём воду. Каким будет порядок действий (алгоритм), решающий эту задачу? Если не плодить лишних сущностей, то, во-первых: необходимо поставить чайник на плиту, во-вторых: включить плиту (сейчас не важно электрическая она или газовая), и, в-третьих: выключить плиту, когда чайник вскипит.

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

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

Хочу упомянуть, что не нужно пренебрегать этим занятием, желая написать свою программу. Записанный алгоритм, это своего рода «электрическая принципиальная схема». Он позволяет понять, как работает даже чужая, написанная не вами программа, а возможно, и что-то в ней исправить.

Теперь перейдём собственно к записи алгоритмов. Запись ведётся сверху вниз действие за действием. У любого алгоритма есть два состояния: «Начало» — никаких действий ещё не предпринято; и «Конец» — все действия выполнены и за конечное число шагов мы решили задачу — добились поставленной цели. Эти состояния при записи оформляются в прямоугольниках со скруглёнными углами. Конкретные действия помещаются в обычные прямоугольники. «Начало», всю последовательность действий и «Конец» соединяют вертикальными чёрточками. Наш первый алгоритм можно было бы упрощённо записать так:

Упрощённый алгоритм № 1

Почему упрощённо? — Потому что мы выключали плиту в нашем алгоритме лишь в том случае, когда чайник закипел. Условия в алгоритмах записываются в горизонтальных ромбиках и обычно в этом месте алгоритма имеется ветвление — выполнено условие или нет? В зависимости от этого ход выполнения алгоритма или идёт своим чередом (выполняются следующие действия), или мы возвращаемся вверх и проходим заново одно или несколько действий нашего алгоритма. Поэтому наш алгоритм стоило бы записать как показано на рисунке ниже:

Алгоритм № 1

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

Алгоритм № 2

Наверное это всё. Мне кажется, вам должен быть понятен принцип.

Один отзыв на «Чайник уже стоит на полу»

  1. Гость:

    Доступно и понятно. Даже “чайнику”.

Оставьте ваш отзыв: