GOTO! Куда-куда?

Автор VlhOwn, 25 января 2011, 16:34

0 Пользователи и 1 гость просматривают эту тему.

convas

ЦитироватьА вот и реклама "Империи Зла"...
Можно бы поучиться, как надо писать документацию.

ЦитироватьC# и прочие Javы не нужны.
Там просто приведены примеры использования оператора goto, причем для консольного приложения.
Переписать эти  примеры на OOoBasic - минутное дело.

И Вам ли не знать, что и ООо и LO держатся на Java, особенно OOoBasic.

dr.Faust

Цитата: convas от 27 января 2011, 12:14И Вам ли не знать, что и ООо и LO держатся на Java, особенно OOoBasic.
Это-то и плохо.
Свобода информации - свобода личности!

VlhOwn

Ответ на вопрос о том, что плохого в if-ах:

Вот представь, что у тебя есть последовательность неких сущностей и тебе нужно как-то обработать те из них, которые обладают набором определенных (вычисляемых) свойств. При отсутствии continue тело цикла будет выглядеть приблизительно так:if(P1(x[i]) {
  if(P2(x[i]) {
  if(P3(x[i]) {
  ...
 if(Pn(x[i]) {
тут какая-то обработка
 }
}
}
}

C continue (или goto на закрывающую скобку цикла) это выглядит (а стало быть, и читается), как мне кажется, куда как приятнее
if(!P1(x[i]) continue;
if(!P2(x[i]) continue;
if(!P3(x[i]) continue;
...
if(!Pn(x[i]) continue;
обработка

raptor

Первый код выглядит лучше так:

if P1(x[i]) AND P2(x[i]) AND P3(x[i]) AND  ... AND Pn(x[i]) {тут какая-то обработка}

VlhOwn

Так не получится, я просто слаконичничал. На самом деле, условные операторы не следуют непосредственно друг за другом, а перемежаются кусками кода, необходимыми для вычисления P1, ..., Pn

dr.Faust

Ясно. А в каком это языке нет оператора аналогичного continue?  Я вроде таких не помню...
VBS - не знаю что это.
Свобода информации - свобода личности!


Centuriones

Цитата: convas от 26 января 2011, 22:17Справочник по операторам C# (MS Visual Studio 2010) с примерами:
А примеры по continue где? :D

dr.Faust

Цитата: raptor от 28 января 2011, 00:34
VBS
http://ru.wikipedia.org/wiki/Visual_Basic_Scripting_Edition
О как...
А там разве обычное Next i не проканает вместо continue?
Свобода информации - свобода личности!

bormant

Могло б и Next подойти, если б было "обычным" оператором, а не декларацией конца цикла.
В OOo Basic (да и в ms qbasic) правило "на один for один next" соблюдается, поэтому подобные фокусы не проходят
for i=1 to 5
  if i<5 then next
  s=s+i
next
print s
Автору на яд. Поддержать форум.

convas

Цитата: Centuriones от 28 января 2011, 01:21
Цитата: convas от 26 января 2011, 22:17Справочник по операторам C# (MS Visual Studio 2010) с примерами:
А примеры по continue где? :D

Там же. Вкладка С#.

convas


dr.Faust

Цитата: bormant от 28 января 2011, 07:28Могло б и Next подойти, если б было "обычным" оператором, а не декларацией конца цикла.В OOo Basic (да и в ms qbasic) правило "на один for один next" соблюдается, поэтому подобные фокусы не проходят
Прикольно - я думал это только у нас Basic хромой...
Свобода информации - свобода личности!

VlhOwn

Вы будете смеяться, но самостоятельного Goto в VBS тоже нет, только в связке On Error Goto.
Поток управления
M: ...
.
.
.
Goto M

реализуется, например, так
M: ...
.
.
.
On Error Goto M
x=1/0

dr.Faust

#44
Цитата: VlhOwn от 28 января 2011, 10:38Вы будете смеяться, но самостоятельного Goto в VBS тоже нет, только в связке On Error Goto.
Не будем. Это грустно.
В итоге
Цитата: VlhOwn от 28 января 2011, 10:38On Error Goto
Mx=1/0
Так рождается быдло-код.
Наверное языки подталкивающие к этому надо клеймить быдло-языками.

Впрочем если в языке есть ветвление и цикл, GoTo действительно не нужен.
Свобода информации - свобода личности!