![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
О правильном коде [D7, XP]
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]Григорьев Антон, спасибо, всё четко и ясно