Урок 5.4. Безусловный оператор goto

5.4. Безусловный оператор goto

Безусловный оператор go to позволяет осуществить передачу управления на любой оператор программы, имеющий метку. Оператор goto записывается в виде:

       goto <метка>;

После оператора goto безусловно выполняется тот оператор программы, метка которого совпадает с меткой в goto. Использование goto в Си никак не отличается от его использования в других языках программирования. Однако, Си имеет четко выраженные свойства языков структурного программирования и поэтому рекомендуется, по-возможности, избегать использование оператора goto, дабы не нарушать каноны структурного программирования.

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

# define PRED 50
main()
{
     int n = 0; 
     float s = 0;
 
m1:  ++n;
     if(n < = PRED) 
        { s += n/(n + 5.0);
          goto m1;
        }
}


Первая строка – это директива препроцессора, которая предписывает в тексте программы заменить символы PRED на символы 50. Это сделано на тот случай, если нам понадобится для программы изменить верхний предел суммирования. Для этого достаточно заменить только директиву define, а соответствующие замены в тексте программы процессор сделает без нашего участия.
Особенно это эффективно, когда по тексту программы необходимо сделать большое количество одинаковых изменений. О возможностях препроцессора и его директивах подробно рассказывается в разделе 13.

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

int n = 0; 
float s = 0;
 
m1: if (++n <= PRED) 
       { s += n/( n + 5.0); 
         goto m1;
       }


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

рассказать друзьям и получить подарок

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Translate Переводчик

Подписка на новости

SmartResponder.ru
Ваш e-mail: *
Ваше имя: *

Хостинг для Wordpress сайтов