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

Вниз

Как по 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.013 c
14-46950
sucer
2003-04-25 17:09
2003.05.15
А почему бы этом сайте не разместить серийники для всех версий


1-46692
postx
2003-05-03 13:50
2003.05.15
Как прочитать Базы.dbx Outlook Express?


1-46714
чютатель
2003-05-04 16:28
2003.05.15
Как прочитать константу из dll ?


1-46797
sagchat
2003-05-01 15:14
2003.05.15
Как удалить все файлы с указаным расширением?


4-47043
walruz
2003-03-16 13:38
2003.05.15
Help shellAPI





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский