Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР8-С++-10-апреля-2012.doc
Скачиваний:
9
Добавлен:
15.09.2019
Размер:
3.09 Mб
Скачать

1.6. Использование оператора цикла do … while в ицвп

В С++ для организации ИЦВП могут использоваться также конструк­ции оператора цикла с постусловием do … while. Оператор цикла do … while и его применение для циклов типа арифметической прогрессии рассмотрены в предыдущей лабораторной работе.

Пример 8.14

i = n + l;

do

{

i = i – 0.2;

}

while(i>0);

В этом примере начальное значение переменной i цикла равно n + l , перед каждым новым циклом оно уменьшается на 0,2 и осуществляется проверка i > 0. Цикл выполняется пока переменная i остается положи­тельной.

Приведем пример на использование конструкций оператора do … while.

Пример 8.15

Составить программу вычисления значения функции y = sin х, используя ее разложение в степенной ряд (см. пример 8.5 и рис. 8.5).

Фрагмент программы, реализующий указанные вычисления, может иметь вид:

int main()

float x, eps, u, y, r;

int k;

cout << "Введите х, eps "; cin >> x >> eps;

u = x;

y = 0;

r = -x*x;

do

{

y = y + u;

u = u*r/(2*k*(2*k + 1));

k=k + 1;

while(u>eps);

cout << "Значение функции "; cin >> y;

cout << "Число итераций "; cin >> k;

1.7. Использование операторов break и continue в ицвп

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

Пример 8.16

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

Программа на языке С++ может иметь вид.

#include <stdio.h>

int main ()

{

int Max, Sum = 0, k; // Max – наибольшее значение суммы.

cout << "\nВведите наибольшее значение\n";

cin >> Max;

for (k = 1; ;k ++ ) // Бесконечный цикл.

{

Sum += k;

if (Sum > Max) // Условие завершения цикла.

break; // Прерывание. При выходе известно k.

}

cout << "Количество элементов k = " << k << endl;

} // End of main

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

Пример 8.17

Найдем сумму слагаемых вида для x [–1; +1] с шагом 0,1. Особой точкой в этом ряду является точка x = 0, функция в этой точке не определена. При x = 0 вычисление выполнять нельзя, значит, это действие следует пропустить.

Программа на языке С++ может иметь вид.

#include <stdio.h>

#include <math.h>

int main ()

{

float Sum=0;

float x;

for (x = – 1; x <= 1.1; x += 0.1)

{

if (fabs (x) < 0.0001) continue; //Если в знаменателе 0.

Sum += 1 / x;

}

cout << "Сумма = " << Sum << endl;

} // End of main

Пример 8.18

Бесконечный цикл.

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

while (1)

{

// Проверка условия и выход.

}

for (; ; ;)

{

// Проверка условия и выход.

}