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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.054 c
2-1141411870
Mozgan
2006-03-03 21:51
2006.03.19
Как создать свой модуль?


2-1141032793
dem_1112
2006-02-27 12:33
2006.03.19
dbchart очень срочно нужен ответ


6-1133621345
Владимир
2005-12-03 17:49
2006.03.19
Как отловить все ответы сервера?


2-1141544280
NSK3D
2006-03-05 10:38
2006.03.19
Ошибка сохранения


8-1128443263
Silver...
2005-10-04 20:27
2006.03.19
Распознование картинки