Форум: "Начинающим";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];
ВнизGoTo Найти похожие ветки
← →
Джо © (2006-02-19 05:55) [40]Удалено модератором
← →
Шутнык (2006-02-19 05:58) [41]Удалено модератором
Примечание: п. 5
← →
Джо © (2006-02-19 06:06) [42]> [41] Шутнык (19.02.06 05:58)
> Какая чушь. Если ты думаешь, что в TList по массиву никогда
> не "пробегаются", то ты вообще в программировании ничего
> не понимаешь. Хоть бы исходники его посмотрел, прежде чем
> такое нести.
А зачем по нему "пробегатья"?! В нем заведомо хранятся свободные ячейки. Так что достаточно List[0] в любой момент и List.Delete[0]. Так что, пардон, перестань чушь нести.
Особенно с учетом того, что "список" и TList это не одно и тоже, кстати говоря.
← →
Defunct © (2006-02-19 06:12) [43]Шутнык (19.02.06 05:58) [41]
LOL 2 раза, да Вы как я посмотрю весельчак!
← →
Defunct © (2006-02-19 06:18) [44]> Особенно с учетом того, что "список" и TList это не одно и тоже, кстати говоря.
В оригинале было сказано не "список", а "динамический список"..
это не просто не одно и тоже с TList, это вообще разные вещи!
← →
Джо © (2006-02-19 06:34) [45]> Defunct ©
Здается мне, что после такой лужи гражданин ГоуТу опять прибегнет к излюбленному приему — смене ника.
← →
Defunct © (2006-02-19 06:58) [46]Джо © (19.02.06 06:34) [45]
да.. теперь все понятно насчет вчерашнего..
весело тут у вас ;>
Шутнык (19.02.06 05:54) [39]
>Fay © (19.02.06 05:47) [37]
> > На самом деле, нужно просто не создавать дырки 8)
> Иными словами сдвигать всех Энеми если первый Энеми убит.
> А зачем сдвигать, если можно добавлять новых в дырки ?
Подсказка - можно не сдвигать. Убит ведь известно какой enemy, и известно какой - последний.
← →
McSimm © (2006-02-19 11:43) [47]Вот именно об этом я сказал выше
Понять, осознать это можно только получив достаточный опыт. Но на этом этапе новичок обычно стоит на позиции "зачем мне извращаться и усложнять структуру если вполне работающий и отнюдь нисколько не запутанный код получается если вставить здесь goto"
Привыкнув использовать безусловный переход вы рано или поздно наченете мспользовать его и там где он явно лишний. Просто потому, что вам будет некогда задуматься над другим вариантом - сроки поджимают. Потом при модификации кода вы будете вынуждены добавить еще пару меток (ну не переписывать же код заново).
Готово - спагетти поданы.
← →
Sergey Masloff (2006-02-19 13:06) [48]Гаврила © (18.02.06 13:18) [2]
>Использование Goto категорически не рекомендуется, так как >концептуально неверно.
К месту и вовремя примененный goto вполне допустим. Другое дело что чтобы его применять нужно очень четкое осознание почему именно его а не альтернативные варианты. Как правило, такое понимание недоступно при низком и среднем уровне владения языком, поэтому и не рекомендуется.
А так вполне допустимо.
P.S. вобщем-то, мне за мою многолетнюю практику удалось обойтись без goto но пару раз я видел его в чужом коде и вполне к месту.
← →
TUser © (2006-02-19 13:08) [49]
> var
> i, eInd : Integer;
> label End1;
> begin
> eInd := Length(Enemy1);
> for i := 0 to eInd -1 do
> if Enemy1[i] = nil then begin
> eInd := i;
> goto End1;
> end;
> SetLength(Enemy1, eInd +1);
> End1:
> ...
>
>
> Сделайте короче и понятнее без goto.var i: integer;
f: boolean;
begin
i:=0; f:=true;
while f and (i < length(Arr)) do
if Arr[i] = nil then
f:=false
else inc (i);
if f then
SetLength(Arr,i+1);
end;
Не буду настаивать, что короче, но ИМХО, понятнее. Лично мне. Всегда в подобных случаях использую примерно такую конструкцию. Дополнительное преимущество перед вашим кодом - в переменной i гарантированного оказывается номер нового или найденного элемента, не надо вводить дополнительной переменной. Экономим аж прям целых 3 байта памяти! А если разрешить себе любимому использовать break, - то все 4.
← →
Anatoly Podgoretsky © (2006-02-19 13:08) [50]Код Дельфи подойдет как эталон?
← →
Такк (2006-02-20 02:30) [51]> TUser © (19.02.06 13:08) [49]
> var i: integer;
> i:=0; f:=true;
Хорошая идея, чтобы стало короче напихать всё в одну строчку.
← →
Defunct © (2006-02-20 02:37) [52]Такк (20.02.06 02:30) [51]
ну как? работает программа быстрее или до сих пор goto пользуемся?
← →
Такк (2006-02-20 02:38) [53]> Дополнительное преимущество перед вашим кодом - в переменной i гарантированного оказывается номер нового.
Ну, кому ты врёшь? Он и в том коде там оказывается.
> не надо вводить дополнительной переменной.
Ну, что ты опять врёшь? Там две переменные и у тебя две переменные.
Ведь спор достойно, без вранья.
У тебя : while f and (i < length(Arr)) do
И откуда читающий код знает что такое f ? Ты предлагаешь ему просмотреть весь код, чтобы это понять.
А конструкция: if Enemy1[i] = nil then - ясна с первого взгляда.
← →
Такк (2006-02-20 02:41) [54]Обе конструкции работают быстрее чем 0.001 секунды. Поэтому засечь время не получилось.
← →
Германн © (2006-02-20 02:45) [55]Не знаю разъясню ли я данную ситуацию или запутаю!
Но, имхо, основной (потенциальный) вред Goto состоит в том, что метку для сего перехода можно определить "где угодно" в пределах модуля, в котором она описаны. Без учёта "где он (переход) вызван" и "где находится сия метка"!.
← →
Такк (2006-02-20 02:52) [56]> Германн © (20.02.06 02:45) [55]
Если ты делаешь большой проект, и не один, а в команде, то первое правило - это код должен быть понятным.
А различные оптимизации - вплоть до перевода на ассемблер - это вообще отдельная задача. И делать её нужно, только там где критично. Если, конечно, ты хочешь уложиться в сроки, а не писать программу десять лет.
← →
Defunct © (2006-02-20 02:54) [57]> Такк
а так?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);
..
← →
Defunct © (2006-02-20 02:58) [58]Такк (20.02.06 02:52) [56]
> А различные оптимизации - вплоть до перевода на ассемблер - это вообще отдельная задача.
Да но вначале должен быть выбран оптимальный алгоритм, а иначе и ассемблер не поможет.
← →
Такк (2006-02-20 03:08) [59]> Defunct © (20.02.06 02:54) [57]
Дельфи вылетела. Сам ищи ошибку в своём глюкавом коде. Программист, блин.
← →
Defunct © (2006-02-20 03:10) [60]Такк (20.02.06 03:08) [59]
LOL
что бы я без вас делал? наверное, умер бы со скуки.
← →
Такк (2006-02-24 06:44) [61]Так и не нашёл свою ошибку за столько времени?
i у тебя не определено при нулевом числе Энеми.
← →
Grief © (2006-02-24 15:25) [62]Блин ну и споры тут.... Тогда можно знаете, считать циклы с постусловиями тоже потенциально опасной структурой, так как чел, читающий код может к моменту, когда дочитает до условия забыть, что происходило выше... Да и вообще многие конструкции можно считать таковыми (опасными). Мое мнение - каждый должен сам решать, использовать их или нет. Лично я не использую не goto, не repeat..until"ы :)
← →
Психиатор (2006-02-25 06:48) [63]Удалено модератором
← →
Галинка © (2006-02-25 21:34) [64]Grief © (24.02.06 15:25) [62]
А while Вы тоже не используете? Вы вообще задачи какого характера тогда пишите?
← →
Pit © (2006-02-25 21:39) [65]Зайдите на http://rsdn.ru/summary/3165.xml как раз для вас.
← →
Галинка © (2006-02-26 00:02) [66]Такк (24.02.06 06:44) [61]
Может некорректно, но еще и по этому я не люблю циклы for ... to... do..., надо всегда помнить, что переменная цикла не определна до начала цикла и после его завершения. Т.е. нельзя проверить выполнялся ли цикл, и если да . то сколько раз, и в какой точке был быброс.
← →
ASoft (2006-02-26 03:27) [67]Я помню был спор на счет EXIT... Помахав руками, пришли, все же, к мнению, что кому хочется (удобней) использовать его (exit), тот пусть его использует.
>[52] "...вы все еще пользуетесь GOTO? Тогда мы идем к Вам.." :) (оч. похоже:))
Лично мне не приходилось использовать в Delphi goto...Обходился как-то..
Но тут прозвучало мненение, что вообще "всё" не корректно: циклы, exit, break, goto..:)
Дык, давайте оставим только if..else..if, begin и end! Долой сорняки! :) Даешь флаги и счетчики! :)
сорри, если офтоп
← →
Готец (2006-02-26 04:10) [68]> Может некорректно, но еще и по этому я не люблю циклы for ... to... do..., надо
> всегда помнить, что переменная цикла не определна до начала цикла и после
> его завершения. Т.е. нельзя проверить выполнялся ли цикл, и если да . то
> сколько раз, и в какой точке был быброс.
В конструкции с goto - это не нужно. Ты просто сам себе жизнь усложняешь отказываясь от него.
Как быть с выходом из нескольких вложенных циклов без goto - обсуждалось?
← →
Defunct © (2006-02-26 05:16) [69]> Как быть с выходом из нескольких вложенных циклов без goto - обсуждалось?
А зачем доводить реализацию программу до такой стадии, что нельзя обойтись без ГЛЮКОДРОМА. Выход из нескольких вложенных циклов есть ничто иное как потенциальный ГЛЮКОДРОМ, который будет здорово преукрашен конструкциями с использованием GOTO. GOTO и ГЛЮКОДРОМ - синонимы.
← →
Готец (2006-02-26 08:00) [70]> выход из нескольких вложенных циклов есть ничто иное как потенциальный
> ГЛЮКОДРОМ,
перебор элементов четырёхмерного массива, с поиском нужного элемента - глюкодром? Ну ну.
← →
begin...end © (2006-02-26 08:47) [71]Гы...
Кому интересно -- скачайте старую ветку этого форума: http://slil.ru/22582632
Самое смешное в той истории -- то, что главный противник goto и Break впоследствии не раз приводил в своих ответах на форуме код, использующий Break...
Гы...
:о)))))
← →
konrads (2006-02-26 13:37) [72]Сам goto не использую, но давным давно учили так, если совсем не в моготу, то только вниз по коду, и только наружу циклов и не в коем случае не внутрь новых и наверх.
← →
Галинка © (2006-02-26 16:00) [73]Готец (26.02.06 08:00) [70]
А где применяются подобные монстры. Только без приколов назови предметную облать, в которой многомерный массив нельзя заменить одномерным, но с более сложными компонентами, например, записями. Не знаю как на счет объем, но информативность проги точно повысится, если будешь знать что к чему относится. Но это сто раз ИМХО
← →
Defunct © (2006-02-26 18:47) [74]begin...end © (26.02.06 08:47) [71]
Может он и goto где-то применял? про брек в той ветке прозвучали довольно убедительные аргументы, после чего будучи не полностью упертым бараном, почему бы не пользоваться тем, что иногда полезно.
Положил бы ту ветку в более доступное место, а то со скоростью 76 byte/s не реально скачивать.
← →
Готец (2006-02-27 04:29) [75]Удалено модератором
← →
Defunct © (2006-02-27 05:14) [76]Готец (27.02.06 04:29) [75]
Получается все 3D игры без Гото никак? Или только ваша? Дык, вы название скажите, чтобы если я вдруг на вашу игру наткнусь - случано не запустил.
← →
Crash Coredump © (2006-02-27 15:45) [77]Defunct © (26.02.06 05:16) [69]
> GOTO и ГЛЮКОДРОМ - синонимы.
Всякий овощ приносит пользу, будучи употреблен надлежащим образом в надлежащее время.
В том числе и оператор goto, в противном случае его бы исключили из допустимых конструкций языка. Раз не исключили, не забывай пожалуйста к подобным постам добавлять фразу: по моему скромному мнению.
← →
Defunct © (2006-02-28 04:08) [78]
> Раз не исключили, не забывай пожалуйста к подобным постам
> добавлять фразу: по моему скромному мнению.
это не только мое мнение.
И уж позвольте мне самому решать где ставить, а где не ставить imho.
> Раз не исключили
Значит оставили для любителей глюкодрома (для совместимости со старыми версиями).
← →
Заметка (2006-02-28 05:07) [79]Удалено модератором
← →
Crash Coredump © (2006-02-28 13:27) [80]Defunct © (28.02.06 04:08) [78]
> Значит оставили для любителей глюкодрома (для совместимости
> со старыми версиями).
В какой старой версии паскаля без оператора GOTO нельзя было обойтись ?
Страницы: 1 2 3 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.017 c