Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кака лучше?


Страницы:   1 2 3

Fr ©   (2012-04-15 13:23:00) 

Практически везде в предоставляемых кусках кода есть такое:
for i:=0 to SL.Count-1 do ...

Почему вместо SL.Count-1не используется Pred(SL.Count)?

В чем здесь подвох? Может одна операция действует быстрее другой? Или может возникнуть какая-нибудь проблема при использовании Pred(SL.Count)?


Омлет   (2012-04-16 16:18:00) [41]


> Юрий Зотов ©   (16.04.12 16:07) [17]
> либо с выходом за диапазон.

low, high спасают.


Юрий Зотов   (2012-04-16 16:07:00) [42]


> CRLF   (16.04.12 10:31) [13]
> в прочих случаях объявляем TIndex = IndexMin..IndexMax;
> TArray = array [TIndex] of TElement;

И получаем проблемы либо с несовместимостью типов, либо с выходом за диапазон.

const
 IndexMin = ...;
 IndexMax = ... ;

type
 TIndex = IndexMin..IndexMax;
 TArray = array [TIndex] of ...;

var
 i: integer;
 j: TIndex;
 a: TArray;
begin
 for i := IndeхMin to IndexMax do
   a[i] := ...; // Несовместимость типов
 for j := IndeхMin to IndexMax do ...; // Выход за диапазон
end;

Мне тоже нравится строгость Паскаля, она спасает от многих ошибок. Но любую полезную вещь можно превратить в бесполезную (или даже вредную), доведя ее до абсурда.


Anatoly Podgoretsky   (2012-04-16 12:05:00) [43]


> Но работает только для конкретного примера в DVM ©   (15.
> 04.12 18:40) [7]

Работает с любыми перечислимыми типами


CRLF   (2012-04-16 11:55:00) [44]


> А в целом все эти функции/процедуры Pred, Succ, Inc, Dec,
>  Include, Exclude (может и ещё какие-то были) были "временной
> оптимизацией скорости выполнения" в эпоху Турбо Паскаля
> и может быть в эпоху Д1. Сейчас они никакой оптимизации
> не добавляют. И как правило лишь мешают воспринимать код
> тем, кто начал заниматься программированием после вышеназванной
> эпохи.
Неправда. Inc, Dec, Pred, Succ, Low, High работают с любыми перечислимыми типами. +-1 -- только с арифметическими.


Ega23   (2012-04-16 11:04:00) [45]


> Почему вместо  SL.Count-1 не используется Pred(SL.Count)?


С Савёловского вокзала до Белорусского в default city можно добраться:
1. На электричке
2. На такси.
3. Наземный транспорт (трамвай там какой-то ходил, вроде).

Почему большинство предпочитает всё-таки на метро добираться?


CRLF   (2012-04-16 10:31:00) [46]


> Но работает только для конкретного примера в DVM
Ну да, в прочих случаях объявляем TIndex = IndexMin..IndexMax; TArray = array [TIndex] of TElement;


Германн   (2012-04-16 02:07:00) [47]

А в целом все эти функции/процедуры Pred, Succ, Inc, Dec, Include, Exclude (может и ещё какие-то были) были "временной оптимизацией скорости выполнения" в эпоху Турбо Паскаля и может быть в эпоху Д1. Сейчас они никакой оптимизации не добавляют. И как правило лишь мешают воспринимать код тем, кто начал заниматься программированием после вышеназванной эпохи.


Германн   (2012-04-16 01:59:00) [48]


> На мой взгляд array [Byte] of ... удобней

Но работает только для конкретного примера в DVM ©   (15.04.12 18:40) [7]


CRLF   (2012-04-15 22:57:00) [49]

На мой взгляд array [Byte] of ... удобней, и с обязательным объявлением именованного типа.


Fr   (2012-04-15 21:43:00) [50]

Спасибо всем. Насколько я понял, принципиальной разницы нет, как делать. все зависит от восприятия пишущего и читающего :)


Sha   (2012-04-15 19:43:00) [51]

на мой взгляд 255 удобнее


DVM   (2012-04-15 18:40:00) [52]


> вторая кака хуже - она заставляет думать

второй вариант более удобен в массивах

a: array[0..Pred(256)] of ...

Наглядно показывает количество элементов в массиве


Sha   (2012-04-15 17:56:00) [53]

вторая кака хуже - она заставляет думать


Anatoly Podgoretsky   (2012-04-15 16:01:00) [54]

Скомпилируй обе каки и сравни код.


RWolf   (2012-04-15 13:50:00) [55]

Пишется проще, читается легче, по скорости одинаково.


Fr   (2012-04-15 13:42:00) [56]


> какая такая кака???

Читать не "кака", а "как" :)  Не виноват я, что здесь отсутствует система исправления своих сообщений. Поэтому при наборе текста и возникают такие ошибки.

А что по существу вопроса?


Сергей М.   (2012-04-15 13:33:00) [57]

"Кака" - она в "Практически везде"


brother   (2012-04-15 13:24:00) [58]

какая такая кака???


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо