Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Разница между for и while (http://www.flasher.ru/forum/showthread.php?t=75702)

Homo Sapiens 17.02.2006 19:58

Разница между for и while
 
Цитата:

Homo, с чем тебя и поздравляю.
Реализуй через for чтение данных, вводимых пользователем, заодно проверишь, что есть сокращенная форма while. Помни о том, что параметр цикла (ты ведь знаешь, что это такое ?) внутри тела цикла "readonly".
Цитата:

поэтому предлагаю успокоиться и начать обсуждать различия циклов в другой теме (ну наконец-то что-то интересное на форуме http://www.flasher.ru/forum/images/r...lies/smile.gif) а флудить во флейме.
Как и было предложено, начинаю новый тред:
Я не могу вспомнить случая, когда во Flash мне приходилось считывать данные, введёные пользователем, циклом. Соотвественно, вопрос про чтение данных, вводимых польователем немного не соответствует теме. Но если ты настаиваешь - код на C# (да простят меня модераторы)
Код:

using System;
using System.Collections.Generic;
using System.Text;
namespace ReadTest
{
        class Program
        {
                static void Main(string[] args)
                {
                        Console.WriteLine("Введите текст:");
                        string temp;
                        for (; (temp = Console.ReadLine()).Length > 0; )
                        {
                                Console.WriteLine("Введён новый текст: " + temp);
                                Console.WriteLine("Введите текст:");
                        }
                }
        }
}


Skubent 17.02.2006 20:18

Во избежание недопониманий, есть предложение уйти на чистый С.

Ввод с клавиатуры одной строки - вполне так показательно, с учетом того, что ты реализацию проверки конца ввода возложил на компилятор ( а что ? машина умная, она сама все знает).

Ну про то, что модификация параметров цикла в процессе его выполнения ведет к неустойчивости кода (если мягко выразиться) ты, наверное, не в курсе.

Скомпили проект, посмотри, что там получилось в коде - или тебя это мало интересует, тебе главное - чтобы работало ?

Skubent 17.02.2006 20:21

Хорошо, по теме...
Пользователь вводит размер стороны квадрата.
Твоя задача - полностью заполнить квадрат вертикальными линиями рандомного цвета.

Твоя вторая задача - двигать по окружности внутри квадрата мувик размером 3х3, пока пользователь не ткнет в него мышкой.

Используй for и while в обоих случаях.
Желательно смотри, что происходит с кодом во всех случаях.

Homo Sapiens 17.02.2006 20:40

Если честно, на компе у меня не стоит компилятор C и устанавливать его нет никакого желания.
Цитата:

Ну про то, что модификация параметров цикла в процессе его выполнения ведет к неустойчивости кода (если мягко выразиться) ты, наверное, не в курсе.
Не совсем понял. Может быть ты не знаешь C#, но строчка
Код:

for (; (temp = Console.ReadLine()).Length > 0; )
Означает, что в начале итерации мы получаем строку, заносим её в переменную temp и если длина temp больше 0 - начинаем итерацию. В данном случае, изменение параметра цикла опасности не представляет, так как длина строки однозначно либо меньше нуля (выход из цикла), либо больше (начало новой итерации), что и требуется для получения данных, пока они вводятся. Конечно правильнее было бы всё это обернуть в try/catch, но это просто демонстрация.

Homo Sapiens 17.02.2006 20:47

Цитата:

Хорошо, по теме...
Пользователь вводит размер стороны квадрата.
Твоя задача - полностью заполнить квадрат вертикальными линиями рандомного цвета.
Код:

//Квадрат находится в координатах (0, 0)
var l = tbInput.text; //длинна стороны
//Рисуем границы квадрата
var s = 0;
for(var i = 0; i < l; i++)
{
    //Определяем цвет, устанавливаем перо у верхней грани, ведём линию
}

и
Код:

//Квадрат находится в координатах (0, 0)
var l = tbInput.text; //длинна стороны
//Рисуем границы квадрата
var s = 0;
var i = 0;
while(i < l)
{
    //Определяем цвет, устанавливаем перо у верхней грани, ведём линию
    i++;
}


Homo Sapiens 17.02.2006 20:50

Цитата:

Твоя вторая задача - двигать по окружности внутри квадрата мувик размером 3х3, пока пользователь не ткнет в него мышкой.
Зачем здесь for или while?
Пишем обработчик onEnterFrame клипа с квадратом, в котором перемещаем мувик по окружности на определённый угол, на мувик ставим обработчик onRelease, который будет удалять onEnterFrame квадрата.

Skubent 20.02.2006 12:18

Да, случай запущенный...
В примере про ввод строки ты
а) отдал распознание конца ввода средствам ОС;
б) фактически каждая твоя итерация изменяет параметры цикла;
Ты представляешь себе, как это реализовывается на более низком уровне ? Хотя бы в общих чертах ?

Про рисование квадрата - сам разницы не увидел ? Жаль...

Homo Sapiens 20.02.2006 16:55

Цитата:

отдал распознание конца ввода средствам ОС;
Вы, батенька, наверное не совсем понимаете, что говорите. Исполнением программ написанных на платформе .net занимается Microsoft .net Framework, транслируя байт код в машинный код, который и исполняется. При чём здесь ОС я не подрубаю.
Возьмём Flash: программа на ActionScript исполняется Macromedia Flash Player, который точно также транслирует байт код в машинный код, и отвечает за распознавание конца строки. И для меня, как для программиста на ActionScript и C# нет разницы, буду ли я использовать в данном контесте for или while.
Что улучшиться, если я вместо for использую while?

KUZEN 21.02.2006 01:22

Да собстенно разницы между for и while нету, просто while использовали с 4 версии флеша , а for появился только в пятой ... как по мне так намного удобнее for да и посвежей )))

Король 21.02.2006 01:26

посвежей - это что имеется в виду? используется всего 9 лет, а не 10?))


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

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