Использование предложения goto

Использование continue

Использование break для выхода из цикла

С помощью предложения break имеется возможность выполнить немедленный выход из цикла, обойдя проверку условия. Если внутри цикла встречается предложение break, цикл немедленно завершается, и управление передается на предложение, следующее за циклом. Вот простой пример:

#include <iostream>

using namespace std;

int main () {

int t;

//цикл от 0 до 9, но не до 100!

for (t=0; t< 100; t++) {

if (t==!)) break; // Выход из цикла for, когда t становится равным 10

сout << t ‘ ’;

return 0;

}

Вывод этой программы:

0 1 2 3 4 5 6 7 8 9

Как видно из вывода программы, она отображает на экране числа от 0 до 9 и после этого завершается. Программа не доходит до 100, потому что предложение break заставляет цикл завершиться раньше.

Существует возможность принудительно завершить некоторый шаг цикла, обойдя нормальную управляющую структуру цикла. Это действие выполняется с помощью предложения continue. Это предложение заставляет цикл перейти к следующему шагу, обойдя любой код между continue и условным выражением, управляющим циклом. Пример этого можно увидеть в следующей программе, которая выводит на экран четные числа от 0 до К

#include <iostream>

using namespace std;

int main () {

int х;

for (х=0; x <= 100; х++) {

if (x%2) continue; // Досрочно завершить шаг, если х нечетно

cout << x << ‘ ’;

}

return 0;

}

Выводятся только четные числа, потому что нечетное число вызывает выполнение предложения continue, которое приводит к выходу этого шага цикла с обходом предложения вывода cout. Вспомните, что оператор % возвращает остаток от целочисленного деления. Когда нечетно, остаток равен 1, т. е. результат деления истинен. Если х четно, остаток равен 0. т. е. результат ложен.

В циклах while и do-while предложение continue вызывает передачу управления непосредственно на условное предложение, после чего цикл продолжается обычным образом. В случае for выполняется секция приращения цикла, затем условное выражение, после чего цикл продолжается.

Предложение С++ goto реализует безусловный переход. Когда это предложение встречается в программе, управление передается в заданную в нем точку. Предложение goto уже много лет как потеряло благосклонность программистов, так как его использование способствует образованию "макаронных" программ. Однако goto все еще время от времени используется и иногда весьма эффективно. Mы здесь не будем выносить приговор относительно ценности этого предложения в качестве средства управления программой. Следует, однако, заметить, что не существует программных ситуаций, которые требовали бы обязательного использования предложения goto: оно не является необходимым в законченном языке. Скорее его можно рассматривать, как некоторое дополнение, которое, если им пользоваться со смыслом, принесет пользу в определенных программных ситуациях. По этим причинам goto нигде, кроме настоящего раздела, не используется в примерах этой книги. Программисты недолюбливают goto главным образом потому, что оно имеет тенденцию запутывать программу, делая ее почти нечитаемой. Однако в некоторых случая использование goto не усложняет программу, а, наоборот, проясняет ее структуру.

В предложении goto требуется указание метки. Метка — это допустимый идентификатор С++, сопровождаемый двоеточием. Метка должна находиться в той же функции, что и использующее ее goto. Например, цикл от 1 до 100 можно организовать с помощью goto и метки:

x = 1;

loop1:

x++;

if (х < 100) goto loopl;// Выполнение передается в точку loop1.

Один из разумных примеров использования goto - выход из глубоко вложенного программного блока. Рассмотрим, например, такой фрагмент кода:

for (…) {

for (…) {

while (…) {

if (...) goto stop;

.

.

.

}

}

}

stop:

cout << "Ошибка в программе. \n";

Устранение goto потребовало бы выполнения ряда дополнительных проверок. Простое предложение break здесь не будет работать, потому что оно обеспечивает лишь выход программы из самого внутреннего цикла.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: