Читаем Игры с Чипом полностью

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

Когда Чип и Сережа вдоволь посмеялись, Сережа спросил:

— Знаешь,Чип, а я все-таки в прошлый раз не совсем понял, зачем ты в программах пишешь «начало цикла», «конец цикла», разве и так неясно?

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

КАЮЩИЙСЯ ЛЕНТЯЙ

Каждый год он на лень свою злится:Через год перестану лениться!Каждый месяц себе он клянется:Через месяц работа начнется!Каждый день он себя заклинает:Завтра новую жизнь начинаю!Каждый час говорит он, вздыхая:Все, последний часок отдыхаю!Исправляется с каждой минутой,Но работа стоит почему-то.

— Ну что ж, — спокойно сказал Сережа, делая вид, что не замечает ехидных намеков Чипа, — в этом стихотворении пять циклов: по годам, по месяцам, по дням, по часам и по минутам. Да, если не знать, что из чего состоит и что за чем следует, то можно и запутаться. А как бы ты написал это стихотворение в виде программы?

Чип только этого и ждал. Вот как он написал.

Начало 1-го цикла:

ПОВТОРЯЙкаждый год, ПОКАлентяй не исправится:

«Каждый год он на лень свою злится:

Через год перестану лениться!»

   Начало 2-го цикла:

   ПОВТОРЯЙкаждый месяц:

   «Каждый месяц себе он клянется:

   Через месяц работа начнется!»

      Начало 3-го цикла:

      ПОВТОРЯЙкаждый день:

      «Каждый день он себя заклинает:

      Завтра новую жизнь начинаю!»

         Начало 4-го цикла:

         ПОВТОРЯЙкаждый час:

         «Каждый час говорит он, вздыхая:

         Все, последний часок отдыхаю!»

            Начало 5-го цикла:

            ПОВТОРЯЙкаждую минуту:

            «Исправляется с каждой минутой,

            Но работа стоит почему-то».

            Конец 5-го цикла;

         Конец 4-го цикла;

      Конец 3-го цикла;

   Конец 2-го цикла;

Конец 1-го цикла.

— Ну  как? — гордо спросил Чип. — Теперь все ясно, не то, что раньше!

— Ты, пожалуйста, не сердись, но только мне как раз наоборот раньше все было понятно, а вот теперь... Где начало, где конец, какие-то циклы, ей-богу, без циклов было проще!

— Это для вас, людей, так проще, а для компьютеров без циклов нельзя писать — собьется компьютер. В том и состоит искусство программирования: писать так, чтобы компьютер мог работать без ошибок. Человеческий язык для компьютера полон загадок.

— Вот, смотри, — продолжил Чип, — начало и конец каждого цикла написаны на одном уровне — сразу видно, какой цикл кончился, а какой нет.

— Все равно непонятно, — упорствовал Сережа, — давай разберем, как мы делали раньше, кусочек твоей стихотворной программы. Может, тогда я пойму.

— Давай, — согласился Чип. — Начнем с главного цикла. Мы можем сначала написать только его.

Начало 1-го цикла.

ПОВТОРЯЙкаждый год, ПОКАлентяй не исправится:

«Каждый год он на лень свою злится:

Через год перестану лениться!»

Конец 1-го цикла.

— Надеюсь, все ясно? В начале года, скажем, 1 января, лентяй вспоминает про свою лень, злится и обещает через год исправиться. Потом на весь год про это забывает. Поскольку так от лени не избавишься, он организует второй цикл и вписывает его внутрь первого.

Начало 1-го цикла.

ПОВТОРЯЙкаждый год, ПОКАлентяй не исправится:

«Каждый год он на лень свою злится:

Через год перестану лениться!»

   Начало 2-го цикла.

   ПОВТОРЯЙкаждый месяц:

   «Каждый месяц себе он клянется:

   Через месяц работа начнется!»

   Конец 2-го цикла.

Конец 1-го цикла.

— Теперь он каждое 1 января повторяет первую пару строчек и, кроме того, каждый месяц, скажем, каждое второе число, повторяет вторую строчку.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже