Форум 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?))

KUZEN 21.02.2006 01:29

Цитата:

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

Именно это ))) Пусть не намного , но всё же )))

Skubent 21.02.2006 12:13

Цитата:

Сообщение от Homo Sapiens
Что улучшиться, если я вместо for использую while?

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

Homo Sapiens 21.02.2006 12:54

Цитата:

Сообщение от Skubent
Стилистика написания, удобство чтения кода, скорость выполнения программы в конечном итоге.

Стилистика - понятие субъективное, умеющий читать - прочтёт в независимости от того, что было написано, for или while, если код написан внятно (со всеми отступами, с пробелами и т.п.), тем более, что при for сразу видишь начало отсчёта и изменение. А скорость, как уже выяснили, изменяется очень незначительно.

__i 21.02.2006 13:51

Как не спорь, но я за Skubent'a %)), есть разница даже если выясниться, что разницы между for и while в исполнее нет(в чем я сомневаюсь), то есть разница в самом стиле написания программы!

for обычно используют там где количество итераций (или чего то там) заранее извесно

while где количесво итераций "не известно" в момент начала цикла, т.е. вычисляеться в самом цикле.

Естественно то что я написал можно рализовать и каждым циклом. НО, есть такое понятие как этика написания кода. Это как и в жизни - ты можешь есть и вилкой и ложкой и руками, смысл особо не меняеться - Ты ешь, но есть ложкой что-то кроме супа на званом обеде/в гостях.... и т.п. просто не красиво тем более когда рядом лежит вилка.

Homo Sapiens 21.02.2006 14:21

Цитата:

Сообщение от __i
Естественно то что я написал можно рализовать и каждым циклом. НО, есть такое понятие как этика написания кода. Это как и в жизни - ты можешь есть и вилкой и ложкой и руками, смысл особо не меняеться - Ты ешь, но есть ложкой что-то кроме супа на званом обеде/в гостях.... и т.п. просто не красиво тем более когда рядом лежит вилка.

Ну и сравнение. Вроде во Flash 4 для организации циклов надо было бегать по кадрам. Вот это больше подходит.

__i 21.02.2006 17:03

ну я незнаю 4 флеша никогда не видел не использовал %(

по поводу сравнения, может и не верно подобрано, но тогда привиду другой пример:
читаем статью.

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

В ВУЗах выпускающих программистов обычно объясняют почему/где лучше использовать for и while (см. выше) А как ты будешь их использовать это твои проблемы, самое главное чтоб они не касались других, которым вдруг придеться читать/добавалять твой код!


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

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