Урок 1. Мир алгоритмов и программ
Ты куда пошел? – Куда глаза глядят.
А куда они глядят? – Туда, куда я пошел.
Чудеса житейской логики
С утра до вечера мы разрабатываем и исполняем программы. Но большинство об этом не догадывается, а об алгоритмическом мышлении ничего не слышали. А в школе курс информатики превратили в курсы начинающих пользователей компьютера. И вместо обучения думать, школьников учат нажимать кнопки. Может быть поэтому и программы наши неудачные и исполнители мы никудышные. Значит, нужно учиться!
Алгоритм – совокупность правил, чётко и однозначно определяющих процесс реализации заданной цели. Способов описания алгоритма много – устная речь, письмо, картинки, блок-схема и сочетания этих средств.
Программа – описание алгоритма на языке и в терминах системы, реализующей алгоритм. Такой системой может быть человек (хорошая инструкция, чётко сформулированное задание – это программы действий), дрессировка – самое настоящее программирование, машина, способная хранить и исполнять введённую в неё программу.
Алгоритмы и программы не обязательно связаны с ЭВМ. Изобразим в виде блок-схем алгоритмы поведения в простых жизненных ситуациях
Цель – движение. Строго по правилам дорожного движения алгоритм разрешает двигаться только на зеленый свет, а на жёлтый и красный свет, однозначно, ждать. Только так!
Совещание – или как выдать задание всем подчинённым:
Введём обозначения:
– количество подчинённых
– N, порядковый номер (имя) очередного подчинённого – i (1<=i<=N),
– номер возражения i-того подчиненного – j (]<=2, где 2 – предельный уровень Вашего терпения, т. е. больше двух возражений от одного подчиненного вы не терпите.
Для формирования очередных номеров подчинённых и учета количества их возражений в блок-схему введены две особых операции – «счётчики»: i = i+1 и j = j+1. Это означает, что к предыдущему значению данного реквизита добавляется 1.
Этот цикл жизни разбойника будет повторяться до тех пор, пока что-нибудь или кто-нибудь не изменит алгоритм его поведения. Но это будет другая история.
Рабочий день у разбойников, как известно, начинается с наступлением темноты. В светлое время суток им надо вести себя тихо и лучше всего спать.
СЧВ – счетчик вставаний. У разбойника правило – умываться только при 4-м вставании. Поэтому при каждом вставании он кладет в специальную лунку камешек (СЧВ=СЧВ+1) и пересчитывает их общее количество. Если в лунке больше 3-х камешков (СЧВ > 3), разбойник вынимает из лунки все камешки (делает СЧВ=0) и идет умываться, иначе идет есть.
В свободное от работы время к услугам разбойника имеется меню развлечений (девочки, песни, драка). Если его очередь грабить, надо идти грабить!
Наш разбойник будет дисциплинированно стоять на большой дороге в любую погоду и время суток до появления клиентов. А как только они появятся, он обязательно начнет операцию ограбления.
Алгоритм предполагает, что стрельба может быть только после начала операции ограбления. В реальной жизни ситуация будет не такой однозначной. Но это будет совсем другой алгоритм.
Даже из беглого взгляда на эту блок-схему видно, что она состоит всего из двух видов операций: работа – прямоугольник и выбор – ромбик. Меню развлечений (девочки, песни, драка) – это всего лишь компактная форма записи выбора из множества вариантов. Кроме того, в блок-схеме много стрелок, определяющих последовательность операций. Для описания алгоритма используются всего три алгоритмических конструкции: следование, развилка и цикл. Даже очень сложная программа, в том числе та, которая играет в шахматы, состоит из арифметических и логических операций, образующих сложную систему всего из трёх простых структур: следование, развилка и цикл.