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

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

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

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

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

SXP



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а например в таком виде
 
Thread
 
socket()
if (sock == SOCKET_ERROR)
goto end;
 
if (bind() == -1)
goto end;
 
listen()..
 
while (1)
newsock = accept()..
if (newsock == soc..)
break;
 
end:
if (sock)
closesocket(sock);
ExitThread(0);

Всего записей: 3755 | Зарегистр. 21-06-2002 | Отправлено: 17:01 11-05-2005
QuickeneR

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SXP
Делают и так. Но в чужом коде, особенно в не самых маленьких функциях все равно некрасиво (неудобно, непонятно, ...). Можно разбить функцию на две: первая делает всю работу, а если что, вываливается по return. Вторая вызывает первую и после ее окончания проводит зачистку.

Всего записей: 1388 | Зарегистр. 02-02-2002 | Отправлено: 17:44 11-05-2005
vndovr

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Приведи реализацию алгоритма - я просто из описания задачу не понял.
 
TheChampion
Переполнение - исключительная ситуация и обрабатывается через throw, который для этого (помимо остального) и существует, а не через что-либо вроде:

Код:
 
if (...) goto error;
...
return 0;
error:
return -1;
 

Что касается самого перемножения - проход по элементам матрицы делал бы двойным циклом (само собой), вычисление значения элемента - отдельной функцией.  
 
MrZeRo
Я когда-то его читал. И что? Ответ из разряда - посмотри в инете - там где-то есть. Вот для примера, реализация конечного автомата, через шаблоны на C++ в традициях ООП, без goto:
http://rsdn.ru/article/alg/FiniteStateMachine.xml
 
SXP
Опять же - невозможность открыть сокет - исключительная ситуация и обрабатывать ее следовало бы через механизм исключений. Если уж писать на ООП - обернул бы это классом с освобождением ресурсов в деструкторе.
Если без ООП - разложил бы на несколько функций в духе.

Код:
 
if (open(...) && bind(...))
{
listen();
while ()
{
...
}
close(sock);
}
return...
 

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

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



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

Всего записей: 3755 | Зарегистр. 21-06-2002 | Отправлено: 18:07 11-05-2005
Shurshunchik007



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В настоящее время технически разница не заметна! Но во времена 386-ых было по другому. Метки усложняли программу и часто замедляли ее работу из-за технических характеристик компьютера. Но достаточно часто они и ускоряют работу, но, повторяюсь, они усложняют понимание программы. Кроме того программы с большим количеством меток могут на разных платформах по разному, в том числе и неправильно!!!

Всего записей: 59 | Зарегистр. 14-05-2005 | Отправлено: 21:08 14-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