![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GoTo [D7, XP]
WestBronx © (2006-02-18 11:35:00)Привет. Подскажите, есть ли в делфи нечто подобное:
if i := 1 then goto endp;
...
endp:
Извените за прямо сказать тупой вопрос, просто по F1, искал, нашёл кое что но непонял как этим пользоваться, объясните пожалуйсто. спасибо.
begin...end (2006-02-26 08:47:00) [21]Гы...
Кому интересно -- скачайте старую ветку этого форума: http://slil.ru/22582632
Самое смешное в той истории -- то, что главный противник goto и Break впоследствии не раз приводил в своих ответах на форуме код, использующий Break...
Гы...
:о)))))
Готец (2006-02-26 08:00:00) [22]> выход из нескольких вложенных циклов есть ничто иное как потенциальный
> ГЛЮКОДРОМ,
перебор элементов четырёхмерного массива, с поиском нужного элемента - глюкодром? Ну ну.
Defunct (2006-02-26 05:16:00) [23]> Как быть с выходом из нескольких вложенных циклов без goto - обсуждалось?
А зачем доводить реализацию программу до такой стадии, что нельзя обойтись без ГЛЮКОДРОМА. Выход из нескольких вложенных циклов есть ничто иное как потенциальный ГЛЮКОДРОМ, который будет здорово преукрашен конструкциями с использованием GOTO. GOTO и ГЛЮКОДРОМ - синонимы.
Готец (2006-02-26 04:10:00) [24]> Может некорректно, но еще и по этому я не люблю циклы for ... to... do..., надо
> всегда помнить, что переменная цикла не определна до начала цикла и после
> его завершения. Т.е. нельзя проверить выполнялся ли цикл, и если да . то
> сколько раз, и в какой точке был быброс.
В конструкции с goto - это не нужно. Ты просто сам себе жизнь усложняешь отказываясь от него.
Как быть с выходом из нескольких вложенных циклов без goto - обсуждалось?
ASoft (2006-02-26 03:27:00) [25]Я помню был спор на счет EXIT... Помахав руками, пришли, все же, к мнению, что кому хочется (удобней) использовать его (exit), тот пусть его использует.
>[52] "...вы все еще пользуетесь GOTO? Тогда мы идем к Вам.." :) (оч. похоже:))
Лично мне не приходилось использовать в Delphi goto...Обходился как-то..
Но тут прозвучало мненение, что вообще "всё" не корректно: циклы, exit, break, goto..:)
Дык, давайте оставим только if..else..if, begin и end! Долой сорняки! :) Даешь флаги и счетчики! :)
сорри, если офтоп
Галинка (2006-02-26 00:02:00) [26]Такк (24.02.06 06:44) [61]
Может некорректно, но еще и по этому я не люблю циклы for ... to... do..., надо всегда помнить, что переменная цикла не определна до начала цикла и после его завершения. Т.е. нельзя проверить выполнялся ли цикл, и если да . то сколько раз, и в какой точке был быброс.
Pit (2006-02-25 21:39:00) [27]Зайдите на http://rsdn.ru/summary/3165.xmlкак раз для вас.
Галинка (2006-02-25 21:34:00) [28]Grief © (24.02.06 15:25) [62]
А while Вы тоже не используете? Вы вообще задачи какого характера тогда пишите?
Психиатор (2006-02-25 06:48:00) [29]Удалено модератором
Grief (2006-02-24 15:25:00) [30]Блин ну и споры тут.... Тогда можно знаете, считать циклы с постусловиями тоже потенциально опасной структурой, так как чел, читающий код может к моменту, когда дочитает до условия забыть, что происходило выше... Да и вообще многие конструкции можно считать таковыми (опасными). Мое мнение - каждый должен сам решать, использовать их или нет. Лично я не использую не goto, не repeat..until'ы :)
Такк (2006-02-24 06:44:00) [31]Так и не нашёл свою ошибку за столько времени?
i у тебя не определено при нулевом числе Энеми.
Defunct (2006-02-20 03:10:00) [32]Такк (20.02.06 03:08) [59]
LOL
что бы я без вас делал? наверное, умер бы со скуки.
Такк (2006-02-20 03:08:00) [33]> Defunct © (20.02.06 02:54) [57]
Дельфи вылетела. Сам ищи ошибку в своём глюкавом коде. Программист, блин.
Defunct (2006-02-20 02:58:00) [34]Такк (20.02.06 02:52) [56]
> А различные оптимизации - вплоть до перевода на ассемблер - это вообще отдельная задача.
Да но вначале должен быть выбран оптимальный алгоритм, а иначе и ассемблер не поможет.
Defunct (2006-02-20 02:54:00) [35]> Такк
а так?
var
i : Integer;
begin
for i := Low( Enemy1) to High( Enemy1) do
if Enemy1[i] = nil then
break;
if i >= High( Enemy1) then
SetLength(Enemy1, Length( Enemy1) + 1);
..
Такк (2006-02-20 02:52:00) [36]> Германн © (20.02.06 02:45) [55]
Если ты делаешь большой проект, и не один, а в команде, то первое правило - это код должен быть понятным.
А различные оптимизации - вплоть до перевода на ассемблер - это вообще отдельная задача. И делать её нужно, только там где критично. Если, конечно, ты хочешь уложиться в сроки, а не писать программу десять лет.
Германн (2006-02-20 02:45:00) [37]Не знаю разъясню ли я данную ситуацию или запутаю!
Но, имхо, основной (потенциальный) вред Goto состоит в том, что метку для сего перехода можно определить "где угодно" в пределах модуля, в котором она описаны. Без учёта "где он (переход) вызван" и "где находится сия метка"!.
Такк (2006-02-20 02:41:00) [38]Обе конструкции работают быстрее чем 0.001 секунды. Поэтому засечь время не получилось.
Такк (2006-02-20 02:38:00) [39]> Дополнительное преимущество перед вашим кодом - в переменной i гарантированного оказывается номер нового.
Ну, кому ты врёшь? Он и в том коде там оказывается.
> не надо вводить дополнительной переменной.
Ну, что ты опять врёшь? Там две переменные и у тебя две переменные.
Ведь спор достойно, без вранья.
У тебя : while f and (i < length(Arr)) do
И откуда читающий код знает что такое f ? Ты предлагаешь ему просмотреть весь код, чтобы это понять.
А конструкция: if Enemy1[i] = nil then - ясна с первого взгляда.
Defunct (2006-02-20 02:37:00) [40]Такк (20.02.06 02:30) [51]
ну как? работает программа быстрее или до сих пор goto пользуемся?