|
|
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
Почему иногда вместо Код: pascal 1. нужно использовать Код: pascal 1. ??? В каких именно случаях один из двух вариантов лучше другого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 12:00:10 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
на чинающий, Когда нужно удалять элементы из х ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 12:41:02 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
sinedКогда нужно удалять элементы из х Нет. Когда имеет смысл, не запрашивать постоянно значение из X.Count ... Мы помещаем 1 раз, это значение в переменную I и делаем Dec ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 14:46:52 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
sined, если стоит оптимизация и от направления ничего не зависит (к примеру просто счетчик увеличивать), то можно заметить, что проход идет в обратном порядке, т.е. не зависимо от того как написано, отсюда как бы следует (не вдаваясь в причины), что в обратном порядке оптимальнее. но человеку воспринимать удобнее в прямом порядке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 14:50:15 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
НяшикНет. Когда имеет смысл, не запрашивать постоянно значение из X.Count ... Мы помещаем 1 раз, это значение в переменную I и делаем DecCount запрашивается один раз в любом случае. Вот такой код будет отлично работать Код: pascal 1. 2. и очистит весь список. А вот такой Код: pascal 1. 2. 3. удалит только половину списка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 17:10:46 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_А вот такойПоправка. Вот такой Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 17:12:19 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, второй код проверил? Удалит все и вылетит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 17:14:09 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
_Vasilisk__Vasilisk_А вот такойПоправка. Вот такой Код: pascal 1. 2. 3. 4. 5. Не особо лучше. Смысла в таком коде нет. В while обычно ставят "пока количество больше нуля". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 17:17:23 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Вроде 10 ка сообщений а несёшь дичь какую - то. Ошибься скорее всего по пьяни. Так как логика такова, что надо сверять текущую связку, с I а не один раз. На сякий случай через отладчик проверь, как работает код (F7) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 17:18:31 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
Так. Дубль 3. Имелось в виду вот это Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 17:33:38 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Васик. А ты правда с 2007 года программируешь? А то пишешь непонятно чего... А теперь поставь memo и напиши в две строки, ровно две без 3, и запусти свой код. Увидишь что 2 строка не удалиться.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 17:38:51 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
К слову, что бы быть не монотонным, вот правильный код Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 17:40:41 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
НяшикУвидишь что 2 строка не удалиться..Правильно _Vasilisk_А вот такой ... удалит только половину списка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 18:37:10 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
Няшик, Неа, вот правильный: Код: pascal 1. 2. Или даже так: Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 18:37:11 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
Кхм. Ну всё, началась ахинея. Человек спросил что и для чего, один несёт что в двух случаях count не будет вызван, хотя в таком случае будет Код: pascal 1. При том, ещё от вызванного count будет вызвать dec ... А этот, уже поддерживает его походу ... Правильный код в 20800838 А если уж стоит удалить текст, делайте просто text = ''; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2017, 18:40:03 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
на чинающийПочему иногда вместо Код: pascal 1. нужно использовать Код: pascal 1. ??? В каких именно случаях один из двух вариантов лучше другого? Опыт, сын ошибок трудных, все расставит на свои места. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2017, 14:31:48 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
на чинающийПочему иногда вместо Код: pascal 1. нужно использовать Код: pascal 1. ??? В каких именно случаях один из двух вариантов лучше другого?В одном только случае: когда логика задачи такова, что какой-то из этих вариантов лучше другого (а иногда он даже является единственно верным, хотя и не всегда - тоже зависит от логики задачи). Во всех остальных случаях - без разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2017, 16:05:42 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
Ну и вброс кое-чего на вентилятор... авторВ каких именно случаях один из двух вариантов лучше другого? Собсно, ни в каких. Count в обоих этих выражениях вычисляется однократно. Но если требуется удалять элементы из списка, выражение с downto работает корректно, а цикл с to - нет. В то же время, не следует применять подобные выражения в других языках. К примеру, в Java Count будет вычисляться при каждом проходе цикла, что скажется на производительности программы, а также может вызвать сбои. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2017, 16:08:25 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
Правильнее спрашивать - когда имеет значение последовательность прохода, а когда - нет. Имеет, когда обработка элемента n+1 зависит от обработки элемента n. В этом случае нужно думать над порядком прохождения цикла. Как уже было написано, пример - удаление элементов. В остальных случаях ни как написано, ни как реально считается (обычно от большего к меньшему, как бы не было написано в коде), значения не имеет и можно об этом специально не задумываться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2017, 16:56:26 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
makhaonИмеет, когда обработка элемента n+1 зависит от обработки элемента nНе только. Навскидку 2 примера: 1. Какой-то кэш-массив, заполнение которого логикой программы предусмотрено сначала. Естественно, что и искать в нем заполненный элементы правильнее и быстрее будет сначала, а не с конца. Хотя с конца тоже можно, но будет дольшн. 2. FIFO обычный. Просто надо 1-й элемент отдать из очереди, хотя остальные от него и не зависят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2017, 17:02:29 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
Любезный Count в обоих этих выражениях вычисляется однократно. =_= Ещё один. От куда вы все такие ??? От куда такая уверенность что однократно??? Вы вводе людей в заблуждения. Так как цикл развёртывается в Код: pascal 1. 2. Следовательно, не один раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2017, 20:50:54 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
YuRock, авторЕстественно, что и искать в нем заполненный элементы правильнее и быстрее будет сначала, а не с конца. Хотя с конца тоже можно, но будет дольшн. Правильнее будет сделать индекс, если уж на то пошло :) А не перебирать тупо кучу строк. Хотя в вырожденных случаях, когда до 80ти процетов случаев попадают на первые строки, может оказаться лучше искать подряд. авторFIFO обычный фифо вообще списком делается, а не циклом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2017, 21:01:43 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
makhaonА не перебирать тупо кучу строкКто о строках говорил? И какой нафиг индекс, если у меня массив в 100 хэндлов или нулей, из которых обычно заполнены первые 2-3? Зачем? И, да, это абстрактный пример был. По фифо. Список. А по этому списку не циклом ходят? Count в предыдущих примерах - не о списке речь? Разницы вообще я принципиальной не вижу в данных абстрактных случаях - список, массив - одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2017, 21:34:01 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
makhaonфифо вообще списком делается, а не циклом.А, если имеется ввиду, что всегда берется 1-й элемент списка - то понятно. Но опять же это пример цикла, идущего сначала while Count <> 0 do Proc( Items[ 0 ] ); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2017, 21:37:20 |
|
||
|
Требуется субботний ликбез
|
|||
|---|---|---|---|
|
#18+
YuRock, авторКто о строках говорил? Строки - как частный случай массива данных. Как будто нельзя массив байт индексировать :) авторИ какой нафиг индекс, если у меня массив в 100 хэндлов или нулей, из которых обычно заполнены первые 2-3? Зачем? Откуда я знаю, что у вас там за очень частный случай :) На 2-3 вообще нет смысла цикл использовать. Три вложенных if-then-else скорее всего будут быстрее скорее всего. Я говорю про общий случай. авторПо фифо. Список. А по этому списку не циклом ходят? А зачем там цикл? Связанный список. Что и зачем там перечислять? Две операции - либо добавить в буфер, либо извлечь. Добавили - сделали ссылку на новый элемент на конце старого, выняли - убрали ссылку и элемент из списка. Эмуляцию Count'а еще, если сильно хочется, можно сделать. Проще и сильно быстрее, чем бегать что-то считать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2017, 22:05:18 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=132&tid=2041822]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 312ms |

| 0 / 0 |
