Цикл for в деталях

Описание: Уроки по скриптингу
Модератор: SJplayer

Miranda F
Автор темы, Старшина
Старшина
Аватара
Miranda F
Автор темы, Старшина
Старшина
Сообщения: 143
Зарегистрирован: 5 июля 2013
С нами: 10 лет 8 месяцев

#1 Miranda » 25 октября 2013, 19:31

Цикл for в деталях

Здравствуйте, уважаемые пользователи форума!

Просматривая темы и сообщения неопытных программистов, все чаще можно замечать ошибки в использовании цикла for.
В этом уроке мне хотелось бы детально рассмотреть данный цикл, показать его использование на множестве примеров.

Код: Выделить всё

for(new a;a<5;a++) 


В цикле for есть три параметра.

Первый параметр - действие, выполняющееся в момент начала выполнения цикла. Чаще всего, здесь объявляют переменную-счетчик, которую можно использовать только внутри цикла. Но, можно объявить и несколько переменных, если они потребуются вам только внутри цикла:

Код: Выделить всё

for(new a,Float:b,c,d;a<5;a++) 


Тоже самое и с массивами:

Код: Выделить всё

for(new a,b[100];a<5;a++)  


Кроме объявления переменных, можно и вызвать функции:

Код: Выделить всё

new a
for(print(
"Цикл начат");a<5;a++)  


Второй параметр - условие выполнения цикла. Проверяется каждый раз, перед выполнением цикла. В случаях выше, цикл будет выполняться только тогда, когда значение переменной a меньше пяти. Можно добавить и несколько условий, через запятую:

Код: Выделить всё

for(new a,b;a<5,b<10;a++)  


В данном случае, цикл будет выполняться, пока переменная a меньше пяти и переменная b меньше десяти. Так же, можно использовать логические операторы.
Например:

Код: Выделить всё

for(new a,b;a<|| b<10;a++) 


Цикл будет работать пока a меньше пяти, или b меньше пяти.
Второй параметр, в отличии от первого и третьего - является обязательным в цикле for. Если его не будет - произойдет зацикливание и сервер зависнит, если конечно в теле цикла вы не используете служебное слово break

Третий параметр - действие, которое будет выполняться в конце каждой итерации цикла.
Здесь так же, имеют место быть функции, например:

Код: Выделить всё

new a
for(print(
"Цикл начат");a<5;print("Конец итерации"),a++) 


Выполнение цикла сервером.
Разберем простенький цикл:

Код: Выделить всё

for(new i,b;i<5;i++) 
  
b++;  


Вот, как его представляет наш сервер:

Код: Выделить всё

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;  


Тело цикла - код, который будет выполняться при каждой итерации цикла.

Код: Выделить всё

for(new i,b;i<5;i++) 
  
b++; 


В данном случае, b++ - тело цикла.
Иногда бывают такие случаи, когда тело цикла можно сделать пустым, для этого ставят пустые операторные скобки:

Код: Выделить всё

for(new i,b;i<5;i++,b++) {} 


Данный код будет соответствовать примеру выше в плане работы, но будет работать быстрее, почти в два раза.
Его можно ускорить ещё:

Код: Выделить всё

for(new i=-1,b;i++<1000000;b++)  


Учитесь логически мыслить, разбираться в простейших конструкциях.
С уважением, Павел Остяков.
Изображение


Вернуться в «Уроки»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 6 гостей