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

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

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

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

Глава 1. Кукарача и его среда обитания

1.1. Знакомство с Кукарачей
   Вася. Послушай, Петя, что это за программа скрывается в Мони-
торе под кнопкой "Кукарача"?
   Петя. Кукарача?  Это  исполнитель,  который  может ползать по
клетчатому полю и собирать из кубиков разные слова.  Давай я по-
кажу тебе, как с ним работать.
   Вася. Отлично! Включаю компьютер, запускаю Монитор  Роботлан-
дии и щелкаю мышкой по кнопке "Кукарача".
   Петя. Что ты видишь на экране?
   Вася. Я вижу пустое клетчатое поле и на нем одинокое существо
в левом верхнем углу.
   Петя. Это и есть среда исполнителя. А в углу в  ожидании ука-
заний стоит сам исполнитель  -  Кукарача. Давай посмотрим на его
систему команд.
   Вася. Наверное, нужно нажать экранную кнопку со знаком вопро-
са для получения необходимой информации?
   Петя. Конечно. Вот видишь, на экране появилось меню справки:
              ┌───┬───────────────┐
              │   │ С П Р А В К А │
              ├───┴───────────────┤
              │  Горячие клавиши  │
              │  СКИ              │
              │  Среда            │
              │  Язык             │
              └───────────────────┘
   Вася. Выбираем, конечно, раздел СКИ. Ага,  Кукарача умеет вы-
полнять 7 команд.
              ┌───┬───────────────┐
              │   │      С К И    │
              ├───┴───────────────┤
              │  ВПРАВО           │
              │  ВЛЕВО            │
              │  ВВЕРХ            │
              │  ВНИЗ             │
              │  ВПЕРЕД           │
              │  НАЗАД            │
              │  СТОЯТЬ           │
              └───────────────────┘

   Петя. Сейчас я расскажу тебе, как  исполнитель выполняет свои
команды. По командам ВЛЕВО, ВПРАВО, ВВЕРХ, ВНИЗ он переползает в
соседнюю  клетку  в указанном направлении. Команда СТОЯТЬ -  это
типичная "пустая" команда. Выполняя ее, Кукарача  не сделает ни-
каких движений.
   Вася. Зачем же было включать такую команду в СКИ?
   Петя. Она  бывает  удобна  при  программировании развилок. Мы
этим займемся чуть позже.
   Вася. А еще две команды ВПЕРЕД и НАЗАД?
   Петя. Дело в том,  что в среде Кукарачи не одно поле,  а нес-
колько. Они сложены в стопку друг на друга. Команды ВПЕРЕД и НА-
ЗАД заставляют исполнителя переходить  с  поля на поле, не меняя
своего положения внутри полей:
                     ____________________________
                    /              x           /|
                    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ |   
                    /              x           /|   │
                    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ |   │
                    /              x           /|   │
                    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ |   │
                    /              x           /|   
                    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒/

   Вася. А как задавать команды исполнителю?
   Петя. Надо их записывать в редакторе команд и нажимать экран-
ную кнопку GO (go по-английски означает "иди", читается гоу):
        ┌──┐ ┌──────────────────────────────────┐
        │GO│ │ВПРАВО █                          │
        └──┘ └──────────────────────────────────┘
         │     │
         │     └─ редактор команд
         └─────── кнопка запуска

   Вася. Хорошо,  напишу  команду  ВПРАВО  и  нажму кнопку GO...
Есть! Кукарача послушно сместился  на  одну клетку вправо. А те-
перь скомандую  ВВЕРХ. Ага, хитрый исполнитель пошевелил лапками
и написал "Не могу!".
               ┌───┬──────────────┐
               │   │  О Ш И Б К А │
               ├───┴──────────────┤
               │      Не могу     │
               │                  │
               └──────────────────┘
   Петя. Кукарача может сталкивать  с  поля кубики, но сам поки-
нуть свою среду не может.
   Вася. Но на поле нет никаких кубиков. Ты хочешь их поставить?
   Петя. Щелкни  мышкой  по  клетчатому  полю... Видишь, мышиная
стрелка заменилась на курсор-прямоугольник. Теперь ты находишься
в редакторе среды. При помощи символьных клавиш клавиатуры можно
устанавливать кубики. Исполнитель устанавливается в любую  клет-
ку, если, находясь в ней, нажать клавишу Enter.

Вопросы и задания
     1. Что сделает Кукарача, получив команду НАЛЕВО?
     2. Кукарача стоит в  левом нижнем углу поля. Как он выпол-
нит команду ВНИЗ?
     3. Кукарача находится в клетке (1,1) первого  поля. Где он
окажется после выполнения следующих команд?
     а) ВПРАВО    б) ВПЕРЕД    в) ВЛЕВО     г) ВПРАВО
        ВНИЗ         ВНИЗ         ВНИЗ         ВНИЗ
        ВПРАВО       ВПРАВО       ВЛЕВО        НАЛЕВО
        ВНИЗ         НАЗАД        ВНИЗ
        ВНИЗ         СТОЯТЬ       ВНИЗ


1.2. Первая задача

   Петя. Не  пора ли перейти  от общих определений к решению за-
дач? Попробуем установить среду для решения вот такой задачи.
     Задача. Пусть Кукарача превратит слово "КУЛИК"  в нашу фа-
милию.
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │К │У │Л │И │К │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │  │  │# │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           4 │  │  │  │  │  │  │  │  │  │  │

     Вася. Ну,  раз он может выталкивать  с поля буквы,  то это
просто. Вот алгоритм решения этой задачи:
     1. Выбросить лишние буквы
     2. Подойти к концу слова
     3. Придвинуть последнюю букву К к началу слова.
   Петя. Молодец! Наши  прошлые  занятия не прошли даром. Первый
пункт алгоритма я предлагаю записать подробнее.
   Вася. Можно. Тогда получится так:
     1. Выбросить лишние буквы
        1.1. Выбросить Р
        1.1. Подойти к О
        1.1. Выбросить О
     2. Подойти к концу слова
     3. Придвинуть последнюю букву К к началу слова.
   Петя. Начинай выполнять свой план.
   Вася с увлечением приступил к управлению исполнителем, а Петя
по старой юнкоровской привычке записал его работу в тетрадь:
┌──────────────────────────┬────────┬──────────────────────────┐
│      Шаги алгоритма      │Команды │     Среда исполнителя    │
├──────────────────────────┼────────┼──────────────────────────┤
│1. Выбросить лишние буквы │        │                          │
│   1.1. Выбросить Л       │ВВЕРХ   │   1  2  3  4  5  6  7    │
│                          │ВНИЗ    │  ┌──┬──┬──┬──┬──┬──┬─    │
│                          │        │1 │К │У ││ │И │К │  │     │
│                          │        │  ├──┼──┼┼─┼──┼──┼──┼─    │
│                          │        │2 │  │  │# │  │  │  │     │
│                          │        │  ├──┼──┼──┼──┼──┼──┼─    │
│                          │        │                          │
│   1.2. Подойти к И       │ВПРАВО  │   1  2  3  4  5  6  7    │
│                          │        │  ┌──┬──┬──┬──┬──┬──┬─    │
│                          │        │1 │К │У │  │И │К │  │     │
│                          │        │  ├──┼──┼──┼──┼──┼──┼─    │
│                          │        │2 │  │  │ ─┼# │  │  │     │
│                          │        │  ├──┼──┼──┼──┼──┼──┼─    │
│                          │        │                          │
│   1.3. Выбросить И       │ВВЕРХ   │   1  2  3  4  5  6  7    │
│                          │ВНИЗ    │  ┌──┬──┬──┬──┬──┬──┬─    │
│                          │        │1 │К │У │  ││ │К │  │     │
│                          │        │  ├──┼──┼──┼┼─┼──┼──┼─    │
│                          │        │2 │  │  │  │# │  │  │     │
│                          │        │  ├──┼──┼──┼──┼──┼──┼─    │
│                          │        │                          │
│2. Подойти к концу слова  │ВПРАВО  │   1  2  3  4  5  6  7    │
│                          │ВПРАВО  │  ┌──┬──┬──┬──┬──┬──┬─    │
│                          │ВВЕРХ   │1 │К │У │  │  │К │# │     │
│                          │        │  ├──┼──┼──┼──┼──┼┼─┼─    │
│                          │        │2 │  │  │  │ ─┼──┼┘ │     │
│                          │        │  ├──┼──┼──┼──┼──┼──┼─    │
│                          │        │                          │
│3.  Придвинуть последнюю  │ВПРАВО  │   1  2  3  4  5  6  7    │
│ букву К к началу слова.  │ВПРАВО  │  ┌──┬──┬──┬──┬──┬──┬─    │
│                          │        │1 │К │У │К │#─┼──┼─ │     │
│                          │        │  ├──┼──┼──┼──┼──┼──┼─    │
│                          │        │2 │  │  │  │  │  │  │     │
│                          │        │  ├──┼──┼──┼──┼──┼──┼─    │
└──────────────────────────┴────────┴──────────────────────────┘

     Вопросы и задания
     1. Превратить молоток в моток:
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │М │О │Л │О │Т │О │К │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │  │  │# │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           4 │  │  │  │  │  │  │  │  │  │  │

     2. Превратить мишку в мышку.
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │  │  │  │  │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │  │М │И │Ш │К │А │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │  │  │# │Ы │  │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           4 │  │  │  │  │  │  │  │  │  │  │

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

     4. Какую роль хочет играть Кукарача?
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │# │Р │О │Л │Ь │  │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │  │  │  │  │К │О │  │  │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │  │  │  │  │  │  │  │  │  │  │


    5. Получить имя знакомой кошки нашего Кукарачи.
              1  2  3  4  5  6  7  8  9  10
             ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
           1 │  │  │  │М │У │Р │А │Ш │К │А │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           2 │  │  │  │  │  │  │  │# │  │  │
             ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
           3 │  │  │  │  │  │  │  │  │  │  │

