Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » стоит ли использовать goto?

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

DI0K



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
К примеру...
...
PutX();
Count();
PrintResult();
if(victory==2)  
{
 ShowMessage("Победа!")
 //...
 new();
}
 
PutO();
Count();
PrintResult();
if(victory==1)  
{
 ShowMessage("Поражение!")
 //...
 new();
}
...
Как мне сделать так, что бы при выполнении первого условия
Не было перехода, к PutO(), а выполнялся заново PutX().
Это тот случай когда необходимо использовать goto? или можно как то иначе?  
 

Всего записей: 137 | Зарегистр. 01-06-2004 | Отправлено: 11:04 10-05-2005
OldGopher



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Загнать это дело в бесконечный цикл. Там же где надо выскочить, поставить break.

Всего записей: 3802 | Зарегистр. 25-10-2001 | Отправлено: 11:09 10-05-2005
DI0K



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
т.е. бесконечный цикл использовать, лучше чем goto?
хм никогда бы не подумал

Всего записей: 137 | Зарегистр. 01-06-2004 | Отправлено: 12:01 10-05-2005
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DI0K
Да, обычно здесь и пользуются бесконечным циклом. Есть принцип: Если те нужен goto - значит алгоритм задуман неверно (сложно). Но иногда всётаки с goto получается красиво, главное не перестараться. В асме ведь goto ещё никто не отменил и врядли, а все наши проги через него идут. Я в таком случае сделал так. Все кусочки (верно, неверно, другие варианты) вложил в отдельные процедуры. их - в case(switch в Си кажеться). А всё это в цикл с постусловием. Процедуры в случае выхода устанавливают флаг (лучше - возвращают результат). Тогда всё просто

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 12:18 10-05-2005
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
 стоит ли использовать goto?

нет

----------
-= Я тут чертовски давно =-

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 13:09 10-05-2005
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DI0K
При автоматном программировании без него не обойтись, по-моему. Только программа с goto наглядно отображает соответствующие диаграммы состояний и переходов.

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 18:26 10-05-2005
Markell



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Goto противоречит всем канонам структурного программирования. Поэтому, если цель только одна - чтобы порграмма работала, а как она будет написана не столь важно, то можно и воспользоваться goto, в противном случае я бы не посоветовал.

Всего записей: 103 | Зарегистр. 05-10-2004 | Отправлено: 01:34 11-05-2005
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ вопрос вроде уже поднимался и не раз, и это флудерская тема,
Цитата:
оэтому, если цель только одна - чтобы порграмма работала, а как она будет написана не столь важно, то можно и воспользоваться goto, в противном случае я бы не посоветовал.

Бред, полный, это как раз наоборот. Если программа при помощи гото выглядит лучше, то надо использовать его, иначе нет. Пример
for i:=1 ..
  for  
    for
     if U then Goto Lab;
 
 
Lab:
   
Если делать без гото, тогда надо будет в конце каждого проверять условие.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:28 11-05-2005
vndovr

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
3 вложенных цикла уже выглядят плохо и goto красоты здесь не добавит. Не стоит плохим кодом оправдывать использование goto.
 
MrZeRo
Таблица переходов нагляднее передается именно таблицей, а не набором goto.

Всего записей: 359 | Зарегистр. 05-02-2004 | Отправлено: 03:51 11-05-2005 | Исправлено: vndovr, 03:51 11-05-2005
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vndovr

Цитата:
3 вложенных цикла уже выглядят плохо и goto красоты здесь не добавит. Не стоит плохим кодом оправдывать использование goto.

Хорошо, приведи хороший код решения задачи. Вывести наибольшую тройку натуральных чисел таких , сумма их кубов сама является кубом. Она решается через тройной цикл.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:49 11-05-2005
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vndovr

Цитата:
 3 вложенных цикла уже выглядят плохо и goto красоты здесь не добавит. Не стоит плохим кодом оправдывать использование goto.  

Перемножение матриц с выходом по переполнению. Тоже тройной цикл. Использование всяких while с проверкой флагов затормозит программу. Причем раза в 2 (проверка флага + проверка условия).

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 08:36 11-05-2005
Markell



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Бред, полный, это как раз наоборот. Если программа при помощи гото выглядит лучше, то надо использовать его, иначе нет
Попробуй ради интереса нарисовать блок-схему для программы, напичканной goto.
Goto делает программу проще для написания, но не проще для понимания  и не красивее! Это факт.

Всего записей: 103 | Зарегистр. 05-10-2004 | Отправлено: 09:30 11-05-2005
Pinocchio

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Нет

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 09:34 11-05-2005
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Markell
vndovr
Как я уже писал данный топик является
Цитата:
это флудерская тема,

Были приведены несколько задач, где использование гото оправдано, а вот его не использование приводит к громозкости решения.

Цитата:
Попробуй ради интереса нарисовать блок-схему для программы, напичканной goto.

А при чем здесь напичканность гото? Я не призываю его втыкать везде где можно. Я бы предложил перестать здесь писать, по причине выше, но жумаю бесполезно, я в этой теме больше постить не буду.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 09:59 11-05-2005
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vndovr
Markell
Для расширения кругозора рекомендую сайт http://www.softcraft.ru/, цитировать оттуда смысла не вижу. Имеющие уши - услышат.
Беру пример с ShIvADeSt и отключаюсь от обсуждения по тем же причинам.

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 10:17 11-05-2005
GeniusUA

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DI0K
кто мешает загнать PutO в else для первого условия?
а весь блок кода загнать в цикл с break'ом во втором условии

Всего записей: 71 | Зарегистр. 11-12-2004 | Отправлено: 14:15 11-05-2005
YurikGL



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ИМХО goto можно использовать там, где это имеет смысл, упрощает код. Иногда без него как-то коряво выглядит.

Всего записей: 308 | Зарегистр. 02-09-2004 | Отправлено: 14:26 11-05-2005
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeniusUA

Цитата:
 кто мешает загнать PutO в else для первого условия?
а весь блок кода загнать в цикл с break'ом во втором условии

 
И это называется "проще"?

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 15:57 11-05-2005
GeniusUA

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TheChampion
проще
можно конечно флажки понаставлять, но это влечет за собой затраты на выделение памяти и пр.
 
хотя goto - неплохой вариант, но не во всяком компиляторе.

Всего записей: 71 | Зарегистр. 11-12-2004 | Отправлено: 16:10 11-05-2005
vito333



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
стОит

Всего записей: 3319 | Зарегистр. 13-05-2002 | Отправлено: 16:52 11-05-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » стоит ли использовать goto?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru