В теле той же функции должна присутствовать ровно одна конструкция вида:
metka: оператор;
Оператор goto передает управление оператору с меткой metka. Метка –это обычный идентификатор. Оператор goto может передать управление на метку, обязательно расположенную в одном с ним теле функции. Операторы if и goto могли бы заменить все операторы ветвления, передачи управления и цикла, но такой подход оказался не очень удобен. Применение goto может нарушить принципы структурного и модульного программирования, по которым все блоки, из которых состоит программа, должны иметь только один вход и один выход. Кроме того, операторы выбора и цикла выглядят более изящно и позволяют ускорить выполнение программы. Использование оператора безусловного перехода оправдано в двух случаях: - принудительный выход вниз по тексту программы из нескольких вложенных циклов или переключателей; - переход из нескольких мест функции в одно (например, если перед выходом из функции необходимо всегда выполнять какие-либо одни и те же действия). В остальных случаях для записи любого алгоритма существуют более подходящие средства, а использование goto приводит только к усложнению структуры программы и затруднению отладки. В любом случае не следует с помощью goto передавать управление внутрь операторов if, switch и циклов. Нельзя переходить внутрь блоков, содержащих инициализацию переменных, на операторы, расположенные после нее, поскольку в этом случае инициализация не будет выполнена: int k; ... goto metka; ... {int a = 3. b = 4; k = a + b; metka: int m = k + 1; ... } После выполнения этого фрагмента программы значение переменной m не определено.
Оператор break
Оператор прерывает выполнение оператора switch. Управление передается следующему за ним оператору. Об этом было уже сказано выше. Здесь следует лишь подчеркнуть, что break относится к операторам передачи управления.
Тестирование программ
Тестирование выполняется после отладки программы и заключается в проверке правильности ее функционирования при всех вариантах исходных данных, значений переменных, условий и т.п. Это означает, что нужно проверить проход программы по всем «путям» блок-схемы. Сколько путей – столько раз нужно выполнить программу с разными значениями переменных. Следует также проверять какие значения нельзя присваивать переменным в ходе выполнения программы по причине их несоответствия типу переменных или недопустимости этого значения в каком-либо выражении программы (например, нулевое значение переменной может вызвать ошибку деления на 0). Результат тестирования – примеры выполнения программы при разных исходных данных и инструкция пользователя, запрещающая вводить неверные исходные данные (например, вместо цифр буквы или цифры, но не те, что надо). В инструкции следует пояснить, почему вводится то или иное запрещение, рекомендация или требование.