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

При использовании операторов цикла с параметром вещественного типа имейте в виду следующее. Дробная часть (мантисса) «плохого» вещественного числа (0.1, 0.3, 23.47е-4 и т.п.) – начального или конечного значения параметра и шага в память компьютера будет записана с округлением, поэтому добиться точного равенства текущего значения параметра его последнему значению х  =  хn  в этом случае из-за ошибок округления практически невозможно. Мы можем не увидеть на экране результат при последнем значении параметра. Для выполнения цикла и при последнем значении параметра рекомендуется в условии_повторения записывать выражение  вида  x <=  xn + h / 2. Точного  равенства, конечно, не будет, но последнее вычисленное в процессоре значение параметра хn будет меньше  значения  xn + h / 2. При использовании оператора for тоже  следуйте приведенной рекомендации. Но лучше всего посчитать по приведенной выше формуле число повторений цикла Nи в качестве параметра цикла использовать целочисленную переменную к, которая изменяется от 1 до N. В этом случае вещественный параметр цикла х необходимо проинициализировать в выражении_1 (х = х0;), а его изменение должно обеспечить выражение_3 (к++, х += h)  в заголовке оператора for, либо оператор присваивания      x = x =   + h  в конце цикла.

Пример 1. Составить таблицу значений функции y = sinxдля значений x = -2π (π / 6) 2π.  Результаты вывести в  виде таблицы с «шапкой», указывая в дробной части результата три цифры.

Для организации цикла используем оператор цикла с предусловием. Для  вывода заголовка («шапки») таблицы необходимо определить ширину поля вывода для каждого столбца таблицы. Так как количество цифр в значениях дробной части – 3 цифры, то минимальная ширина столбцов для аргумента  х  и  результата  у – 5 позиций (1 – целая часть, 1 – для десятичной точки, 3 – для дробной части). Мы примем ширину полей таблицы равной 7.  Для указания ширины поля и количества знаков в дробной части необходимо использовать манипуляторы,  поэтому подключаем файл  iomanip.h.

//    Таблица  значений функции y = sin x отрезке [-2π, 2π] с шагом h = π /6.

#include   <iostream.h>

#include   <iomanip.h>

#include   <conio.h>          

#include <math.h>

int main  ()

{  

const  double  pi = 3.141592;

double  x,   x0 = -2 * pi,   xn = 2* pi,   h = pi / 6;

//   вывод   заголовка  таблицы  с обрамлением

for  (int i = 1; i <=  17; i++)   cout << ‘_’; 

cout << “|   X   |   Y   |” << endl;

for  (int i = 1; i <=  17; i++)   cout << ‘_’;

cout << endl; 

x = x0;     //   инициализация параметра

while (x <= (xn + h/2)) 

{

y =  sin (x);

//   манипулятор  setw (7)  устанавливает ширину столбца  таблицы,  а 

//   манипулятор  setprecision (3)  определяет количество знаков в дробной части

cout << ‘|’ << setw (7) << setprecision (3) << x << ‘|’;

cout << setw (7) << setprecision (3) << y << ‘|’ << endl;

x += h;     //    изменение текущего значения параметра (только здесь!!!)

}

return  0;

}

В  файле  лаб_2_ауд  представлены  следующие  материалы:

·  слайды  8 – 10: синтаксис операторов цикла;

·  слайды  3 – 5: разветвление в цикле с параметром, вывод значений функции;

·  слайды  11 – 18, 20,21:  примеры  организации цикла с параметром;

·  слайд     23:  типовое задание  2.1;

·  слайд     29:  вычисление многочлена в точке;   

·  слайды  30 – 31: схема Горнера для вычисления значения полинома; 

·  слайд    35:  вложенный цикл;  

·  слайды  36 – 37:  корректная организация циклов;

·  слайды  38 – 47: оптимизация программ.

В  файле лаб_2_а_примеры  представлены примеры организации циклов в программах.  

1.5.  Организация  итерационного  цикла   

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