Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции за I семестр конспект Гуревича для C++ B....doc
Скачиваний:
11
Добавлен:
21.11.2018
Размер:
1.3 Mб
Скачать

8.4. Вложенные циклы.

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

Пример.

Для X, меняющегося от a до b с шагом h, вычислить:

Программа может иметь вид:

#include<stdio.h>

#include<conio.h>

#include<iostream.h>

#include<math.h>

void main(){

double a,b,h,x,y,s,f;

int k,n,i;

cout<<"Vvedite a,b,h,n: ";

cin>>a>>b>>h>>n;

for(x=a; x<=b+0.000001; x+=h){

y=3*x*(exp(6*x)+exp(-6*x));

for(k=s=0; k<=n; k++){

// Делаем 2К итераций для вычисления (2К)!

for(i=f=1; i<=2*k; i++)

f*=i;

s+=pow(6*x, 2*k+1)/f;

}

printf("x=%5.2lf y=%12.8lf s=%12.8lf\n", x,y,s);

}

getch();

}

Здесь имеется 3 вложенных друг в друга цикла: для каждого Х переменная К будет меняться от 0 до N ; а для каждого К переменная i будет меняться от 1 до 2К для вычисления факториала 2К.

9. Операторы передачи управления.

Формально к операторам передачи управления относятся:

– оператор безусловного перехода goto;

– оператор перехода к следующему шагу (итерации) цикла continue;

– выход из цикла, либо из оператора switchbreak;

  • оператор возврата из функции return.

9.1. Оператор безусловного перехода goto

В языке Си предусмотрен оператор goto, общий вид которого:

goto метка ;

Он предназначен для передачи управления оператору, помеченному указанной меткой. Метка представляет собой идентификатор с символом «двоеточие» после него, например, пустой помеченный меткой m1 оператор:

m1: ;

Циклы и переключатели можно вкладывать вдруг в друга, и наиболее характерный оправданный случай использования оператора goto – выполнение прерывания (организация выхода) из вложенных циклов. Например, при обнаружении грубых смысловых ошибок необходимо выйти из двух (или более) вложенных циклов (где нельзя использовать непосредственно оператор break, т.к. он прерывает только самый внутренний цикл):

for (...)

for (...) {

...

if (ошибка) goto error;

}

...

error: операторы для устранения ошибки;

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

Не рекомендуется, однако, совершать с помощью оператора goto переходы внутрь цикла из-за его пределов:

goto HHH;

do{

i++;

HHH:

}while(i<5);

а также делать переходы, обходящие объявление переменных:

goto YYY;

int k;

YYY:

т.к. компилятор не всегда способен правильно "понять" такую программу, что может привести к ошибкам как во время компиляции, так и во время выполнения.

Оператор goto не способен осуществлять переход из одной функции в другую.

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