Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Куда приводит GOTO, по просьбе "телезрителей" 
:(
    Опции темы
Coocky
Дата 27.10.2005, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



smile
Кстати- Адрей Ямов наш бывший форумчанин smile
Мой учитель в МФС smile
Добавлено @ 17:46
http://forum.vingrad.ru/index.php?showuser...&nickname=AndyY

Добавлено @ 17:48
Можно непосредственно обратится к нему и посмотреть, что он скажет smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Neitron
Дата 27.10.2005, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Цитата(Mayk @ 27.10.2005, 17:15)
Цитата(Neitron @ 27.10.2005, 13:17)
как излишняя.

особенная понимаешь её "излишество", когда приходится выходить break'ом из вложенных циклов.
Особенно когда ты забываешь про то, что находишься во вложенном цикле. Здравствуй, дебагер.


ЗЫ. Сейчас набегут жависты, которые из вложенных циклов выходят за раз плюнуть и закидают помидорами.

goto небезапасный выход из цикла.
В ассемблере, счетчиком цикла является регистр CX
соответсвенно выход производится после того как регистр уйдет в нуль.
что дает goto? выход происходит, но регистр не сбрасывается.
Если компилятор конечно извращается без встроенного в процессор оператора цикла, то извините.



--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
S.A.P.
Дата 27.10.2005, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата(Mayk @ 27.10.2005, 17:15)
ЗЫ. Сейчас набегут жависты, которые из вложенных циклов выходят за раз плюнуть и закидают помидорами.

только из цикла они выскакивают примерно так же как мы по goto переходим, только метка перед циклом помещается smile .
PM MAIL   Вверх
Coocky
Дата 27.10.2005, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Цитата(Void @ 25.10.2005, 18:50)
Если автор не умеет читать C++ - это его проблемы

smile
Умеет и даже очень. Человек пытается разрушить правила, которые мы подчеркивали из книжек. Но никто не разу не усомнился в книжныхх правилах.
Я иной раз использую goto. Когда мне удобно. Я использую for, чаще чем while в три-четыре раза. Но это дело удобства, хотя и при невнимательности, можно с ними вылететь в дебаг..



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Neitron
Дата 27.10.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Каждый раз, когда едисвенным выходом из ситуации является goto, я полностью перерабатываю текущий алгоритм.
Выход из положения, оператором goto является первым признаком, плохо спроектированного и продуманного кода.

Это сообщение отредактировал(а) Neitron - 27.10.2005, 18:02


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Coocky
Дата 27.10.2005, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Цитата(Neitron @ 27.10.2005, 18:02)
является первым признаком, плохо спроектированного кода

smile Аргументы? Что такое плохо спроектированный код. Назови мне разницу между циклами goto,for, while( не синтаксическую..)
А как быть с обьектами, которые разрушаются, при выходе из цикла? smile



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Mayk
Дата 27.10.2005, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Neitron @ 27.10.2005, 21:56)

соответсвенно выход производится после того как регистр уйдет в нуль.


Цитата(Neitron @ 27.10.2005, 21:56)
В ассемблере, счетчиком цикла является регистр CX

При чём тут ассемблер? Сишные компиляторы вовсе не обязаны использовать CX. И они его не всегда используют.
Хорошо если они вообще испоьзуют регистр и loop. Что не всегда так.
Кстати, при break'е cx'ы тоже не обязаны занулится.
(хотя бы потому что в стандарте сей существование RCX/ECX/CX не оговаривается)

Это сообщение отредактировал(а) Mayk - 27.10.2005, 18:08


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Neitron
Дата 27.10.2005, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Coocky
Вот именно, ты сам только что ответил на вопрос.
Объекты не разрушаются, регистры не сбрасываются...


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Mayk
Дата 27.10.2005, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Neitron @ 27.10.2005, 22:08)
Объекты не разрушаются,

У моего компилятора иное мнение на этот счёт
Код

class DestructMe
{
        public:
                ~DestructMe(){
                        cout << "ff" << endl;
                }
};

int main(int argc, char* argv[])
{
    char c;
    while(true){
            DestructMe d;
            goto ss;
    }
ss:;
}



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Coocky
Дата 27.10.2005, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Цитата(Neitron @ 27.10.2005, 18:08)
Объекты не разрушаются, регистры не сбрасываются...

smile
Дык я и говорю за то, что можно контролировать разрушение обьекта... smile
Разве это плохо?
И я еще не увидел ни одного НОРМАЛЬНОГО аргумента против goto, кроме привычки "неудобно"...


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Void
Дата 27.10.2005, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(Coocky @ 27.10.2005, 19:59)
Я иной раз использую goto. Когда мне удобно.

Не спорю. Фанатизму не место в программировании, и структурное программирование не догма. Но, ИМХО, в приведенных примерах goto не к месту. Совсем.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Neitron
Дата 27.10.2005, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Цитата(Mayk @ 27.10.2005, 18:06)
Цитата(Neitron @ 27.10.2005, 21:56)

соответсвенно выход производится после того как регистр уйдет в нуль.


Цитата(Neitron @ 27.10.2005, 21:56)
В ассемблере, счетчиком цикла является регистр CX

При чём тут ассемблер? Сишные компиляторы вовсе не обязаны использовать CX. И они его не всегда используют.
Хорошо если они вообще испоьзуют регистр и loop. Что не всегда так.
Кстати, при break'е cx'ы тоже не обязаны занулится.
(хотя бы потому что в стандарте сей существование RCX/ECX/CX не оговаривается)

Для оптимизациооного кода, использование процессорных циклов, является наилучшим вариантом.
Не думаю, что реализации упускают такую возможность.
Но все равно, я всегда находил иной алгоритм, чтобы goto выкинуть из кода.


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Coocky
Дата 27.10.2005, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Mayk
smile
Ну хитрец!
А че в цикл засунул?
Ты цикл из goto сделай и выложи!


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Neitron
Дата 27.10.2005, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Цитата(Coocky @ 27.10.2005, 18:10)
Цитата(Neitron @ 27.10.2005, )
Объекты не разрушаются, регистры не сбрасываются...

smile
Дык я и говорю за то, что можно контролировать разрушение обьекта... smile
Разве это плохо?
И я еще не увидел ни одного НОРМАЛЬНОГО аргумента против goto, кроме привычки "неудобно"...

Для контролирования времени жизни обекта в Си++, придумали методы new и delete.

Это сообщение отредактировал(а) Neitron - 27.10.2005, 18:15


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Mayk
Дата 27.10.2005, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Coocky @ 27.10.2005, 22:12)

Ну хитрец!
А че в цикл засунул?
Ты цикл из goto сделай и выложи!

да без проблем.
Код

int t=0;
class DestructMe
{
        public:
                ~DestructMe(){
                        cout << "ff" << t << endl;
                }
};

int main(int argc, char* argv[])
{
    char c;
    t=5;
ss:{
           DestructMe d;

           if(t != 0){
                   --t;
          goto ss;
           }
    }

}



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.