Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Поиск

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

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

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

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

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

Пример 1:

Код
#include <sourcemod>

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

Результат:

Цитата
x = 1
x = 2
x = 3
x = 4
x = 5

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

Пример 2:

Код
#include <sourcemod>

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

Результат:

Цитата
x = 5
x = 4
x = 3
x = 2
x = 1


Пример 3:

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

Результат:

Код
x = 1
x = 2
x = 3

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

Пример 4:

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

Результат:

Цитата
x = 1
x = 2
x = 4
x = 5

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

Пример 5:

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

Результат:

Цитата
x = 1
x = 2

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

Пример 6:

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

Результат:

Цитата
x = 5
x = 4
x = 3
x = 2
x = 1

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

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

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


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