\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;, так что ее смогут использовать остальне боты.

\t;См. также
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
