Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 11
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Работа с циклами for и while (Описание, примеры)
Работа с циклами for и while
_wS_ Дата: Среда, 23.05.2012, 06:32:54 | Сообщение # 1
Циклы for, while

Code
for (переменные; условие; команды)
{
     // код
}

Сначала проверяется условие, если оно проходит проверку (true), то выполняется код, после чего выполняются команды, и снова проверяется условие и т.д. Т.е. код будет выполняться до тех пор, пока условие проходит проверку (true). Нужно быть осторожным, чтобы цикл не был бесконечным, так как сервер может упасть. Т.е. если вы запустили цикл, нужно быть уверенным, что он прекратится.

В каждом цикле можно использовать и такие команды: break, continue, return

Пример 1:

Code
#include <sourcemod>

public OnPluginStart()
{
     for (new x = 1; x < 6; x++) PrintToServer("x = %d", x);
}

Результат:

Quote
x = 1
x = 2
x = 3
x = 4
x = 5

Созданная переменная x доступна только в пределах цикла.

Пример 2:

Code
#include <sourcemod>

public OnPluginStart()
{
     for (new x = 5, y = 0; x > y; x--) PrintToServer("x = %d", x);
}

Результат:

Quote
x = 5
x = 4
x = 3
x = 2
x = 1


Пример 3:

Code
public OnPluginStart()
{
     for (new x = 1; x < 5; x++)
     {
         if (x > 3) break;
         PrintToServer("x = %d", x);
     }
}

Результат:

Code
x = 1
x = 2
x = 3

Команда break обрывает (завершает) цикл и игнорирует код ниже (который внутри цикла).

Пример 4:

Code
public OnPluginStart()
{
     for (new x = 1; x < 6; x++)
     {
         if (x == 3) continue;
         PrintToServer("x = %d", x);
     }
}

Результат:

Quote
x = 1
x = 2
x = 4
x = 5

continue игнорирует код ниже и переходит к следующему шагу (выполнение команд и проверка условия).

Пример 5:

Code
public OnPluginStart()
{
     for (new x = 1; x < 6; x++)
     {
         if (x > 2) return;
         PrintToServer("x = %d", x);
     }
     PrintToServer("Это и всё что ниже - не будет выполнено");
}

Результат:

Quote
x = 1
x = 2

return завершает цикл и саму функцию, в которой он используется.

Пример 6:

Code
public OnPluginStart()
{
     new x = 6;
     while (x > 1)
     {
         x -= 1;
         PrintToServer("x = %d", x);
     }
}

Результат:

Quote
x = 5
x = 4
x = 3
x = 2
x = 1

Цикл while выполняется, пока верно условие. Его можно использовать и так:

Code
public OnPluginStart()
{
     new x = 6;
     do
     {
         x -= 1;
         PrintToServer("x = %d", x);
     }
     while (x > 1);
}

Смысл тот же, но здесь сначала будет выполнен код внутри do.
 
TEIN Дата: Суббота, 23.02.2013, 07:39:21 | Сообщение # 2
Сообщений: 551
Репутация: 73 [ +/- ]
В чем отличия break от return?
 
Scarface_slv Дата: Суббота, 23.02.2013, 15:06:22 | Сообщение # 3
Сообщений: 749
Репутация: 61 [ +/- ]
Вроде break завершает только цикл а return завершает весь блок)


Сообщение отредактировал Scarface_slv - Суббота, 23.02.2013, 15:07:41
 
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Работа с циклами for и while (Описание, примеры)
Страница 1 из 11
Поиск: