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

Вниз

Ох эти цыклы!!!!   Найти похожие ветки 

 
Igor__   (2003-08-14 07:40) [0]

Сначала код:
For i:=1 to n do
for j:=1 to m do
begin
if <условие> then goto l1;
end;
l1:

Где-то я слышал, что всегда можно обойтись без GOTO, но это ведь неправда. Или вы можете показать как выйти из двойного цыкла без GOTO???


 
Viktor Kushnir   (2003-08-14 08:07) [1]

VAr
vExit :boolean;

vexit := false;
For i:=1 to n do
Begin
for j:=1 to m do
begin
if <условие> then vExit := true else DoSome;
end;
If vExit then break;
End;


 
АлексейК   (2003-08-14 08:34) [2]

For i:=1 to n do
BEGIN
for j:=1 to m do
if <условие> then break; //завершение внутреннего цикла
if <условие> then break;//завершение внешнего цикла
END


 
Романов Р.В.   (2003-08-14 09:51) [3]

procedure A;
function B(Data: TData);
begin
for i := 0 to ...
for j := 0 to ...
if <условие> then Exit;
end;
begin
...
B(Data);
...
end;


 
Е-Моё имя   (2003-08-14 10:00) [4]

аааааа.....вона тут про какие циклы....
а то по трагизму в теме я уж другое подумал...))


 
NAlexey   (2003-08-14 10:18) [5]

>а то по трагизму в теме я уж другое подумал...))
А чё в курсе про другие цыклы?


 
Е-Моё имя   (2003-08-14 10:20) [6]

разные циклы бывают...


 
NAlexey   (2003-08-14 10:24) [7]

Ну да, можно обмануться судя по теме. Как будто автор очнувшись вздрагивае, глубоко так вздыхает, и - Ох уж эти циклы!!! :)


 
han_malign   (2003-08-14 10:27) [8]


i:=1;fCondition:=false;
while((i<=n)and not(fCondition))do begin
j:=1;
while((j<=m)and not(fCondition))do begin
fCondition:=CalcCondition(i,j);
inc(j);
end;
inc(i);
end;
if(fCondition)then ...

- вот это структурное программирование! А цикл FOR изначально предназначен для не прерываемых циклов, с постоянным шагом!!! Все остальные извращения с этим циклом - извращения и есть...

З.Ы. В качестве еще одного извращения:
k:=0;
while((k<(m*n))and not CalcCondition(k div m + 1,k mod m + 1))do inc(k);


 
Val   (2003-08-14 10:31) [9]

>han_malign © (14.08.03 10:27) [8]
.. FOR предназначен для не прерываемых циклов..
это спорное утверждение


 
Basja   (2003-08-14 10:54) [10]

For i:=1 to n do
for j:=1 to m do
begin
if <условие> then goto l1;
end;
l1:

а чо разве можно из тела цикла прыкать по мнеткам вне цикла?


 
panov   (2003-08-14 10:56) [11]

>Basja © (14.08.03 10:54) [10]
а чо разве можно из тела цикла прыкать по мнеткам вне цикла?

угу, можно


 
Basja   (2003-08-14 10:57) [12]


> panov

это же полный отстой


 
Val   (2003-08-14 11:00) [13]

>Basja © (14.08.03 10:57) [12]
поэтому и говорится обычно о крайне осторожном использовании goto


 
han_malign   (2003-08-14 11:07) [14]

>Val © (14.08.03 10:31) [9]
>это спорное утверждение
- в структурном программировании - это абсолютное утверждение, и если не нужны сюрпризы ("Всего-то три строки - не мог я напортачить, но ОТКУДА???"), лучше его придерживаться...

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

З.Ы. Еще одно извращение(не структурное, но сильно classное):
try
For i:=1 to n do
for j:=1 to m do
begin
if <условие> then Raise TObject.Create;
end;
except//или finally, кому как...
end;


 
ZernBy   (2003-08-14 11:15) [15]

>>han_malign ©

Мне как-то подсунули процедуру, использующую goto
и предложили переписать ее без goto с двумя условиями

1. Не должно быть повторяющегося кода.
2. Нельзя использовать процедуры и функции

Я просидел пару часов, и честно признаюсь,
что моих знаний не хватило для этого.

Не хочешь попробовать ?


 
Игорь Шевченко   (2003-08-14 11:17) [16]

Val © (14.08.03 11:00)

К этому случаю данное утверждение не относится. Нормальное использование goto, все просто и понятно.


 
NAlexey   (2003-08-14 11:24) [17]

Ну тогда это для вабще обцикленых:

const
Max = 10;
var
I: Integer;
J: Integer;

procedure Cool;
begin
I := Max;
J := Max;
end;

begin
for I := 0 to Max do
for J := 0 to Max do
Cool;


 
Романов Р.В.   (2003-08-14 11:24) [18]


> ZernBy (14.08.03 11:15) [15]


А я как то писал программу на клавиатуре у которой клавиша "G" нажимается с 10 раза. У меня терпения нехватило. Естественно использовать оператор Goto я никак не мог.


 
ZrenBy   (2003-08-14 11:29) [19]

>>Романов Р.В. © (14.08.03 11:24) [18]

Несчастный, как-же ты begin-то писал?


 
pasha_golub   (2003-08-14 11:32) [20]

2NAlexey [17]
Компиялятор не пропустит!


 
NAlexey   (2003-08-14 11:33) [21]

Пропустит пропустит....


 
Романов Р.В.   (2003-08-14 11:34) [22]


> ZrenBy © (14.08.03 11:29) [19]

Ctrl+C Ctrl+V


 
АлексейК   (2003-08-14 13:40) [23]

А цикл FOR изначально предназначен для не прерываемых циклов, с постоянным шагом!!!
А переменнная i изначально предназначена для цикла FOR.


 
Anatoly Podgoretsky   (2003-08-14 15:01) [24]

Стоит ли идти на трюки за счет надежности?
Таких циклос быть не должно, смотри АлексейК (14.08.03 13:40) [23], выбран не тот инструмент, начинать надо с постановки.


 
Val   (2003-08-14 16:14) [25]

>han_malign © (14.08.03 11:07) [14]
Аргументы, пожалуйста, а не высокие слова о Структурном Программировании и Абсолюте.


 
Viktor Kushnir   (2003-08-14 17:19) [26]

В исходника (Папка Source) от 6 дельфий GOTO используется только 7 раз. Причем пару раз для выхода из For to do


 
Скорбящий   (2003-08-14 19:58) [27]

MXDSSQRY.pas

procedure TDSSQueryEditor.RemoveButtonClick(Sender: TObject);
...
for I := 0 to Items.Count - 1 do
begin
if Selected[I] then
begin
if (Reselect = -1) then Reselect := I;
for J := 0 to myMap.count-1 do
begin
DM := myMap[j];
if (DM.FieldName = Items.STRINGS[I]) then
begin
try
RemoveDimensionItem(fQParse, myMap, J);
DM.free;
bChanged := True;
Break;
except
showmessage(SRemoveFieldError);
end;
goto FastExit;
end;
end;
end;
...


 
Viktor Kushnir   (2003-08-15 07:35) [28]

Вот вот это оно и есть.


 
Alex Konshin   (2003-08-15 07:49) [29]

Некоторым религия не позволяет использовать goto, другим - есть сало (а если он еще и украинец, тогда как? :) ), третьим - материться.
Главная догма - нет никаких догм. В каждом конкретном случае решение может быть свое, и я не вижу никаких причин для исключения goto из своего словарного запаса. В некоторых ситуациях программа будет НАМНОГО понятнее с goto, чем без него, и городить огород из-за каких-то высосанных из пальца правил нет никакого смысла.



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

Форум: "Потрепаться";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.01 c
14-10914
Without Any ...
2003-08-17 21:56
2003.09.04
О том, что не приветствуется на этом фомуме


3-10592
progger
2003-08-14 10:48
2003.09.04
Помогите с поиском


1-10701
ddghy
2003-08-24 17:57
2003.09.04
Компонент в Delphi для работы с Excel?


14-10956
VEG
2003-08-13 17:51
2003.09.04
Дообновлял свою BIOS...


1-10792
otido
2003-08-21 18:12
2003.09.04
CAPI и перехват входящего звонка





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