Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.17;
Скачать: CL | DM;

Вниз

Оптимизация кода.   Найти похожие ветки 

 
Владислав ©   (2004-02-06 14:22) [40]

PVOzerski © (05.02.04 10:50) [27]

"for i:=1 to 1000 do
for j:=1 to 1000 do
if x[i,j]="Найденный долгожданный элемент массива!!!" then
begin
MyProcedure(i,j);
goto 1;
end;
1:"


Дык все ж просто ;)

procedure Test;
var
i: Integer;
j: Integer;
LFound: Boolean;
begin
for i := 1 to 1000 do
begin
for j := 1 to 1000 do
begin
LFound := x[i,j] = "Найденный долгожданный элемент массива!!!";
if LFound then
Break
end;
if LFound then
Break
end;
// прочие действия
end;


 
Владислав ©   (2004-02-06 14:25) [41]

А это автору ;)

begin
repeat
if a = b then
begin
//..........
if c = s then
begin
Break
end;
//..........
end
until True
end;


 
Плохиш   (2004-02-06 14:34) [42]

>Владислав © (06.02.04 14:25) [41]

Интересно, а если c <> s так и будем в цикле крутиться?


 
Владислав ©   (2004-02-06 14:36) [43]

> Плохиш (06.02.04 14:34) [42]

Не, не будем.


 
Владислав ©   (2004-02-06 14:37) [44]

RTFM


 
Плохиш   (2004-02-06 14:38) [45]

>Владислав © (06.02.04 14:36) [43]

> Не, не будем.

И в каком месте Вашего кода об этом написано?


 
Владислав ©   (2004-02-06 14:38) [46]

Repeat statements
When expression returns True, the repeat statement terminates


 
Плохиш   (2004-02-06 14:41) [47]

>Владислав © (06.02.04 14:38) [46]
Опс... :-)

repeat
until true;

Более глупое использование цикла repeat трудно придумать 8-)


 
Владислав ©   (2004-02-06 14:43) [48]

Ага :)
Только если между циклами огромное количество кода и нет комментариев, такой код читается не намного лучше goto :)


 
Verg ©   (2004-02-06 14:46) [49]


>
> Плохиш (06.02.04 14:41) [47]
> >Владислав © (06.02.04 14:38) [46]
> Опс... :-)
>
> repeat
> until true;
>
> Более глупое использование цикла repeat трудно придумать
> 8-)


Зря так думаешь. Это нормальный ход.
Кстати, довольно распространенный.


 
Плохиш   (2004-02-06 14:47) [50]

>Verg © (06.02.04 14:46) [49]

С until true или until false ?


 
Verg ©   (2004-02-06 14:52) [51]


> Плохиш (06.02.04 14:47) [50]
> >Verg © (06.02.04 14:46) [49]
>
> С until true или until false ?


И тот и другой.
и
repeat .... break ... until true;

тоже.

Оптимизатор и камня на камне не оставит от самого такого цикла, а break свою ф-цию нормально выполнит.


 
Verg ©   (2004-02-06 14:56) [52]


> Плохиш (06.02.04 14:47) [50]


Вот смотри, например.

begin
If a=b then
begin
GetMem(чего-нибудь)
try
..........
If c=s then
begin
Goto lala
end;
..................
...................
finally
FreeMem(Того же);
end;
..........
end;
lala:;

Вот. Эта конструкция вообще на этапе компиляции не проканает.
А с repeat-until true И break вместо goto будет все "пучком". Красиво и надежно.


 
Skier ©   (2004-02-06 15:00) [53]


> Скажите пожалуйста никак нельзя обойтись без метки lala;

Без меток всегда можно обойтись.


 
Sandman25 ©   (2004-02-06 15:37) [54]

Навеяло [53].
От каких еще штук можно избавиться?
От for помогает while.
От while помогает repeat until с предварительным if.
От repeat помогает while с предварительным копированием тела цикла.
От if без else помогает
while () do
begin
...
break;
end;
От if c else можно избавиться с помощью меток.
while () do
begin
// then
goto A;
end;
// else
A:
Только от присвоения не могу избавиться. Хотя, наверное, можно применить какой-нибудь FillChar или Move :)



Страницы: 1 2 вся ветка

Текущий архив: 2004.02.17;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.023 c
14-53748
BOA_KAA
2004-01-28 11:27
2004.02.17
Proxy для WIndows


3-53415
Юлия
2004-01-23 18:38
2004.02.17
Работа с базой в сети


3-53388
Smalik
2004-01-27 11:40
2004.02.17
Как программно очистить таблицу в Access e


1-53629
Arsen
2004-02-05 23:10
2004.02.17
Сохранение Default имени в LogOn (Win2k/XP/NT4.0)


1-53621
Budy
2004-02-07 10:41
2004.02.17
Cos, Sin, Tg, Ctg