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

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

О правильном коде [D7, XP]


Страницы:   1 2

ifrau ©   (2008-07-29 13:30:00) 

Доброго времени. Взять, например, цикл:

 while count <= length(src) //здесь src: string
 begin
   ...


или правильнее будет заранее присвоить длину строки в переменную:

len := length(src);
и цикл писать уже так:
 while count <= len do
 begin
   ...


В общем, что лучше, выделять для таких вещей переменные (а их может быть много) или при каждом цикле вычислять длину строки (цикл может очень много раз запускаться) ? Спасибо


ifrau   (2008-07-29 14:15:00) [1]

Все, что хотел, выяснил, всем большое спасибо


Leonid Troyanovsky   (2008-07-29 14:12:00) [2]


> ifrau   (29.07.08 14:00) [15]

> Вообще, весь код выглядит так:

В печь его.

--
Regards, LVT.


Плохиш   (2008-07-29 14:11:00) [3]


> ifrau   (29.07.08 14:07) [21]
>
> > Плохиш
>
> Надо в начале?

Смотря чего...


Игорь Шевченко   (2008-07-29 14:10:00) [4]


> Вообще, весь код выглядит так:


ты эта...чего хочешь-то от кода ?


ifrau   (2008-07-29 14:07:00) [5]


> Плохиш

Надо в начале?


Johnmen   (2008-07-29 14:05:00) [6]


> Palladin ©   (29.07.08 14:01) [16]

А, ты про это... Не надо её заводить. Повторюсь про спички :))


Плохиш   (2008-07-29 14:05:00) [7]


>    code:='';

Стоит в неправильном месте.


Palladin   (2008-07-29 14:04:00) [8]

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


Johnmen   (2008-07-29 14:03:00) [9]


> ifrau   (29.07.08 14:00) [15]

Где здесь "цикл может очень много раз запускаться" "в линейном коде"?
Вобщем, без переменных, не стОит экономить на спичках, теряя читабельность.
Согласен с Игорь Шевченко ©   (29.07.08 13:53) [13]


Palladin   (2008-07-29 14:01:00) [10]


> Johnmen ©   (29.07.08 13:51) [12]

в for мы лишь объявляем индексную переменную, в while, дабы не приводить к постоянному вызову length, мы еще к индексной переменной заводим переменную обозначающую верхнюю границу индекса до которой будем бежать.


ifrau   (2008-07-29 14:00:00) [11]

Вообще, весь код выглядит так:

procedure TForm1.symbtobin(src: string; lines: TStrings);
var
 len, count, i, iost: integer;
 code: string;
begin
 len := length(src);
 count := 1;
 while count <= len do
 begin
   i := ord(symb.Text[count]);
   while i > 0 do
   begin
     iost := i mod 2;
     code := inttostr(iost) + code;
     i := i div 2;
   end;
   binary.Lines.Add(code);
   code:='';
   count := count + 1;
 end;
end;


Anatoly Podgoretsky   (2008-07-29 13:56:00) [12]


> Потому что в случае пробега по строке до Length - цикл прост
> до невозможности и никакого смысла использовать более сложную
> конструкцию с while и заводить лишнюю переменную нет. При
> чем для цикла for есть вкусность, на которую и указал Антон
> в последнем предложении.

А вот это нельзя сказать не видя остального кода, может как раз конструкция FOR не применима. А поскольку остального кода нет, то и говорить о правильности можно только условно, может в коде меняется length(src) и тогда не только вариант с for не применим, но и вариант с len

Правильность определяется не этим, а результатом.


Игорь Шевченко   (2008-07-29 13:53:00) [13]

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


Johnmen   (2008-07-29 13:51:00) [14]


> Palladin ©   (29.07.08 13:46) [9]
> заводить лишнюю переменную

Не лишняя, та же, что и в for


Anatoly Podgoretsky   (2008-07-29 13:50:00) [15]


> Что в моём случае будет правильнее?

Оба варианта правильные. Но второй оптимальный.


ifrau   (2008-07-29 13:49:00) [16]

Johnmen, в линейном коде

Palladin, удивительное рядом


Palladin   (2008-07-29 13:46:00) [17]


> ifrau   (29.07.08 13:41) [4]

Потому что в случае пробега по строке до Length - цикл прост до невозможности и никакого смысла использовать более сложную конструкцию с while и заводить лишнюю переменную нет. При чем для цикла for есть вкусность, на которую и указал Антон в последнем предложении.


Johnmen   (2008-07-29 13:44:00) [18]


> (цикл может очень много раз запускаться) ?

Это что значит? Много раз подряд в линейном коде или много раз подряд при топтании батона?


ifrau   (2008-07-29 13:43:00) [19]

TUserClass, да, прав )


ifrau   (2008-07-29 13:42:00) [20]

Григорьев Антон, спасибо, всё четко и ясно


Страницы:   1 2

Наверх

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