Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1140609794
DorisAxline
2006-02-22 15:03
2006.03.19
Question about this forum


4-1135861779
FireMan_Alexey
2005-12-29 16:09
2006.03.19
Подскажите как добавить свой пункт в контекстное меню Explorer-a


2-1141120783
VitV
2006-02-28 12:59
2006.03.19
Interbase. Путь к рисунку.


2-1141048509
49 Cent
2006-02-27 16:55
2006.03.19
Какой компонент поможет отобразить график?


3-1138197050
galexis
2006-01-25 16:50
2006.03.19
SQL запрос с многими значениями параметра.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский