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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> оператор перехода goto, тру или нет? 
:(
    Опции темы
Gen
Дата 14.12.2006, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Вопрос - а много ли он сжирает ресурсов по сравнению с готозаменяющими циклами?? smile 
PM MAIL   Вверх
INHazeR
Дата 14.12.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



гм. как goto может сжирать ресурсы? это же команда
PM MAIL   Вверх
codelord
Дата 14.12.2006, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 39



в книге K&R об этом уже давно написали.
коротко:
ничего криминального, не обязательно, всегда можно обойтись.
сам давно уже не пользовался. Хотя когда еще в школе на бейсике то всегда

фрагмент K&R

Цитата

      в языке "c" предусмотрен и  оператор  goto,  которым
  бесконечно  злоупотребляют,  и  метки  для  ветвления.  С
                           - 127 -
  
  формальной точки зрения оператор goto никогда не является
  необходимым, и на практике почти  всегда  можно  обойтись
  без него. Мы не использовали goto в этой книге.
       Тем не менее,  мы  укажем  несколько  ситуаций,  где
  оператор  goto   может   найти   свое   место.   Наиболее
  характерным является его использование тогда, когда нужно
  прервать  выполнение  в   некоторой   глубоко   вложенной
  структуре, например, выйти сразу из  двух  циклов.  Здесь
  нельзя непосредственно использовать оператор  brеак,  так
  как он прерывает только самый внутренний цикл. Поэтому:
         for ( ... )
                 for ( ... )     {
                         ...
                         if (disaster)
                                 goto error;
                 }
         ...
 error:
         clean up the mess
  Если программа обработки  ошибок  нетривиальна  и  ошибки
  могут возникать в нескольких местах, то такая организация
  оказывается удобной. Метка имеет такую же  форму,  что  и
  имя переменной, и за ней всегда следует двоеточие.  Метка
  может быть приписана к любому оператору той же функции, в
  которой находится оператор goto.
       В  качестве  другого   примера   рассмотрим   задачу
  нахождения первого отрицательного  элемента  в  двумерном
  массиве. (Многомерные массивы рассматриваются в главе 5).
  Вот одна из возможностей:
                           - 128 -
         
          for (i = 0; i < n; i++)
                 for (j = 0; j < m; j++)
                         if (v[i][j] < 0)
                             goto found;
                 /* didn't find */
         ...
 found:
         /* found one at position i, j */
         ...
       Программа, использующая оператор goto, всегда  может
  быть  написана  без  него,  хотя,   возможно,   за   счет
  повторения некоторых проверок и  введения  дополнительных
  переменных. Например, программа поиска в  массиве  примет
  вид:
         found = 0;
         for (i = 0; i < n && ]found; i++)
                 for (j = 0; j < m && ]found; j++)
                         found = v[i][j] < 0;
         if (found)
                 /* it was at i-1, j-1 */
                 ...
         else
                 /* not found */
                 ...
       Хотя мы не являемся в этом вопросе догматиками,  нам
  все же кажется, что если и  нужно  использовать  оператор
  goto, то весьма умеренно.





--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Gen
Дата 14.12.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Цитата

гм. как goto может сжирать ресурсы? это же команда


Сформулирую вопрос по другому - целесообразно ли использовать его постоянные вызовы в цикле, если, например, это делает код более читаемым??
PM MAIL   Вверх
Dray
Дата 14.12.2006, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 7.10.2003
Где: г. Всеволожск

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



Цитата(Gen @  14.12.2006,  21:38 Найти цитируемый пост)
это делает код более читаемым?? 

Ну раз так, почему нет?
Если побочных эффектов не вылезет, - используй.


--------------------
忍者

user posted image
PM MAIL   Вверх
witex
Дата 14.12.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 0
Всего: 4



goto  ваабще смысла нету использовать.

Использование функций всегда заменяет goto. Тем более что использоване функций, делает значимо читабильным код, чем с goto
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
MAKCim
Дата 14.12.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Использование функций всегда заменяет goto. Тем более что использоване функций, делает значимо читабильным код, чем с goto 

call != jmp


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
witex
Дата 14.12.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 0
Всего: 4



понятно дело, что так и есть! Но я встречал столько кадров которые пытались заменить функции оператором goto
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
MAKCim
Дата 14.12.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

понятно дело, что так и есть!

к чему тогда
Цитата

Использование функций всегда заменяет goto.



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GrayCardinal
Дата 14.12.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

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



UniBomb

ИМХО
Оператор "goto" нельзя использовать по той же самой причине по какой в Советском Союзе нельзя было ездить на одном рельсе.
/ИМХО

Это сообщение отредактировал(а) GrayCardinal - 14.12.2006, 22:50


--------------------
PM MAIL WWW   Вверх
nikitao
Дата 14.12.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



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

Если вкратце , то моя позиция такая ( хотя я goto не юзал года 3 уже) : Если на тебе резиновые сапоги, то зачем обходить три квартала, чтобы не промочить ноги?



ЗЫ Когда создавался ЯП Ада ( признаный самым продуманным ЯП ) , то шли долгие дискуссии на эту тематику и в результате goto все же было включить в него smile

Добавлено @ 22:03 
GrayCardinal, слишком громкое заявление. имхо.


С другой стороны я пожалуй соглашусь с Void , который говорил , что goto при правильном проектировании просто не нужен. 
Отсутствие goto должно стать для программиста не целью , а  результатом накопления им опыта ) 

Это сообщение отредактировал(а) nikitao - 14.12.2006, 22:08


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
GrayCardinal
Дата 14.12.2006, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

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



nikitao
Так ясно что ИМХО, или дописать ?  smile 


--------------------
PM MAIL WWW   Вверх
nikitao
Дата 14.12.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Цитата(GrayCardinal @  14.12.2006,  23:13 Найти цитируемый пост)

Так ясно что ИМХО, или дописать ?  smile  

Извени , не уверен , что вопрос понял smile  но в любом случае лучше дописать smile 


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
GrayCardinal
Дата 14.12.2006, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

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



nikitao
Так нормалек ?

Добавлено @ 23:00 
ЗЫ
А будем обсуждать можно ли использовать обе ?
 smile  smile  smile 


--------------------
PM MAIL WWW   Вверх
UniBomb
Дата 14.12.2006, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

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



nikitao

Цитата

С другой стороны я пожалуй соглашусь с Void , который говорил , что goto при правильном проектировании просто не нужен. 
Отсутствие goto должно стать для программиста не целью , а  результатом накопления им опыта ) 


Ты опять таки возвращаешся к вопросу об эстетики, имхо программиста меньше всего должно беспокоить наличие оператора (если это конечно не приводит к ошибке) goto. Прочтя все высказывания я понял одно - программиста от "кулхацкера" отличает как раз ниличие или отсутвие goto в коде их программ. С этой же точки зрения можно забанить функцию ReadFileEx, когда есть такая замечательная функция ReadFile (это просто пример, взял первые попавшие на ум похожие функции). А то что такие программы трудно читать - это проблемы того, кто читает (хотя я всё таки за "правила хорошего тона" и стараюсь писать удобочитаемый код). Моё ИМХО - если оператор или функция не вызывает ошибки, то её нужно использовать эти операторы или функции в случае максимального комфорта...


Gen
Dray
к слову - а что значат картинки у вас в подписях?


--------------------
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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