- •Отзыв на методические указания к выполнению типового расчета (Часть1. Программирование в Turbo Pascal).
- •Рецензия на методические указания к выполнению типового расчета (Часть1. Программирование в Turbo Pascal).
- •1. Введение.
- •2. Теоретическая часть.
- •2.1. Основные понятия.
- •2.5. Цикл-до и оператор repeat.
- •2.6. Выбор и оператор case.
- •3. Практическая часть.
- •3.1. Задание 1.
- •Задание 2.
- •Задание 3.
- •3.4. Задание 4.
- •3.5. Задание 5.
- •Вариант № 29
Задание 3.
Составить с объяснениями блок-схему и программу вычисления суммы элементов ряда с заданной точностью.
Условием окончания цикла считать Sn-Sn-1< , где:
Sn – значение суммы элементов ряда;
Sn-1 – значение суммы n-1 элементов ряда;
=105 – заданная точность вычислений.
Для решения этой задачи необходимо повторить тему «Циклические вычислительные процессы с постусловием. Оператор цикла REPEAT UNTIL» (см. [1], стр. 40, [2], стр. 45-46, [3], стр. 60-61).
В данной задаче сумма элементов ряда вычисляется приближенно и заранее неизвестно, сколько элементов ряда необходимо просуммировать. Условие окончания цикла:
Sn-Sn-1<
говорит о том, что вычисления необходимо прекратить, когда значение очередного элемента ряда будет таким маленьким, что практически не окажет влияния на величину суммы. Сущность вычисления суммы элементов ряда в этом случае заключается в последовательном приближении к искомому решению.
Такие циклические вычислительные процессы получили название итерационных, а каждый шаг вычислений – итерацией.
|
Первой особенностью итерационного цикла является то, что заранее невозможно определить число необходимых итераций или приближений. Поэтому при программировании циклов в таких задачах применяется не цикл со счетчиком (или с параметром), а цикл с постусловием, называемый иначе итеративным, или итерационным. Второй особенностью итерационного цикла является то, что тело цикла должно располагаться до проверки условия окончания (или повторения) цикла. В языке Паскаль для организации цикла с постусловием имеется специальный оператор REPEAT UNTIL, проверяющий условие окончания цикла. |
Очевидно, что формула в условии данной задачи относится к типу в) (см. стр. ******настоящей методики).
Поэтому, полагая Pn=Pn-1*Sin(x+1), а Fn=Fn-1.n, получим значение n-го элемента ряда, Un=Pn/Fn*(x/2) и Sn=S(n-1)+Un.
Блок–схема этой задачи может быть представлена следующим образом:
Пояснения к блок-схеме:
БЛОК 1 – ввод значений х, .
БЛОК 2 – задание начальных значений для организации цикла, (P:=1, F:=1) таких, что при N = 1, Pn=Sin(x+1), а Fn=1!. Очевидно, что нет необходимости повторять вычисление (х/2)3 на каждом шаге цикла. Поэтому можно вычислить его заранее и поместить в переменную А. Так как вычисление суммы идет по стандартному алгоритму Sn=S(n-1)+Un, то начальное значение суммы обнуляется. Чтобы число просчитанных элементов ряда соответствовало значению N, Nтакже принимается равным 0.
БЛОК 3 – образует тело цикла, здесь вычисляются значения P и F, по рекуррентным соотношениям, приведенным выше, значения n-го элемента ряда U и суммы S. Для сохранения предыдущего (n-1) значения суммы использована переменная S1. Переменная DELTA сохраняет значение разности сумм на n-ом и (n-1) шаге.
БЛОК 4 – проверка условия окончания цикла. Если оно истинно, т.е.:
S1-S< ,
то осуществляется переход на блок 5, если ложно – на блок 4 и повторение тела цикла.
БЛОК 5 – печать результатов – S, N, X.
БЛОК 6 – конец программы.
Программа решения задачи 3 на языке Паскаль приведена ниже.
PROGRAM CIKL2;
(*ВЫЧИСЛЕНИЕ СУММЫ ЭЛЕМЕНТОВ РЯДА С ЗАДАННОЙ ТОЧНОСТЬЮ*)
USES(*УКАЗАНИЕ БИБЛИОТЕЧНЫХ МОДУЛЕЙ*)
CRT;
VAR (*РАЗДЕЛ ОПИСАНИЯ ПЕРЕМЕННЫХ*)
X,EPS,P,A,U,S,S1,DELTA:REAL;
F,N:INTEGER;
BEGIN (*НАЧАЛО РАЗДЕЛА ОПЕРАТОРОВ*)
CLRSCR;
WRITELN('ВВЕДИТЕ X');
READLN(X);
WRITELN('ВВЕДИТЕ ТОЧНОСТЬ ВЫЧИСЛЕНИЙ EPS');
READLN(EPS);
A:=EXP(3*LN(X/2));
P:=1;
F:=1;
N:=0;
S:=0;
(*НАЧАЛО ИТЕРАЦИОННОГО ЦИКЛА*)
REPEAT
S1:=S;
N:=N+1;
P:=P*SIN(X+1);
F:=F*N;
U:=P/F*A;
S:=S+U;
DELTA:=ABS(S-S1);
(*ПРОВЕРКА УСЛОВИЯ ОКОНЧЕНИЯ ЦИКЛА*)
UNTIL DELTA<EPS;
(*ВЫВОД РЕЗУЛЬТАТА НА ДИСПЛЕЙ*)
WRITELN('ПРИ X=',X:4:2,' СУММА', N:2,' ЭЛЕМЕНТОВ=',S:7:5);
READLN;
END.
(*КОНЕЦ ПРОГРАММЫ*)
Программа снабжена комментариями и дополнительных объяснений не требует.