IPB
ЛогинПароль:

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Goto, отношение
GOTO
ваше отношение к goto
Отстой [ 4 ] ** [10.53%]
Лучше б его не было... [ 2 ] ** [5.26%]
Нейтрально [ 10 ] ** [26.32%]
не пользуюсь [ 15 ] ** [39.47%]
класная вещь [ 3 ] ** [7.89%]
Програмы созданы для goto... [ 2 ] ** [5.26%]
что ето такое? [ 2 ] ** [5.26%]
Всего голосов: 38
Гости не могут голосовать 
mamont001
сообщение 16.12.2006 22:03
Сообщение #1


Вожак стада
***

Группа: Пользователи
Сообщений: 179
Пол: Мужской
Реальное имя: кирилл

Репутация: -  1  +


всегда хотел узнать как кто относится smile.gif


--------------------
Админ наш,
Иже еси на серверах!
Да святится имя Твое,
Да приидет Unix Твой,
Да будет воля Твоя,
Как на земле , так и на небе.
Пинг наш насущный дай нам на сей день;
И прости нам счета наши, как и мы оставляем их должникам нашим;
И не введи нас во искушение виндовое,
Но избавь нас от лукавого Билли.
И да пребудет с нами сила твоя великая,
Во имя Отца-админа, Сына-Пингвина, и духа мастдайного. Админь!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 16.12.2006 22:04
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
не пользуюсь



Сообщение отредактировано: Bokul - 16.12.2006 22:05


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.12.2006 22:07
Сообщение #3


Гость






Не голосовал, ибо не нашел подходящего варианта: использую, но очень редко ...
 К началу страницы 
+ Ответить 
Bokul
сообщение 16.12.2006 22:13
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Три этапа в развитии программиста:
Чайник - без Goto не куда;
Понимающий - не использую;
Профи - использую, но очень редко.
smile.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 17.12.2006 0:07
Сообщение #5


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Не голосовал, ибо не нашел подходящего варианта: использую, но очень редко ...

Полностью согласен.
Я бы даже сказал не использую Goto вообще, но иногда использую конструкции выхода exit (exit sub, return, braek и т.п.) в зависимости от языка, что в принципе является аналогом "goto end", т.к. перехода к конце программы\подпрограммы.

p.s. Варианты ответа для детского сада aka "реальных" хакеров.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 17.12.2006 1:36
Сообщение #6


Michael_Rybak
*****

Группа: Модераторы
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Цитата
p.s. Варианты ответа для детского сада aka "реальных" хакеров.

Чего, нормальные себе варианты имо smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 20.12.2006 1:51
Сообщение #7


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


было дело - использовала. в QBasic'е...
а потом как-то необходимости не возникало.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 20.12.2006 8:38
Сообщение #8


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Как в программировании, так и в обычной жизни "посылаю на" очень редко.. smile.gif
Уж и не припомню, когда... Но допускаю, что это может потребоваться либо для минимизации кода, либо для оптимизации программы.
Было бы интересно привести пример кода, где это оправдано. Но я с ходу пример не приведу..
Может, volvo?..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 20.12.2006 11:05
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(Altair @ 17.12.2006 0:07) *
Я бы даже сказал не использую Goto вообще, но иногда использую конструкции выхода exit (exit sub, return, braek и т.п.) в зависимости от языка.
Абсолютно согласен yes2.gif


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SKVOZNJAK
сообщение 26.12.2006 13:47
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Цитата(Lapp @ 20.12.2006 5:38) *

Было бы интересно привести пример кода, где это оправдано. Но я с ходу пример не приведу..
Может, volvo?..

Ушедшие от нас старожилы форума вспомни ли бы что таковая электронная живность в изобилии водится у Сквозняка smile.gif
Первый пример. Очистка событий нажатия клавиш и мышки. Ось реально многозадачная, так что события могут подаваться порциями, а размер буфера - вопрос конечно интересный. Обоснование применения гото: зачем красивый код портить, мне за это никто не заплатит wink.gif


PROCEDURE BUF20(Z3: BYTE); {Ћ—?‘’ЉЂ Ѓ“”…ђЂ Љ‹Ђ‚›}
LABEL 1;
BEGIN
IF Z3<>0 THEN DELAY(Z3*100);
{FOR Z3:=1 TO 20 DO IF KEYPRESSED=TRUE THEN ReadKey;}
1:
SDL_PumpEvents;
if (SDL_PollEvent(event)>0) then begin
CASE event^.eventtype OF
SDL_KEYDOWN, SDL_MOUSEBUTTONDOWN : goto 1;
end;
end;
DELAY(25);
SDL_PumpEvents;
if (SDL_PollEvent(event)>0) then begin
CASE event^.eventtype OF
SDL_KEYDOWN, SDL_MOUSEBUTTONDOWN : goto 1;
end;
end;
END;

Ещё одна процедура из той же проги. Менюшка. Благодаря использованию гото всё уместилось в одну процедуру без дробления. Налицо инкапсуляция данных. Если так использовать goto с case то это уже не совсем уже тот безусловный переход о вреде которого предупреждам минздрав. Код процедуры используется многократно и с разными значениями. Если этот процесс автоматизировать, получим элемент ИИ. Программа сможет делать то, чему программист её не учил. Но результат такого действия не обязательно устроит человека.

PROCEDURE SINJKA; {Њ…Ќћ ‘?ЌњЉ?}
VAR AAA: ARRAY[1..7] OF STRING;
AA1: STRING;
Q3,W3,E3,R3,SINIJ,FLAG1,FLAG2: BYTE;
CONST IKS=18; IGREK=10;
LABEL 1,2,3,4,100;
BEGIN
SINIJ:=SINIUK;
AAA[1]:=' ';
AAA[2]:=' ЙННННННН ‘?ЌћЉ Ћ„?ЌЌЂ„–Ђ’ЋѓЋ ННННННН» ';
AAA[3]:=' є 255 є ';
AAA[4]:=' є 254 є ';
AAA[5]:=' є 253 є ';
AAA[6]:=' є 252 є ';
AAA[7]:=' ИНННННННННННННННННННННННННННННННННННј ';

E3:=1;
FOR W3:=IGREK TO IGREK+7 DO BEGIN
AA1:=AAA[E3];
R3:=1;
FOR Q3:=IKS TO IKS+ORD(AA1[0])-1 DO BEGIN
BUKVA(Q3,W3,ORD(AA1[R3]),11,1);
INC(R3);
END;
INC(E3);
IF E3=8 THEN E3:=1;
END;
{‚›•Ћ„ ‘?Њ‚Ћ‹Ђ ЌЂ ќЉђЂЌ - ЏЋ‡?–?џ ЏЋ
ѓЋђ?‡ЋЌ’Ђ‹?, ‚…ђ’?ЉЂ‹?, ЌЋЊ…ђ ‘?Њ‚Ћ‹Ђ, –‚…’ ˜ђ?”’Ђ, –‚…’ ”ЋЌЂ}
FLAG1:=1;
FLAG2:=0;

1:
W3:=2+IGREK+(255-SINIJ);
AA1:=AAA[3+(255-SINIJ)];
R3:=5;
FOR Q3:=IKS+4 TO IKS+ORD(AA1[0])-5 DO BEGIN
IF FLAG1=1 THEN
BUKVA(Q3,W3,ORD(AA1[R3]),10,0) ELSE
BUKVA(Q3,W3,ORD(AA1[R3]),11,1);
INC(R3);
END;
SDL_UpdateRect (screen,0,0,0,0);
CASE FLAG2 OF
3: BEGIN FLAG2:=0; GOTO 3; END;
4: BEGIN FLAG2:=0; GOTO 4; END;
END;

BUF20(1);
2:
SDL_PumpEvents;
if (SDL_PollEvent(event) > 0) then
begin
CASE event^.eventtype OF
SDL_MOUSEBUTTONDOWN : goto 100;
SDL_KEYDOWN: CASE EVENT^.KEY.keysym.SYM OF
SDLK_ESCAPE: GOTO 100;
SDLK_UP: BEGIN
FLAG1:=2;
FLAG2:=3;
GOTO 1;
3: FLAG1:=1;
IF SINIJ<>255 THEN INC(SINIJ);
GOTO 1;
END;
SDLK_DOWN: BEGIN
FLAG1:=2;
FLAG2:=4;
GOTO 1;
4: FLAG1:=1;
IF SINIJ<>252 THEN DEC(SINIJ);
GOTO 1;
END;
SDLK_KP_ENTER,SDLK_RETURN: BEGIN
SINIUK:=SINIJ;
CVET16[11]:=SDL_MapRGB(screen^.format,KRASNIUK,84,SINIUK);
GOTO 100;
END;
END;
END;
END;
GOTO 2;
100:
END;


И третье, самое козырное обоснование. История использования гото насчитывает не одну сотню лет. Даже не знавшие письменности крестьяне смогли осознать его необходимость. Вспомните: приехал Илья Муромец к камню, прочитал надпись, поехал по первому адресу, совершил действие, вернулся, прочитал другую надпись и т. д. Налицо структура:

5:
case A of
1: goto 1;
2: goto 2;
3: goto 3;
4: goto 4;
end;

1:
A:=2;
.............
goto 5;
2:
A:=3;
.............
goto 5;
3:
A:=4;
.............
goto 5;
4:
............


Нигилистам математически доказавшим ненужность этого оператора ответ простой GOTO 0 tease.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sonic
сообщение 26.12.2006 14:09
Сообщение #11


Alone in the dark
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  1  +


Не пользуюсь, т.к. если программа более менее обьемная, то её отладка превращается в кошмар
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 26.12.2006 16:15
Сообщение #12


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Ушедшие от нас старожилы форума вспомни ли бы что таковая электронная живность в изобилии водится у Сквозняка smile.gif

Я хотел написать, если бы Сквозной появлялся бы почаще...
А то не поймешь - придет еще или нет..


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SKVOZNJAK
сообщение 28.12.2006 12:53
Сообщение #13


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Долгое время почти не кодил, основы забывать стал. Плохо поддерживать разговор в таком режиме. А тут на линукс подсел и интерес к пасквилю разгорелся по новой. Вот только с поиском ответов на возникшие в процессе перехода вопросы на этом форуме было не очень. Всё-таки здесь народ больше на винде ездит. А я на ней в основном играю. Но ничего, с основными вопросами разобрался, теперь можно и пофлудить wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 21.01.2007 18:21
Сообщение #14


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Пример с 'менюшкой' поразил.
Давненько я лапшеобразного кода не видел..... Странно, но красоты совершенно не заметил, наверно у меня просто другие эстетические принципы. (назначение кода тоже осталось в тумане)

Использую GOTO только для устранения концевых рекурсий (и то - редко): переход на begin вместо рекурсивного вызова.
Обычно если вижу, что хочется поставить в тексте GOTO, то налицо ошибка построения алгоритма и приходится заново его пересматривать.

Хотя ещё Дейкстра предлагал использовать GOTO для выхода из нескольких вложенных циклов..... Но я предпочитаю выбрасывать исключения.

Сообщение отредактировано: hardcase - 21.01.2007 18:23


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 22.01.2007 3:23
Сообщение #15


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Когда впервые услышал, что использование goto, мягко говоря, "не приветствуется", очень удивился. Дескать, как же без него то, родимого... Оказалось можно. smile.gif
Кстати, когда в детстве программировал на QBasic'е, всегда мечтал, чтобы можно было метку задавать строкой. rolleyes.gif


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 22.01.2007 5:37
Сообщение #16


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Цитата(Archon @ 22.01.2007 10:23) *
Кстати, когда в детстве программировал на QBasic'е, всегда мечтал, чтобы можно было метку задавать строкой. rolleyes.gif
В QBasic можно и метки символические, и IFы блочные, и подпрограммы с функциями в виде отдельных блоков. Только поначалу я этого тоже не знал - писал по аналогии с SOS Basic (нумерация строк, GO TO, DEF FN), потом перешёл на блочный синтаксис (символические метки, IF ... END IF, SUB, FUNCTION).

Вот из поздних поделок (тогда я уже давно слез с QBasic и делал это кому-то на заказ): Прикрепленный файл  menu.zip ( 2.52 килобайт ) Кол-во скачиваний: 480


А вообще, на Quick Basic (синтаксис совпадает с QBasic, немного другая среда и есть возможность компиляции) был написан MicroCap 3.0, на моей XT (несмотря на её "турбовость" - 20 МГц!) он еле ворочался (при симуляции симметричного мультивибратора можно было спокойно идти мыться, а потом чаёвничать) !smoke2.gif


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 22.01.2007 12:00
Сообщение #17


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Цитата
В QBasic можно и метки символические...
Не-а smile.gif В смысле чтоб так:
Код
metka1$ = "label" + num$
GOTO metka1$


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SKVOZNJAK
сообщение 23.01.2007 23:11
Сообщение #18


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Это просто анархия получается. Если такое скомпилировать, то код может получиться неэффективным.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 24.01.2007 0:39
Сообщение #19


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Кстати, это было реализовано в одном из эзотерических языков.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SKVOZNJAK
сообщение 24.01.2007 0:51
Сообщение #20


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Я не против гото, очень даже за, но такой сильный инструмент нужно использовать упорядоченно. Выработать для себя правила применения и стараться их не нарушать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 10.11.2024 9:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"