Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория по языку СИ.doc
Скачиваний:
37
Добавлен:
03.03.2016
Размер:
1.93 Mб
Скачать

4.2.7. Алгоритмы циклической структуры

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

Оператор цикла с предусловием

Алгоритм работы цикла с предусловием показан на рис. 9.

Рис. 9. Цикл с предусловием

Оператор, реализующий этот алгоритм в С++ имеет вид:

while (выражение) оператор;

Работает цикл так. Вычисляется значение выражения. Если оно истинно (¹0), выполняется оператор. В противном случае цикл заканчивается, и управление передается оператору, следующему циклом. Выражение вычисляется перед каждой итерацией цикла. Если при первой проверке выражение = 0, цикл не выполнится ни разу. Если тело цикла состоит более чем из одного оператора, используют составной оператор:

while условие

{

оператор 1;

оператор n;

}

ЗАДАЧА 7. Вывести на экран таблицу значений функции y=esin(x)cos(x) на отрезке [0;p] с шагом 0.1.

#define PI 3.14159

int main()

{float x=0, y;

while (x<=PI) //Цикл с предусловием.

{y=exp(sin(x))*cos(x);

cout<<x<<"\t"<<y;

x+=0.1;

} //Конец цикла.

}

Оператор цикла с постусловием

Алгоритм цикла с постусловием представлен на рис. 10.

Рис. 10. Цикл с постусловием

В С++ цикл с постусловием реализован конструкцией

do оператор while (выражение);

Если тело цикла состоит более чем из одного оператора, то используют составной оператор:

do

{ оператор_1;

оператор_n;

}

while (выражение);

Работает цикл так. Выполняется оператор, представляющий собой тело цикла. Вычисляется значение выражения. Если оно истинно (≠0), оператор тела цикла выполняется еще раз. В противном случае цикл завершается, и управление передается оператору, следующему за циклом.

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

ЗАДАЧА 8. Вывести на экран таблицу значений функции y=esin(x)cos(x) на отрезке [0;p] с шагом 0.1.

#define PI 3.14159

int main()

{float x=0, y;

do //Цикл с постусловием.

{ y=exp(sin(x))*cos(x);

cout<<x="\t"<<y<<endl;

x+=0.1;

}

while(x<=PI);

}

Оператор цикла с параметром

Цикл с параметров в языке Си реализован оператором:

for (начальные_присваивания;выражение; приращение)

оператор;

где начальные_присваивания – оператор или группа операторов, которые выполняются один раз в начале цикла; применяются для присвоения начальных значений величинам, используемым в цикле, в том числе параметру цикла; выражение – определяет условие выполнения цикла, если значение выражения истинно (≠0), то цикл выполняется; приращение – оператор или группа операторов, которые выполняются после каждой итерации и служат для изменения параметра цикла; оператор – любой оператор языка, представляющий собой тело цикла.

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

Если приращение или начальные_присваивания это не один оператор, а группа, то они отделяются запятой. Здесь запятая это операция последовательного выполнения.

Алгоритм работы цикла for:

1. Выполняются начальные_присваивания.

2. Вычисляется значение выражения, если оно ≠0(true), то выполняется переход к п.3.

В противном случае, выполнение цикла завершается.

3. Выполняется оператор.

4. Выполняется оператор приращение и осуществляется переход к п.2, то есть опять вычисляется значение выражения и т.д.

Этот алгоритм представляет собой цикл с предусловием рис. 11.

Рис. 11. Алгоритм работы цикла for.

В дальнейшем в блок-схемах цикл for будем изображать так как показано на рис. 12.

Рис. 12. Цикл с параметром for

Если тело цикла состоит более чем из одного оператора, используют составной оператор:

for (начальные_присваивания; выражение; приращение)

{ оператор_1;

оператор_n;

}

ЗАДАЧА 9. Вывести на экран таблицу значений функции y=esin(x)cos(x) на отрезке [0;p] с шагом 0.1.

#define PI 3.14159

int main()

{float x, y;

for (x=0;x<=PI; y=exp(sin(x))*cos(x),

cout<<x<<"\t"<<y<<endl, x+=0.1);

}