Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

Хочу воспользоваться оператором GOTO,   Найти похожие ветки 

 
WondeRu ©   (2006-04-18 14:51) [0]

но религия не позволяет! Что делать?


 
Cashmare ©   (2006-04-18 14:55) [1]

plug & pRay :)))


 
Игорь Шевченко ©   (2006-04-18 14:55) [2]

Один раз Аллах простит


 
Джо ©   (2006-04-18 14:56) [3]

> Что делать?

Сменить концессию.


 
Гаврила ©   (2006-04-18 14:59) [4]

Можно написать
но только обязательно маленькими буквами
и обязательнно в обрамлении:

{$REGION "Я больше не буду"}
goto xxx;
{$ENDREGION}

и держать закрытым


 
Eraser ©   (2006-04-18 15:00) [5]

А вот в весьма уважаемый автор Рихтер, в весьма уважаемой книге "Programming Server-Side Applications for MS Windows 2000" пользуется таки оператором goto, и ничё - живой вроде :)


 
Игорь Шевченко ©   (2006-04-18 15:05) [6]

Eraser ©   (18.04.06 15:00) [5]

Очевидно он другой веры. Или не на Delphi пишет. Кроме того, книга двух авторов, так что неизвестно, кто именно из них пользуется :)


 
Чапаев ©   (2006-04-18 15:10) [7]

Один набирает "g" и "t", а второй -- две "о". Таким образом, никакого греха нету.


 
Eraser ©   (2006-04-18 15:15) [8]


> Игорь Шевченко ©   (18.04.06 15:05) [6]

не на делфи эт точно ))
однако это сути деля не меняет, если бы "goto" было бы таким уж грехом, то редакторы бы не пропустили в печать :)


 
Johnmen ©   (2006-04-18 15:17) [9]


> Джо ©   (18.04.06 14:56) [3]
>
> > Что делать?
>
> Сменить концессию.


Конфессию?
А это не грех?


 
Чапаев ©   (2006-04-18 15:19) [10]


> редакторы бы не пропустили в печать

Редактор -- неудавшийся автор, посему будет всячески стараться выпустить в печать какую-либо мерзость, дабы дискредитировать автора. :o)


 
Игорь Шевченко ©   (2006-04-18 15:24) [11]

Eraser ©   (18.04.06 15:15) [8]


> если бы "goto" было бы таким уж грехом, то редакторы бы
> не пропустили в печать


Это заговор. Там еще в книжке масонские знаки, если на просвет посмотреть.


 
Джо ©   (2006-04-18 15:26) [12]

> [9] Johnmen ©   (18.04.06 15:17)
> Конфессию?
> А это не грех?

Да, спасибо за исправление машинальной опечатки. Нет, не грех, если сменить на такую, в какой понятие "греха" отсутствует :)


 
Гарри Поттер ©   (2006-04-18 15:29) [13]

Раньше пользовался goto часто, все нормально работает, но мастера с этого сайта сказали что это неправильно. Теперь не пользуюсь. Но так и не понял почему goto некошерен (если не брать в расчет читабельность кода)
Тоже хотел такую ветку создать, но забыл, т.к. goto уже не юзаю :-)


 
Чапаев ©   (2006-04-18 15:32) [14]


> так и не понял почему goto некошерен (если не брать в расчет
> читабельность кода)

Ну... При корректном использовании он кошерен.


 
Eraser ©   (2006-04-18 15:42) [15]


> Игорь Шевченко ©   (18.04.06 15:24) [11]

смотрел-смотрел сквозь .chm файл на просвет.. ничё так и не увидел :(

> Гарри Поттер ©   (18.04.06 15:29) [13]

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

if not bSomething then
 goto Return;

хотя я деляю так

try
 if not bSomething then
   Exit;
finally

end;

:)


 
Gero ©   (2006-04-18 16:09) [16]

Не советую. Я как-то раз использовал, до сих пор кошмары по ночам мучают.


 
Desdechado ©   (2006-04-18 16:09) [17]

> Хочу
это тоже грех, когда мысли плохие


 
MsGuns ©   (2006-04-18 16:33) [18]

А что это такое ?


 
oldman ©   (2006-04-18 16:39) [19]


>  Хочу воспользоваться оператором GOTO,
>
> WondeRu ©   (18.04.06 14:51)  
> но религия не позволяет! Что делать?


будем добрыми :)))

a:=0;
while a=0 do
begin
 {делаем что надо}
 if GoToНеНужен then a:=1; (поскольку следующий end и будет goto)
end;


 
Плохиш ©   (2006-04-18 17:15) [20]


> Хочу воспользоваться оператором GOTO,
>
> WondeRu ©   (18.04.06 14:51)  
> но религия не позволяет! Что делать?

Всё начинается с малого, а потом будут однополая любовь, спид, смерть...


 
Marser ©   (2006-04-18 17:22) [21]

> религия не позволяет!

А мы тут причём? Прокоснультируйся со своим раби, может он и разрешит :-))


> [10] Чапаев ©   (18.04.06 15:19)
>
> > редакторы бы не пропустили в печать
>
> Редактор -- неудавшийся автор, посему будет всячески стараться
> выпустить в печать какую-либо мерзость, дабы дискредитировать
> автора. :o)

В мемориз! :-))


 
SKIPtr   (2006-04-18 17:42) [22]

Я пользуюсь только не кому не говорю, и не кто этого не замечает


 
oldman ©   (2006-04-18 17:44) [23]

Апошли все дружно вспоминать Фортран...


 
Mystic ©   (2006-04-18 17:50) [24]

Вспомнить статью Д. Кнута "Структурное программирование с использование goto" :)


 
AlexWlad ©   (2006-04-18 19:24) [25]


> oldman ©   (18.04.06 17:44) [23]


Или ЯМБ (Язык Машин Бухгалтерских), был такой для Искра-555. Из серии - "максимум способов превратить программу в спагетти".


 
Gydvin ©   (2006-04-18 20:48) [26]

Много goto конечно перебор, но иногда возникают такие ситуации когда легче всего разрулить с ним


 
LexxX ©   (2006-04-18 21:43) [27]

Предлагаю повеситься/застрелиться, ибо грех смывается только кровью!
з.ы. лучше застрелиться - крови больше! ]:->


 
Strate ©   (2006-04-18 23:04) [28]

Как без GOTO выйти из второго и последующих уровней многоуровнего цикла:

for
  for
    for
      ... ;


 
Kerk ©   (2006-04-18 23:06) [29]

Strate ©   (18.04.06 23:04) [28]

if Flag then Break;


 
Юрий Зотов ©   (2006-04-18 23:18) [30]

Break, Continue, Case, For, Repeat, While... и GoTo.

Какая страшная пропасть лежит между всеми этими операторами... как неимоверно принципиально и неимоверно резко различаются они... почти так же сильно, как jle отличается от jng... с ума сойти...


 
Marser ©   (2006-04-18 23:29) [31]

> [30] Юрий Зотов ©   (18.04.06 23:18)
> Break, Continue, Case, For, Repeat, While... и GoTo.
>
> Какая страшная пропасть лежит между всеми этими операторами...
> как неимоверно принципиально и неимоверно резко различаются
> они... почти так же сильно, как jle отличается от jng...
> с ума сойти...

Пять баллов! :-))


 
Игорь Шевченко ©   (2006-04-18 23:50) [32]

Юрий Зотов ©   (18.04.06 23:18) [30]

Страшную пропасть выкопал Дейкстра, заявив, что GOTO сакс мастдайный, а все остальное есть рулез вечный и немерянный.


 
Германн ©   (2006-04-19 03:30) [33]


> Юрий Зотов ©   (18.04.06 23:18) [30]
</I
> различаются они... почти так же сильно, как jle отличается
> от jng... с ума сойти...

>
Наверно всё же jne, а не jle!
А с ума сходить не стоит. Имхо.


 
boalse ©   (2006-04-19 04:22) [34]


> Как без GOTO выйти из второго и последующих уровней многоуровнего
> цикла:
>
> for
>   for
>     for
>       ... ;



> if Flag then Break;

В данных случаях я юзаю именно Goto, потому как
if Flag then Break;
работает медленнее. Я прав?


 
boalse ©   (2006-04-19 04:27) [35]

> Как без GOTO выйти из второго и последующих уровней многоуровнего
> цикла:
Добавлю: Причём выйти не на более нижний уровень, а вообще выйти из многоуровневого цикла.


 
Джо ©   (2006-04-19 04:30) [36]

> работает медленнее. Я прав?

It"s not that important.


 
Думкин ©   (2006-04-19 07:19) [37]

> boalse ©   (19.04.06 04:27) [35]

Если ты его организовал - значит он тебе был нужен.
Не люблю очевидные вопросы с очевидными ответами. :(


 
Marser ©   (2006-04-19 07:26) [38]

Удалено модератором


 
Tirael ©   (2006-04-19 07:30) [39]

2Eraser

я на сях часто пишу в начале обработчика чтото вроде

if (!OpenDialog1->Execute) return;

неужели в делфи для этого нужен goto???


 
Думкин ©   (2006-04-19 07:30) [40]

Удалено модератором


 
Думкин ©   (2006-04-19 07:34) [41]

Удалено модератором


 
Gydvin ©   (2006-04-19 07:35) [42]

Tirael ©   (19.04.06 07:30) [39]

Аха, лучше уж
Caption:="12345";
без GOTO точно не обойтись ))))


 
Marser ©   (2006-04-19 07:41) [43]

Удалено модератором


 
Думкин ©   (2006-04-19 07:46) [44]

Удалено модератором


 
Гаврила ©   (2006-04-19 09:18) [45]

Tirael ©   (19.04.06 7:30) [39]

>if (!OpenDialog1->Execute) return;
>
> неужели в делфи для этого нужен goto???


if not OpenDialog1.Execite then Exit;


 
Юрий Зотов ©   (2006-04-19 09:25) [46]

> Гаврила ©   (19.04.06 09:18) [45]

Еще одно подтверждение тому, что все "наезды" сишников на Паскаль проистекают от незнания Паскаля.


 
Sergey Masloff   (2006-04-19 09:28) [47]

Гаврила ©   (19.04.06 09:18) [45]
и все же

if OpenDialog1.Execite then
begin

end;

читается намного лучше ИМХО. Вообще если уж на паскале мы пишем, желательно одну точку выхода иметь.


 
Sergey Masloff   (2006-04-19 09:32) [48]

И вообще не только мое имхо NOT по возможности меньше надо применять ибо при беглом просмотре очень плохо воспринимается.


 
SPeller ©   (2006-04-19 09:38) [49]

Sergey Masloff   (19.04.06 9:28) [47]

Только хотел написать то же самое :) Exit-ами тоже нехорошо пользоваться.


 
Думкин ©   (2006-04-19 10:07) [50]

Чтобы вы того, но у вас не этого.
Есть разные способы.
И их даже древние люди знали, при этом не ведая, что они древние.
Презерватв из овечьей кишки. Или ослинной. Или - ... Потом таблетки, потом баня, потом...
а разницы?
Эффект один - не хочешь последствий, не имей их. И все.
С оператором также - если надо, то применяй. Почему ты об этом спрашиваешь - вот в чем вопрос.
Если я хочу - я применяю, то что могу. Почему я не спрашиваю?


 
REA   (2006-04-19 10:14) [51]

Давно не видел goto в программах. Если бы увидел, скорее всего испугался бы. Можно сделать класс TGoToException, чтобы сильно карму не портить.


 
Игорь Шевченко ©   (2006-04-19 10:20) [52]

Юрий Зотов ©   (19.04.06 09:25) [46]

Обратное тоже верно.


 
Гаврила ©   (2006-04-19 10:45) [53]


> Юрий Зотов ©


> Еще одно подтверждение тому, что все "наезды" сишников
> на Паскаль проистекают от незнания Паскаля.


Иной раз не хватает конструкции
return(1) - присвоить результат и выйти одним махом.


>Sergey Masloff   (19.04.06 9:28) [47][Ответить]
>Гаврила ©   (19.04.06 09:18) [45]
>и все же
>
>if OpenDialog1.Execite then
>begin
>
> end;


Если там еще пяток вложенных иф-ов, то предпочитаю вариант с Exit - меньше путаницы


 
Sergey Masloff   (2006-04-19 10:56) [54]

Гаврила ©   (19.04.06 10:45) [53]
>Если там еще пяток вложенных иф-ов
То прямой кандидат на вынесение в функцию ;-)
Впрочем спор ни о чем - все равно формируются свои привычки у каждого.


 
Eraser ©   (2006-04-19 11:04) [55]


> Tirael ©   (19.04.06 07:30) [39]
>
> 2Eraser
>
> я на сях часто пишу в начале обработчика чтото вроде
>
> if (!OpenDialog1->Execute) return;
>
> неужели в делфи для этого нужен goto???

как тут уже сказали - есть "Exit", но вот такой код

var
 ms: TMemoryStream;
..
 ms := TMemoryStream.Create;
 if not ReadSomeData(ms) then
   Exit;

мягко говоря, некорректен, поэтому и приходится использовать try..finally, или же, как вариант, - goto.
я привык делать так:
var
 ms: TMemoryStream;
..
 ms := TMemoryStream.Create;
 try
   if not ReadSomeData(ms) then
     Exit;
...
 finally
   ms.Free;
 end;


 
jack128 ©   (2006-04-19 11:14) [56]

Sergey Masloff   (19.04.06 9:28) [47]
Гаврила ©   (19.04.06 09:18) [45]
и все же

if OpenDialog1.Execite then
begin

end;

читается намного лучше ИМХО

Смотря сколько у тебя уровней вложенности.

Eraser ©   (19.04.06 11:04) [55]
мягко говоря, некорректен, поэтому и приходится использовать try..finally, или же, как вариант, - goto.

Нету тут вариантов. Только try - finally


 
SPeller ©   (2006-04-19 11:23) [57]

Eraser ©   (19.04.06 11:04) [55]
я привык делать так:
var
ms: TMemoryStream;
..
ms := TMemoryStream.Create;
try
  if not ReadSomeData(ms) then
    Exit;
...
finally
  ms.Free;
end;


Лучше так:

var
  ms: TMemoryString;
..
  try
    ms := TMemoryStream.Create;
    try
      if (ReadSomeData(ms)) then
      begin
        ...
      end;
    finally
      ms.Free;
    end;
  except
    <обработка ошибки создания объекта класса>
  end;

  ...


 
Гаврила ©   (2006-04-19 11:29) [58]


> SPeller ©  


> except
>    <обработка ошибки создания объекта класса>
>   end;


А поподробнее можно? Какая именно тут  обработка?


 
Alexander Panov ©   (2006-04-19 11:31) [59]


> SPeller ©   (19.04.06 11:23) [57]
>
>     <обработка ошибки создания объекта класса>


Это паранойя и и ненужное утяжеление кода.
То  е самое, что в программе обрабатывать ошибку нехватки памяти при однократном вызове в программе GetMem(p,1)


 
Харько ©   (2006-04-19 11:48) [60]

В ядре Linux используются goto, и еще там язвительный комментарий в сторону Дейкстры. Потому Linux и проигрывает Windows по распространенности.


 
Игорь Шевченко ©   (2006-04-19 11:55) [61]


> Потому Linux и проигрывает Windows по распространенности.


Так эта...как мало оказывается надо - изменить код в ядре линукса, благо он доступен, и все, Билл Гейтс начинает грызть ногти, наблюдая за тем, как пользователи сносят ненавистный Windows.


 
Sergey Masloff   (2006-04-19 11:59) [62]

Игорь Шевченко ©   (19.04.06 11:55) [61]
Без goto и язвительных комментариев это уже будет не линукс ;-))


 
Плохиш ©   (2006-04-19 12:14) [63]


> Sergey Masloff   (19.04.06 11:59) [62]
> Без goto и язвительных комментариев это уже будет не линукс

Так вот чем он от вындовса отличается :-))


 
SPeller ©   (2006-04-19 12:19) [64]

Alexander Panov ©   (19.04.06 11:31) [59]
Если нужна надёжность кода, то придётся приучить делать так. Надёжный код лёгким не бывает. Когда какая-нить сволочь вдруг скушает память (у меня такое было), очень неприятно, когда большинство программ сыпятся с одной и той же ошибкой. Но это лишь частный пример. Ошибки при создании могут быть и в своих собственных классах. Поэтому если приучен писать так, чтобы в программе было как можно меньше необработанных исключений, то проблем будет меньше.


 
Чапаев ©   (2006-04-19 12:54) [65]


> > > редакторы бы не пропустили в печать
> >
> > Редактор -- неудавшийся автор, посему будет всячески стараться
>
> > выпустить в печать какую-либо мерзость, дабы дискредитировать
>
> > автора. :o)
>
> В мемориз! :-))

И копирайт Джека Лондона. :-)


> Страшную пропасть выкопал Дейкстра, заявив, что GOTO сакс
> мастдайный, а все остальное есть рулез вечный и немерянный.

:-) Насколько я знаю, рулез вечный и немерянный -- это while ... do и if ... then ... else, а всё остальное -- примочки для жырных буржуёв, которые нормальному человеку совсем не нужны.


> Давно не видел goto в программах. Если бы увидел, скорее
> всего испугался бы.

Так как нередко бываю в родном институте, часто вижу сию конструкцию в шедеврах первокурсников... :-I


 
проходил мимо   (2006-04-19 13:02) [66]


> SPeller ©   (19.04.06 12:19) [64]


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


 
Alexander Panov ©   (2006-04-19 19:17) [67]


> SPeller ©   (19.04.06 12:19) [64]
>
> Alexander Panov ©   (19.04.06 11:31) [59]
> Если нужна надёжность кода, то придётся приучить делать
> так. Надёжный код лёгким не бывает. Когда какая-нить сволочь
> вдруг скушает память (у меня такое было), очень неприятно,
>  когда большинство программ сыпятся с одной и той же ошибкой.
>  Но это лишь частный пример. Ошибки при создании могут быть
> и в своих собственных классах. Поэтому если приучен писать
> так, чтобы в программе было как можно меньше необработанных
> исключений, то проблем будет меньше.


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



Страницы: 1 2 вся ветка

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.042 c
15-1145346910
Layner
2006-04-18 11:55
2006.05.14
Если из комп. ActiveX на веб странице реализовать POST посылку


2-1145813851
BobUser
2006-04-23 21:37
2006.05.14
Получить все перестановки чисел 0..N


15-1145359781
Дарья
2006-04-18 15:29
2006.05.14
платный компонент


2-1145709298
Ку Ку
2006-04-22 16:34
2006.05.14
Дополнительная кнопка


3-1142856484
GL00m
2006-03-20 15:08
2006.05.14
Не работает INSERT при работе с БД Access...