ДРоботландский Университет 
2000/2001 учебный год
Курс 31 "Азы программирования"
-------------------------------------------------
     Р О Б О Т Л А Н Д С К О Е  П Р О Г Р А М М И Р О В А Н И Е

                                   (C) А.А. Дуванов

                                      Под редакцией
                                      Ю.А. Первина

                                      Пособие   распространяется
                                      только в рамках  Роботлан-
                                      дских  Курсов  и  является
                                      объектом авторского права.

Глава 3. Новые команды и их повторение

3.1. Кукарача говорит "Ах!"
   Петя. Посмотри, какую программу я написал:

                   ЭТО Ух
                    Ах
                   КОНЕЦ

   Вася. Ух!
   Петя. Как ты думаешь, что произойдет, если я  сейчас нажму на
кнопку GO?
   Вася. Я думаю, Кукарача скажет "Ах!".
   Петя. Ты почти угадал.
   Петя щелкнул по кнопке GO мышкой,  Кукарача  не  стронулся  с
места, а на экране появилось окошко с надписью:
                ┌───────────────────────────────┐
                │ Не описана процедура с именем │
                │             "Ах"              │
                └───────────────────────────────┘
   Петя. Команды Ах нет в СКИ исполнителя. Нет описания этой ко-
манды и в  программном поле. Вот почему появилось это сообщение.
А теперь я дополню свою программу так:

                   ЭТО Ух
                    Ах // Это вызов процедуры Ах
                   КОНЕЦ

                   // Это описание процедуры Ах
                   ЭТО Ах
                    ВПРАВО
                    ВНИЗ
                    ВЛЕВО
                    ВВЕРХ
                   КОНЕЦ

   Теперь все в  порядке. По команде "Ух" Кукарача выполнит про-
цедуру "Ах", то есть совершит  небольшую  прогулку  и вернется в
исходное положение.
   Вася. Ты все понятно объяснил, но только зачем такие сложнос-
ти?
   Петя. Э, брат! Сейчас ты все поймешь. Использование имен про-
цедур в качестве команд существенно облегчает программирование.

     Вопросы и задания:
   1. Изменится ли конечное положение Кукарачи после  выполнения
процедуры Ух, если процедуру Ах заменить двумя другими Ох и Эх:
                   ЭТО Ох       ЭТО Эх
                    ВПРАВО       ВЛЕВО
                    ВНИЗ         ВВЕРХ
                   КОНЕЦ        КОНЕЦ
   2. Можно ли,  решая поставленную в предыдущем вопросе задачу,
переставлять местами процедуры Ох и Эх?

3.2. Процедурное программирование
   Петя. Вот тебе, к примеру, такая задача.
   Задача. НАРЫЧАЛО  зарычало, превратилось вдруг в НАЧАЛО. (По-
лучить на поле слово НАЧАЛО.)

          Дано:                             Надо:
   1  2  3  4  5  6  7  8  9  10     1  2  3  4  5  6  7  8  9  10
  ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐   ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
1 │  │  │  │  │  │  │  │  │  │  │ 1 │  │  │  │  │  │  │  │  │  │  │
  ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
2 │Н │А │Р │Ы │Ч │А │Л │О │  │  │ 2 │Н │А │Ч │А │Л │О │# │  │  │  │
  ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
3 │  │  │# │  │  │  │  │  │  │  │ 3 │  │  │  │  │  │  │  │  │  │  │

   Вася. Предлагаю такой алгоритм:

1. Убрать лишние буквы РЫ
2. Идти в конец слова
3. Придвинуть ЧАЛО к НА

   Петя. Хорошо. Давай перепишем твой  алгоритм  прямо  на  поле
программ:
           ЭТО Начало
            // 1. Убрать лишние буквы РЫ
            // 2. Идти в конец слова
            // 3. Придвинуть ЧАЛО к НА
           КОНЕЦ
   Вася. Ты написал процедуру, состоящую из одних комментариев!
   Петя. Да, но  зато  комментарии содержат описания шагов алго-
ритма. Теперь после каждого комментария-шага я напишу вызов про-
цедуры, которая и  будет выполнять работу, описанную в этом ком-
ментарии:
           ЭТО Начало
            // 1. Убрать лишние буквы РЫ
            Убрать_РЫ
            // 2. Идти в конец слова
            Идти_в_конец
            // 3. Придвинуть ЧАЛО к НА
            Уплотнить
           КОНЕЦ
   Петя. Заметь, что  когда  имя процедуры состоит из нескольких
слов, я соединяю их символом подчеркивания.
     Вася. Думаю, ты это делаешь  потому,  что  в именах нельзя
использовать пробелы.
   Петя. Верно!  Теперь  приступаем  к  описанию  процедуры  Уб-
рать_РЫ. Вот я изобразил на картинке, что она должна делать:
          Дано:                             Надо:
   1  2  3  4  5  6  7  8  9  10     1  2  3  4  5  6  7  8  9  10
  ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐   ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
1 │  │  │  │  │  │  │  │  │  │  │ 1 │  │  │  │  │  │  │  │  │  │  │
  ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
2 │Н │А │Р │Ы │Ч │А │Л │О │  │  │ 2 │Н │А │  │  │Ч │А │Л │О │  │  │
  ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
3 │  │  │# │  │  │  │  │  │  │  │ 3 │  │  │  │# │  │  │  │  │  │  │

     Вася. Попробую программировать твоим способом:

           ЭТО Убрать_РЫ
             Убрать_букву
             ВПРАВО
             Убрать_букву
           КОНЕЦ

           ЭТО Убрать_букву
            ВВЕРХ
            ВВЕРХ
            ВНИЗ
            ВНИЗ
           КОНЕЦ

   Вася. Вот теперь я понял преимущество процедур! Их вызов мож-
но использовать многократно и это здорово  экономит усилия прог-
раммиста!
   Петя. Преимущество ПРОЦЕДУРНОГО ПРОГРАММИРОВАНИЯ еще и в том,
что  программы  становятся более простыми и наглядными, так  как
раскладываются  на  множество  маленьких  процедур,  описывающих
простые и короткие действия.
   Вася. Где ты научился говорить так мудро?
   Петя. Ты забываешь, что я учусь в институте, а ты  всего лишь
пока школьник, хотя, надо признать, не по годам смышленый.
   Вася. Теперь приступаю к процедуре Идти_в_конец:

          Дано:                             Надо:
   1  2  3  4  5  6  7  8  9  10     1  2  3  4  5  6  7  8  9  10
  ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐   ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
1 │  │  │  │  │  │  │  │  │  │  │ 1 │  │  │  │  │  │  │  │  │  │  │
  ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
2 │Н │А │  │  │Ч │А │Л │О │  │  │ 2 │Н │А │  │  │Ч │А │Л │О │# │  │
  ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
3 │  │  │  │# │  │  │  │  │  │  │ 3 │  │  │  │  │  │  │  │  │  │  │

           ЭТО Идти_в_конец
            // Движение по строке в клетку (3,9)
            ВПРАВО
            ВПРАВО
            ВПРАВО
            ВПРАВО
            ВПРАВО
            // На одну строку вверх в клетку (2,9)
            ВВЕРХ
           КОНЕЦ
   Петя. Осталось написать процедуру Уплотнить.
   Вася. Ну это совсем просто:
          Дано:                             Надо:
   1  2  3  4  5  6  7  8  9  10     1  2  3  4  5  6  7  8  9  10
  ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐   ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
1 │  │  │  │  │  │  │  │  │  │  │ 1 │  │  │  │  │  │  │  │  │  │  │
  ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
2 │Н │А │  │  │Ч │А │Л │О │# │  │ 2 │Н │А │Ч │А │Л │О │# │  │  │  │
  ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤   ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
3 │  │  │  │  │  │  │  │  │  │  │ 3 │  │  │  │  │  │  │  │  │  │  │

           ЭТО Уплотнить
            ВЛЕВО
            ВЛЕВО
           КОНЕЦ

Вопросы и задания
   1. В чем заключается преимущество процедурного программирова-
ния?
   2. Дайте обоснования именам тех процедуры, которые  использо-
ваны в примере НАРЫЧАЛО.

3.2. Команда повторения

   Петя.  Сейчас  я покажу тебе, как можно  еще  упростить  нашу
программу. Часто, управляя исполнителем, используют КОМАНДУ ПОВ-
ТОРЕНИЯ или КОМАНДА  ЦИКЛА. У Кукарачи эта команда выглядит сле-
дующим образом:
                      ПОВТОРИ число команда
   ПОВТОРИ - это ключевое слово языка, "число" - это целое поло-
жительное число,  обозначающее число повторений, "команда" - это
любая команда  языка,  которую  надо повторить. Например, вместо
пяти команд ВПРАВО в процедуре Идти_в_конец  можно написать одну
команду цикла:
                        ПОВТОРИ 5 ВПРАВО
     Вася. Вот  это действительно облегчение! Сейчас я исправлю
нашу программу:
           ЭТО Начало
            // 1. Убрать лишние буквы РЫ
            Убрать_РЫ
            // 2. Идти в конец слова
            Идти_в_конец
            // 3. Придвинуть ЧАЛО к НА
            Уплотнить
           КОНЕЦ

           ЭТО Убрать_РЫ
             Убрать_букву
             ВПРАВО
             Убрать_букву
           КОНЕЦ

           ЭТО Убрать_букву
            ПОВТОРИ 2 ВВЕРХ
            ПОВТОРИ 2 ВНИЗ
           КОНЕЦ

           ЭТО Идти_в_конец
            // Движение по строке в клетку (3,9)
            ПОВТОРИ 5 ВПРАВО
            // На одну строку вверх в клетку (2,9)
            ВВЕРХ
           КОНЕЦ

           ЭТО Уплотнить
            ПОВТОРИ 2 ВЛЕВО
           КОНЕЦ

Вопросы и задания
     1. Посмотрите на следующие рисунки:
    ┌───┐  ┌───┐  ┌───┐  ┌───┐  ┌───┐  ┌───┐  ┌───┐  ┌───┐
    │   │  │   │  │   │  │   │  │   │  │   │  │   │  │   │
  ──┤   ├──┤   ├──┤   ├──┤   ├──┤   ├──┤   ├──┤   ├──┤   │
    │   │  │   │  │   │  │   │  │   │  │   │  │   │  │   │
    └───┘  └───┘  └───┘  └───┘  └───┘  └───┘  └───┘  └───┘
                          Рис 1
    ┌───┐  ┌───┐  ┌───┐  ┌───┐  ┌───┐  ┌───┐  ┌───┐  ┌───┐
    │   │  │   │  │   │  │   │  │   │  │   │  │   │  │   │
    │   │  │   │  │   │  │   │  │   │  │   │  │   │  │   │
  ──┘   └──┘   └──┘   └──┘   └──┘   └──┘   └──┘   └──┘   │
                          Рис 2
    /\        /\        /\        /\        /\
   /  \      /  \      /  \      /  \      /  \
  /    \    /    \    /    \    /    \    /    \
        \  /      \  /      \  /      \  /      \
         \/        \/        \/        \/        \

                          Рис 3
     1) Найдите повторяющиеся части.
     2) Можно ли  выделить  в  рисунке такую часть, повторением
которой образован весь рисунок?

     2. Какие из приведенных ниже команд повторения правильные,
а какие - нет и почему?
                      а)   ПОВТОРИ 7 СТОЯТЬ
                      б)   Повтори 2 ВПРАВО
                      в)   ПОВТОРИ 5-2 ВНИЗ
                      г)   ПОВТОРИ 100 ВНИЗ ВПРАВО
                      д)   ПОВТОРИ 8 Колесо
                      е)   ПОВТОРИ 7 ПОВТОРИ 2 ВПРАВО
                      ж)   ПОВТОРИ 1 ВПЕРЕД

3.3. Интерпретатор и его странные сообщения

     Петя. Как ты думаешь, понимает ли  Кукарача команду ПОВТО-
РИ?
   Вася. Конечно, понимает! Ведь  я  запустил программу и он вы-
полнил ее, не сказав никаких плохих слов.
   Петя. Но ведь команда ПОВТОРИ не входит в СКИ исполнителя.
   Вася. Да, действительно. В чем же тогда дело?
   Петя. Дело в том, что программу выполняет не  Кукарача, а ИН-
ТЕРПРЕТАТОР ПРОГРАММ. Он  выполняет  твою программу и в соответ-
ствии с ней передает Кукараче команды из его СКИ.
   Вася. Что ты называешь  интрепатором...,  тьфу! интерпретато-
ром? Это сам компьютер?
   Петя. Не совсем так. Ты видишь на экране Кукарачу, его среду,
поле программы, разные  кнопки,  окна. Все это появляется тогда,
когда ты  запускаешь компьютерную модель исполнителя и начинаешь
с ней работать. Компьютерная модель Кукарачи - это программа для
нашего компьютера, мы  купили ее у фирмы "Роботландия". Она сос-
тоит из многих частей-процедур, которые подобно твоим процедурам
для Кукарачи выполняют  определенную  для них часть работы. Одна
процедура отвечает за вывод на экран картинок, другая записывает
информацию на диск, третья обрабатывает нажатие клавиш на клави-
атуре компьютера. Интерпретатор программ Кукарачи -  это одна из
процедур этой  программы.  Именно  она  читает  написанную тобой
программу,  которая  включает "чужие" для Кукарачи слова -  ЭТО,
КОНЕЦ, ПОВТОРИ, и выполняет ее.
   Вася. А как работает интерпретатор программ?
   Петя. Интерпретатор сначала  проверяет,  нет ли в твоей прог-
рамме СИНТАКСИЧЕСКИХ  ОШИБОК,  а  затем  начинает выполнять твою
программу, передавая Кукараче  понятные  ему команды из его СКИ.
Например, выполняя команду ПОВТОРИ 6 ВПРАВО, интерпретатор пере-
даст Кукараче последовательно шесть команд ВПРАВО.
   Вася. Ты меня сегодня утомил сложными словами. Что такое син-
таксическая ошибка?
     Петя. Ничего, брат  привыкай.  Выучил же ты слово "процес-
сор", и  эти  новые  слова как-нибудь запомнишь. Синтаксические
ошибки - это  разные  описки, неточности, нарушения правил пос-
троения программ. Синтаксической ошибкой  будет  запись НАЛЕВО,
вместо команды ВЛЕВО, слово ТОТ  вместо  ключевого  слова ЭТО и
так далее.
     Вася. Сказал бы просто "ошибки", зачем еще добавлять "син-
таксические"?
   Петя. Потому что существуют еще ЛОГИЧЕСКИЕ ОШИБКИ.
   Вася. А это что такое?
   Петя. Это когда твоя программа  написана  правильно  с  точки
зрения интерпретатора программ,  но делает она совсем не то, что
ты хотел. Иными словами логическая ошибка - это неправильно сос-
тавленный алгоритм. Вот, например, фраза "Для того, чтобы выклю-
чить компьютер, надо ударить по нему  молотком." написана совер-
шенно правильно с точки зрения русского языка. В ней нет синтак-
сических ошибок, но логическая ошибка налицо!
   Вася. Я буду писать свои программы совсем без  ошибок и тогда
твои мудрые объяснения мне не потребуются.
   Петя. Зелен ты  брат,  не знаешь тяжелого труда программиста.
Писать программы можно хорошо и плохо, но без ошибок - никогда!
   Вася. Убил наповал!
   Петя. Синтаксическую ошибку не пропустит интерпретатор  прог-
рамм. Он обязательно выдаст окно с сообщением и установит курсор
в то место твоей программы, где обнаружил ошибку.
   Вася. Это уже хорошо.
   Петя. Хорошо, но к сообщениям интерпретатора надо привыкнуть.
К тому  же место, где обнаружена  ошибка, не всегда  совпадает с
тем, где она на самом деле находится.
   Вася. Неужели "Роботландия" сделала такой плохой  интерпрета-
тор?
   Петя. Дело  не в этом.  Просто интерпретатор не знает, что на
самом деле ты хотел написать, в том месте,  где совершил ошибку.
Поэтому он вынужден выдавать сообщения очень формально. Вот пос-
мотри на следующую программу:

                ЭТО Пример
                  ВЛЕВА
                КОНЕЦ

   Интерпретатор выдаст сообщение
                ┌───────────────────────────────┐
                │ Не описана процедура с именем │
                │             "ВЛЕВА"           │
                └───────────────────────────────┘
   Откуда ему  знать, что ты написал  команду из СКИ  с ошибкой.
Ошибку на экране он покажет в самом конце текста, за  словом КО-
НЕЦ.  Именно  там он ожидал увидеть описание процедуры  "ВЛЕВА",
но, увы!  не нашел. А  команду ВЛЕВА он посчитал совершенно пра-
вильной.
   Вася. А уж в поиске логических ошибок помощи от интерпретато-
ра совсем не жди!
   Петя. Нет, он может здорово помочь, если запустить  его в ПО-
ШАГОВОМ РЕЖИМЕ.
   Вася. Интерпретатор умеет ходить?
   Петя. Интерпретатор умеет работать в двух режимах - НЕПРЕРЫВ-
НОМ и пошаговом.  В непрерывном режиме он выполняет программу до
конца, не останавливаясь, а в пошаговом он прерывает работу пос-
ле выполнения каждой  команды,  отмечая на экране подсветкой то,
что ему предстоит  выполнить на следующем шаге. Наблюдая за тем,
ЧТО выполняется  на поле программ  и КАК это выполняется на поле
Кукарачи, легко найти место логической ошибки.
   Вася. А как запустить выполнение в пошаговом режиме?
   Петя. Надо  отметить  соответствующий  РЕЖИМ в окне установки
режимов. Вот  смотри, я щелкаю  мышкой по третьей кнопке меню, и
на экран всплывает это окошко. Теперь еще один  щелчок на кнопке
нужного режиме:

      ┌──┬────────────────────────────────────────────┬──┐
      │| │          Р Е Ж И М Ы  Р А Б О Т Ы          │Ok│
      ├──┴────────────────────────────────────────────┴──┤
      │  Программа                                       │
      │ ┌──────────────────┐                             │
      │ │ о  Непрерывно    │                             │
      │ │                  │                             │
      │ │ х  По Шагам      │                             │
      │ │                  │                             │
      │ │ о  Не показывать │                             │
      │ └──────────────────┘                             │
      │ Размеры поля                                     │
      │┌───────┬───┬──────┬───┬────────┬───┬────────────┐│
      ││ВПРАВО │10 │ ВНИЗ │10 │ ВПЕРЕД │4  │            ││
      │└───────┴───┴──────┴───┴────────┴───┴────────────┘│
      └──────────────────────────────────────────────────┘
   Вася. До щелчка на пошаговом режиме  отметка указывала непре-
рывный режим, теперь она сместилась.
   Петя. Такие управляющие кнопки, как в меню установки режимов,
называются РАДИОКНОПКАМИ. Это  потому,  что из всех кнопок может
быть отмечена только одна.
   Вася. Понятно.  Это  как  в  радиоприемнике,  когда нажимаешь
кнопку установки  средних  волн, включенная ранее кнопка длинных
волн автоматически отщелкивается.
   Петя. Это точно. Теперь у  нас  установлен  пошаговый режим и
каждое нажатие на кнопку GO, будет вызывать выполнение интерпре-
татором одного шага. Попробуй сейчас выполнить свою программу, и
ты увидишь как, это происходит.

Вопросы и задания
   1. Используя  сообщения  интерпретатора  программ,  исправьте
синтаксические ошибки в следующей программе:
             ЭТО Пример 1
              Вправо
              ПОВТОРИТЬ 2 ВНИЗ
              ВЛЕВО
              ПОВТОРИ 2 раза ВВЕРХ
             КОНЕЦ.
   2. Используя пошаговый режим, найдите и исправьте  логические
ошибки в решении следующей задачи:
       Задача.  Превратите слово ЛИПА в слово ПИЛА.
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │  │Л │И │П │А │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           4 │  │# │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           5 │  │  │  │  │  │  │  │  │  │  │

     Решение.
   ЭТО Упражнение
    // 1.  Л в клетку (2,2)
    Часть_1
    // 2. Л в клетку (2,4)
    Часть_2
    // 3. Л в клетку (3,4)
    Часть_3
    // 4. В четвертую строку
    Часть_4
    // 5. П в клетку (4,2)
    Часть_5
    // 6. П в клетку (3,2)
    Часть_6
   КОНЕЦ

   // 1.  Л в клетку (2,2)
   ЭТО Часть_1
    ВВЕРХ
   КОНЕЦ

   // 2. Л в клетку (2,4)
   ЭТО Часть_2
    ВЛЕВО
    ВВЕРХ
    ПОВТОРИ 3 ВПРАВО
   КОНЕЦ

   // 3. Л в клетку (3,4)
   ЭТО Часть_3
    ВВЕРХ
    ВЛЕВО
    ВНИЗ
   КОНЕЦ

   // 4. В четвертую строку
   ЭТО Часть_4
    ВВЕРХ
    ПОВТОРИ 2  ВПРАВО
    ПОВТОРИ 2  ВНИЗ
   КОНЕЦ

   // 5. П в клетку (4,2)
   ЭТО Часть_5
    ПОВТОРИ 4 ВПРАВО
   КОНЕЦ

   // 6. П в клетку (3,2)
   ЭТО Часть_6
    ВНИЗ
    ВЛЕВО
    ВВЕРХ
   КОНЕЦ


Вопросы и задания
     1. Помогите Кукараче взобраться по лесенке.
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │  │  │  │  │  │  │┌─┼─ │  │  │
             ├──┼──┼──┼──┼──┼──┼┼─┼──┼──┼──┤
           4 │  │  │  │  │  │┌─┼┘ │А │  │  │
             ├──┼──┼──┼──┼──┼┼─┼──┼──┼──┼──┤
           5 │  │  │  │  │┌─┼┘ │К │  │  │  │
             ├──┼──┼──┼──┼┼─┼──┼──┼──┼──┼──┤
           6 │  │  │  │┌─┼┘ │Н │  │  │  │  │
             ├──┼──┼──┼┼─┼──┼──┼──┼──┼──┼──┤
           7 │  │  │┌─┼┘ │Е │  │  │  │  │  │
             ├──┼──┼┼─┼──┼──┼──┼──┼──┼──┼──┤
           8 │  │┌─┼┘ │С │  │  │  │  │  │  │
             ├──┼┼─┼──┼──┼──┼──┼──┼──┼──┼──┤
           9 │┌─┼┘ │Е │  │  │  │  │  │  │  │
             ├┼─┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
          10 │# │Л │  │  │  │  │  │  │  │  │
             └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘

     2. Составьте программу прогулки Кукарачи по заданному мар-
шруту так, чтобы он прошел его пять раз.
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │#─┼>─┼──┼──┼──┼──┼──┼──┼──┼┐ │
             ├┼─┼──┼──┼──┼──┼──┼──┼──┼──┼┼─┤
           2 ││ │  │  │  │  │  │  │  │  ││ │
             ├┼─┼──┼──┼──┼──┼──┼──┼──┼──┼┼─┤
           3 ││ │  │  │  │  │  │  │  │  ││ │
             ├┼─┼──┼──┼──┼──┼──┼──┼──┼──┼┼─┤
           4 ││ │  │  │  │  │  │  │  │  ││ │
             ├┼─┼──┼──┼──┼──┼──┼──┼──┼──┼┼─┤
           5 ││ │  │  │  │  │  │  │  │  ││ │
             ├┼─┼──┼──┼──┼──┼──┼──┼──┼──┼┼─┤
           6 ││ │  │  │  │  │  │  │  │  ││ │
             ├┼─┼──┼──┼──┼──┼──┼──┼──┼──┼┼─┤
           7 ││ │  │  │  │  │  │  │  │  ││ │
             ├┼─┼──┼──┼──┼──┼──┼──┼──┼──┼┼─┤
           8 ││ │  │  │  │  │  │  │  │  ││ │
             ├┼─┼──┼──┼──┼──┼──┼──┼──┼──┼┼─┤
           9 ││ │  │  │  │  │  │  │  │  ││ │
             ├┼─┼──┼──┼──┼──┼──┼──┼──┼──┼┼─┤
          10 │└─┼──┼──┼──┼──┼──┼──┼──┼<─┼┘ │
             └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘

     3. Контроль  поля.  Заставьте исполнителя  Кукарачу обойти
все клетки поля так, чтобы  в  каждой из них он побывал  только
один раз. <<task301.coc>>

     4. Собрать слово ПАРОХОД.
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │# │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           4 │  │П │А │Р │  │О │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           5 │  │Х │О │Д │  │  │  │  │  │  │

     5. Получить на поле слово КОЛЕСО.
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │# │  │  │  │  │  │  │  │  │К │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │  │  │  │  │  │  │  │  │  │О │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │  │Л │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           4 │  │  │  │  │  │  │  │  │  │Е │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           4 │  │С │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           4 │  │  │  │  │  │  │  │  │  │О │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           5 │  │  │  │  │  │  │  │  │  │  │

     6. Собрать слово МАШИНИСТ на 10 строке  и закончить работу
в клетке (1,10).
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │# │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           4 │М │  │Ш │  │Н │  │С │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           5 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           6 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           7 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           8 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           9 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
          10 │  │А │  │И │  │И │  │Т │  │  │
             └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘

     7. Помогите Кукараче очистить поле от мусора (кубики "Х"),
не сдвигая остальных кубиков (<<task302.coc>>).
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │# │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │- │- │- │- │- │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │Х │Х │Х │Х │Х │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           4 │- │- │- │- │- │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           5 │Х │Х │Х │Х │Х │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           6 │- │- │- │- │- │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           7 │Х │Х │Х │Х │Х │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           8 │- │- │- │- │- │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           9 │Х │Х │Х │Х │Х │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
          10 │- │- │- │- │- │  │  │  │  │  │
             └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘

     8. Помогите Кукараче совершить прогулки  в  клетку (1,10),
не сдвигая кубиков.
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │# │  │  │Ж │  │  │  │Ж │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │  │Ж │  │Ж │  │Ж │  │Ж │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │  │Ж │  │Ж │  │Ж │  │Ж │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           4 │  │Ж │  │Ж │  │Ж │  │Ж │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           5 │Ж │Ж │  │Ж │  │Ж │  │Ж │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           6 │Ж │Ж │  │Ж │  │Ж │  │Ж │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           7 │  │Ж │  │Ж │  │Ж │  │Ж │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           8 │  │Ж │  │Ж │  │Ж │  │Ж │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           9 │  │Ж │  │Ж │  │Ж │  │Ж │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
          10 │  │Ж │  │  │  │Ж │  │  │  │  │
             └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
