Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
Владислав   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.011 c
1-53470
Creator
2004-02-05 10:07
2004.02.17
приложение System


1-53572
HF-Trade
2004-02-08 22:38
2004.02.17
Form1.close; - Form2.open?


1-53459
Goida
2004-02-06 13:54
2004.02.17
Стоит ли освобождать объекты WordApplication и WordDocument?


14-53722
Clift
2004-01-23 19:08
2004.02.17
---|Ветка была без названия|---


1-53565
dima_crt
2004-02-09 10:46
2004.02.17
отладчик заходит в модуль компонента...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский