ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #21  
Старый 25.12.2009, 01:46
Аватар для Algol
Algol
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме:
2050916

Репутация: 0


По умолчанию

Цитата:
Сообщение от Retimiled  
кстати return - это тот же goto только в фас!
Ну не скажи. Во-первых кроме return тут большая компания: continue, break, throw... А во-вторых для этих операторов не требуется метка, точка выхода для них - более очевидна, чем для goto. Поэтому они считаются более-менее "структурными".

ЗЫ
Да и еще yield, как же ж без него, родимого, структурного нашего....

Последний раз редактировалось Algol; 25.12.2009 в 01:59..
 
Ответить с цитированием

  #22  
Старый 25.12.2009, 01:48
Аватар для Retimiled
Retimiled
Banned
Регистрация: 24.12.2009
Сообщений: 141
Провел на форуме:
487460

Репутация: 45
По умолчанию

да goto приближает нас к низкоуровневому программированию ... ведь никто не пытается сказать ничего против джампов в ассемблере

... и поскольку у Си С++ положение аморфное .... то GOTO живет там как засланец мышыных кодов!


давненько было помню как z0mbie в своей теории недектируемости вируса (делал попытки на Goto выстроить матрицу исполнения, которая по его мнению могла завести любую эвристику в ступор) ... делал он именно на GOTO ... поэтому GOTO живет и будет жить ...

НО Я ГОВОРЮ НЕ О ВЕЩАХ УПРОЩАЮЩИХ ПОНИМАНИЕ, а наоборот 8)))) , вообще вопрос риторический должен ли антивирус понимать код вируса!

Последний раз редактировалось Retimiled; 25.12.2009 в 02:02..
 
Ответить с цитированием

  #23  
Старый 25.12.2009, 02:03
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Цитата:
Код:
        public TcpClient Connect(IPEndPoint host)
        {
            TcpClient client = new TcpClient();

            int maxTryCount = 5;
        tryAgain:
            try
            {
                maxTryCount--;
                client.Connect(host);
                return client;
            }
            catch (SocketException)
            {
                if(maxTryCount>0)
                    goto tryAgain;//<-----
                else
                    throw;
            }
        }
Код:
        public TcpClient Connect(IPEndPoint host)
        {
            TcpClient client = new TcpClient();
            for(int maxTryCount = 5; maxTryCount; maxTryCount--) {
                try
                {
                    client.Connect(host);
                    return client;
                }
                catch (SocketException) {}
            }
            throw;
        }
 
Ответить с цитированием

  #24  
Старый 25.12.2009, 02:05
Аватар для _nic
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

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

  #25  
Старый 25.12.2009, 02:09
Аватар для Huster
Huster
Познающий
Регистрация: 08.05.2009
Сообщений: 46
Провел на форуме:
1403678

Репутация: 55
Отправить сообщение для Huster с помощью ICQ
По умолчанию

Цитата:
Нынче в институтах учат, что применение goto - не кошерно, не тру и ваще отстой. Применение goto считается преступлением перед мировой общественностью.
Да, и в книгах об этом пишут, а ты не думал почему ? Может быть потому что многолетний опыт подсказывает что и правда лучше отказаться от goto ? Если бы было все так просто, то не создавали б другие циклы ( do..while, for, whlie )
Да, может быть именно в твоей ситуации goto и смотрится лучше, но в других случаях, как правило, это лишь усложняет программу, особенно если ее пишут "неопытные" программисты, которые скачут с goto по программе вдоль и поперек.
Поэтому, используй goto только тогда когда это НЕ ЗАПУТАЕТ код программы. Во
 
Ответить с цитированием

  #26  
Старый 25.12.2009, 02:11
Аватар для Retimiled
Retimiled
Banned
Регистрация: 24.12.2009
Сообщений: 141
Провел на форуме:
487460

Репутация: 45
По умолчанию

циклы могут выходить стандартными средствами не делая скачков и не делая ненужных проходов.... просто обычно люди сравнение в for(....;X<Y;....) делают одно а досточно описать флаг выхода и вы выйдите из любого количества циклов без лишних проходов.... for(....,ex=0;X<Y && ex==0;....)
Код:
for(....,ex=0;X<Y && ex==0;....)
   for(....;K<L && ex==0;....)
     for(....;M<N && ex==0;....)
         ....
           for(....;F<G && ex==0;....)
             if(BLABLA==TUTU)
                 ex=1;
 
Ответить с цитированием

  #27  
Старый 25.12.2009, 02:17
Аватар для Algol
Algol
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме:
2050916

Репутация: 0


По умолчанию

Цитата:
Сообщение от nerezus  
Код:
        public TcpClient Connect(IPEndPoint host)
        {
            TcpClient client = new TcpClient();
            for(int maxTryCount = 5; maxTryCount; maxTryCount--) {
                try
                {
                    client.Connect(host);
                    return client;
                }
                catch (SocketException) {}
            }
            throw;        }
throw чего ?
 
Ответить с цитированием

  #28  
Старый 25.12.2009, 02:38
Аватар для Ra$cal
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Retimiled, вообще то глубокой вложенности нужно избегать - с помощью выделения кода в методы\функции, ибо глубоко вложенные циклы нечитабельное говно с любой стороны - что с goto, что с флагами, что с break/continue.
 
Ответить с цитированием

  #29  
Старый 25.12.2009, 02:49
Аватар для Retimiled
Retimiled
Banned
Регистрация: 24.12.2009
Сообщений: 141
Провел на форуме:
487460

Репутация: 45
По умолчанию

2 Ra$cal
да .... если не заботишься об быстродействии и не отсчитываешь такты на PUSHA POPA , то конечно нужно оформлять в виде функций а как ты растащишь вот такой код
Код:
for(....,ex=0;X<Y && ex<10;....)
   for(....;K<L && ex<9;....)
     for(....;M<N && ex<8;....)
         ....
           for(....;F<G && ex<1;....)
             if(BLABLA==TUTU)
                 ex=8; //  то есть я могу уйти в рамках цикла на люой уровень вложенности 8))
 
Ответить с цитированием

  #30  
Старый 25.12.2009, 02:50
Аватар для Kaimi
Kaimi
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


Отправить сообщение для Kaimi с помощью ICQ
По умолчанию

В перле goto как будто медленнее работает, чем, например, redo.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как настроить две сетки для сервера CyberPank Windows системы 2 16.07.2009 07:55
Bat Micr0b Windows 2 25.04.2006 19:49



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ