Показать сообщение отдельно
Старый 29.06.2012, 16:08
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Один цикл ВЛОЖЕН в другой.
Когда aw==0, aq изменяется при каждой итерации вложенного цикла, так? То есть
aw=0, aq=0
aw=0, aq=1
aw=0, aq=2
и тд.
Затем цикл aq заканчивается и происходит итерация !внешнего" цикла aw, в котором цикл aq снова проходит от 0 до f:
aw=1, aq=0
aw=1, aq=1
aw=1, aq=2
Это понятно?
Но у Вас второй цикл ограничен переменной f, о которой в примере кода ничего не показано.
Эта переменная у Вас увеличивается с каждой итерацией цикла aw (f++). То есть длина цикла aq (количество его итераций) тоже все время увеличивается. Происходит ли потом обнуление f из кода не видно.
Цитата:
Ведь в самом начале первого цикла когда я слушал aw и aq команда trace мне показывала 1,1 2,2 3,3 и тогдалее.
Это потому, что f видимо изначально равна 0. И с каждым витком цикла aw она (f) увеличивается на 1, то есть тупо равна значению aw+1. Соответственно trace во внешнем цикле показывает aw и aq == f, так как f это последнее, максимальное значение aq после завершения цикла aq. Ведь f это и есть его граница, и она равна текущему aw+1. Когда будет следующая итерация aw (aw+1), f во время трейса еще не была увеличена (f++), и соответственно они равны. И aq равна f. И стало быть aq (старое) == aw (новое).
Но внутри цикла aq трейс естественно будет показывать текущее значение aw (оно одно на всем протяжении цикла aq) и разные значения aq, от ноля до f (которое равно aw+1) - 1.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 29.06.2012 в 16:18.