\b;Функции С помощью функций программу можно разделить на несколько частей, которые будут выполнять каждая свою работу. Давайте представим следующую программу¦: \c; \s;extern void object::Remote( ) \s;{ \s; send("order", 1, 100); \s; wait(5); \s; send("order", 3, 100); \s; wait(5); \s; send("order", 2, 100); \s; wait(5); \s; send("order", 4, 100); \s; wait(5); \s;} \n; \c;send\n; и \c;wait\n; повторяются много раз. Поэтому, мы можем сделать функцию, которая заменит их: \c; \s;void object::SendToPost( float op ) \s;{ \s; send("order", op, 100); \s; wait(5); \s;} \s;extern void object::Remote( ) \s;{ \s; SendToPost(1); \s; SendToPost(3); \s; SendToPost(2); \s; SendToPost(4); \s;} \n; Функции могут иметь параметры¦: \c; \s;void Example( int a, float x, string s ) \n; Функция \c;Exemple\n; функция получит целое \c;a\n;, число с плавающей точкой \c;x\n; и строку \c;s\n;. Параметры - это ничто иное, как просто копии значений в переменных. Если вы передадите \c;int\n; функции, то ее параметр станет копией этого значения, т.е. функция сможет изменять эту копию незатрагивая оригинал. Если вы передадите \l;классу\u cbot\class; массив \l;array\u cbot\array; как параметр функции, то функция получит только \l;ссылку\u cbot\pointer; к экземпляру массива. Это означает, что если вы измените массив в функции, то будет модифицирован только экземпляр этой функции. Функция может возвращать результат с помощью инструкции \c;\l;return\u cbot\return;\n;. Поэтому функции должны быть объявлены только как тип: \c; \s;float Mean( float a, float b ) \s;{ \s; return (a+b)/2; \s;} \s; \s;extern void object::Test( ) \s;{ \s; float value; \s; value = Mean(2, 6); \s; message( value ); // will display 4 \s;} \n; Пример¦: \c; \s;float Pi( ) \s;{ \s; return 3.1415; \s;} \s; \s;string Sign( float a ) \s;{ \s; if ( a > 0 ) return "positive"; \s; if ( a < 0 ) return "negative"; \s; return "null"; \s;} \n; вы также можете объявить несколько функций с одинаковыми именами, но разными параметрами¦: \c; \s;float Pythagoras( float a, float b ) \s;{ \s; return sqrt((a*a)+(b*b)); \s;} \s; \s;float Pythagoras( float a, float b, float c ) \s;{ \s; return sqrt((a*a)+(b*b)+(c*c)); \s;} \n; CBOT будет вызывать ту или иную функцию так, что вызов будет зависеть отт параметров. Вы также можете объявить функцию \l;общедоступной\u cbot\public;, так что ее смогут использовать остальне боты. You can also declare a function \l;public\u cbot\public; so it can be used by other bots. \t;См. также \l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.