Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные_работы_1-7.doc
Скачиваний:
25
Добавлен:
16.11.2019
Размер:
2.11 Mб
Скачать

3Дополнительные операторы передачи управления

3.1Оператор break

Оператор прерывает выполнение не только оператора switch, но циклов. Управление передается следующему за циклом оператору.

Пример. Программа вычисляет значение гиперболического синуса вещественного аргумента х с заданной погрешностью eps с помощью разложения в бесконечный ряд.

sh х = x + х3/3! + х5/5! + х7/7! + ...

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

const int MaxIter = 500; // ограничитель количества итераций

double x, eps;

cout « RUS("\nВведите аргумент и точность: ");

cin >> x >> eps;

bool flag = true; // признак успешного вычисления

double у = x, ch = x; // сумма и первый член ряда

for (int n = 0; fabs(ch) > eps; n++)

{

ch *= x * x /(2 * n + 2)/(2 * n + 3); // очередной член ряда

у += ch;

if (n > MaxIter){

cout << RUS("\nРяд расходится!");

flag = false; break;}

}

if (flag) cout << RUS("\nЗначение функции: ") <<у;

3.2Оператор continue

Оператор перехода к следующей итерации цикла. При его выполнении все операторы следующие за ним в теле цикла не выполняются, а управление передается на начало следующей итерации.

П ример:

for(int j=2; j<i; j++)

{

if(i%j) continue;

else

{dev=true; break;}

}

Если остаток от деления i на j не равен нулю, осуществляется продолжение цикла по оператору continue. Если остаток от деления равен нулю, выполняется выход из цикла по оператору break с установкой признака деления в логической переменной dev.

4Вложенные циклы

Разрешено и широко используется вложение рассмотренных выше циклов друг в друга. В этом случае границы циклов не должны пересекаться.

В инициализации внутреннего цикла for может быть определена переменная с таким же именем, что и переменная, определенная во внешнем цикле. Это определение остается действительным до конца внешнего цикла. Но, чтобы не было путаницы, лучше этого не делать. Тогда параметры вешнего цикла можно использовать в качестве переменных во внутреннем цикле, но менять их там нельзя.

Пример: программа нахождения простых чисел,

bool def = false;

for(int i=2; i<50; i++)

{

for(int j=2; j<i; j++)

{

if(i%j) continue;

else

{dev=true; break;}

}

if(!dev) cout<<i<<”\n”;

dev=false;

}

Программа организована в виде двух вложенных циклов таким образом, что осуществляется перебор и проверка остатка от деления пары чисел, первое из которых изменяется от 2 до 50 во внешнем цикле, а второе – от 2 до значения первого числа во внутреннем. Если остаток от деления не равен нулю, осуществляется продолжение внутреннего цикла по оператору continue. Если остаток от деления равен нулю, выполняется выход из внутреннего цикла по оператору break с установкой признака деления в логической переменной def. После выхода из внутреннего цикла производится анализ переменной def и вывод простого числа.

Домашнее Задание

Изучите теоретические сведения и подготовьте блок-схемы и текст программ по заданию на лабораторную работу. Блок-схемы и программы записываются в «черновом» варианте в лекционной тетради. Комментарии должны составлять не менее 10% от текста. Студенты, не выполнившие домашнего задания, не допускаются к выполнению лабораторной работы.