       Р О Б О Т Л А Н Д С К И Е  К О Н С Т Р У К Т О Р Ы

                                      А.А. Дуванов

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

                                      (C) Роботландия, лето 1997

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

                    Глава 4. Клеточка


     Содержание

1. Разговор о таблицах
   1.1. Первое представление
   1.2. Какие бывают таблицы
   1.3. Какую информацию удобно хранить в таблицах
   1.4. Как разместить информацию в таблице
2. Решение задач Клеточки
   2.1. Портрет в интерьере
   2.2. Задачу решаем, а время идет
3. Разработка заданий
   3.1. Мастерская Клеточки
        3.1.1. Самое сложное - придумать задачу
        3.1.2. Задание параметров задачи
        3.1.3. Заголовки таблицы
        3.1.4. Текст условия задачи
        3.1.5. Текст дополнения к условию задачи
        3.1.6. Создание объектов
        3.1.7. Запись готовой задачи
   3.2. Редактор меню
   3.3. Новая кнопка в Мониторе


1. Разговор о таблицах

1.1. Первое представление

   Вася. Какие планы у нас на сегодняшний вечер?
   Папа. Клеточка! Этот пакет позволяет строить задачи, в кото-
рых текстовую информацию можно упорядочить в виде таблицы.
   Вася. Мне хорошо знакома таблица умножения.
   Папа.  Это  один из возможных примеров. Таблицы, как  способ
упорядочивания информации, используют довольно часто. Поэтому в
пакете можно строить задачи, основываясь на таблицах времен ан-
глийских глаголов, представителей  животного мира, исторических
событий и  многих  других  таблицах,  которые  очень удобны для
представления информации, ее обдумывания и запоминания.
     Но,  раз  ты вспомнил таблицу умножения, то расскажи,  как
она устроена.
   Вася. Очень просто, я могу ее нарисовать:

                           Столбцы таблицы
                  ┌──┬──┬──┬──┼──┬──┬──┬──┐
                                  
                  ╔══╦══╦══╦══╦══╦══╦══╦══╦══╗
                  ║1 ║2 ║3 ║4 ║5 ║6 ║7 ║8 ║9 ║ - Заголовки
                  ║░░║░░║░░║░░║░░║░░║░░║░░║░░║    столбцов
               ╔══╬══╬══╬══╬══╬══╬══╬══╬══╬══╣
          ┌── ║1░║1 │2 │3 │4 │5 │6 │7 │8 │9 ║
          │    ╠══╬──┼──┼──┼──┼──┼──┼──┼──┼──╢
          ├── ║2░║2 │4 │6 │8 │10│12│14│16│18║
          │    ╠══╬──┼──┼──┼──┼──┼──┼──┼──┼──╢
          ├── ║3░║3 │6 │9 │12│15│18│21│24│27║
          │    ╠══╬──┼──┼──┼──┼──┼──┼──┼──┼──╢ - Клетки
          ├── ║4░║4 │8 │12│16│20│24│28│32│36║    (ячейки)
          │    ╠══╬──┼──┼──┼──┼──┼──┼──┼──┼──╢    таблицы
Строки ───┼── ║5░║5 │10│15│20│25│30│35│40│45║
таблицы   │    ╠══╬──┼──┼──┼──┼──┼──┼──╬══╬──╢
          ├── ║6░║6 │12│18│24│30│36│42║48║54║
          │    ╠══╬──┼──┼──┼──┼──┼──┼──╬══╬──╢
          ├── ║7░║7 │14│21│28│35│42│49│56│63║
          │    ╠══╬──┼──┼──┼──┼──╬══╬──┼──┼──╢
          ├── ║8░║8 │16│24│32│40║48║56│64│72║
          │    ╠══╬──┼──┼──┼──┼──╬══╬──┼──┼──╢
          └── ║9░║9 │18│27│36│45│54│63│72│81║
               ╚══╩══╧══╧══╧══╧══╧══╧══╧══╧══╝
                
                └─ Заголовки строк

   Папа. Ты нарисовал таблицу, а я подписал на  рисунке ее эле-
менты. Таблица  представляет собой прямоугольник,  расчерченный
на клетки. Если на клетки смотреть по вертикали, то они образу-
ют столбцы, если по горизонтали - строки. Каждая строка и стол-
бец  в  таблице имеет свой заголовок. Заголовки записываются  в
надстроенные над таблицей дополнительные клетки.
   Вася. Заголовками строк и столбцов в  таблице умножения слу-
жат цифры от одного до девяти.
   Папа. А как пользоваться этой таблицей?
   Вася. Очень  просто!  Если нужно узнать, например, результат
умножения числа 6  на  число 8, то я  должен  прочитать ответ в
клетке на пересечении столбца с заголовком "6" и строки с заго-
ловком "8". Или в клетке на пересечении строки с заголовком "6"
и столбца с  заголовком  "8". Это все равно,  потому  что 6∙8 =
8∙6. В обоих этих клетках написано число 48.
   Папа. Верно! В общем случае таблицы  используют для хранения
информации  с  двумя  характерными признаками. Значения  одного
признака расписано в  заголовках  строк, другого - в заголовках
столбцов. А в  каждую клетку таблицы заносят значение, одновре-
менно обладающее признаком строки и столбца, на пересечении ко-
торых она расположена.
   Для таблицы умножения признаками служат значения  сомножите-
лей. Первый признак - это значение  первого сомножителя, второй
- значение второго.
   Петя. Для таблиц существует удобное обозначение. Саму табли-
цу обозначают  какой-нибудь латинской буквой, а для обозначения
ее элементов (содержимого клеток) к выбранной букве приписывают
два подстрочных  числа  для  обозначения  тех  номеров строки и
столбца, в которых этот элемент находится. Эти числа называются
индексами:

                 M    - таблица умножения

                 M    -  элемент таблицы, расположенный в клетке
                  6,8    на пересечении шестой строки и восьмого
                         столбца.
                 6,8  - индексы

   Вася. Ты обозначил  таблицу умножения буквой M. Тогда я могу
написать, что:
               M    = M    = 48.
                6,8    8,6
   Петя. При помощи этих обозначений можно  кратко описать таб-
лицу умножения так:

          M    = i∙j  (i = 1, ..., 9; j = 1, ..., 9)
           i,j

     Вася.  Я  кажется понял! Ты написал, что элемент  таблицы,
расположенный в клетке  на пересечении i-ой строки и j-го стол-
бца, равен произведению i на j. А так как в скобках указано все
возможные значения для  индексов,  то твоя запись описывает все
клетки таблицы!
     Петя. Число строк и столбцов в таблице называют ее размер-
ностью. Размерность  записывают  в виде произведения, в котором
первый сомножитель обозначает число строк,  а  второй  -  число
столбцов. Таблица умножения имеет размерность 9∙9 (читается де-
вять на девять). Таблицы, у которых число строк равняется числу
столбцов, называются квадратными.
   Вася.  А  если выполнить умножение в записи размерности,  то
получится общее число клеток в таблице!  Таблица умножения сос-
тоит из 9∙9 = 81 клетки.
   А те клетки, которые  отводятся  под заголовки строк и стол-
бцов, не учитываются при определении размерности?
   Петя. Нет. Ведь они - вспомогательные!

1.2. Какие бывают таблицы

   Петя. Таблица умножения - симметричная таблица. Так называют
квадратные таблицы, для которых
                          M    = M
                           i,j    j,i
при всех допустимых значениях i и j.
     Вася. Это потому, что операция умножения перестановочна.
     Петя.  Верно,  вот  как выглядит доказательство  симметрии
таблицы умножения в моих обозначениях:

                          M    = i∙j = j∙i =  M
                           i,j                 j,i
     Словами это произносится так:  "Элемент,  расположенный на
пересечении i-ой строки и j-го столбца, равен произведению i∙j.
В силу свойства перестановочности умножения i∙j  = j∙i. Послед-
нее произведение равно элементу, расположенному  на пересечении
j-ой строки и i-го столбца.
   Вася. Немного непривычно, но все понятно.
   Петя. Симметрия таблицы означает  ее  симметрию относительно
диагонали, проведенной из левого верхнего угла прямоугольника в
нижний:
                       ┌─────────────────┐
                       │ \               │
                       │   \             │
                       │     \           │
                       │       \         │
                       │         \       │
                       │           \     │
                       │             \   │
                       │               \ │
                       └─────────────────┘
   Вася. Это означает,  что  в клетках, расположенных на равном
расстоянии от диагонали, записаны одни и те же значения.
   Петя. Иными  словами,  наша  таблица избыточна. Для хранения
результатов  умножения  чисел достаточно было бы ее одной  тре-
угольной половинки:
    ┌──┐                        ┌──┬──┬──┬──┬──┬──┬──┬──┬──┐
    │1 │                        │1 │2 │3 │4 │5 │6 │7 │8 │9 │
    ├──┼──┐                     └──┼──┼──┼──┼──┼──┼──┼──┼──┤
    │2 │4 │                        │4 │6 │8 │10│12│14│16│18│
    ├──┼──┼──┐                     └──┼──┼──┼──┼──┼──┼──┼──┤
    │3 │6 │9 │                        │9 │12│15│18│21│24│27│
    ├──┼──┼──┼──┐                     └──┼──┼──┼──┼──┼──┼──┤
    │4 │8 │12│16│                        │16│20│24│28│32│36│
    ├──┼──┼──┼──┼──┐         или         └──┼──┼──┼──┼──┼──┤
    │5 │10│15│20│25│                        │25│30│35│40│45│
    ├──┼──┼──┼──┼──┼──┐                     └──┼──┼──┼──┼──┤
    │6 │12│18│24│30│36│                        │36│42│48│54│
    ├──┼──┼──┼──┼──┼──┼──┐                     └──┼──┼──┼──┤
    │7 │14│21│28│35│42│49│                        │49│56│63│
    ├──┼──┼──┼──┼──┼──┼──┼──┐                     └──┼──┼──┤
    │8 │16│24│32│40│48│56│64│                        │64│72│
    ├──┼──┼──┼──┼──┼──┼──┼──┼──┐                     └──┼──┤
    │9 │18│27│36│45│54│63│72│81│                        │81│
    └──┴──┴──┴──┴──┴──┴──┴──┴──┘                        └──┘

   Вася. Зато полная  таблица красивее и удобнее! И кроме того,
она все равно гораздо меньше обычного способа записи произведе-
ния цифр:
       1∙1 = 1    2∙1 = 2    3∙1 = 3   4∙1 = 4    5∙1 = 5
       1∙2 = 2    2∙2 = 4    3∙2 = 6   4∙2 = 8    5∙2 = 10
       1∙3 = 3    2∙3 = 6    3∙3 = 9   4∙3 = 12   5∙3 = 15
       1∙4 = 4    2∙4 = 8    3∙4 = 12  4∙4 = 16   5∙4 = 20
       1∙5 = 5    2∙5 = 10   3∙5 = 15  4∙5 = 20   5∙5 = 25
       1∙6 = 6    2∙6 = 12   3∙6 = 18  4∙6 = 24   5∙6 = 30
       1∙7 = 7    2∙7 = 14   3∙7 = 21  4∙7 = 28   5∙7 = 35
       1∙8 = 8    2∙8 = 16   3∙8 = 24  4∙8 = 32   5∙8 = 40
       1∙9 = 9    2∙9 = 18   3∙9 = 27  4∙9 = 36   5∙9 = 45

            6∙1 = 6    7∙1 = 7    8∙1 = 8   9∙1 = 9
            6∙2 = 12   7∙2 = 14   8∙2 = 16  9∙2 = 18
            6∙3 = 18   7∙3 = 21   8∙3 = 24  9∙3 = 27
            6∙4 = 24   7∙4 = 28   8∙4 = 32  9∙4 = 36
            6∙5 = 30   7∙5 = 35   8∙5 = 40  9∙5 = 45
            6∙6 = 36   7∙6 = 42   8∙6 = 48  9∙6 = 54
            6∙7 = 42   7∙7 = 49   8∙7 = 56  9∙7 = 63
            6∙8 = 48   7∙8 = 56   8∙8 = 64  9∙8 = 72
            6∙9 = 54   7∙9 = 63   8∙9 = 72  9∙9 = 81

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

                          ┌────────────┐
                          │ Расстояние │
                          │в миллионах │
                          │километров  │
                ┌─────────┼────────────┤
                │ Меркурий│    58      │
                ├─────────┼────────────┤
                │ Венера  │   108      │
                ├─────────┼────────────┤
                │ Земля   │   150      │
                ├─────────┼────────────┤
                │ Марс    │   228      │
                ├─────────┼────────────┤
                │ Юпитер  │   778      │
                ├─────────┼────────────┤
                │ Сатурн  │  1426      │
                ├─────────┼────────────┤
                │ Уран    │  2869      │
                ├─────────┼────────────┤
                │ Нептун  │  4496      │
                ├─────────┼────────────┤
                │ Плутон  │  5929      │
                └─────────┴────────────┘

   Вася. Какая же это таблица? Это просто столбик значений.
   Папа. Это, конечно, таблица, хотя она состоит всего из одно-
го столбца. Зато в ней девять строчек.
   Петя.  Я мог бы нарисовать ее и по-другому:
       ┌─────────┬───────┬────────┬───────┬──────┬──────┬──────┬──────┬──────┐
       │ Меркурий│Венера │Земля   │Марс   │Юпитер│Сатурн│Уран  │Нептун│Плутон│
┌──────┼─────────┼───────┼────────┼───────┼──────┼──────┼──────┼──────┼──────┤
│Расс- │         │       │        │       │      │      │      │      │      │
│тояние│  58     │ 108   │ 150    │228    │ 778  │ 1426 │2869  │ 4496 │5929  │
│в млн.│         │       │        │       │      │      │      │      │      │
│  км  │         │       │        │       │      │      │      │      │      │
└──────┴─────────┴───────┴────────┴───────┴──────┴──────┴──────┴──────┴──────┘

   Тогда в ней была бы всего одна строчка, но девять столбцов.
   Вася. А бывают таблицы,  состоящие  из одной строки и одного
столбца?
   Петя. Теоретически -  конечно!  Но на практике хранить всего
одно значение в виде таблицы неудобно, так делают только тогда,
когда предполагается,  что таблица со временем будет расширять-
ся.
   Вася.  Я  придумал два  примера.  Действительно,  получается
смешно:
                   ┌─────┐                ┌────────┐
                   │Число│                │Число   │
                   │часов│                │градусов│
            ┌──────┼─────┤    ┌───────────┼────────┤
            │ День │ 24  │    │Прямой угол│   90   │
            └──────┴─────┘    └───────────┴────────┘

   Папа. Создается  впечатление,  что  в таблицах можно хранить
только числа!
   Петя. Нет, конечно! Вот пример из природоведения. Эта табли-
ца сравнивает свойства льда и снега:
         ┌──────────┬────────────┬─────────────────────────┬────────┐
         │   Цвет   │Прозрачность│      Действие тепла     │Другие  │
         │          │            │                         │свойства│
 ┌───────┼──────────┼────────────┼─────────────────────────┼────────┤
 │Снег   │Белый     │Непрозрачный│Тает, превращается в воду│Рыхлый  │
 ├───────┼──────────┼────────────┼─────────────────────────┼────────┤
 │Лед    │Бесцветный│Прозрачный  │Тает, превращается в воду│Хрупкий │
 └───────┴──────────┴────────────┴─────────────────────────┴────────┘

   Вася. А вот пример-упражнение по русскому языку.
   Упражнение. Разберите  слова  данного  предложения по частям
речи. Запишите их в таблицу.
   В морозный январский день дети катались с большой горы.
          ┌───────────────┬────────┬─────────────┬────────────┬──────────┐
          │Часть речи     │Род     │Число        │Падеж       │Склонение │
┌─────────┼───────────────┼────────┼─────────────┼────────────┼──────────┤
│В        │предлог        │        │             │            │          │
├─────────┼───────────────┼────────┼─────────────┼────────────┼──────────┤
│морозный │прилагательное │ мужской│единственное │именительный│          │
├─────────┼───────────────┼────────┼─────────────┼────────────┼──────────┤
│январский│прилагательное │ мужской│единственное │именительный│          │
├─────────┼───────────────┼────────┼─────────────┼────────────┼──────────┤
│день     │существительное│ мужской│единственное │именительный│  второе  │
├─────────┼───────────────┼────────┼─────────────┼────────────┼──────────┤
│дети     │существительное│ средний│множественное│именительный│  второе  │
├─────────┼───────────────┼────────┼─────────────┼────────────┼──────────┤
│катались │глагол         │ средний│множественное│            │          │
├─────────┼───────────────┼────────┼─────────────┼────────────┼──────────│
│с        │предлог        │        │             │            │          │
├─────────┼───────────────┼────────┼─────────────┼────────────┼──────────┤
│большой  │прилагательное │женский │единственное │родительный │          │
├─────────┼───────────────┼────────┼─────────────┼────────────┼──────────┤
│горы     │существительное│женский │единственное │родительный │  первое  │
└─────────┴───────────────┴────────┴─────────────┴────────────┴──────────┘

   Вася. В моей таблице, правда, получились "дырки" - некоторые
клетки оказались пустыми, информация в них отсутствует.
   Папа. Отсутствие записи в клетке - это тоже информация. Нап-
ример, у предлога нет рода. Об этом должен помнить ученик, изу-
чающий русский язык. Если не хочется  иметь  в  таблице  пустых
клеток, то можно записывать в них какое-нибудь специальное клю-
чевое слово, например, "Нет".

1.3. Какую информацию удобно хранить в таблицах

   Вася. Мы  так много говорим  о таблицах. Похоже, в них можно
хранить все что угодно, любую информацию.
   Папа. В  таблицу, конечно, можно поместить любую информацию,
но не всегда это разумно делать.
   Петя. Я не думаю, что любую  информацию  можно  поместить  в
таблицу. Как, например,  поместить  в нее схему автобусных мар-
шрутов города Переславля-Залесского?
   Папа. Почему бы и нет. Так, кстати, и  делают на туристичес-
ких картах. План города с автобусными маршрутами расчерчивается
на квадраты. Каждый квадрат можно считать  одной клеткой табли-
цы:

             1        2        3        4        5
         ┌────────┼────────┼────────┼────────┼─────────┐
       a │        │        │        │        │         │
         │        │        │        │        │         │
         ┼────────┼────────┼────────┼────────┼─────────┼
       b │        │        │        │        │         │
         │        │        │        │        │         │
         ┼────────┼────────┼────────┼────────┼─────────┼
       c │        │        │        │        │         │
         │        │        │        │        │         │
         ┼────────┼────────┼────────┼────────┼─────────┼
       d │        │        │        │        │         │
         │        │        │        │        │         │
         └────────┼────────┼────────┼────────┼─────────┘

   Вася. Эта таблица содержит не числа и не  тексты, а рисунки.
А зачем план города расчерчивать на клетки?
   Папа. Превращать план  города  в таблицу удобно для быстрого
поиска нужной информации. Переславль-Залесский - не очень боль-
шой город и для него табличный план не так важен, а для больших
городов это очень удобно. К плану Москвы, например, прилагается
список важных объектов с указанием квадратов, в которых они на-
ходятся. Если,  например,  написано,  что магазин "Умелые руки"
расположен в квадрате c4, то его очень легко найти на плане.
   Вася. Понятно, буква "c"  -  это заголовок строки таблицы, а
число "4" - заголовок ее  столбца.  Значит,  "Умелые руки" надо
искать не по всему громадному плану, а только в клетке c4. Это,
действительно, очень удобно!
   Петя. Да, признаюсь, мой  пример с автобусными маршрутами не
очень удачен. А вот как  хранить  в  таблице роман Л.Н.Толстого
"Война и Мир"?
   Папа.  Можно  и роман поместить в таблицу... Представь  себе
программу, которая выводит на экран таблицу названий глав рома-
на, а по щелчку мышкой на клетке, она "раскрывается" и на экран
выводится  текст главы?
   Петя. Да, действительно, так можно сделать,  хотя роман, ко-
нечно, лучше читать по книге.
   Папа. Это  точно! Но если роман тебе нужен  не для чтения, а
для исследования - это удобно. Например, твоей целью может быть
подсчет слов в каждой  главе  или поиск наиболее часто встреча-
ющихся выражений.
   Вася. Получается,  что  каждая клетка таблицы содержит целую
главу!
   Петя. Хорошо! Опять мой  пример  неудачен. А как поместить в
таблицу схему расположения файлов программного пакета  "Клеточ-
ка"?

C:\
└─ KURSROB
   └─ KURS
      └─ 1
         └─ KLETKA        - Каталог Клеточки
            ├─ tabs.exe  ─┐ Клеточка-ученик
            ├─ tabs.pcx  ─┘
            ├─ tabt.exe  ─┐ Клеточка-учитель
            ├─ tabt.pcx  ─┘
            ├─ tab.ini    - Файл настроек
            ├─ ini.bat    - Вызов Микрона для редактирования
            │               настроек
            ├─ DOC        - Каталог документации
            └─ TASK       - Каталог с готовыми задачами
               ├─ fl.exe   ─┐
               ├─ flte.cut  │ Редактор Меню
               ├─ fltr.cut  │
               ├─ fl.pic    │
               ├─ f.ini    ─┘
               ├─ ENGLISH  - Каталог задач по английскому языку
               ├─ FRANCAIS - Каталог задач по французскому языку
               ├─ HIS      - Каталог задач по истории
               ├─ SPORT    - Каталог задач по спорту
               ├─ KUK      - Каталог задач Кука
               └─ GEO      - Каталог задач по географии
                  ├─ geo .lst - Меню задач по географии
                  ├─ anim.tab ─┐
                  ├─ demi.tab  │
                  ├─ geob.tab  │
                  ├─ golf.tab  │
                  ├─ iles.tab  │
                  ├─ koor.tab  │
                  ├─ manc.tab  │ Файлы с задачами
                  ├─ mont.tab  │
                  ├─ regi.tab  │
                  ├─ riva.tab  │
                  ├─ rive.tab  │
                  ├─ vill.tab  │
                  ├─ vois.tab  │
                  └─ faun.tab ─┘

   Папа. Всю эту  схему  можно нарисовать в единственной клетке
таблицы размерностью 1∙1. А можно по этой схеме построить целый
набор таблиц и  показывать их пользователю так, как это сделано
в программе Norton Commаnder:
    Таблица каталога KURSROB:
            ┌────────────┬─────────┬────────┬──────┐
            │     Имя    │  Размер │  Дата  │Время │
            ├────────────┼─────────┼────────┼──────┤
            │..          │<Каталог>│06-27-97│10:26a│
            │DOC         │<Каталог>│06-27-97│10:27a│
            │ICON        │<Каталог>│06-27-97│10:27a│
            │KURS        │<Каталог>│06-27-97│10:28a│
            │SYS         │<Каталог>│06-27-97│10:27a│
            │go       bat│        8│06-27-97│10:39a│
            │ini      bat│       26│06-27-97│ 6:18p│
            │adp      exe│   17,277│12-11-95│ 6:20p│
            │desk     exe│  129,859│07-01-97│ 1:35p│
            │dp       exe│   49,118│07-24-96│11:17a│
            │maindesk exe│    5,605│07-19-96│ 9:59a│
            │rdd      exe│   17,360│12-13-95│ 7:09p│
            │rview    exe│   29,701│10-16-95│ 9:40a│
            │desk     ini│      903│06-30-97│10:29a│
            │dp       pic│   47,616│11-23-94│ 9:46a│
            └────────────┴─────────┴────────┴──────┘
    Таблица каталога KURS:
            ┌────────────┬─────────┬────────┬──────┐
            │     Имя    │  Размер │  Дата  │Время │
            ├────────────┼─────────┼────────┼──────┤
            │..          │<Каталог>│06-27-97│10:28a│
            │1           │<Каталог>│06-27-97│10:28a│
            │GS          │<Каталог>│06-27-97│ 5:30p│
            │micron   exe│   49,256│06-11-96│12:02p│
            │paint    exe│   68,650│06-20-95│12:17p│
            │paint    doc│   20,775│08-09-95│ 6:25p│
            │micron   doc│   12,873│02-22-96│10:08a│
            │sharm    exe│   58,437│10-09-93│9:10p │
            │sharm    doc│    5,775│07-20-93│11:16a│
            └────────────┴─────────┴────────┴──────┘
    Таблица каталога 1:
            ┌────────────┬─────────┬────────┬──────┐
            │     Имя    │  Размер │  Дата  │Время │
            ├────────────┼─────────┼────────┼──────┤
            │..          │<Каталог>│06-27-97│10:28a│
            │MOLE        │<Каталог>│06-27-97│10:28a│
            │ABC         │<Каталог>│06-27-97│10:29a│
            │KLETKA      │<Каталог>│06-27-97│10:29a│
            │PATH        │<Каталог>│06-27-97│10:29a│
            │KP          │<Каталог>│06-27-97│10:30a│
            └────────────┴─────────┴────────┴──────┘
    Таблица каталога KLETKA:
            ┌────────────┬─────────┬────────┬──────┐
            │     Имя    │  Размер │  Дата  │Время │
            ├────────────┼─────────┼────────┼──────┤
            │..          │<Каталог>│06-27-97│10:29a│
            │DOC         │<Каталог>│06-27-97│10:31a│
            │TASK        │<Каталог>│06-27-97│10:31a│
            │ini      bat│       24│06-27-97│ 5:09p│
            │tabs     exe│   70,726│04-11-96│11:24a│
            │tabt     exe│   70,999│09-02-96│11:08a│
            │tab      ini│      247│04-06-96│11:21a│
            │tabs     pcx│   19,048│04-05-96│11:59a│
            │tabt     pcx│   23,091│04-05-96│11:58a│
            └────────────┴─────────┴────────┴──────┘

   В отличие от  Петиной схемы, каждая таблица Norton'а не дает
цельного представление о расположении всех файлов на диске. Од-
нако, таблицы Norton'a удобно использовать в  качестве меню вы-
бора.
   При проектировании  способа представления информации  всегда
уместен вопрос о том, для чего эта информация может понадобить-
ся. Если мы хотим изучить  расположение  каталогов  и файлов на
диске, то  Петин рисунок, конечно, удобнее. Схема, нарисованная
Петей, называется деревом. При помощи дерева удобно хранить ин-
формацию, имеющую иерархическую структуру.
   Вася. Что за сложное слово ты произнес!
   Папа. Иерархия - это зависимость по подчинению или включению
одних объектов в другие.
   По Петиной схеме видно, что диск C содержит каталог KURSROB,
а тот, в свою очередь, каталог KURS. Каталог  KURS содержит ка-
талог "1", а тот - каталог KLETKA. Каталог KLETKA содержит фай-
лы для запуска программ пакета Клеточка и каталоги DOC -  с до-
кументацией и ТASK - с  готовыми  задачами  и файлами Редактора
Меню.
   Вася. Да,  без Петиного дерева, объяснить кому-либо располо-
жение файлов на диске было бы очень сложно...
   Папа.  Иерархия  расположения файлов на диске не  так  уж  и
проста. Вот почему Роботландия над всем этим "дисковым" деревом
построила свой Монитор. Но схема расположения кнопок в Мониторе
тоже имеет иерархическую структуру:
                    ┌─────────────────┐
                    │ Первая страница │
                    └────────┬────────┘
      ┌────────────┬─────────┴──┬────────────┬────────────┐
┌─────┴─────┐  ┌───┴────┐   ┌───┴────┐   ┌───┴────┐  ┌────┴────┐
│Мудрый Крот│  │Картинки│   │Клеточка│   │Тропинка│  │Раскрашка│
└───────────┘  └────────┘   └───┬────┘   └────────┘  └─────────┘
                                │
                 ┌──────────────┴──────────────────────┐
              ┌──┴───┐                         ┌───────┴───────┐
              │Задачи│                         │Конструирование│
              └──┬───┘                         └───────┬───────┘
    ┌────────┬───┴────┬─── ──────┬────────┐            │
┌───┴───┐┌───┴───┐┌───┴────┐┌────┴────┐┌──┴──┐         │
│English││История││Francais││География││Спорт│         │
└───────┘└───────┘└────────┘└─────────┘└─────┘         │
                                                       │
       ┌─────────────────┬──────────────┬──────────────┴──┐
┌──────┴──────────┐┌─────┴───────┐┌─────┴─────────┐┌──────┴──────┐
│Клеточка-Редактор││Редактор Меню││Описание пакета││Описание Меню│
└─────────────────┘└─────────────┘└───────────────┘└─────────────┘
   Петя. Это "мониторное" дерево можно нарисовать точно так же,
как и файловое:

ПЕРВАЯ СТРАНИЦА
├─ МУДРЫЙ КРОТ
├─ КАРТИНКИ
├─ КЛЕТОЧКА
│  ├─ ЗАДАЧИ
│  │  ├─ English
│  │  ├─ История
│  │  ├─ Francais
│  │  ├─ География
│  │  └─ Спорт
│  └─ КОНСТРУИРОВАНИЕ
│     ├─ Клеточка-Редактор
│     ├─ Редактор Меню
│     ├─ Описание пакета
│     └─ Описание Меню
├─ ТРОПИНКА
└─ РАСКРАШКА

   Большими бувами  я  на схеме выделил названия кнопок-страниц
(так же, как в файловом дереве - названия каталогов).
   Папа. Последний рисунок более пригоден для узкого тетрадного
листа бумаги. Но,  конечно,  обе схемы совершенно равнозначны и
представляют одно и тоже дерево Мониторных кнопок.
   Петя. И  все же я частично прав: пусть  все что угодно можно
запихнуть в таблицу, но далеко не для всех случаев она хороша!
   Папа. С такой формулировкой трудно не согласиться.

1.4. Как разместить информацию в таблице

   Папа. Таблицы удобно использовать для хранения информациион-
ных объектов,  каждый из которых обладает парой характеризующих
его признаков.  Множество  значений  первого признака порождает
строки таблицы, множество  второго  - столбцы. Если это условие
выполняется,  то  информационные объекты  легко  разместить  по
клеткам: нужно  проверять  значения  обоих  признаков и ставить
объект в клетку  на  пересечении соответствующей строки и стол-
бца.
   Петя. Я придумал игру по географии, в которой надо использо-
вать таблицу.
   Вася. Что-нибудь про полезные ископаемые?
   Петя. Нет, про города.
   Папа. Города можно  размещать  в разные таблицы. Все зависит
от выбора характеристических признаков.
   Петя. Один из признаков (он будет определять строку), заклю-
чается в том, расположен ли город в России или лежит за ее пре-
делами. Второй  признак (он будет определять столбец) разделяет
города на европейские и азиатские:

                            ┌─────────┬────────┐
                            │         │        │
                            │  Европа │  Азия  │
                 ┌──────────┼─────────┼────────┤
                 │ Город в  │         │        │
                 │ России   │         │        │
                 ├──────────┼─────────┼────────┤
                 │ Город не │         │        │
                 │ в России │         │        │
                 └──────────┴─────────┴────────┘

   Вася. У тебя получилась таблица размерностью два на два.
   Петя. Да, я обозначу ее буквой G. Правила  игры следующие: я
буду называть  города, а вы  - говорить, в какую клетку таблицы
его можно записать.
   Папа. Прекрасно! Мы готовы.
   Петя. Архангельск.
   Папа. G
          1,1
   Петя. Киев.
   Вася. G
          2,1
   Петя. Владивосток.
   Папа. G
          1,2
   Петя. Пекин.
   Вася. G
          2,2
   Петя. Кабул.
   Папа. G
          2,2
   Петя. Варшава.
   Вася. G
          2,1
   Папа. Очень  хорошо.  Мы сейчас "просеяли" множество

   {Архангельск, Киев, Владивосток, Пекин, Кабул, Варшава}

через Петино табличное "сито". Но "сито" могло быть и таким:

                         ┌────────┬────────────┐
                         │Столица │Не столица  │
     ┌───────────────────┼────────┼────────────┤
     │ Город расположен  │        │            │
     │ на море           │        │            │
     ├───────────────────┼────────┼────────────┤
     │ Город  расположен │        │            │
     │ не на море        │        │            │
     └───────────────────┴────────┴────────────┘

   Петя. И тогда  распределение по клеткам тех же самых городов
было бы другим (новую таблицу я назвал M):
            Архангельск  - M
                             1,2
            Киев         - M
                             2,1
            Владивосток  - M
                             1,2
            Пекин        - M
                             2,1
            Кабул        - M
                             2,1
            Варшава      - M
                             2,1

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

   Петя. Если обозначить новую таблицу  как  A,  то можно напи-
сать:
            Архангельск  - A
                             1,1
            Киев         - A
                             1,12
            Владивосток  - A
                             1,3
            Пекин        - A
                             1,17
            Кабул        - A
                             1,12
            Варшава      - A
                             1,3

   Вася. Возникает вопрос: какую таблицу лучше использовать для
хранения списка городов?
   Папа. Все зависит  от  того, как в дальнейшем предполагается
использовать информацию. Для лингвиста алфавитный способ хране-
ния подойдет лучше всего - для него важно только написание сло-
ва и ничего больше.  Вторая  таблица, видимо, будет полезна мо-
реплавателю, а первая - политику.
   Вася. Наш разговор о таблицах начался с того, что мы включи-
ли компьютер. Однако до сих пор мы не нажали на  его клавиатуре
ни одной клавиши.
   Папа. А также ни разу не подвигали мышкой и не мяукнули кош-
кой... Намек понял. Давайте вернемся к пакету Клеточка.

    Таблица каталога KURSROB:
            ┌────────────┬─────────┬────────┬──────┐
            │     Имя    │  Размер │  Дата  │Время │
            ├────────────┼─────────┼────────┼──────┤
            │..          │<Каталог>│06-27-97│10:26a│
            │DOC         │<Каталог>│06-27-97│10:27a│
            │ICON        │<Каталог>│06-27-97│10:27a│
            │KURS        │<Каталог>│06-27-97│10:28a│
            │SYS         │<Каталог>│06-27-97│10:27a│
            │go       bat│        8│06-27-97│10:39a│
            │ini      bat│       26│06-27-97│ 6:18p│
            │adp      exe│   17,277│12-11-95│ 6:20p│
            │desk     exe│  129,859│07-01-97│ 1:35p│
            │dp       exe│   49,118│07-24-96│11:17a│
            │maindesk exe│    5,605│07-19-96│ 9:59a│
            │rdd      exe│   17,360│12-13-95│ 7:09p│
            │rview    exe│   29,701│10-16-95│ 9:40a│
            │desk     ini│      903│06-30-97│10:29a│
            │dp       pic│   47,616│11-23-94│ 9:46a│
            └────────────┴─────────┴────────┴──────┘

   Задача 1. Ответьте на следующие вопросы  по таблице Norton'а
для каталога KURSROB.

   1) Назовите заголовки строк и столбцов.
   2) Какие  два характеристических  признака  использованы  для
      построения таблицы, какие они принимают значения?
   3) Какова размерность этой таблицы?

   Задача 2. Постройте таблицы по следующим описаниям и ответь-
те на вопросы:
   1) T    = i+j (i = 1, ..., 5; j = 1, ..., 5)
       i,j

       а) Какова размерность этой таблицы?
       б) Сколько клеток содержит таблица?
       в) Является ли таблица симметричной?
       г) Докажите, что

                T     =  T     + 1, для любых j и всех i > 1
                 i,j      i-1,j

       д) Докажите, что

                T     =  T     + 1, для любых i и всех j > 1
                 i,j      i,j-1

        е) Докажите, что сумма  всех  чисел  в  любой строке или
        любом столбце таблицы кратна пяти.

   2) T    = 10∙i-j (i = 1, ..., 4; j = 1, ..., 5)
       i,j

       а) Какова размерность этой таблицы?
       б) Сколько клеток содержит таблица?
       в) Является ли таблица симметричной?

                     1  2  3  4  5

                  1  9 + 8+ 7+ 6+ 5   =35
                  2  19+18+17+16+15  =85
                  3  29+28+27+26+25  =135
                  4  39+38+37+36+35  =185

       г) Докажите, что

                T     -  T     = 10 , для любых j и всех i < 4
                 i+1,j      i,j

       д) Докажите, что

                T     -  T     = 1, для любых i и всех j < 5
                 i,j+1    i,j

        е) Докажите, что сумма  всех  чисел  в  любой строке
        таблицы кратна пяти, а в любом столбце - кратна четырем.

   Задача 3. Является ли меню выбора таблицей? Если  да, то ка-
кая у  нее  размерность?  По  каким характеристическим признакам
она построена?
   Задача 4. Является ли таблицей календарик, помещаемый обычно
на обороте небольших открыток?
   Задача 5. Является ли таблицей школьное расписание уроков?
   Задача 6. Предложите таблицу для размещения в ней
   а) исторических событий
   б) ведомости зарплаты сотрудников предприятия
   в) списка цен на оборудование в разных валютах
   г) график школьных дежурств
   д) лабиринта Мудрого Крота
   е) имен существительных
   ж) глаголов
   Задача 7. Опишите таблицы, приведенные ниже, при помощи фор-
мул:
   а)     ┌───┬───┬───┐
          │ 2 │ 5 │10 │
          ├───┼───┼───┤
          │ 5 │ 8 │13 │
          ├───┼───┼───┤
          │ 10│13 │18 │
          └───┴───┴───┘

   б)     ┌───┬───┬───┐
          │ 2 │ 3 │ 4 │
          ├───┼───┼───┤
          │ 5 │ 6 │ 7 │
          ├───┼───┼───┤
          │ 10│11 │12 │
          └───┴───┴───┘


   в)     ┌───┬───┬───┐
          │ 1 │ 2 │3  │
          ├───┼───┼───┤
          │ 2 │ 2 │3  │
          ├───┼───┼───┤
          │ 3 │ 3 │3  │
          └───┴───┴───┘


   г)     ┌───┬───┬───┐
          │ 1 │ 1 │1  │
          ├───┼───┼───┤
          │ 1 │ 2 │2  │
          ├───┼───┼───┤
          │ 1 │ 2 │3  │
          └───┴───┴───┘


   д)     ┌───┬───┬───┐
          │ 1 │ 1 │1  │
          ├───┼───┼───┤
          │ 2 │ 2 │2  │
          ├───┼───┼───┤
          │ 3 │ 3 │3  │
          └───┴───┴───┘


   e)     ┌───┬───┬───┐
          │ 1 │ 2 │3  │
          ├───┼───┼───┤
          │ 1 │ 2 │3  │
          ├───┼───┼───┤
          │ 1 │ 2 │3  │
          └───┴───┴───┘


   ж)     ┌───┬───┬───┐
          │ 1 │1/2│1/3│
          ├───┼───┼───┤
          │ 2 │ 1 │2/3│
          ├───┼───┼───┤
          │ 3 │3/2│1  │
          └───┴───┴───┘


   з)     ┌───┬───┬───┐
          │ 6 │3  │2  │
          ├───┼───┼───┤
          │ 12│ 6 │4  │
          ├───┼───┼───┤
          │ 18│9  │6  │
          └───┴───┴───┘



   Задача 8.  Опишите  правила,  по которым построены следующие
таблицы:

   а)     ┌───┬───┬───┐
          │ Б │ В │ Г │
          ├───┼───┼───┤
          │ В │ Г │ Д │
          ├───┼───┼───┤
          │ Г │ Д │ Е │
          └───┴───┴───┘

   б)     ┌───┬───┬───┐
          │ А │ Б │ В │
          ├───┼───┼───┤
          │ Б │ Г │ Е │
          ├───┼───┼───┤
          │ В │ Е │ З │
          └───┴───┴───┘

 в)
          ┌─────┬────────┬───────┐
          │ а   │   б    │    в  │
     ┌────┼─────┼────────┼───────┤
     │   а│арка │апломб  │актив  │
     ├────├─────┼────────┼───────┤
     │   б│балка│баобаб  │боров  │
     ├────┼─────┼────────┼───────┤
     │   в│вата │велоклуб│вызов  │
     └────┴─────┴────────┴───────┘


   Задача 9. Напишите заголовки строк и столбцов для следующих
таблиц:

   а)
        ┌───────┬───────┐
        │ корова│крот   │
        ├───────┼───────┤
        │ петух │пантера│
        ├───────┼───────┤
        │ собака│серна  │
        └───────┴───────┘

   б)
      ┌─────┬────┬────┐
      │ папа│отец│дочь│
      └─────┴────┴────┘

   в)
    ┌────────┬────────┬────────┐
    │ дядя   │ слон   │лошадь  │
    ├────────┼────────┼────────┤
    │ дяди   │ слона  │лошади  │
    ├────────┼────────┼────────┤
    │ дяде   │ слону  │лошади  │
    ├────────┼────────┼────────┤
    │ дядю   │ слона  │лошадь  │
    ├────────┼────────┼────────┤
    │ дядей  │ слоном │лошадью │
    ├────────┼────────┼────────┤
    │ о дяде │ о слоне│о лошади│
    └────────┴────────┴────────┘

    г)
        ┌───────┬───────┬───────────┐
        │ белый │сладкий│растворимый│
        ├───────┼───────┼───────────┤
        │ белый │соленый│растворимый│
        └───────┴───────┴───────────┘

    д)   ┌───────┬─────────────┬──────┐
         │  100  │ жидкость    │ 1000 │
         ├───────┼─────────────┼──────┤
         │  -183 │ твердое тело│ 7800 │
         └───────┴─────────────┴──────┘

2. Решение задач Клеточки

   Папа.  На  рабочем столе Клеточки всего две кнопки,  правда,
они открывают входы на дополнительные страницы:

         ┌────┐                             ┌────┐
         │░░░░│                             │░░░░│
         └────┘                             └────┘
        Задачи...                       Конструирование...

   Петя. На  странице задач собраны готовые упражнения. Предла-
гаю сначала открыть эту дверку.
   Вася. Щелкаю мышкой по экранной кнопке  "Задачи" и... оказы-
ваюсь перед пятью новыми кнопками:

         ┌────┐            ┌────┐           ┌────┐
         │░░░░│            │░░░░│           │░░░░│
         └────┘            └────┘           └────┘
        География         История           Спорт

         ┌────┐                             ┌────┐
         │░░░░│                             │░░░░│
         └────┘                             └────┘
        English                            Francais

   Папа. Предлагаю для начала порешать задачи по географии.
   Вася. У меня нет возражений.

2.1. Портрет в интерьере

   Вася. Программа загрузилась, и на экране  появилось меню вы-
бора заданий:
               ┌───┬─────────────────────────┬───┐
               │   │  М Е Н Ю  З А Д А Н И Й │Ok │
               ├───┴─────────────────────────┴───┤
               │     Реки Европы                 │
               │     Реки Азии                   │
               │     Географические объекты      │
               │     Полуострова                 │
               │     Острова                     │
               │     Соседи                      │
               │     Моря и проливы              │
               │     Океанские заливы            │
               │     Звери и птицы               │
               │     Фауна и флора России        │
               │     Регионы России              │
               │     Координаты на глобусе       │
               │     Горы                        │
               │     Города Западной Европы      │
               └─────────────────────────────────┘

   Петя. Начнем по порядку, про реки Европы.
   Вася. На экране появилась таблица размерностью 7∙7. Заголов-
ками строк и столбцов в ней служат названия городов:
              ┌──────┬─────┬─────┬─────┬───────┬──────┬──────┐
              │Самара│Руан │Вена │Бонн │Белград│ Киев │Базель│
  ┌───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Братислава │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Париж      │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Измаил     │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Ярославль  │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Херсон     │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Дюссельдорф│      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Чебоксары  │      │     │     │     │       │      │      │
  └───────────┴──────┴─────┴─────┴─────┴───────┴──────┴──────┘
   Кроме таблицы на экран вывелось окно с условием задачи:
             ┌───┬────────────────────────────────┐
             │   │   У С Л О В И Е  З А Д А Ч И   │
             ├───┴────────────────────────────────┤
             │ Если  из  города-строки можно  по- │
             │ пасть  в  город-столбец  по  реке, │
             │ название которой появляется в поле │
             │ объектов (справа), то их пересече- │
             │ ние надо отметить галочкой.        │
             └────────────────────────────────────┘
   Условие понятно, но никаких объектов на экране нет.

   Петя. Задачу надо  запустить  кнопкой "Старт" в главном меню
программы (оно расположено в верхней служебной полоске):

Главное меню программы:
   информация о разработчиках
   │     меню заданий
   │     │    старт/стоп задачи
   │     │    │      пауза
   │     │    │      │      условие задачи
   │     │    │      │      │    справочная информация по задаче
   │     │    │      │      │    │    справочная  информация  по
   │     │    │      │      │    │    программе
   │     │    │      │      │    │    │   выход из программы
   │     │    │      │      │    │    │   │
                                   
┌────────────────────────────────────────────────────────────────────┐
│┌───┐┌────┐┌─────┐┌─────┐┌───┐┌───┐┌───┐┌────┐                ┌────┐│
││ Р ││Меню││Старт││Пауза││ У ││З? ││ ? ││STOP│К Л Е Т О Ч К А │Часы││
│└───┘└────┘└─────┘└─────┘└───┘└───┘└───┘└────┘                └────┘│
├────────────────────────────────────────────────────────────────────┤
│                                          ┌────────────────────────┐│
│                                          │                        ││
│       ┌───┬───┬───┬───┬───┬───┬───┐      │                        ││
│    ┌──┼───┼───┼───┼───┼───┼───┼───┤      │     Поле объектов      ││
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      │                        ││
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      │                        ││
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      ├────────────────────────┤│
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      │┌─────────┐ ┌──────────┐││
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      ││  время  │ │          │││
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      │└─────────┘ │  Оценка  │││
│    └──┴───┴───┴───┴───┴───┴───┴───┘      │┌─────────┐ │          │││
│                                          ││   очки  │ │          │││
│                                          │└─────────┘ └──────────┘││
│                                          └────────────────────────┘│
│┌──────────────────────────────────────────────────────────────────┐│
││Быстрая подсказка                                                 ││
│└──────────────────────────────────────────────────────────────────┘│
└────────────────────────────────────────────────────────────────────┘

2.2. Задачу решаем, а время идет

   Вася. Нажимаю кнопку "Старт". Действительно, в поле объектов
появилось название реки: "Дунай".
   По Дунаю можно попасть из Братиславы в Вену, поэтому я делаю
отметку мышкой в клетке 1,3:
              ┌──────┬─────┬─────┬─────┬───────┬──────┬──────┐
              │Самара│Руан │Вена │Бонн │Белград│ Киев │Базель│
  ┌───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Братислава │      │     │    │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Париж      │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Измаил     │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Ярославль  │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Херсон     │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Дюссельдорф│      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Чебоксары  │      │     │     │     │       │      │      │
  └───────────┴──────┴─────┴─────┴─────┴───────┴──────┴──────┘
   Папа. Заметь, что  после отметки в таблице объект не сменил-
ся. Это значит, что Клеточка ждет пометок в других клетках таб-
лицы.
   Петя. Смотрите, когда  курсор  находится на слове "Дунай", в
поле быстрой подсказки (внизу экрана) появляется текст:
            ┌───────────────────────────────────────┐
            │   Крупнейшая река центральной Европы  │
            └───────────────────────────────────────┘
   Папа.  В  этой программе надо внимательно относиться к  под-
сказкам: они здорово помогают в решении.
   Вася. Дунай соединяет еще Братиславу с Белградом, а Измаил -
с Белградом и Веной:
              ┌──────┬─────┬─────┬─────┬───────┬──────┬──────┐
              │Самара│Руан │Вена │Бонн │Белград│ Киев │Базель│
  ┌───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Братислава │      │     │    │     │      │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Париж      │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Измаил     │      │     │    │     │      │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Ярославль  │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Херсон     │      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Дюссельдорф│      │     │     │     │       │      │      │
  ├───────────┼──────┼─────┼─────┼─────┼───────┼──────┼──────┤
  │Чебоксары  │      │     │     │     │       │      │      │
  └───────────┴──────┴─────┴─────┴─────┴───────┴──────┴──────┘

   После четырех щелчков  в таблице, Дунай на поле объектов за-
менился Волгой, и Вася продолжил решение.

   Петя обратил внимание  брата на табло "очки" и "время", объ-
яснил их смысл  и рассказал еще кое-что из программной докумен-
тации.
                    Время игры, очки и оценка
   Время игры указано в минутах, и за ним можно следить  по по-
лоске, нарастающей к правому краю временной шкалы.
   Набранные в игре  очки представлены в виде двух полосок раз-
ного цвета. Длины  полосок  показывают соотношения верных и не-
верных  щелчков  в таблице. Когда длина полоски верных  ответов
превышает 3/5 длины всей шкалы, над  табло включается лампочка:
считается, что игра ведется неплохо. На  обдумывание одного от-
вета  программа  отводит 20 секунд. По истечении этого  времени
играющий получает штрафное очко, равнозначное одному  неверному
щелчку в таблице. Общая оценка за игру в числовом измерении по-
казывается в поле "оценка" в конце игры. Если  длина шкалы "оч-
ки" равна  100 единицам, то  оценка за задачу просто равна про-
центу верных ответов.
   Игра заканчивается, когда
   - истекает время игры;
   - нажимается кнопка "Старт/Стоп" в главном меню;
   - из меню заданий выбирается новая задача.

                          Пауза в игре
   Пауза полезна, если игроку не хватает 20 секунд на обдумыва-
ние ответа или  ему нужно отвлечься от решения задачи. Включить
и выключить паузу можно  экранной  кнопкой в главном меню прог-
раммы.  Просмотр  условия  задачи, дополнительной информации  и
программных инструкций равносилен установке паузы.

                 Быстрая (контекстная) подсказка
   В нижнюю полоску экрана выводится текст контекстной подсказ-
ки в зависимости  от места положения курсора на экране. Контек-
стные подсказки можно разделить на две группы - подсказки прог-
раммы и подсказки, предусмотренные составителем задачи.
   Подсказки  программы  выводятся, когда  курсор  находится  в
главном меню программы, на часах, на табло времени и оценки.
   Если составителем предусмотрены подсказки, то они  выдаются,
когда курсор расположен  в поле объекта или на заголовках строк
и столбцов игровой таблицы.

                         Команда ДАЛЬШЕ
   При помощи мышиного щелчка в поле объектов игрок может отка-
заться от установки текущего объекта в таблицу. Это действие не
добавляет штрафных очков, но и не приостанавливает время игры.

                 Просмотр установленных объектов
   Если щелкнуть правой кнопкой по  клетке  таблицы,  то в поле
объектов будет  показан  объект, помещенный в клетку последним.
Временная полоска при этом не движется.  Возобновить игру можно
повторным  щелчком  правой кнопки (или нажатием клавиши Esc  на
клавиатуре).

   Задание. Решить готовые задания Клеточки


3. Разработка заданий

   Папа. Приступим к  самому интересному в работе с Клеточкой -
разработке новых заданий.
   Вася. Полагаю, со страницы Клеточки нужно перейти на ее под-
страницу "Конструирование":
┌──────────────────────────────────────────────────────────────┐
│┌────┐┌────┐┌────┐                      ┌────┐┌────┐┌────────┐│
││STOP││ Р  ││ i  │    КОНСТРУИРОВАНИЕ   │  П ││ +  ││18:20:25││
│└────┘└────┘└────┘                      └────┘└────┘└────────┘│
├──────────────────────────────────────────────────────────────┤
│                                                              │
│           ┌────┐               ┌────┐                        │
│           │░░░░│               │░░░░│                        │
│           └────┘               └────┘                        │
│       Клеточка-Редактор      Редактор Меню                   │
│                                                              │
│           ┌────┐               ┌────┐                        │
│           │░░░░│               │░░░░│                        │
│           └────┘               └────┘                        │
│       Описание пакета       Описание Меню                    │
│                                                              │
│                                                    ┌────┐    │
│                                                    │░░░░│    │
│                                                    └────┘    │
│                                                   Настройки  │
└──────────────────────────────────────────────────────────────┘
   Папа. Задание  для  Клеточки  готовится в программе "Клеточ-
ка-Редактор", а меню выбора заданий - в "Редакторе Меню".
   Вася. Значит, сначала нужно нажимать кнопку "Клеточка-Редак-
тор"?
   Петя. Если пользователь планирует создать новую серию задач,
то последовательность работы должна быть такой:
     - создать задачи-файлы в программе "Клеточка-Редактор";
     - создать файл-меню в программе "Редактор Меню";
     - на странице "Задачи..."  в Мониторе создать новую кнопку.

   Папа. Ну,  порядок действий может  быть и другим, но все три
рекомендации необходимы.
   Вася. Так,  или иначе, я загружаю программу "Клеточка-Редак-
тор". Мне  не  терпится познакомиться со средой конструирования
задач.

3.1. Мастерская Клеточки

   Петя. На экране Редактора много  всяких  кнопок  и полей, но
хочу отметить, что работать с этой программой очень легко.

Главное меню программы:

   информация о разработчиках
   │
   │     работа с диском (для чтения и записи готовых задач)
   │     │
   │     │    новая задача (для очистки всех полей экрана)
   │     │    │
   │     │    │      условие задачи (для задания условия задачи)
   │     │    │      │
   │     │    │      │    справочная информация по задаче (для
   │     │    │      │    │ (задания дополнительных указаний к
   │     │    │      │    │ задаче)
   │     │    │      │    │
   │     │    │      │    │   справка по программе
   │     │    │      │    │    │
   │     │    │      │    │    │    выход из программы
   │     │    │      │    │    │    │
                              
┌────────────────────────────────────────────────────────────────────┐
│┌───┐┌────┐┌─────┐┌───┐┌───┐┌───┐┌────┐                ┌────┐┌─────┐│
││ Р ││Диск││Новая││ У ││ З?││ ? ││STOP│К Л Е Т О Ч К А │Имя ││ Часы││
│└───┘└────┘└─────┘└───┘└───┘└───┘└────┘                └────┘└─────┘│
├────────────────────────────────────────────────────────────────────┤
│                                          ┌────────────────────────┐│
│                                          │┌───┐┌───┐  ┌───┐┌───┐┌┐││
│                                          ││ 2 ││ 3 │  │ 4 ││ 5 │├┤││
│                                          │└───┘└───┘  └───┘└───┘└┘││
│                                          │┌──────────────────────┐││
│                                          ││                      │││
│       ┌───┬───┬───┬───┬───┬───┬───┐      ││          1           │││
│    ┌──┼───┼───┼───┼───┼───┼───┼───┤      ││                      │││
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      │└──────────────────────┘││
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      │┌──────────────────────┐││
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      ││ ┌───┐┌┐   ┌───┐┌┐    │││
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      ││Н│ 6 │├┤ V │ 7 │├┤    │││
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      ││ └───┘└┘   └───┘└┘    │││
│    ├──┼───┼───┼───┼───┼───┼───┼───┤      ││ ┌───┐┌┐              │││
│    └──┴───┴───┴───┴───┴───┴───┴───┘      ││ │ 8 │├┤              │││
│                                          ││ └───┘└┘              │││
│                                          ││ ┌───┐     ┌───┐┌┐    │││
│                                          ││ │ 9 │     │10 │├┤    │││
│                                          ││ └───┘     └───┘└┘    │││
│                                          │└──────────────────────┘││
│                                          └────────────────────────┘│
│┌──────────────────────────────────────────────────────────────┬───┐│
││Быстрая подсказка                                             │рус││
│└──────────────────────────────────────────────────────────────┴───┘│
└────────────────────────────────────────────────────────────────────┘
Области на экране:
1 - поле объекта
2 - кнопка "поместить объект в задачу"
3 - число объектов в задаче
4 - кнопка "удалить текущий объект из задачи"
5 - номер текущего объекта
6 - число столбцов таблицы
7 - число строк таблицы
8 - время игры
9 - способ обработки объекта, соответствующего нескольким клеткам
10 - верхняя граница шкалы оценки

   Папа. Я могу предложить такой порядок формирования новой за-
дачи:
   1) Придумать задачу (это самое трудное).
   2) Определить параметры задачи:
      - размерность матрицы;
      - время игры;
      - величину верхней границы для оценки;
      - способ  обработки  объектов, одновременно  принадлежащим
        нескольким клеткам таблицы.
   3) Написать заголовки  таблицы  и тексты быстрой справки для
      них.
   4) Написать текст условия задачи.
   5) Написать текст дополнения к условию задачи (если это необ-
      ходимо).
   6) Создать объекты

3.1.1. Самое сложное - придумать задачу

   Петя. Я придумал задачу по информатике,  которая основана на
следующей таблице:
                           ┌───────────┬─────────┐
                           │Устройство │Процесс  │
               ┌───────────┼───────────┼─────────┤
               │ Хранение  │           │         │
               ├───────────┼───────────┼─────────┤
               │ Передача  │           │         │
               ├───────────┼───────────┼─────────┤
               │ Обработка │           │         │
               └───────────┴───────────┴─────────┘
   В эту таблицу должны помещаться объекты,  связанные с инфор-
мацией.
   Вася. Названия  строк понятны: они указывают действия, кото-
рые можно  производить  над  информацией,  а заголовки столбцов
требуют пояснения.
   Петя. В  первый столбец должны попасть объекты, обозначающие
различные устройства,  которые  выполняют  хранение, передачу и
обработку информации. Во второй столбец должны попасть описания
действий над информацией. Например, телефон, конечно  принадле-
жит первому столбцу,  а телефонный разговор - второму. Я подго-
товил список из 15 объектов (а  мог бы и больше!) для нашей за-
дачи. Задание для Васи: написать рядом с каждым  из них обозна-
чения тех клеток, которым они принадлежат.
   Вася. Хорошо. Я  обозначу таблицу буквой T, тогда пометки на
твоем списке будут такими:

Телефон──────────────────── T
                             2,1
Телефонный разговор ─────── T
                             2,2
Компьютер ───────────────── T   , T   , T
                             1,1   2,1   3,1
Магнитный диск ──────────── T
                             1,1
Чтение с диска ──────────── T
                             2,2
Запись на диск ──────────── T
                             2,2
Файл на диске ───────────── T
                             1,2
Процессор ───────────────── T
                             3,1
Выполнение программы ────── T
                             3,2
Клавиатура ──────────────── T
                             2,1
Ввод числа с клавиатуры ─── T
                             2,2
Таблица ─────────────────── T
                             1,1
Запись объекта в таблицу ── T
                             2,2
Объект в таблице ────────── T
                             1,2

   Папа. Хорошая задача, и Вася все пометки сделал правильно.
   Вася. Объект "компьютер" мне пришлось приписать сразу к трем
клеткам.
   Папа. И правильно, ведь это устройство предназначено для об-
работки, хранения и передачи информации.
   Вася. Это не помешает записать задачу в Клеточку?
   Папа. Нет,  просто нужно правильно установить параметр "спо-
соб обработки объектов".

3.1.2. Задание параметров задачи

   Вася. Что это такое и с чем его едят?
   Папа. Посмотри на  экране  в блоке установки параметров есть
поле с галочкой:
                      ┌────────┬─────────┐
                      │┌──┐    │      -- │
                      │└┌─┴┐   │  \  /   │
                      │ └┌─┴┐  │   \/    │
                      │  └──┘  │         │
                      └────────┴─────────┘
   При помощи  этого поля как раз и решается  вопрос о том, как
поступать, когда  объект соответствует одновременно  нескольким
клеткам. Если в поле поставлена галочка, то Клеточка будет тре-
бовать от играющего установки объекта во все клетки, которым он
принадлежит (так было в задаче про реки). Если  галочки нет, то
играющему достаточно поставить объект в любую,  связанную с ним
клетку.
   Вася. Понятно. А как убирать и ставить галочку?
   Папа. Простым щелчком по полю,  в  котором  она  нарисована.
Первый щелчок убирает галочку, а второй возвращает ее на место.
   Вася. Пусть галочка останется, она нужна для нашей задачи. А
вот таблица на экране нарисована неверно. Она имеет  4 строки и
4 столбца. Нам же нужна таблица размерностью 3∙2.
   Папа. Размерность таблицы устанавливается при помощи полей и
кнопок с пометками "H" (для строк) и "V" (для столбцов):

                   ┌───┐┌┐   ┌───┐┌┐
                  Н│ 4 │├┤ V │ 4 │├┤
                   └───┘└┘   └───┘└┘

   В полях "H" и "V" можно написать нужные числа - 3 и 2. Можно
изменить размерность таблицы  и по-другому - при помощи кнопок,
расположеннных рядом с числовыми полями.
   Вася. Я попробую и тот, и другой способ. Число строк я изме-
ню одним  щелчком по кнопке , а число  столбцов введу с клави-
атуры "войдя" в поле "V". Готово:

                   ┌───┐┌┐   ┌───┐┌┐
                  Н│ 3 │├┤ V │ 2 │├┤
                   └───┘└┘   └───┘└┘

   Папа. Теперь надо установить время игры в минутах. Это дела-
ется в поле, рядом с песочными часами.
   Вася. Рядом с  этим полем тоже расположены кнопки. Значит, я
могу и здесь выполнить изменения двумя спосабами?
   Папа. Конечно, точно так же, как  и  при  установке  верхней
границы для оценки. Рядом с этим полем нарисован блокнот.
   Вася.  Время  игры - понятный параметр. Когда оно  истекает,
игра заканчивается. А как быть с оценкой, какое число мне запи-
сать в поле?
   Папа. Можно задать число 5.  Тогда  успехи  играющего  будут
оцениваться по пятибалльной шкале. Пятерку получит  тот, кто не
сделает ни  одной ошибки, а двойку  тот, кто совершит  их целую
кучу.
   Можно задать число  20. Тогда, как во французских школах, бу-
дет использоваться 20-балльная система.
   А можно задать число  100.  Оценка по этой стобалльной шкале
называется процентом. Лучшие игроки выполнят задание на все сто
процентов. На ноль  процентов выполнит задание тот, кто ни разу
не установит объект в правильную клетку.
   Вася. А можно задать верхнюю границу, равную 50?
   Папа. Ты можешь задать в  этом  поле любое число до 999.  Но
наиболее разумные варианты 5, 10 и 100.
   Вася. Хорошо, я записываю число 10.

3.1.3. Заголовки  таблицы
   Папа. Теперь в таблице на  экране  надо  написать  заголовки
строк и столбцов, а также тексты быстрых подсказок для них.
   Петя. Чтобы  написать  какой-нибудь заголовок таблицы, нужно
просто щелкнуть на нем левой кнопкой мыши. Курсор-стрелка заме-
няется на  прямоугольник  ввода  текстового редактора. Выход из
редактора - щелчок  правой кнопкой мыши или нажатие клавиши Esc
на клавиатуре.
   Вася. С заголовками все  понятно,  а как задать быструю под-
сказку и что в ней писать?
   Папа. Быструю  подсказку  игрок использует для получения до-
полнительной информации о строках и столбцах таблицы (она появ-
ляется на экране, когда пользователь устанавливает мышиный кур-
сор на заголовок).  Поэтому если есть, что сказать в дополнение
к тому,  что написано в  самих заголовках, это выносится в быс-
трую подсказку.
   Другой случай - заголовки могут быть слишком длинными и тог-
да в таблице помещают их условные обозначения, а в быструю под-
сказку - полный текст.
   Петя. Для входа в редактор быстрой  подсказки нужно щелкнуть
правой кнопкой мыши на соответствующем заголовке таблицы.
   Вася. Кажется, понятно... Я напишу такие тексты:
   - "Устройство, которое  работает  с информацией" - для заго-
ловка столбца "Устройство",
   - "Процесс хранения,  обработки  или  передачи информации" -
для заголовка столбца "Процесс",
   - "Хранение информации" - для заголовка строки "Хранение",
   - "Передача информации" - для заголовка строки "Передача",
   - "Обработка информации" - для заголовка строки "Обработка".

3.1.4. Текст условия задачи
   Папа. Для записи условия задачи надо нажать четвертую экран-
ную кнопку в верхней служебной полоске программы.
   Вася. На экране появилось окошко:
           ┌──┬───────────────────────────┬──┐
           │  │       Условие задачи      │Ok│
           ├──┴───────────────────────────┴──┤
           │                                 │
           │                                 │
           │                                 │
           └─────────────────────────────────┘
   Я запишу в него такой текст:
   "Определите, является  ли  объект устройством или  описанием
процесса работы с информацией."
   Папа. Придумать  понятную  и  точную  формулировку не так-то
просто. В  тексте  твоего  условия указан признак распределения
объектов по  столбцам, но ничего  не говорится о том, как выби-
рать строку.
   Вася. Да,  это так... У меня  получаются какие-то  длинные и
малопонятные фразы. Петя, помоги!
   Петя. Вот мой вариант:
        ┌──┬─────────────────────────────────────────┬──┐
        │  │              Условие задачи             │Ok│
        ├──┴─────────────────────────────────────────┴──┤
        │   Для каждого текста-объекта определите:      │
        │   - является ли  он названием устройства  или │
        │ описанием информационного процесса;           │
        │   - какой  тип информационной  работы  с  ним │
        │ связан.                                       │
        │   В соответствии  с  этим  отметьте в таблице │
        │ одну (или несколько) подходящих клеток.       │
        └───────────────────────────────────────────────┘
   Вася. Здорово! Ничего не упущено и все понятно!

3.1.5. Текст дополнения к условию  задачи

   Папа. Давайте еще раз испытаем муки литературного творчества
и придумаем  текст,  дополняющий  или  поясняющий условие. Этот
текст записывается в  окошко,  которое появляется по нажатии на
пятую экранную кнопку в верхней полоске экрана:
           ┌──┬───────────────────────────┬──┐
           │  │   Справочная информация   │Ok│
           ├──┴───────────────────────────┴──┤
           │                                 │
           │                                 │
           │                                 │
           └─────────────────────────────────┘
   Вася. Я предлагаю  записать  в это поле какой-нибудь пример,
поясняюший решение задачи.
   Папа. Хорошая  идея. Предлагаю объекты "Магнитофон" и "Прос-
лушивание магнитофонной записи": их нет в списке объектов, под-
готовленном для задачи.
   Вася. Вот что у меня получилось:
        ┌──┬─────────────────────────────────────────┬──┐
        │  │          Справочная информация          │Ok│
        ├──┴─────────────────────────────────────────┴──┤
        │              Поясняющие примеры               │
        │   Объект "Магнитофон"  - это устройство,  для │
        │ прослушивания  и  записи информации,  поэтому │
        │ ему соответствует клетка на пересечении стол- │
        │ бца "Устройство" и строки "Передача".         │
        │   Объект "Прослушивание магнитофонной записи" │
        │ описывает процесс передачи информации, поэто- │
        │ му  ему  соответствует клетка  на пересечении │
        │ строки "Передача" и столбца "Процесс".        │
        └───────────────────────────────────────────────┘

3.1.6. Создание объектов

   Петя. Занести список объектов в  задачу  очень  просто.  Для
этого нужно повторить несколько раз следующую процедуру:
       - написать текст в поле объектов;
       - отметить в таблице соответствующие клетки;
       - написать (если необходимо) текст быстрой подсказки;
       - добавить готовый объект в задачу.
   Вася. А как записывать быструю подсказку для объекта?
   Петя. Так же, как и для заголовков таблицы. Для входа  в ре-
дактор подсказок нужно щелкнуть правой кнопкой мыши в то время,
когда курсор расположен на объекте.
   Вася. Проверим твой алгоритм.
   - В поле объектов записываю слово "Телефон".
   - Щелкаю мышкой  по клетке таблицы, расположенной на пересе-
чении второй строки и первого столбца;
   - Записываю подсказку: "Устройство для быстрой связи";
   - Щелкаю по кнопке "Поместить объект в задачу" (на ней нари-
сован знак "+").
   Что же у меня получилось? Все мои записи и пометки пропали с
экрана. Правда, табло  рядом с кнопкой "+" изменило свое значе-
ние с нуля на единицу.
   Петя. Произошло следующее: программа запомнила объект и под-
готовила  экран  для создания нового. Табло, на котором  сейчас
горит единичка, показывает число объектов в задаче.
   Вася. А  если я допустил ошибку, то как мне ее исправить?
   Петя. Рядом со второй экранной кнопкой  "-" расположено вто-
рое табло со стрелками ,.  Оно  служит  для просмотра готовых
объектов. Если в  нем установить число  1, то на  экране  снова
возникнет первый объект, и ты сможешь его исправить.
   Вася. А как мне стереть отметку в таблице?
   Петя. Щекнуть по ней левой кнопкой мыши.
   Вася. А для чего служит экранная кнопка "-"?
   Петя. Для удаления  объекта из задачи.
   Хочу сделать  еще  одно  полезное  замечание:  щелчок правой
кнопкой в  таблице выводит в  ее клетки число относящихся к ним
объектов. Это  очень  удобно:  всегда можно посмотреть, сколько
объектов в каждой клетке и все ли клетки связаны с объектами.

   Направляемый всезнающим Петей, Вася быстро занес весь список
объектов в задачу и приготовился записывать ее на диск.

3.1.7. Запись готовой задачи
   Петя. Для наших задач  в  каталоге TASK я создал специальный
подкаталог KUK. Именно туда нужно записать готовый файл.
   Вася. Нажимаю экранную кнопку "Диск":
                      ┌──┬────────────────┐
                      │  │      Диск      │
                      ├──┴────────────────┤
                      │┌────┬────────────┐│
                      ││    │ Чтение...  ││
                      │└────┴────────────┘│
                      │┌────┬────────────┐│
                      ││    │ Запись...  ││
                      │└────┴────────────┘│
                      └───────────────────┘
   В дисковом меню выбираю раздел "Запись...". На экране появи-
лось окошко для ввода имени файла:
   ┌──┬──────────────────────────────────────────────────┬──┐
   │  │                      Запись задачи               │Ok│
   ├──┴──────────────────────────────────────────────────┴──┤
   │┌───┬───────┐                                           │
   ││   │Каталог│                                           │
   │└───┴───────┘                                           │
   │┌──────────────────────────────────────────────────────┐│
   ││.\TASK\noname.tab                                     ││
   │└──────────────────────────────────────────────────────┘│
   └────────────────────────────────────────────────────────┘
   Вася. В поле записано странное имя "noname.tab". Имя записа-
но с указанием пути на диске, и он тоже для нас не подходит.
   Петя. Ты можешь  "вручную" написать свой путь, а можешь выб-
рать его из каталога.
   Вася. Щелкаю мышкой по кнопке "Каталог" и на экране возника-
ет новое окно:
                   ┌──┬──────────────────┬──┐
                   │  │   К А Т А Л О Г  │Ok│
                   ├──┴──────────────────┴──┤
                   │┌──────────────────────┐│
                   ││OB\KURS\1\KLETKA\TASK ││
                   │└──────────────────────┘│
                   │ ┌──────────────────┐┌─┐│
                   │ │..                ││││
                   │ │ENGLISH           │├─┤│
                   │ │FRANCAIS          ││ ││
                   │ │GEO               ││ ││
                   │ │HIS               ││ ││
                   │ │KUK               ││ ││
                   │ │SPORT             ││ ││
                   │ │                  │├─┤│
                   │ │                  ││││
                   │ └──────────────────┘└─┘│
                   │ ┌────┬─┬─────────────┐ │
                   │ │ a b│c│d f h        │ │
                   │ └────┴─┴─────────────┘ │
                   └────────────────────────┘
   Петя. Перейди в каталог "KUK".
   Вася. Щелкаю по его имени мышкой:
                   ┌──┬──────────────────┬──┐
                   │  │   К А Т А Л О Г  │Ok│
                   ├──┴──────────────────┴──┤
                   │┌──────────────────────┐│
                   ││URS\1\KLETKA\TASK\KUK ││
                   │└──────────────────────┘│
                   │ ┌──────────────────┐┌─┐│
                   │ │..                ││││
                   │ │                  │├─┤│
                   │ │                  ││ ││
                   │ │                  ││ ││
                   │ │                  ││ ││
                   │ │                  ││ ││
                   │ │                  ││ ││
                   │ │                  │├─┤│
                   │ │                  ││││
                   │ └──────────────────┘└─┘│
                   │ ┌────┬─┬─────────────┐ │
                   │ │ a b│c│d f h        │ │
                   │ └────┴─┴─────────────┘ │
                   └────────────────────────┘
   Петя. Нажимай на кнопку "Ok", и в поле  имени файла появится
нужный путь к каталогу KUK:
   ┌──┬──────────────────────────────────────────────────┬──┐
   │  │                      Запись задачи               │Ok│
   ├──┴──────────────────────────────────────────────────┴──┤
   │┌───┬───────┐                                           │
   ││   │Каталог│                                           │
   │└───┴───────┘                                           │
   │┌──────────────────────────────────────────────────────┐│
   ││.\TASK\KUK\                                           ││
   │└──────────────────────────────────────────────────────┘│
   └────────────────────────────────────────────────────────┘
   Вася. Теперь, насколько я понимаю, надо войти в поле и допи-
сать с клавиатуры имя файла для моей задачи. Я по  традиции на-
зову ее "kuk1.tab":
   ┌──┬──────────────────────────────────────────────────┬──┐
   │  │                      Запись задачи               │Ok│
   ├──┴──────────────────────────────────────────────────┴──┤
   │┌───┬───────┐                                           │
   ││   │Каталог│                                           │
   │└───┴───────┘                                           │
   │┌──────────────────────────────────────────────────────┐│
   ││.\TASK\KUK\kuk1.tab                                   ││
   │└──────────────────────────────────────────────────────┘│
   └────────────────────────────────────────────────────────┘
   Петя. Нажимай кнопку "Ok", и задача будет записана.

3.2. Редактор меню

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

   ┌──────────────── информация о разработчиках
   │    ┌─────────── работа с диском
   │    │    ┌────── справка                 Имя меню  ──┐
   │    │    │    ┌─ выход из программы      на диске    │
┌──┼────┼────┼────┼──────────────────────────────────────┼─────┐
│┌─┴─┐┌─┴─┐┌─┴─┐┌─┴─┐                                 ┌──┴────┐│
││   ││   ││   ││   │                                 │       ││
│└───┘└───┘└───┘└───┘                                 └───────┘│
├──────────────────────────────────────────────────────────────┤
│         ┌────────────────────────────────────────┐           │
│         │ ┌───────────────┬──────────────┐ ┌───┐ │           │
│         │ │   Содержание  │    Файлы     │ │  │ │           │
│         │ ├───────────────┼──────────────┤ ├───┤ │           │
│         │ │               │              │ │   │ │           │
│         │ │  Здесь        │ Здесь        │ │   │ │           │
│         │ │  записываются │ записываются │ │   │ │           │
│         │ │  названия     │ имена файлов,│ │   │ │           │
│         │ │  задач        │ содержащих   │ │   │ │           │
│         │ │               │ задачи       │ │   │ │           │
│         │ │               │              │ │   │ │           │
│         │ │               │              │ ├───┤ │           │
│         │ │               │              │ │  │ │           │
│         │ └───────────────┴──────────────┘ └───┘ │           │
│         └────────────────────────────────────────┘           │
└──────────────────────────────────────────────────────────────┘

   Вася составил такое меню:
          ┌─────────────────────────┬────────┐
          │   Содержание            │ Файлы  │
          ├─────────────────────────┼────────┤
          │1.Информационные процессы│kuk1    │
          │<конец текста>           │        │
          └─────────────────────────┴────────┘

   У него  возникла  небольшая  проблема  со  служебной строкой
"<конец текста>". Для того чтобы "отогнать" ее вниз, он по под-
сказке всезнающего Пети нажал аккорд Shift+Ins для вставки пус-
той строки. Петя сказал также брату, что имена файлов записыва-
ются в меню без расширения. Клеточка сама знает, что расширения
у всех задач единое - "tab".
   Файл-меню Вася назвал "kuk.lst" и записал его в каталог KUK,
туда, где располагалась его задача.

   Задача 10. Вася заметил, что написанное им меню тоже являет-
ся таблицей. Для одной задачи она состоит только из одной клет-
ки, но когда задач  будет  больше, число клеток увеличится. От-
ветьте  на  следующие вопросы, предполагая что в меню  Клеточки
записано 10 задач.
   а) Какая размерность у соответствующей таблицы?
   б) Сколько в ней клеток?
   в) Какая информация записана в клетках?
   г) Какие тексты служат заголовками строк и столбцов?
   д) Может ли таблица-меню быть симметричной?
   е) Может ли таблица-меню быть квадратной?

   3.3. Новая кнопка в Мониторе

   Папа. Согласно нашему плану, теперь нужно добавить в Монитор
новую кнопку для вызова Клеточки с задачами Куков.
   Вася. Я думаю, что подобно Веселым Картикам, Клеточка запус-
кается с параметром. А параметром служит имя файла-меню.
   Папа. Совершенно правильно!
   Вася. Ну, тогда мне будет понятно, как заполнить паспорт для
этой новой кнопки:

┌───┬──────────────────────────────────────────────────────┬───┐
│   │                    Д О Б А В И Т Ь                   │ Ok│
├───┴──────────────────────────────────────────────────────┴───┤
│     ┌───┐   ┌───┬──────────────┐      ┌───┬────────────────┐ │
│     │░░░│   │░░░│Файлы программ│      │░░░│Файлы пиктограмм│ │
│     └───┘   └───┴──────────────┘      └───┴────────────────┘ │
│            ┌────────────────────────────┐               ┌──┐ │
│ Имя кнопки │Задачи Кука                 │     Клавиатура│к │ │
│            └────────────────────────────┘               └──┘ │
│            ┌───────────────────────────────────────────────┐ │
│ Программа  │.\KURS\1\KLETKA\tabs.exe .\TASK\KUK\kuk.lst    │ │
│            └───────────────────────────────────────────────┘ │
│            ┌───────────────────────────────────────────────┐ │
│ Пиктограмма│.\ICON\kuk.cut                                 │ │
│            └───────────────────────────────────────────────┘ │
│┌─────────┐ ┌───┬──────────────┐         ┌───┬──────────────┐ │
││ ░░░░░░░ │ │Нет│Страница      │         │Нет│Параметры     │ │
││ ░░░░░░░ │ └───┴──────────────┘         └───┴──────────────┘ │
││ ░░░░░░░ │ ┌───┬──────────────┐         ┌───┬──────────────┐ │
│└─────────┘ │Нет│Команда DOS   │         │Нет│Ждать         │ │
│            └───┴──────────────┘         └───┴──────────────┘ │
└──────────────────────────────────────────────────────────────┘

   Новая кнопка, появившаяся на рабочем столе Монитора, порадо-
вала честолюбивого Васю. Он сказал, что страница с ней выглядит
гораздо приятнее.
┌──────────────────────────────────────────────────────────────┐
│┌────┐┌────┐┌────┐                      ┌────┐┌────┐┌────────┐│
││STOP││ Р  ││ i  │        ЗАДАЧИ        │  П ││ +  ││18:20:25││
│└────┘└────┘└────┘                      └────┘└────┘└────────┘│
├──────────────────────────────────────────────────────────────┤
│                                                              │
│       ┌────┐              ┌────┐             ┌────┐          │
│       │░░░░│              │░░░░│             │░░░░│          │
│       └────┘              └────┘             └────┘          │
│      География           История             Спорт           │
│                                                              │
│       ┌────┐              ┌────┐             ┌────┐          │
│       │░░░░│              │░░░░│             │░░░░│          │
│       └────┘              └────┘             └────┘          │
│      English            Задачи Кука         Francais         │
│                                                              │
│                                                              │
│                                                              │
│                                                              │
│                                                              │
└──────────────────────────────────────────────────────────────┘

   Задача 11. Какие файлы входят теперь в каталог KUK на диске?
Нарисуйте схему-дерево этого каталога.
   Задание 1. Повторите все действия Куков по созданию новой за-
дачи, нового меню и новой кнопки в Мониторе.
   Задание 2. Придумайте несколько задач для  Клеточки. При по-
мощи программы Клеточка-Редактор  создайте  для них файлы и по-
местите их в каталог KUK. Дополните новыми пунктами меню Кука и
проверьте качество задач пробным решением.
