Оператор while ActionScript 

 

 

Структурно оператор while во многом напоминает if: основной оператор  

содержит блок кода, который выполняется только в том случае, если результатом 

заданного условного выражения является значение true: 

while {условноеВыражение) { 

блокКода 

Если результатом выражения условноеВыражение является true, то выполняются  

инструкции из блока блокКода (называемого телом цикла). Однако, в отличие от оператора 

i f, когда выполнение блока блокКода завершается, управление снова передается на  

начало оператора while (то есть среда выполнения Flash «возвращается» к его началу). 

Второе выполнение оператора while ничем не отличается от первого: вычисляется 

результат выражения условноеВыражение и, если его значением является true, снова 
выполняется блок блокКода. Этот процесс будет продолжаться до тех пор, пока  
результатом выраженияусловноеВыражение не станет false, после чего выполнение программы 
будет продолжено с инструкции, расположенной сразу за оператором while. 
Если выражение условноеВыражение никогда не возвращает значение false, то цикл 
будет выполняться бесконечно и среда выполнения Flash будет вынуждена  
сгенерировать ошибку, которая остановит цикл (а вместе с ним и весь исполняемый в данный 
момент код). Чтобы избежать подобной ситуации, в блок блокКода цикла while  
обычно включается инструкция, которая модифицирует выражение условноеВыражениеу 
заставляя его вернуть значение false при выполнении определенного условия. 
Например, рассмотрим следующий цикл, определяющий результат возведения 
числа 2 в третью степень (то есть 2 умножается на 2 и умножается на 2), — тело 
цикла выполняется два раза: 
var total = 2; 
var counter = 0; 
while (counter < 2) { 
total = total * 2; 
counter = counter + 1; 
При выполнении предыдущего цикла while среда выполнения Flash сначала  
вычисляет результат условного выражения: 
counter < 2 
Поскольку значение переменной counter равно 0 и, соответственно, меньше 2, 
значением условного выражения является true; таким образом, Flash выполняет 
тело цикла: 
total = total * 2: 
counter = counter + 1; 
В теле цикла переменной total присваивается ее текущее значение, умноженное 
на 2, а к значению переменной counter прибавляется 1. С этого момента значением 
переменной total является 4, а переменной counter — 1. После выполнения тела 
цикла наступает время повторить его. 
При выполнении цикла во второй раз среда Flash снова проверяет значение  
условного выражения. На этот раз значением переменной counter является 1, что 
по-прежнему меньше 2, поэтому значением условного выражения является true. 
Следовательно, Flash выполняет тело цикла во второй раз. Как и в предыдущий раз, 
переменной total присваивается ее текущее значение, умноженное на 2, а к  
значению переменной counter прибавляется 1. С этого момента значением переменной 
total является 8, а переменной counter — 2. После выполнения тела цикла снова 
наступает время повторить его. 
При выполнении цикла в третий раз среда Flash снова проверяет значение  
условного выражения. На этот раз значением переменной counter является 2, что уже не 
меньше 2, поэтому значением условного выражения является false и выполнение 
цикла прекращается. В процессе вычислений значение переменной total, которое 
Глава 2. Условные операторы и циклы 
изначально равнялось 2, было дважды умножено на само себя, поэтому результатом 
является 8. 
Хотя предыдущий цикл не вызывает особого восторга, он обладает потрясающей 
гибкостью. Например, если бы мы хотели возвести, скажем, число 2 в степень 16, 
мы могли бы просто обновить значение в условном выражении, чтобы тело цикла 
выполнялось 15 раз, как показано в следующем примере: 
var total = 2; 
var counter = 0; 
while (counter < 15) { 
total = total * 2; 
counter = counter + 1; 
// Здесь значение переменной total равно 65 536 
Одно выполнение тела цикла называется итерацией. Соответственно, переменная, 
которая контролирует выполненное количество итераций данного цикла — в нашем 
случае это counter, — называется итератором или, реже, индексом цикла.  
Традиционно, для именования итераторов циклов используется буква i, как показано 
в следующем примере кода: 
var total = 2; 
var i = 0; 
while (i < 15) { 
total = total * 2; 
i = i + 1; 
Последняя строка в теле цикла из предыдущего примера называется корректором 
цикла, поскольку она до известной степени корректирует значение итератора, что 
в конечном счете приводит к завершению цикла. В данном случае корректор цикла 
прибавляет 1 к значению итератора. Эта операция является настолько  
распространенной, что для нее был создан собственный оператор: оператор инкремента,  
записываемый как ++. Оператор инкремента прибавляет 1 к значению своего операнда. 
Например, в следующем примере к значению переменной п прибавляется 1: 
var n = 0; 
п++; // значение переменной п теперь равно 1 
В следующем примере кода наш цикл реализован уже с использованием оператора 
инкремента: 
var total = 2; 
var i = 0; 
while (i < 15) { 
total = total * 2; 
i++; 
Противоположностью оператора инкремента является оператор декремента,  
записываемый как —. Он вычитает 1 из значения своего операнда. Например, в  
следующем примере из значения переменной п вычитается 1: 
var n = 4; 
п—: // значение переменной п теперь равно 3 
Оператор декремента зачастую используется в циклах, где значение итератора  
цикла уменьшается от указанной величины, а не увеличивается (как это происходило 
в предыдущих примерах). На протяжении этой книги мы будем использовать как 
оператор инкремента, так и оператор декремента. Однако вообще первый  
используется гораздо чаще, чем второй. 




BACK NEXT

Сайт является частным собранием материалов и представляет собой любительский информационно-образовательный ресурс. Вся информация получена из открытых источников. Администрация не претендует на авторство использованных материалов. Все права принадлежат их правообладателям