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

> 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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
SKVOZNJAK
сообщение 26.12.2006 13:47
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
mamont001   Goto   16.12.2006 22:03
Bokul   RE: Goto   16.12.2006 22:04
volvo   Не голосовал, ибо не нашел подходящего варианта: и...   16.12.2006 22:07
Bokul   Три этапа в развитии программиста: Чайник - без Go...   16.12.2006 22:13
Altair   Полностью согласен. Я бы даже сказал не использую...   17.12.2006 0:07
hiv   Я бы даже сказал не использую Goto вообще, но иног...   20.12.2006 11:05
Michael_Rybak   Чего, нормальные себе варианты имо :)   17.12.2006 1:36
мисс_граффити   было дело - использовала. в QBasic'е... а пото...   20.12.2006 1:51
Lapp   Как в программировании, так и в обычной жизни ...   20.12.2006 8:38
SKVOZNJAK   Было бы интересно привести пример кода, где это о...   26.12.2006 13:47
sonic   Не пользуюсь, т.к. если программа более менее обье...   26.12.2006 14:09
Altair   Я хотел написать, если бы Сквозной появлялся бы п...   26.12.2006 16:15
SKVOZNJAK   Долгое время почти не кодил, основы забывать стал....   28.12.2006 12:53
hardcase   Пример с 'менюшкой' поразил. Давненько я л...   21.01.2007 18:21
Archon   Когда впервые услышал, что использование goto, мяг...   22.01.2007 3:23
xds   Кстати, когда в детстве программировал на QBasic...   22.01.2007 5:37
Archon   Не-а :) В смысле чтоб так: metka1$ = "lab...   22.01.2007 12:00
SKVOZNJAK   Это просто анархия получается. Если такое скомпили...   23.01.2007 23:11
Archon   Кстати, это было реализовано в одном из эзотеричес...   24.01.2007 0:39
SKVOZNJAK   Я не против гото, очень даже за, но такой сильный ...   24.01.2007 0:51
xds   Такие приёмы обычно реализуются в языках, изначаль...   24.01.2007 6:05
hardcase   Goto вполне применим. Только конструкции типа if, ...   24.01.2007 20:26
SKVOZNJAK   if и for никто и не выбрасывает, это же основа стр...   5.02.2007 3:06
klem4   :crazy:   11.02.2007 20:04
TarasBer   Я всегда использую гото в процедуре считывания фай...   11.02.2007 21:51
SKVOZNJAK   А теперь реши эту задачку открывая файл как нетипи...   16.02.2007 21:33
TarasBer   А теперь реши эту задачку открывая файл как нетип...   17.02.2007 18:36
SKVOZNJAK   Смотря что считать помощью :) Просто по жизни поль...   18.02.2007 23:04
Game-lord   Пользуюсь, но очень редко =)   26.05.2007 13:32
andriano   Вопрс можно? Спасибо. А jmp @label за goto считает...   25.12.2007 23:08
Yevgeny   Сам почти не пользуюсь, но мой препод говорит, что...   20.01.2008 1:36
Айра   "Квалификация программиста обратна пропорцион...   21.01.2008 15:57
Michael_Rybak   То есть все программисты на питоне - одинаковой ...   21.01.2008 16:26
Айра   вообще это относилось к паскалю.. :)   21.01.2008 16:40
Michael_Rybak   категорически несогласен в любом случае :)   21.01.2008 17:02
andriano   категорически несогласен в любом случае :) ...   23.01.2008 23:24
Айра   Ну на то это и голосование, у каждого свое мнение)...   22.01.2008 5:40
Айра   А по-моему, Michael_Rybak, отнес это к моим словам...   24.01.2008 5:16
andriano   А по-моему, Michael_Rybak, отнес это к моим слова...   24.01.2008 9:16


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

 



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