Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2011, 15:10   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не могу не вмешаться....

wandererindreams
ну Вам же говорят, не так надо делать...
ставьте вместо goto m_error оператор break
и будет выглядет так же просто, как Вы хотите показать с меткой..
Код:
 {
  if(error = read_number(number)) break;
  if(error = make_series(f_series, number)) break;
  if(error = output_series(f_series)) break;
  ......
 }
if (error) errors();
и ещё, подобные вещи выносите в отдельные функции(методы).
в нужном месте
if !(ВашаФункцияПоЧтению()) errors();
а внутри функции вместо break return error;

а вообще, хотите использовать метки - используйте.
Это Ваше лично дело, как программиста.
Но что Вы нас, старых волков, пытаетесь убедить, что это хорошо?!
Вам моральная поддержка нужна?!
Так я лично считаю, что использование меток (без крайней необходимости) - это ЗЛО!
И в в 99.9% случаев использование меток ухудшает надёжность, прозрачность и наглядность кода, рушит его структуру... Особенно, когда используются переходы не только в конец программы, как в Вашем случае, а в произвольные места программы... Вот это полный капец...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.08.2011, 15:14   #12
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
m_error: errors();
ага, щас. Тогда уж вам прийдётся такое соорудить:

Код:
goto no_errors;
m_error: errors();
goto exit_main;
no_errors: ;// продолжаем работу

 ...

exit_main:
  // выход из программы
т.е. от if () {} else {} метки вас не освобождают ну никак (только ценой дополнительных меток).

Если так уж не нравятся вложенные ифы, можно затулить всё в один:

Код:
  if  ( (error = read_number(number)) ||
        (error = make_series(f_series, number)) ||
        (error = output_series(f_series)) ) {
    //
    errors();
    break;
  }
  else {
    // продолжаем страдать
  }
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 12.08.2011 в 15:17.
veniside вне форума Ответить с цитированием
Старый 12.08.2011, 15:24   #13
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

wandererindreams

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

как, ЕЩЕ хуже

как получше переписать программ

не использовать "фортран-стиль" и "си с классами", а создавать программы сразу на C++
Rififi вне форума Ответить с цитированием
Старый 12.08.2011, 15:31   #14
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Я считаю, что метки оправданы только в случаях когда много вложенных циклов.
Например:

Код:
while(...)
 {
     ...
     while(...)
        {
          ....
            while(...)
               {
               /*произошла ошибка*/
                goto point
                }
            }
         }
point:
if(error) error();
Это удобно чтобы не лепить 3 флага
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 12.08.2011, 15:37   #15
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> не лепить 3 флага

одного достаточно )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 12.08.2011, 21:20   #16
wandererindreams
Пользователь
 
Регистрация: 19.07.2011
Сообщений: 12
По умолчанию

Черт, тяжко когда зацикливаешься на одном. Уже в первом ответе (№2) дали полный правильный ответ как заменить метки, а допер только когда еще раз написали по-другому (пост №11). Хорошо, что спросил, а то неизвестно сколько еще писал бы так.
Меткам быстрые похороны...
wandererindreams вне форума Ответить с цитированием
Старый 13.08.2011, 10:15   #17
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Это удобно чтобы не лепить 3 флага
Писали вроде про try...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.08.2011, 12:25   #18
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Метки вполне допустимы, если пользоваться ими разумно, особенно на Си.
Например, в VixAPI они вполне нормально используются.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 13.08.2011, 14:07   #19
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
Писали вроде про try...
Я конечно не мастер, но учебники мне сказали что try блоки работают намного медленнее чем goto, и еще медленней проверки if. Поэтому по возможности стоит избегать их использования.

Но самому не доводилось проверять, ибо не писал "тяжелые" программы требующие минимизации требуемых ресурсов
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 13.08.2011, 14:40   #20
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от MooNDeaR Посмотреть сообщение
Поэтому по возможности стоит избегать их использования.
Во первых речь шла про Си, в котором нет средств для работы с исключениями.
Но если говорить о С++, то их не стоит избегать, и уж тем более не стоит предпочитать им goto и if. Это средства для разных целей, и пользоваться одними, в ущерб другим - плохой подход
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упрощения парсинга текста Lauri Общие вопросы Delphi 11 16.07.2011 14:09
Программы разветвленной структуры в С++ Draips Общие вопросы C/C++ 1 11.05.2010 19:15
Программы разветвленной структуры в С++ Draips Помощь студентам 0 11.05.2010 17:58
ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ В VISUAL BASIC 6 uradik2 Помощь студентам 5 23.03.2010 23:55
Разработка программы блочной структуры xxSINxx Помощь студентам 2 05.03.2009 15:50