- •1. Краткие теоретические сведения
- •1.1. Понятие ицвп
- •1.2. Алгоритмы вычисления сумм и произведений в цикле
- •А) суммы; б) произведения
- •1.3. Выбор типа общего члена суммы (произведения) при вычислении сумм и произведений в цикле
- •1.4. Вывод рекуррентных формул
- •А) вариант 1; б) вариант 2
- •1.4. Оператор цикла со спецификацией итерационного типа (типа условия)
- •А) выполнения оператора while ; б) функции примера 8.6
- •1.5. Уточнение корней уравнений
- •1.6. Использование оператора цикла do … while в ицвп
- •1.7. Использование операторов break и continue в ицвп
- •2. Задание
- •2.4.1.2. Пример
- •2.4.1.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Использование рекуррентных формул в цикле
- •2.4.3.1. Условие задания
- •Варианты заданий
- •Варианты заданий
- •2.4.3.2. Пример
- •2.4.3.3. Программа
- •Варианты заданий
- •2.4.4.2. Пример
- •2.4.4.3. Программа
- •2.5.1.2. Пример программы
- •2.5.1.3. Программа
- •2.5.1.4. Тестирование
- •2.5.1.5. Типичные ошибки при выполнении работы
- •2.5.2. Задание 2. Накопление произведений в цикле
- •2.5.2.2. Пример 8.4
- •2.5.2.3. Программа
- •2.5.3.2. Пример для варианта 30
- •2.5.3.3. Программа
- •2.5.3.4. Тестирование
- •2.5.4. Задание 4. Вычисление значения функции с помощью разложения в ряд
- •2.5.4.1. Условие задания
- •Варианты заданий
- •2.5.4.2. Пример для варианта 30
- •2.5.4.3. Программа
- •2.5.4.4. Тестирование
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Понятие ицвп 2
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 (; ; ;)
{
…
// Проверка условия и выход.
}