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

Вниз

Как по Break у выйти из нескольких блоков?   Найти похожие ветки 

 
RavenD   (2003-04-28 15:18) [0]

Привет, All!

пример:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
for i:=1 to 10 do begin
for l:=1 to 10 do begin
...
if(уловие)then Break;(выход из всех циклов)
...
end;
end
...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
как по условию выйти из вескольких блоков?

Спасибо.


 
Digitman ©   (2003-04-28 15:21) [1]

никак.
Break с анализом сквозного условия должен присутствовать на всех уровнях вложенности циклов


 
Zelius ©   (2003-04-28 15:25) [2]

либо после каждого цикла проверять установленные флаги и брейкать дальше, либо Abort + try except


 
Zirus ©   (2003-04-28 15:26) [3]

label 1;

...

for i:=1 to 10 do begin
for l:=1 to 10 do begin
...
if(уловие)then goto 1;(выход из всех циклов)
...
end;
end
...
1:


 
palva   (2003-04-28 15:28) [4]

Можно использовать, извините за выражение, оператор goto


 
evvcom ©   (2003-04-28 15:29) [5]

Хотя употребление подобных ругательств не считается хорошим стилем...


 
circul ©   (2003-04-28 15:36) [6]

А откуда компилятор знает, что тебе надо выйти из всех циклов??


 
anfaenger   (2003-04-28 15:40) [7]


> RavenD (28.04.03 15:18)

Думаю, что лучше все нужные циклы написать в отдельной процедуре, а внутри её по условию использовать "Exit".
procedure Ausgang;
begin
...
for i:=1 to 10 do begin
for l:=1 to 10 do begin
...
if(уловие)then Exit;(выход из всех циклов)
...
end;
end;
...
end;


 
_Igorek   (2003-04-28 15:54) [8]

i := 11;
break;


 
Zz_   (2003-04-28 15:57) [9]

Давайте уж и я поучаствую.

for C := 1 to 100 do begin
I := ((C-1) div 10)+1;
J := ((C-1) mod 10)+1;

if (условие) break;
end;


 
anfaenger   (2003-04-28 16:01) [10]


> _Igorek (28.04.03 15:54)

А, если циклов не два, а очень много? А, если как раз значения этих переменных нужны для дальнейшего использования? Кроме того, при таком стиле, наверняка, можно нарваться на неприятности в поведении программы.


 
Polevi ©   (2003-04-28 16:17) [11]

raise


 
Snap ©   (2003-04-28 16:25) [12]

Ну сколько у тебя будет циклов? тисячи? миллионы? если циклов не больше 15 (что уже мало вероятно), то без особых проблем помогут флаги. (или флаг).


 
Игорь Шевченко ©   (2003-04-28 16:26) [13]

И все-таки, goto, что бы ни писал злобный Дейкстра. Поскольку в данном случае логика будет наиболее прозрачна и понятна программисту.


 
default ©   (2003-04-28 16:27) [14]

в книге какой-то помню было написано:
"математически доказано что метки заменимы во всех случаях кроме одного: выход из нескольких циклов" - стало быть в этом случае надо применять их


 
anfaenger   (2003-04-28 16:50) [15]


> Snap © (28.04.03 16:25)

А, если с помощью циклов сканируется некий многомерный массив и, если при каком-либо значении определённого поля нужно далее в программе использовать индексы этого массива, т.е переменные циклов? Всё-таки, наверное, проще использовать Goto или Exit в отдельной процедуре. Использование Goto, хотя и не рекомендуется, но при вложенных циклах, даже в Help"е Delphi приведён пример с инструкцией Goto.



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

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

Наверх




Память: 0.5 MB
Время: 0.012 c
3-46576
AlexAlex
2003-04-21 13:21
2003.05.15
Проблемы с типом Float на Informix при переходе PC ->Sun


14-46937
Valentino
2003-04-25 15:55
2003.05.15
Нужен пример создания файла-теста для тестирующей программы?


3-46664
VanesKo
2003-04-24 21:19
2003.05.15
BDE часьая ошибка


6-46887
Сергей М.
2003-03-17 09:39
2003.05.15
Подключение удаленного доступа


14-46962
Zhenka
2003-04-26 12:37
2003.05.15
Добрый день. Господа кто нибудь знает как работать с БЛОБ