\chapter{Исполнитель Робот}

\section{Введение}

\subsection{Обстановки Робота}
\label{robotfield}

Исполнитель Робот существует в некоторой \emph{обстановке} --- прямоугольном поле, разбитом на клетки, между которыми могут стоять стены. Обстановка, в которой находится Робот, называется \emph{текущей} обстановкой Робота. Кроме того, определена еще одна обстановка Робота --- \emph{стартовая} обстановка. Стартовая обстановка используется при управлении Роботом из программы, подробнее см.~ниже~\ref{robotmanage}.

Робот может передвигаться по полю, закрашивать клетки, измерять температуру и радиацию. Робот не может проходить сквозь стены, но может проверять, есть ли рядом с ним стена. Робот не может выйти за пределы прямоугольника (по периметру стоит <<забор>>). Подробно система команд Робота описана ниже.

Удобно представлять себе, что Робот существует всегда. В частности, когда начинается сеанс работы системы Кумир, Робот уже существует и для него определены и текущая, и стартовая обстановка (они совпадают).

Обстановки Робота могут храниться в файлах специального формата (расширение .fil).

\subsection{Окно наблюдения за Роботом}

В Кумире есть специальное устройство --- \emph{Окно наблюдения за Роботом} (иногда для краткости будем говорить \emph{Окно Робота}). В этом окне всегда видна текущая обстановка Робота, включая положение самого Робота. Подробнее об окне Робота см.~\ref{robotwindow}.

\subsection{Управление Роботом из программы}
\label{robotmanage}

Кумир-программа, управляющая Роботом, должна начинаться со строки \textsf{использовать \mbox{Робот}} (подробнее --- см.~описание языка Кумир). При выполнении этой строки Кумир помещает Робота в некоторую заранее определенную обстановку. Эта обстановка и называется \emph{стартовой} обстановкой Робота.

Таким образом, в каждый момент сеанса работы системы Кумир определены две обстановки Робота --- \emph{текущая} и \emph{стартовая}. Текущая обстановка в любой момент показывается в окне наблюдения за Роботом.

\subsection{Как установить стартовую обстановку}

В системе Кумир есть средства, с помощью которых Школьник может задать нужную ему стартовую обстановку. Это можно сделать двумя способами. Один способ --- загрузить стартовую обстановку из указанного Школьником файла. Другой способ --- редактировать существующую стартовую обстановку с помощью специального редактора стартовых обстановок.

Редактор стартовых обстановок является частью системы Кумир. Редактирование обстановки происходит в отдельном окне (окно редактирования стартовой обстановки), структура этого окна аналогична структуре окна наблюдения Робота. Редактируемая обстановка может быть сохранена в файл или непосредственно использоваться в качестве стартовой обстановки. Подробнее редактирование стартовых обстановок описано в~\ref{robotedit}.

\subsection{Ручное управление Роботом}

В систему Кумир входит пульт ручного управления Роботом (см.~\ref{robotpult}). Этот пульт позволяет вручную управлять Роботом --- выдавать команды, входящие в систему команд Робота. Использовать пульт можно в любое время, кроме тех временных промежутков, когда происходит непрерывное выполнение Кумир-программы. В частности, Роботом можно управлять с пульта в те моменты, когда выполнение Кумир программы приостановлено (система Кумир находится в состоянии <<Пауза>>).

\section{Окно наблюдения за Роботом}
\label{robotwindow}

\subsection{Видимое и скрытое состояние окна}

Окно наблюдения за Роботом создается в момент начала сеанса работы системы Кумир и доступно до окончания сеанса. Во время сеанса работы окно может находиться в одном из двух состояний --- видимо или скрыто (с отображением на панели задач или без).

В верхнем  правом углу окна Робота (в правом конце заголовка) есть две стандартные кнопки: \textbf{\_} (скрыть с отображением в панели задач) и \textbf{X} (скрыть без отображения в панели задач).

В момент запуска Кумира окно наблюдения за Роботом скрыто. Чтобы сделать окно видимым, Школьник должен нажать кнопку <<Показать окно Робота>> на панели инструментов. Кроме того, окно Робота автоматически становится видимым  при запуске на выполнение программы, содержащей строку \textsf{использовать Робот} (см.~\ref{robotstartfield}). Окно Робота становится видимым на том же месте, где оно находилось, когда его последний раз сделали скрытым.

При окончании сеанса Работы система запоминает положение окна наблюдения за Роботом на экране. При следующем запуске окно появится на том же самом месте.
	
\subsection{Свойства окна наблюдения за Роботом}

На окне наблюдения за Роботом нет ни меню, ни кнопок. Таким образом, в окне Робота есть только полоса заголовка и рабочее поле.

В левой части заголовка есть надпись <<Робот>>, за которой следует имя файла, в котором хранится стартовая обстановка. Если такого файла нет, то вместо имени файла выводится слово <<временная>>.  Правила, определяющие привязку стартовой обстановки к определенному файлу, описаны ниже.

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

\subsection{Что входит в описание обстановки Робота}

Обстановка Робота представляет собой прямоугольное поле, окруженное забором и разбитое на клетки. Говоря более точно, обстановка описывается следующими величинами:
\begin{enumerate}
\item размеры обстановки --- количество строк (1--10) и количество столбцов (1--16)
\item для каждой клетки:
\begin{itemize}
\item наличие стен вокруг клетки
\item признак закрашенности
\item величина радиации (измеряется в условных единицах, может принимать любое вещественное значение от 0 до 100)
\item температура (измеряется в градусах Цельсия, может принимать любое вещественное значение от -273 до +233)
\end{itemize}
\end{enumerate}

\emph{Примечание.} Нижняя возможная температура --- это (приблизительно) абсолютный ноль (0 градусов по шкале Кельвина). Верхняя температура --- это температура, при которой горят книги (451 градус по Фаренгейту).	

Система команд Робота позволяет ему определить значения всех этих характеристик клетки (см.~ниже).

Кроме того, в клетке могут быть пометки, видимые  наблюдателю, но не доступные <<органам чувств>> Робота:
\begin{itemize}
\item символы в левом верхнем и левом нижнем углах
\item точка в правом нижнем углу
\end{itemize}

Частью описания обстановки является и положение Робота. Как и для чтения пометок, у Робота нет средств, чтобы определить свои координаты.

\subsection{Изображение текущей обстановки в окне наблюдения}

Изображение текущей обстановка всегда полностью помещается в рабочем поле окна наблюдения за Роботом (см.~\ref{robotfield}).

Фон рабочего поля --- зеленый. Закрашенные клетки --- серые. Между клетками --- тонкие черные линии. Стены (в том числе --- <<забор>> по периметру прямоугольника обстановки) изображаются толстыми желтыми линиями.

В клетке рабочего поля окна наблюдения Робот изображается ромбиком. Температура и радиация не показываются, они могут быть только измерены Роботом. Символы в клетках, наоборот, видны человеку, но Робот не умеет их считывать.

\subsection{Когда и как меняется текущая обстановка Робота}

Текущая обстановка изменяется при выполнении команд Робота, подаваемых из программы или с пульта (см.~\ref{robotpult}). Изменения текущей обстановки тут же отображаются в окне наблюдения за Роботом, если оно в этот момент видимо.

Выполнение команд Робота влияет на текущую обстановку следующим образом. Команды перемещения и закрашивания отображаются в текущей обстановке естественно.

Если команда перемещения выдает отказ, то текущая обстановка не изменяется, а на экране (если он виден) соответствующий угол Робота закрашивается красным. Красный цвет снимается:
\begin{itemize}
\item при выполнении следующей команды Роботу с пульта
\item при выполнении команды \textsf{использовать Робот}
\item при принудительном помещении Робота в стартовую обстановку (см.~ниже)
\end{itemize}

Команды проверок и измерения радиации и температуры на текущую обстановку не влияют.

Кроме того, в двух случаях происходит принудительное помещение Робота в стартовую обстановку (текущая обстановка становится равной стартовой). Это происходит:
\begin{itemize}
\item при запуске Кумир-программы, которая использует Робот (окно наблюдения при этом становится видимым, даже если оно было скрыто)
\item при изменении имени файла стартовой обстановки Робота (в этой ситуации невидимое окно остается невидимым)
\end{itemize}

\section{Стартовая обстановка, ее изменение и связь с текущей обстановкой}
\label{robotstartfield}

\subsection{Вводные сведения}

Стартовая обстановка --- это обстановка, в которую Робот будет помещен при запуске Кумир-программы, т.~е. при выполнении команды \textsf{использовать Робот} (см.~\ref{robotmanage}).

Со стартовой обстановкой связана специальная настройка Кумира --- текстовая строка, в которой записано имя некоторого файла, содержащего описание обстановки Робота.  Как правило, в качестве стартовой настройки используется обстановка, хранящаяся в этом файле. Исключения описаны в~\ref{robotstartfielddefine}.

Увидеть имя файла стартовой обстановки (для краткости --- \emph{ФСО}) можно с помощью вкладки <<Каталоги и файлы>> окна настройки. Как можно менять имя ФСО описано в~\ref{robotchangefso}.
	
\subsection{Как определяется стартовая обстановка}
\label{robotstartfielddefine}

Как правило, стартовая обстановка --- это обстановка, хранящаяся в ФСО.

Из этого правила есть два исключения. Одно из них связано с тем, что файл с указанным именем может не содержать корректного описания обстановки или вообще не существовать. Этот случай рассмотрен ниже в~\ref{robotchangefso}.

Другое исключение связано с возможностью упрощенного внесения временных изменений в стартовую обстановку. А именно, если в данный момент в Кумир-системе происходит редактирование файла обстановки, то текущее промежуточное значение этой редактируемой обстановки считается временной стартовой обстановкой. Говоря неформально, действия пользователя по подготовке обстановки имеют приоритет над содержимым строки с именем ФСО.

Во время редактирования в заголовке окна наблюдения за Роботом вместо имени файла написано <<временная>>. Имя файла восстанавливается в окне Робота в момент окончания редактирования. Редактирование обстановок подробно описано в~\ref{robotedit}.

\subsection{Изменение имени файла стартовой обстановки}
\label{robotchangefso}

\subsubsection{Общие сведения}

Школьник может изменить имя файла стартовой обстановки (ФСО) двумя способами:
\begin{itemize}
\item с помощью команды <<Сменить стартовую обстановку>> меню Робота
\item с помощью редактора стартовых обстановок
\end{itemize}
Состояние окна наблюдения (видимо/скрыто) при этих действиях не меняется.

При изменении строки с именем ФСО, стартовая обстановка становится текущей (Робот помещается в новую стартовую обстановку), что отражается в окне наблюдения за Роботом.
	
\subsubsection[Команда ''Сменить стартовую обстановку'']{Команда <<Сменить стартовую обстановку>>}

Изменение строки с именем ФСО происходит с помощью стандартного диалога выбора файла. При этом в качестве каталога по умолчанию предлагается каталог текущего файла стартовой обстановки. Если выбранный файл существует и содержит корректную обстановку, то эта обстановка считается стартовой. Она же объявляется \emph{текущей}, т.~е. Робот помещается в эту обстановку. Это отображается в окне наблюдения Робота. Имя файла стартовой обстановки (без директории) показывается в левой части заголовка окна наблюдения за Роботом.

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

\subsubsection{Изменение стартовой обстановки с помощью редактора стартовых обстановок Робота}

Редактор стартовых обстановок Робота --- составная часть системы Кумир, его работа подробно описана в~\ref{robotedit}. Он позволяет добавлять и удалять стены, менять размеры обстановки и т.~п.

В меню этого редактора есть команда <<Сохранить как стартовую>>. По этой команде вызывается стандартный диалог сохранения. По умолчанию предлагается текущее имя файла стартовой обстановки.  При корректном выполнении операции сохранения новое имя файла стартовой обстановки запоминается, а сохраненная обстановка объявляется стартовой. При этом новая стартовая обстановка одновременно становится текущей, т.~е. показывается в окне наблюдения за Роботом.

\emph{Примечание.} В заголовке окна наблюдения (до окончания  редактирования стартовой обстановки) остается слово <<временная>>, а не имя файла.

\subsection{Начальная установка имени файла стартовой обстановки}

\subsubsection{Запуск системы Кумир}

Система Кумир при окончании сеанса работы запоминает в своих настройках  значение имени файла со стартовой обстановкой.  При новом запуске система Кумир проверяет, существует ли файл с запомненным именем. Если файл существует и содержит корректную обстановку, то эта обстановка считается стартовой. Она же объявляется \emph{текущей}, т.~е. Робот помещается в эту обстановку. Это отображается в окне наблюдения Робота. Имя файла стартовой обстановки (без директории) показывается в левой части заголовка окна наблюдения за Роботом.

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

\subsubsection{Установка имени файла стартовой обстановки  при инсталляции системы Кумир}

При инсталляции системы Кумир в качестве имени ФСО  записывается полное имя файла со стандартной обстановкой, который входит в поставку Кумира (10x16.fil). Стандартной обстановкой является пустая обстановка максимально допустимого размера 10*16 с Роботом в левом верхнем углу. Слово <<пустая>> означает, что
\begin{itemize}
\item в обстановке нет стен (кроме проходящего по периметру забора)
\item в клетках нет точек и символов
\item во всех клетках радиация 0 и температура 0
\end{itemize}

\section{Редактирование стартовой обстановки}
\label{robotedit}

\subsection{Общие сведения}
\label{roboteditcommon}

Редактор стартовых обстановок можно использовать:
\begin{itemize}
\item для подготовки новых обстановок
\item при отладке Кумир-программ для оперативного внесения небольших изменений в стартовую обстановку
\end{itemize}

Запуск редактирования производится с помощью команды <<Редактировать стартовую обстановку>> меню <<Инструменты>>. По этой команде появляется специальное окно --- \emph{окно редактирования стартовой обстановки} (для краткости --- \emph{окно редактирования}). Выход из состояния редактирования стартовой обстановки производится с помощью соответствующей кнопки на окне редактирования  или по команде <<Выход>> меню <<Обстановка>> на этом окне.

Свойства окна редактирования аналогичны свойствам окна наблюдения за Роботом. Основных отличий – два:
\begin{itemize}
\item фон рабочего поля --- синий
\item в окне редактирования над рабочим полем есть стандартная полоса, содержащая главное меню окна и инструментальные кнопки
\end{itemize}

После включения режима редактирования строка <<Редактировать стартовую обстановку>> становится неактивной, т.~е. редактировать одновременно две обстановки нельзя. 

\subsection{Главное меню окна редактирования}
\label{robotmainmenu}

\subsubsection{Общие сведения}

В полосе меню окна редактирования стартовой обстановки  имеется выпадающее меню <<Обстановка>> и команда <<Помощь>>.

По команде  «Помощь» появляется окно с текстом:
\begin{center}
\begin{tabular}{|p{16cm}|}
\hline
\multicolumn{1}{|c|}{\textbf{Редактирование обстановки}}\\

Поставить/убрать стену --- щелкнуть по границе между клетками.

Закрасить/сделать чистой клетку --- щелкнуть по клетке.

Поставить/убрать точку --- щелкнуть по клетке при нажатой клавише Ctrl.

Установить температуру, радиацию, метки --- щелкнуть по клетке правой кнопкой.

Переместить Робота --- тащить мышью.

Изменить размеры обстановки --- команда <<Новая обстановка>> меню <<Обстановка>>.\\
\hline
\end{tabular}
\end{center}

Меню «Обстановка» содержит следующие команды:
\begin{itemize}
\item Новая обстановка
\item Открыть
\item Недавние обстановки
\item Сохранить
\item Сохранить как\dots
\item Сохранить как стартовую
\item Печать в файл
\item Выход
\end{itemize}

\subsubsection[Команды Меню ''Обстановка'']{Команды Меню <<Обстановка>>}

Перечислим кратко особенности выполнения каждой команды.

\paragraph{Новая обстановка} Открывается стандартная форма. Ввести число, превосходящее максимальный размер нельзя. Допустимые размеры: по высоте (строки) --- от 1 до 10, по ширине (столбцы) – от 1 до 16.

\paragraph{Открыть} Открывает для редактирования файл с обстановкой, для чего  вызывается стандартная форма. О выборе директории по умолчанию --- см.~ниже~\ref{robotfieldfiles}.

\paragraph{Недавние обстановки} Работает стандартно. В качестве недавних обстановок запоминаются все обстановки, к которым применялись операции сохранения и записи (см.~\ref{robotfieldfiles}).

\paragraph{Сохранить} Работает стандартно. Если обстановка была создана командой <<Новая обстановка>>, то спрашивает имя в стандартной форме. О выборе директории по умолчанию --- см.~\ref{robotfieldfiles}.

\paragraph{Сохранить как\dots} Работает так же, как <<Сохранить>>, но с обязательным запросом имени файла сохранения. Эта команда не влияет на имя файла стартовой обстановки.

\paragraph{Сохранить как стартовую} То же, что и <<Сохранить как\dots>>, но с изменением имени файла стартовой обстановки.

\paragraph{Печать в файл} Создание PDF-файла с изображением окна (см.~\ref{robotprinttopdf}).

\paragraph{Выход} Cиноним --- \textbf{\textsf{X}} на заголовке окна. Завершает редактирование; если последняя обстановка не сохранена --- переспрашивает.

\subsection{Непосредственное редактирование обстановки}

Основное редактирование обстановок Робота ведется в непосредственном режиме. Предусмотрены следующие операции непосредственного редактирования:
\begin{itemize}
\item поставить/убрать стену --- щелкнуть по границе между клетками
\item закрасить/сделать чистой клетку --- щелкнуть по клетке
\item поставить/убрать точку --- щелкнуть по клетке при нажатой клавише Ctrl
\item переместить Робота --- тащить мышью
\item установить температуру, радиацию, метки --- щелкнуть по клетке правой кнопкой
\end{itemize}

В последнем случае появляется форма, с помощью которой можно установить нужные значения.

\subsection{Операции с файлами обстановок}
\label{robotfieldfiles}

В заключение этого раздела перечислим все операции с файлами обстановок (расширение .fil), предусмотренные в системе Кумир. Соответствующие им команды входят в меню «Робот» главного окна (команды «Сменить стартовую обстановку», «Сохранить обстановку в файл») и в меню «Обстановка» окна редактирования стартовой обстановки (команды «Открыть», «Сохранить»,  «Сохранить как\dots», «Сохранить как стартовую»).

Система Кумир запоминает файлы, к которым применялись указанные операции. Список последних таких файлов доступен с помощью команды «Недавние файлы» меню «Обстановка». Во всех перечисленных ниже операциях с файлами обстановок в качестве директории по умолчанию предлагается директория, использовавшаяся в последней по времени выполнения операции с файлами обстановок.

\section{Пульт Робота}
\label{robotpult}

\subsection{Общие сведения}

Пульт Робота располагается в отдельном окне и предназначен для управления Роботом. С помощью пульта Роботу можно передавать команды, Робот непосредственно выполняет эти команды. 

Пользоваться пультом можно как при видимом окне наблюдения за Роботом, так и когда это окно скрыто (управление Роботом вслепую).

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

Окно Пульта создается при запуске системы Кумир.  Его свойства --- такие же, как у окна наблюдения за Роботом  и окна редактирования стартовой обстановки.  В частности: при запуске системы Кумир пульт скрыт; пользователь не может менять размеры окна пульта. Чтобы сделать пульт видимым, нужно воспользоваться командой «Пульт Робота» меню «Робот» на главном окне системы Кумир или соответствующей этой строке инструментальной клавишей.

Связь Пульта с Роботом возможна всегда, кроме тех моментов, когда идет непрерывное выполнение программы, использующей Робот (т.~е. программы, которая содержит строку \textsf{использовать Робот}). В частности, не имеет значения, идет редактирование стартовой обстановки или нет. О наличии связи свидетельствуют индикаторы в левом верхнем углу пульта.

По желанию пользователя, система Кумир может «перехватывать» команды, передаваемые с пульта, и вставлять их в текст Кумир-программы (см.~\ref{robotcatchcommands}).

\subsection{Общий вид Пульта}

На пульте Робота есть:
\begin{itemize}
\item лампочки-индикаторы:
	\begin{itemize}
	\item зеленая лампочка-индикатор «Связь установлена»
	\item красная лампочка-индикатор «Нет связи»
	\end{itemize}
\item табло для семи последних выполненных команд, разделенное на левую часть (собственно команда) и правую часть (реакция Робота)
\item вспомогательные кнопки табло: «Сброс табло» (кнопка очистки, справа от табло); прокрутка табло (две кнопки сверху и снизу)
\item кнопочная панель из 9 кнопок, служащая для набора команд Роботу
\end{itemize}

\subsection{Кнопочная панель. Передача команд Роботу}

На панели есть:
\begin{itemize}
\item 4 кнопки-стрелки (они соответствуют командам передвижения Робота)
\item кнопка «закрасить» (в центре)
\item кнопки «температура» и «радиация» (в левом верхнем и левом нижнем углах)
\item две кнопки-префикса «Стена/Закрашено» и «Свободно/Чисто» (в правом верхнем и левом нижнем углах)
\end{itemize}

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

Чтобы передать команду проверки нужно последовательно нажать две кнопки: сначала --- префикс («Стена/Закрашено» и «Свободно/Чисто»), а потом --- основную (закрасить или одну из стрелок). 

\emph{Примеры:}
\begin{enumerate}
\item Чтобы передать Роботу команду проверки «слева свободно?» нужно сначала нажать кнопку-префикс «Свободно/Чисто», а затем кнопку «влево». 
\item Чтобы передать Роботу команду проверки «клетка закрашена?» нужно сначала нажать кнопку-префикс «Стена/Закрашено», а затем кнопку «закрасить».
\end{enumerate}

После того, как нажата кнопка-префикс, она меняет цвет. Если после кнопки-префикса нажата кнопка, отличная от стрелок и кнопки «закрасить», то исходная кнопка-префикс просто будет забыта.

\subsection{Использование табло}

На табло выводятся все команды, передаваемые Роботу вмести с реакцией Робота на эти команды. В ответ на команды перемещения в правой части появляется надпись «ОК» или «Отказ». Если с Роботом нет связи, на табло выдается «Нет связи».

Вывод на табло при первом включении Пульта в сеансе работы системы Кумир или после нажатия кнопки «Сброс табло» начинается с верхней строки. Когда табло заполнилось, начинается прокрутка и вывод идет в последнюю строку табло. Выше и ниже табло есть две кнопки для прокрутки его содержимого на одну строку вверх/вниз.

\subsection{Перехват команд пульта системой Кумир}
\label{robotcatchcommands}

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

При включенном режиме перехвата команд пульта возможно и обычное редактирование, в частности --- изменение положения курсора с помощью мыши.

Для команд-действий (вверх, вниз, влево, вправо, закрасить) вставляется вызов соответствующего алгоритма-процедуры. Для других команд Робота, которым соответствуют алгоритмы-функции, вставляются команды вывода, например:\\
{\sffamily
\textbf{вывод} ''Радиация: '', радиация, \textbf{нс}\\
\textbf{вывод} ''Сверху стена: '', сверху стена, \textbf{нс}}

\section{Робот и главное меню}

\subsection{Общие сведения}

К Роботу относится меню «Робот» главного окна системы «Кумир» (полностью), а также две команды из других меню --- «Редактировать стартовую обстановку» меню «Инструменты» (см.~\ref{roboteditcommon}) и «Перехватывать команды пульта» меню «Редактирование» (см.~\ref{robotcatchcommands}). Меню Робот содержит следующие строки:
\begin{itemize}
\item Показать поле Робота
\item Напечатать обстановку
\item Сохранить обстановку в файл
\item Сменить стартовую обстановку
\item Вернуться в стартовую обстановку
\item Пульт Робота
\end{itemize}

Для действий «Показать поле Робота» и «Пульт Робота» есть инструментальные кнопки на главной панели.

Ниже отдельно описана каждая из команд меню «Робот».

\subsection[Команды меню ''Робот'']{Команды меню «Робот»}

\begin{itemize}
\item \emph{Показать поле Робота} --- делает видимым окно наблюдения за Роботом.
\item \emph{Напечатать обстановку} --- создает файл в формате PDF, изображающий текущую обстановку в цветном или в черно-белом варианте.\label{robotprinttopdf}
\item \emph{Сохранить обстановку в файл} --- создает текстовый файл с описанием обстановки во внутреннем формате .fil. Этот файл в дальнейшем может быть загружен в качестве стартовой обстановки (команда «Сменить стартовую обстановку» ниже) или при редактировании стартовой обстановки (команда «Открыть» окна редактирования стартовой обстановки). Использует стандартный диалог. О выборе директории по умолчанию --- см.~\ref{robotfieldfiles}.
\item \emph{Сменить стартовую обстановку} --- устанавливает новое имя файла стартовой обстановки (с помощью стандартного диалога) и загружает саму стартовую обстановку. О выборе директории по умолчанию --- см.~\ref{robotfieldfiles}.
\item \emph{Вернуться в стартовую обстановку} --- делает стартовую обстановку текущей.
\item \emph{Пульт Робота} --- делает видимым пульт Робота.
\end{itemize}

\section{Справочник. Система Кумир+Робот (заключение)}

В этом разделе мы перечисляем все объекты и действия, которые относятся к исполнителю Робот.

\subsection{Обстановки}

Робот существует в определенной обстановке. Описания обстановок хранятся в текстовых файлах специального формата (формат .fil).

Обстановка, в которой находится Робот в данный момент (включая информацию о положении Робота), называется \emph{текущей} обстановкой.

Кроме того, есть особая \emph{стартовая} обстановка --- обстановка, в которую принудительно помещается Робот в начале выполнения программы, использующей Робот.

Одна из настроек Робота содержит имя файла --- файла стартовой обстановки. Как правило, стартовая обстановка --- это обстановка, описанная в этом файле.

Из этого правила есть два исключения:
\begin{enumerate}
\item если файл с указанным именем не содержит корректного описания обстановки, то в качестве стартовой обстановки берется стандартная обстановка (см.~\ref{robotchangefso})
\item если включен \emph{режим редактирования стартовой обстановки}, то в качестве стартовой берется временная стартовая обстановка --- та, которая в данный момент находится в окне редактирования.
\end{enumerate}


\subsection{Окна}

С Роботом связаны три окна:
\begin{itemize}
\item окно наблюдения за Роботом (см.~\ref{robotwindow})
\item окно редактирования стартовой обстановки (см.~\ref{robotedit})
\item окно пульта (см.~\ref{robotpult})
\end{itemize}

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

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

Команда, которая делает видимым окно редактирования стартовой обстановки, находится в меню «Инструменты». Эта команда («Редактировать стартовую обстановку») одновременно включает режим редактирования стартовой обстановки. Выход из режима редактирования стартовой обстановки производится с помощью команды «Выход» меню «Обстановка» окна редактирования или с помощью кнопки этого окна. Во время режима редактирования строка «Редактировать стартовую обстановку» неактивна.

На окне наблюдения за Роботом нет собственного меню (это окно только для наблюдения). На окне редактирования есть меню (см.~\ref{robotmainmenu}). Одна из команд этого меню («Сохранить как стартовую\dots») приводит к изменению текущей обстановки, что находит отражение в окне наблюдения за Роботом. 

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

\subsection{Правила изменения обстановок}

\emph{Текущая обстановка} изменяется:
\begin{itemize}
\item при выполнении Роботом команд (посылаемых из программы или с пульта)
\item при принудительном помещении Робота в стартовую обстановку
\end{itemize}

Робот принудительное помешается в \emph{стартовую обстановку}:
\begin{itemize}
\item в начале выполнения программы, содержащей строку \textsf{использовать Робот}
\item при выполнении операции, приводящей к изменению имени файла стартовой обстановки
\end{itemize}

\emph{Имя файла стартовой обстановки} изменяется при выполнении следующих команд:
\begin{itemize}
\item команды  «Сменить стартовую обстановку» меню «Робот»
\item команды «Сохранить как стартовую\dots» меню «Обстановка» окна редактора стартовых обстановок
\end{itemize}

\emph{Стартовая обстановка} изменяется:
\begin{itemize}
\item при изменении имени файла стартовой обстановки (см. выше)
\item в процессе редактирования стартовой обстановки («временная стартовая обстановка»: стартовой обстановкой является обстановка, находящаяся в окне редактирования стартовой обстановки)
\end{itemize}
