Выбрать главу

Этот попятный путь, это повторение одних и тех же операций Ада Лавлейс назвала циклом.

Цикл работает методично, неумолимо, даже весело. Болконский Андрей. Мужчина? - Да. Молод? - Да. Холост? - Нет. Решение: Болконского Андрея в список не включать. Воробей Елизавет. Мужчина? - Нет. Молод? - Да. Холост? - Нет. Вывод: Воробья Елизавета не включать. Ленский Владимир: да, да, да - включить. Скотинин Митрофан: да, да, да - включить. Чацкий Александр: да, да, да - включить.

Цикл за циклом компьютер аккуратно проверяет весь перечень рабочих и служащих завода, добывая из него холостых. Последняя фамилия: Щукин Эрнест. Последние проверки. Мужчина? - Да. Молод? - Да. Холост? - Нет. Последнее решение: инженера Щукина в список не включать.

А дальше что? Машина не прекратит циклической работы, продолжит, как белка в колесе, свой уже ненужный бег. Как покинуть заколдованный круг, как выйти из цикла?

Опять с помощью проверки. Например, написать в конце перечня рабочих и служащих вслед за фамилией Щукин невероятную фамилию: Яяяяя. И включить в алгоритм последний вопрос: "Это фамилия, Яяяяя?" Если нет, продолжать циклическое действие, а если да, подвести черту под только что отпечатанным списком и остановиться.

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

Алгоритм "Спинка кофточки". Он буквально напичкан циклами: каждый ряд вязки описан циклически (выход из цикла - по числу петель); потом несколько рядов выполняются "рябушкой" (выход из цикла - число рядов достигло 4); потом предлагается чулочная вязка (выход из цикла - длина спинки равна 43 см)...

Алгоритм "Погрузка корабля". Здесь машина циклически проверяет допустимость товаров, которые протаскивают на корабль гости. Цикл, естественно, работает и тогда, когда компьютер сам загружает корабль: он извлекает слова из словаря точно так же, как машина отдела кадров добывала фамилии рабочих и служащих из перечня.

Алгоритм "Спящая красавица". Этот вообще состоит из одних циклов: два цикла в нем вложены друг в друга. Внутренний цикл делит Царство пополам: он прекращает работать, как только обнаруживает девушку в Баклушах. Тогда за дело берется внешний цикл н окончательно уточняет положение пещеры. Цикл помогает циклу - характерная для алгоритмов ситуация.

Цикл - чернорабочий алгоритма. Решение, которое он принимает за один раз, чаще всего не мудрено. Но, действуя раз за разом, систематично, кропотливо, неумолимо, цикл как бы разгоняет корабль мысли, преодолевает тяготение рутины и выводит корабль на интеллектуальную орбиту.

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

Кажется, Р. Декарт первым осознал огромную важность циклов для человеческого ума. Если использовать точные и простые правила, строгое соблюдение которых всегда препятствует принятию ложного за истинное, если применять эти правила постепенно и многократно при зоркой интуиции каждого отдельного положения, то удастся выполнить умственную работу, которая с первого взгляда кажется необъятной. Ее удастся сделать без излишней затраты умственных сил, в короткое время, и тогда самый заурядный ум становится способным указывать воле выбор действий в житейских случайностях.

Насколько же такой методический и циклический путь лучше пути тех, кто, блуждая в пустом пространстве множества причин, ждет, не подвернется ли им под руку что-нибудь подходящее!

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

Разработка программ для вычислительных машин формирует у людей особый стиль мышления. Прежде всего алгоритмическое мышление является четким, ясным, определенным. Конечно, в требовании четкости, ясности, определенности нет ничего нового. Цену столь превосходным качествам ума знали еще первобытные охотники. Призывами к четкости, ясности, определенности идей наполнены труды древних писателей и ученых. Чем же отличаются от них сегодняшние алгоритмисты?