Каждый последующий член ряда можно определить через предыдущий, используя рекуррентную формулу:
yk+1 = yk·x / k
Текущая погрешность вычислений ε определяется последним просуммированным членом ряда:
ε =|yn|
Эту погрешность необходимо сравнить с заданной погрешностью ε0для реализации условия окончания суммирования:
- если ε > ε0 , то заданная точность еще не достигнута, и суммирование ряда необходимо продолжить, прибавив к имеющейся сумме еще один член,
- если ε <= ε0 , то заданная точность достигнута, и суммирование необходимо прекратить.
Пусть s – искомая сумма,
y – очередной член ряда,
k - номер члена ряда,
eps_0 – заданная точность вычислений,
x – вводимый аргумент.
Программа:
Public final double EPS_0 = 0.001;
int k = 0;
input=JOptionPane.showInputDialog("x=");
y = 1.0; // первый член ряда
s = y; // в сумме – он же
{
k++; // номер члена ряда увеличиваем на единицу
y *= x / k; // очередной член ряда
s += y; // добавляем его в сумму
}
while (Math.abs(y)>EPS_0);
System.out.printf(“\nСумма = %5.3f”, s);
Схема алгоритма:
Циклы с постусловием обычно используются в фильтрах входных данных – исходные данные вводятся до тех пор, пока они не будут корректными, а некорректные исходные данные отвергаются.
Пример: по введенному месяцу года определить количество дней в нем.
Схема фильтра (month – номер месяца)
Программа:
{
input=JOptionPane.showInputDialog("Введите номер месяца:");
month=Integer.parseInt(input);
} while ((month < 1) || (month > 12));
{
case 1: case 3: case 5:
case 7: case 8: case 10:
case 12: System.out.printf(“\n31 день”);
case 4: case 6: case 9:
case 11: System.out.printf(“\n30 дней”);
case 2: System.out.printf(“\n28 дней”);
default: System.out.printf(“\nТакого месяца нет\n”);
}
Циклы с пред- и постусловиями используются тогда, когда заранее неизвестно количество их повторений (итераций). Во всех остальных случаях используются циклы с параметром.
Управление работой циклов с параметром осуществляется не только условием, но и значением специальной переменной – параметра цикла (счетчика).
Циклы этого типа получили наиболее широкое распространение в алгоритмических языках.
Схему цикла с параметром можно представить в следующем виде:
где x – параметр цикла – любая переменная,
x_нач – его начальное значение,
x_кон – его конечное значение,
x_шаг – шаг его изменения (не только целое число).
В Java циклы с параметром реализуются оператором цикла: