На помощь придут циклы. Цикл - это специальная конструкция языка, позволяющая запрограммировать многократное выполнение определённого блока команд. Каждый "проход" цикла называется итерацией. В языке Pawn существует три вида циклов - циклы for, while, do...while. В данном уроке мы познакомимся со всеми его разновидностями.
Самый просто цикл можно организовать с помощью оператора while. Он выглядит так:
while(условие) { // этот код выполняется повторно, пока условие остается истинным (тело цикла) }
Сначала проверяется условие. Условием могут быть выражения вида var > 10, var1 == var2 или любые другие. Если условие истинно выполняется инструкция в скобках. Дойдя до закрывающей скобки, компилятор передает управление в начало цикла, и все повторяется вновь. Таким образом, смысл оператора while, в том, что программный код в скобках повторяется до тех пор, пока не нарушится условие.
Реже используется другая версия цикла while, известная как do...while. Работает как обычный, но условие проверяется в конце, после выполнения тела цикла.
do { // тело цикла } while (условие);
Поскольку условие выполняется в конце, тело оператора do...while выполняется хотя бы один раз.
Еще одной, наиболее распространенной разновидностью циклов является цикл for
Он имеет следующий вид:
for (объявление переменной, условие, увеличение) } // тело цикла }
Выполнения цикла for начинается с объявления переменной. Затем проверяется условие. Подобно while, цикл for выполняется до тех пор, пока условие не станет ложным. После того как выполнится код тела цикла, управление получит следующий параметр for - увеличение
Пример:
if(strcmp("/cc", cmdtext, true, 10) == 0) { if(IsPlayerAdmin(playerid)) { for(new i; i<101; i++) SendClientMessageToAll(0x00000000,"");//тело цикла return 1; } }
Выше показан пример команды, которая очищает чат. Разберем её
new i - объявляем переменную.
i<101 - условие цикла.
i++ - увеличение переменной. Происходит после каждой проверки на истинность условия.
Его можно заменить эквивалентным ему циклом while:
while (условие) { { //... тело цикла } увеличение; }
Пример:
if (strcmp("/cc", cmdtext, true, 10) == 0) { if(IsPlayerAdmin(playerid)) { new i; while (i < 101) SendClientMessageToAll(0x00000000,""); i++; return 1; } }
Команда аналогична предыдущей, но теперь выполнена с помощью оператора while.
new i - объявляем переменную.
while (i < 101) - условие.
SendClientMessageToAll(0x00000000,""); - тело цикла. Пока условие истинно функция повторяется.
i++ - увеличение. С каждым повтором функции переменная увеличивается на один пункт.
Заключение
Цикл является основой, поэтому очень важно освоить этот материал для формирования базовых знаний о языке Pawn, которые положительно повлияют на ваше дальнейшее развитие. Теперь вы знаете, что такое цикл, его разновидности и как им пользоваться.
Вот и все) Надеюсь мой урок был понятен всем Комментируем!
Автор: Я
Сообщение отредактировал Mike: 19 января 2012 - 14:09