Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.09.2012, 18:03
botbot вне форума Посмотреть профиль Отправить личное сообщение для botbot Найти все сообщения от botbot
  № 1  
Ответить с цитированием
botbot

Регистрация: Feb 2011
Сообщений: 100
Attention Цикл for

Объясните, я не понимаю поведение вот этого куска.
Угадайте, скока он выводит?
Код AS3:
var pos: Point = new Point();
var cc: Number = 0;
    for (pos.x; (pos.x < 30); pos.x++) {
        for (pos.y; (pos.y < 30); pos.y++) {
            cc++;
        }
    }
trace( cc );
Правильный ответ - тридцать!
Собственно вопрос - почему?)
Да, если переписать вот так:
Код AS3:
var pos: Point = new Point();
var cc: Number = 0;
    for (pos.x = 0; (pos.x < 30); pos.x++) {
        for (pos.y = 0; (pos.y < 30); pos.y++) {
            cc++;
        }
    }
trace( cc );
Вывод будет как и задумано - 900.
Всю голову изломал, не понимаю.

Старый 07.09.2012, 18:11
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 2  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Добавьте трейсы и поймете почему так происходит:
Код AS3:
var pos:Point = new Point();
var cc:int = 0;
for (pos.x; (pos.x < 30); pos.x++) {
	trace("pos.x = " + pos.x);
	for (pos.y; (pos.y < 30); pos.y++) {
		trace("  pos.y = " + pos.y);
		cc++;
	}
}
trace( cc );
В начале второй итерации внешнего цикла переменная pos.y уже равна 30. Поэтому внутренний цикл выполняется только один раз. Во втором же случае вы каждый раз инициируете pos.y нулем.

Старый 07.09.2012, 18:14
botbot вне форума Посмотреть профиль Отправить личное сообщение для botbot Найти все сообщения от botbot
  № 3  
Ответить с цитированием
botbot

Регистрация: Feb 2011
Сообщений: 100
Глупейшая моя ошибка. Спасибо!)

Старый 07.09.2012, 18:14
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 4  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
значение у во вложенном цикле не обнуляется
получается что он прокручивается только один раз, и в остальные 29 заходов внешнего цикла внутренний пропускается
__________________
Хороший отдых - половина работы.

Старый 07.09.2012, 18:16
botbot вне форума Посмотреть профиль Отправить личное сообщение для botbot Найти все сообщения от botbot
  № 5  
Ответить с цитированием
botbot

Регистрация: Feb 2011
Сообщений: 100
Просто прикол ещё в том, что отладчик FlashDevelop пустые циклы не показывает. Он сразу перескакивает в конец второго цикла, я и не вкурил что внешний цикл продолжает крутится. Было похоже на простой выход после первой итерации!

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 06:34.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.