Задача 4
1. Условие: Составить схему алгоритма и написать ВР-программу вычисления суммы бесконечного ряда для заданного значения переменной и формулы общего члена ряда (см. табл. П. 1). Предусмотреть завершение суммирования и печать результата при достижении очередным членом ряда абсолютной величины, меньшей, чем 0.0001. Пример: значение переменной – 0.1; Формула общего члена ряда 2. Тексты программ: PROGRAM z41; (* 1-й способ с оператором перехода GOTO *) CONST k=2; (* поименованная константа *) LABEL 1; (* метка *) VAR x,s,a:REAL;(* переменная, сумма, элемент суммы *) i,j,znak,fakt:INTEGER; (* номер элемента суммы, переменная цикла, знак, факториал *) BEGIN s:=0.0; i:=0; znak:=1; x:=0.1; 1: i:=i+1; znak:=znak*(-1); fakt:=1; FOR j:=1 TO (k*i+1) DO fakt:=fakt*j; a:=znak*EXP((k*i+1)*LN(k*x))/fakt; s:=s+a; IF ABS (a)>0.0001 THEN GOTO 1; WRITE (‘При a= ’,a:9:7, ‘сумма= ’,s:9:7); WRITELN (‘на’ 4:2,‘-ой итерации’); END. 3а) Схема алгоритма задачи 4 (1-й способ (опера-торы IF и GOTO))
PROGRAM z42; (* 2-й способ с оператором цикла WHILE *) CONST k=2; (* поименованная константа *) VAR x,s,a:REAL;(* переменная, сумма, элемент суммы *) i,j,znak,fakt:INTEGER; (* номер элемента суммы, переменная цикла, знак, факториал *) BEGIN s:=0.0; i:=0; znak:=1; x:=0.1; a:=1; WHILE ABS (a)>0.0001 DO BEGIN i=i+1; znak:=znak*(-1); fakt:=1; FOR j:=1 TO (k*i+1) DO fakt:=fakt*i; a:=znak*EXP((k*i+1)*LN(k*x))/fakt; s:=s+a; END; WRITE (‘При a= ’,a:9:7, ‘сумма= ’,s:9:7); WRITELN (‘на ’i:2,‘-ой итерации’); END.
3б) Схема алгоритма задачи 4 (2-й способ (цикл WHILE))
|