30.03.2010, 10:23
Цикл — разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность инструкций, организованная любым способом. © wikipedia
_________________________________________________
Цикл for
Пример использования
Этот цикл кикнет всех игроков.
Это же удобнее, чем писать 500 раз Kick(playerid)?
Здесь мы создаём переменную i и присваиваем ей значение 0.
Далее мы создаём условие. В нашем случае, цикл прекратиться, когда i станет 500
Задаём действие(инкремент). Оно будет выполняться, пока заданное нами условие не станет верным.
_________________________________________________
Инкремент - добавление к числу единицы.
Декремент - вычитание из числа единицы.
_________________________________________________
Если вы зададите невыполнимый цикл, то сервер упадёт в ближайщее время.(На циклах for не проверял, но на while 100%)
Вот пример невыполнимого цикла:
В данном случае, действие инкремента, когда условие что переменная будет меньше -1. Цикл идёт в обратную сторону.
_________________________________________________
Цикл while.
Тоже цикл, только заданная переменная изменяется внутри цикла.
В скобках задаётся условие
_________________________________________________
Условие if и оператор else
Используется так, к примеру.
if - задаётся условие,
else - если наоборот.
Другие варианты задания условий
Пример 1
Что я говорю в этом условии? Если id чекпоинта 2 или 3 и игрок администратор, то отображает надпись
Условие чекпоинтов помещено в ещё одни скобки, иначе бы условие было бы нелогичным.
Пример 2
Этим условием я сообщаю что если игрок не администратор - кикнуть его.
! может быть применён как к функциям так и к переменным.
Другой вариант записи, делает тоже самое.
_________________________________________________
switch и case
Я эти элементы использую крайне редко, но всё таки попытаюсь объяснить на примере:
Пример 1
Пример 2
Два последних примера действуют одинаково. Вывод сделаете сами.
_________________________________________________
Совет:
Для оптимизации цикла и быстроты его выполнения используйте переменную, которая при каждом коннекте или дисконнекте игрока, даёт переменной значение GetHighestID()+1 - эту функцию можно найти в Полезных фунцкиях. И тогда вместо MAX_PLAYERS ставит переменную которой мы задали значение максимального ID.
Когда шустрите циклом по игрокам, делая им какое-то действие, всегда задавайте условие - IsPlayerConnected(i) и если да, то выполнять действие.
_________________________________________________
С вами был Faus, спасибо за внимание. Если есть какие-то непонятки или вопросы - спрашивайте.
30 / 03 / 2010
_________________________________________________
Цикл for
Пример использования
pawn Code:
for(new i = 0; i < MAX_PLAYERS; i++)
{
Kick(i);
}
Это же удобнее, чем писать 500 раз Kick(playerid)?
pawn Code:
new i = 0;
pawn Code:
i < MAX_PLAYERS
pawn Code:
i++
_________________________________________________
Инкремент - добавление к числу единицы.
Декремент - вычитание из числа единицы.
_________________________________________________
Quote:
Виды условий в языках программирования(самые основные) != - не равно. == - равно > - больше < - меньше >= - больше или равно <= - меньше или равно. |
Вот пример невыполнимого цикла:
pawn Code:
for(new i = 0; i < -1; i++)
{
Kick(i);
}
_________________________________________________
Цикл while.
pawn Code:
new a = 0;
while(a < 100000)
{
printf("While: %d",a);
a++;
}
В скобках задаётся условие
_________________________________________________
Условие if и оператор else
Используется так, к примеру.
pawn Code:
if(GetPlayerMoney(playerid) < 500)
{
SendClientMessage(playerid,COLOR_YELLOW,"У вас меньше 500$");
}else{
SendClientMessage(playerid,COLOR_YELLOW,"У вас больше 500$");
}
else - если наоборот.
Другие варианты задания условий
Пример 1
pawn Code:
if((checkpointid == 2 || checkpointid == 3) && IsPlayerAdmin(playerid))
{
SendClientMessage(playerid,COLOR_YELLOW,"Привет администратор!");
}
Условие чекпоинтов помещено в ещё одни скобки, иначе бы условие было бы нелогичным.
Quote:
|| - или && - и ! - неверно ли? |
pawn Code:
if(!IsPlayerAdmin(playerid))
{
Kick(playerid);
}
! может быть применён как к функциям так и к переменным.
Другой вариант записи, делает тоже самое.
pawn Code:
if(IsPlayerAdmin(playerid) == 0)
{
Kick(playerid);
}
_________________________________________________
switch и case
Я эти элементы использую крайне редко, но всё таки попытаюсь объяснить на примере:
Пример 1
pawn Code:
new class = 5;
if(class == 0) { Действие }
if(class == 1) { Действие }
if(class == 2) { Действие }
if(class == 3) { Действие }
if(class == 4) { Действие }
if(class == 5) { Действие }
Пример 2
pawn Code:
new class = 5;
switch(class)
{
case 0: { Действие }
case 1: { Действие }
case 2: { Действие }
case 3: { Действие }
case 4: { Действие }
case 5: { Действие }
}
_________________________________________________
Совет:
Для оптимизации цикла и быстроты его выполнения используйте переменную, которая при каждом коннекте или дисконнекте игрока, даёт переменной значение GetHighestID()+1 - эту функцию можно найти в Полезных фунцкиях. И тогда вместо MAX_PLAYERS ставит переменную которой мы задали значение максимального ID.
Когда шустрите циклом по игрокам, делая им какое-то действие, всегда задавайте условие - IsPlayerConnected(i) и если да, то выполнять действие.
_________________________________________________
С вами был Faus, спасибо за внимание. Если есть какие-то непонятки или вопросы - спрашивайте.
30 / 03 / 2010