colobot-data/help/cbot/R/bloc.txt

50 lines
3.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

\b;Блоки
Можно использовать скобки \c;{ }\n; чтобы сгруппировать несколько инструкций вместе и составить из них целый блок, например:
\c;
\s; {
\s; float t;
\s; t = a;
\s; a = b;
\s; b = t; // переключает между a и b
\s; }
\n;
Каждая инструкци в блоке заканчивается \l;двоеточием\u cbot\term;, но не сам блок.
Расмотрим следующий пример с инструкцией \c;\l;if\u cbot\if;\n; чтобы проиллюстрировать блоки в программах:
\c;
\s; if ( a < b )
\s; \n;инструкция 1\c;;
\s; \n;инструкция 2\c;;
\s; \n;инструкция 3\c;;
\n;
Если \l;состояние\u cbot\cond; верно, то инструкции 1, 2 и 3 выполняются. Если состояние не верно, не выполняется только инструкция 1, а инструкции 2 и 3 выполняются. Тот факт, что инструкция 2 стоит в одной линии с инструкцией 1 на ход не влияет.
Если вы хотите выполнить только инструкции 1 и 2, причем условие выполняется, вам нужно выделить их вместе в одном блоке:
\c;
\s; if ( a < b )
\s; {
\s; \n;инструкция 1\c;;
\s; \n;инструкция 2\c;;
\s; }
\s; \n;инструкция 3\c;;
\n;
Блоки могут использоваться с инструкциями \c;\l;if\u cbot\if;\n;, \c;\l;while\u cbot\while;\n; и \c;\l;for\u cbot\for;\n;, чтобы сгруппировать отдельные инструкции, которые должны выполняться только если условие выполняется, или повторяется несколько раз.
Можно включать блоки в другие блоки, на столько уровней насколько нужно. Вот пример включения в скобки на двух уровнях:
\c;
\s; if ( a > b )
\s; {
\s; int i = 0;
\s; while ( i < 18 )
\s; {
\s; move(10);
\s; turn(5);
\s; i = i+1;
\s; }
\s; }
\n;
Было бы целесообразнее выравнивать открытую скобку \c;{\n; по закрытой скобке \c;}\n; в целях улучшения читаемости, но это необязательно. Следующий пример занимает меньше места, но эквивалентен предыдущему примеру, однако писать свои программы в подобном стиле не рекомендуется:
\c;
\s; if(a>b) { int i=0; while(i<18) {
\s; move(10);turn(5);i=i+1; }}
\n;
\t;См. также
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.