Форум: "Потрепаться";
Текущий архив: 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