\b;Упражнение
\l;Бот\u object\bottr; должен пройти через все \l;синие кресты\u object\waypoint; на земле. Путь, который следует преодолеть, состоит из двух квадратов. Первый - 15 метров, второй - 25 метров.

\image tproc1a 8 8;
\b;Общий принцип
Чтобы решить эту задачу, вы должны создать функцию, которая приказывает боту двигаться по квадрату с указанной стороной. Поэтому основная программа оказывается очень простой:\c;
\s;extern void object::Function1( )
\s;{
\s;	Square(15);
\s;	Square(25);
\s;}
\n;
Вам все еще нужно определить функцию, которая называется \c;Square\n;. Чтобы это сделать, вы должны написать несколько инструкций, вне \l;блока\u cbot\bloc; , которые до этого времени были фреймом каждой из ваших программ. В самом конце программы после последней закрывающей скобки мы определим функцию \c;Square\n;. Тогда программа примет следующий вид:
\c;
\s;extern void object::Function1( )
\s;{
\s;	\n;главная функция ...\c;
\s;}
\s;
\s;void object::Square(float length)
\s;{
\s;	\n;новая функция ...\c;
\s;}
\n;
Теперь давайте детально разберем различные элементы задания функции \c;Square\n;:

\c;\l;void\u cbot\void;\n;
Это значит, что эта функция не будет возвращать значение.

\c;\l;object\u cbot\object;::\n;
Если вы напишите это перед именем функции, то сможете с ее помощью получить доступ ко всем характеристикам бота, таким как \c;позиция\n;, \c;ориентация\n;, и т.п. В этом упражнении этот элемент не обязателен, так как нам для функции характеристики ботов не нужны.

\c;Square (  )\n;
Это имя функции. Вы можете назвать ее Square, или дать любое другое имя.

\c;\l;float\u cbot\float; length\n;
Здесь вы задаете параметры, которые получит функция после того как функция будет вызвана. При первом вызове функции с помощью \c;Square(15)\n;, переменная \c;length\n; будет содержать значение \c;15\n;. При втором вызове, \c;length\n; будет \c;25\n;.

Вот детальное описание того, что произойдет после запуска программы:
- Сначала будет запущена главная функция \c;Function\n;.
- В строке \c;Square(15)\n; программа будет следовать за красной стрелкой и перейдет в функцию \c;Square\n; в первый раз, \c;length\n; содержит \c;15\n;.
- При завершении функции \c;Square\n; программа следует за оранжевой стрелкой и возвращается к главной функции.
- В строке \c;Square(25)\n; программа следует за синей стрелкой и переходит в функцию \c;Square\n; во второй раз.
- При окончании функции \c;Square\n;, программа следует за голубой стрелкой и возвращается к главной функции.

\image tproc1b 17 12;
В функции \c;Square\n; используйте инструкции \c;\l;move\u cbot\move;\n; и \c;\l;turn\u cbot\turn;\n;. Чтобы сделать ее покороче, вы можете использовать цикл \c;\l;for\u cbot\for;\n;, который повторит инструкции \c;\l;move\u cbot\move;\n; и \c;\l;turn\u cbot\turn;\n; 4 раза; но это не обязательно.
\c;
\s;void object::Square(float length)
\s;{
\s;	for ( int i=0 ; i<4 ; i=i+1 )
\s;	{
\s;		move(length);
\s;		turn(90);
\s;	}
\s;}
\n;
\t;См. также
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
