Здравствуйте, уважаемые пользователи форума!
Просматривая темы и сообщения неопытных программистов, все чаще можно замечать ошибки в использовании цикла for.
В этом уроке мне хотелось бы детально рассмотреть данный цикл, показать его использование на множестве примеров.
Code: Select all
for(new a;a<5;a++)
В цикле for есть три параметра.
Первый параметр - действие, выполняющееся в момент начала выполнения цикла. Чаще всего, здесь объявляют переменную-счетчик, которую можно использовать только внутри цикла. Но, можно объявить и несколько переменных, если они потребуются вам только внутри цикла:
Code: Select all
for(new a,Float:b,c,d;a<5;a++)
Тоже самое и с массивами:
Code: Select all
for(new a,b[100];a<5;a++)
Кроме объявления переменных, можно и вызвать функции:
Code: Select all
new a;
for(print("Цикл начат");a<5;a++)
Второй параметр - условие выполнения цикла. Проверяется каждый раз, перед выполнением цикла. В случаях выше, цикл будет выполняться только тогда, когда значение переменной a меньше пяти. Можно добавить и несколько условий, через запятую:
Code: Select all
for(new a,b;a<5,b<10;a++)
В данном случае, цикл будет выполняться, пока переменная a меньше пяти и переменная b меньше десяти. Так же, можно использовать логические операторы.
Например:
Code: Select all
for(new a,b;a<5 || b<10;a++)
Цикл будет работать пока a меньше пяти, или b меньше пяти.
Второй параметр, в отличии от первого и третьего - является обязательным в цикле for. Если его не будет - произойдет зацикливание и сервер зависнит, если конечно в теле цикла вы не используете служебное слово break
Третий параметр - действие, которое будет выполняться в конце каждой итерации цикла.
Здесь так же, имеют место быть функции, например:
Code: Select all
new a;
for(print("Цикл начат");a<5;print("Конец итерации"),a++)
Выполнение цикла сервером.
Разберем простенький цикл:
Code: Select all
for(new i,b;i<5;i++)
b++;
Вот, как его представляет наш сервер:
Code: Select all
new i,b;
if(i<5)
{
b++;
i++;
}
else
break;
if(i<5)
{
b++;
i++;
}
else
break;
if(i<5)
{
b++;
i++;
}
else
break;
if(i<5)
{
b++;
i++;
}
else
break;
if(i<5)
{
b++;
i++;
}
if(i<5) //Условие ложное, произойдет выход из цикла.
{
b++;
i++;
}
else
break;
Тело цикла - код, который будет выполняться при каждой итерации цикла.
Code: Select all
for(new i,b;i<5;i++)
b++;
В данном случае, b++ - тело цикла.
Иногда бывают такие случаи, когда тело цикла можно сделать пустым, для этого ставят пустые операторные скобки:
Code: Select all
for(new i,b;i<5;i++,b++) {}
Данный код будет соответствовать примеру выше в плане работы, но будет работать быстрее, почти в два раза.
Его можно ускорить ещё:
Code: Select all
for(new i=-1,b;i++<1000000;b++)
Учитесь логически мыслить, разбираться в простейших конструкциях.
С уважением, Павел Остяков.