Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GoTo [D7, XP]


Страницы:   1 2 3 4 5

WestBronx ©   (2006-02-18 11:35:00) 

Привет. Подскажите, есть ли в делфи нечто подобное:

if i := 1 then  goto endp;
...
endp:


Извените за прямо сказать тупой вопрос, просто по F1, искал, нашёл кое что но непонял как этим пользоваться, объясните пожалуйсто. спасибо.


Defunct   (2006-02-19 05:27:00) [61]

Шутнык   (19.02.06 05:16) [30]

Дите 3 лет..
вместо вполне логичного и ожидаемого мной от вас вопроса "как это сделать?", начались какие-то "обидки-кровавки", домыслы и т.п.
Смысл-то защищать один из многих возможных, но далеко не лучший алгоритм?


Шутнык   (2006-02-19 05:16:00) [62]

Удалено модератором
Примечание: п. 5


Fay   (2006-02-19 05:16:00) [63]

2 Defunct ©   (19.02.06 4:31) [22]
> не зная особенностей T-SQL можно вообще впасть в панику
Думаю, правильнее было бы сказать "совсем/почти не зная T-SQL". На таком уровне рано ещё читать чужие исходники - нужно буквари/BOL изучать.


Defunct   (2006-02-19 05:10:00) [64]

> Ты не можешь ЗНАЧИТЕЛЬНО ускорить программу даже если этот код будет выполняться мгновенно.

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

И вопрос был не как от этого кода избавитсья, а как сделать ЭТОТ код короче или понятнее
Да мне все-равно о чем был вопрос. Зато я точно знаю, что именно этот код можно за команию с goto убрать и вместо него написать более быстрый аналог без ущерба в быстродейтвии и наглядности.


Шутнык   (2006-02-19 04:56:00) [65]

Удалено модератором
Примечание: п. 5


Defunct   (2006-02-19 04:47:00) [66]

Рационализатор   (19.02.06 04:39) [24]

Правильно! ибо нефиг! ;>

Шутнык   (19.02.06 04:43) [25]
насчет [23] - это не шутка.


Шутнык   (2006-02-19 04:43:00) [67]

Удалено модератором
Примечание: п. 5


Рационализатор   (2006-02-19 04:39:00) [68]

Удалено модератором
Примечание: п. 5


Defunct   (2006-02-19 04:35:00) [69]

> Сделайте короче и понятнее без goto.

конкретно этот код сделать короче и понятнее может и нельзя, но значительно ускорить программу избавившись сразу и от goto, и от перебора массива в поисках свободного места - запросто.


Defunct   (2006-02-19 04:31:00) [70]

Fay ©   (19.02.06 03:45) [19]
> подобный код весьма прозрачен.

кому как, вам - как автору кода - да.
мне - нет, без коментариев и трассировки наврятли бы разобрался с какой целью был прыжек в тело цикла, минуя предусловие... А не зная особенностей T-SQL можно вообще впасть в панику, будет ли исполняться цикл или после "fetch next" или перейдет сразу к "close c".


GoTo   (2006-02-19 04:23:00) [71]

Удалено модератором
Примечание: п. 5


Fay   (2006-02-19 03:48:00) [72]

8) чё-то я переволновался 8)
:some_labelследует читать как some_label:


Fay   (2006-02-19 03:45:00) [73]

2 Defunct ©   (19.02.06 3:30) [17]
>10. У попа была собака, он ее любил
>20. она съела кусок мяса, он ее убил
> 30. goto 10.

Не только. Я использую для того, не писать совершенно одинаковые строки. Пример (T-SQL):

declare cursor ....
open cursor ...
goto some_label
while @@fetch_status = 0 begin
 ....
 :some_label
 fetch next ...
end
close c


В Delphi такие ситуации возникают реже, но возникают. Так почему бы не использовать goto? IMHO, подобный код весьма прозрачен.


Галинка   (2006-02-19 03:43:00) [74]

А я думала gotoумер вместе с Бэйсиком. Вот не поверите, я им точно в Паскале (лет этак 8 уже), никогда не применяла. Если честно, я даже не знала, что он в Паскале есть ... Спасибо что просветии. Нам как-то сказали, что применение этого оператора свидетельствует о "плохом стиле программирования". Да и если все можно процедурками, функциями и различными циклами оформить, то зачем он вообще?

В Бэйсике он был необходим по большей части для замены тех самых условных циклов. Т.е. если в Бэйсике была комбинация if... then goto..., то в Паскале я думаю можно обойти это с помощью условных циклов, ну искусственно завести счетчик или флажок (не так уж они и много весят), чтобы по этому условию untilтоже выкидывал. Неужели это намного труднее чем goto end?


Defunct   (2006-02-19 03:30:00) [75]

Fay ©   (19.02.06 02:54) [15]
Goto - это бесспорно хорошо для вот таких программ:

10. У попа была собака, он ее любил
20. она съела кусок мяса, он ее убил
30. goto 10.

и для вот таких:

maincycle:
  call proc1
  call proc2
  call proc3
  jmp maincycle

но его наличие обременяет как только goto начинает использоваться вот в таких программах:

start:
if a > 100 then goto checkcondition3
b := a / 2;
...
if cond1 then goto checkcondition3  
...
checkcondition2:
if cond2 then goto exit
a := b;
...
goto ainc1
...
checkcondition3:
if cond3 then goto checkcondition2
...
ainc1: a := a+1;
goto start
...
exit:

>> "если разбираться в коде сложной программы, где используются goto, можно свихнуть мозги"
> Можно подумать, без goto в сложной программе разбаться легко!

не легко, но с goto свихнуть мозги гораздо быстрее!
думаю вы поняли о чем я.


Германн   (2006-02-19 03:09:00) [76]

2 McSimm ©   (18.02.06 14:47) [5]
Извини, не согласен со многими положениями миги-статьи!


> К слову сказать, операторы break continue exit и т.п. по
> сути являются такими же прерывателями логики, удаляющими
> код от идеальной структурной организации.


Fay   (2006-02-19 02:54:00) [77]

2 McSimm ©   (19.02.06 1:08) [14]
Я решительно не вижу никаких аргументов против goto. Да и как поспоришь, когда тут все такие умные... "Хорошая структурность кода"... "прерыватели логики"... Ужоз!

"если разбираться в коде сложной программы, где используются goto, можно свихнуть мозги"
Можно подумать, без goto в сложной программе разбаться легко!

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


McSimm   (2006-02-19 01:08:00) [78]

>Fay ©
> Бред

Очень информативно, но недостаточно аргументировано :))
Возможно вы считаете использование goto оправданным, но не стоит наверное так с плеча рубить :)


McSimm   (2006-02-19 01:06:00) [79]

>Галинка ©   (19.02.06 00:49) [12]
Я не придираюсь :), просто не совсем понял почему вы предложили использовать цикл и подумал что вы что-то напутали.
А почему forнадо реже использовать ? Это некорректное утверждение.
Если количество итераций предопределено то именно его и надо использовать, в других случаях -- repeat/while


Галинка   (2006-02-19 00:49:00) [80]

McSimm ©   (18.02.06 23:29) [10]

for ... to ... do ...

И это не я называю. Это я вычитала не то в Файсмане еще, не то в книжке Диалог МИФИ (авторов не помню)... Только не говорите, чтобы цитату привела. Нету у меня их сейчас уже...

Да и вот сейчас подумала, если все должно выполняться если i<>0, то так и надо написать. Вот как Чародей ©   (18.02.06 21:35) [8] рекомендует.


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо