Решить задачу, используя подпрограмму-процедуру для вычисления текущего значения S(x) с произвольным количеством итераций n и подпрограмму-функцию Y(x). Значения х и n вводятся с клавиатуры.
; Y(x) = 
Решение
program ProcFunc; {название программы}
{Задание3 выполнено учащимся № группы ФИО № варианта}
Uses
crt; {подключение модуля для работы с экраном}
Var
i,n:integer; {объявление переменных}
s,x,y:real;
procedure SumRyad(n:integer;x:real;var s:real);
var {объявление переменных}
i,i1:integer;
fact:longint;
y1:real;
s:=0; {инициализация переменных}
fact:=1;
i1:=1;
for i:=1 to n do {цикл по i от 1 до n}
Begin
fact:=fact*i; {вычисляем факториал}
i1:=i1*(-1); {вычисляем -1 в степени}
x1:=x1*x; {вычисляем х в степени}
y1:=i1*x1/(fact*(2*i-1)); {вычисляем очередной член ряда}
s:=s+y1; {накапливаем сумму}
end;
writeln;
writeln('суммаряда =',s:9:3); {выводим на печать s }
end;
functionFuncY(x,s:real):real;
Begin
if x>0 then
FuncY:=1+3*s
Else
if x=0 then
FuncY:=2*x-0.75
Else
FuncY:=-2*x-x*x*x;
end;
begin {начало программы}
clrscr; {очистка экрана}
writeln('Задание 3');
writeln('Вычислениезначения ряда и функции для заданного х');
writeln('Введите количество итераций');
readln(n); {чтение количества итераций n}
write('Введитех=');
readln(x); {чтение переменной х}
SumRyad(n,x,s); {вызов процедуры}
y:=FuncY(x,s); {вычисление у с помощью функции}
writeln('Значениефункции y=',y:9:3);
readkey; {ожидание нажатия клавиши}
end.
Результат выполнения программы представлен на рис. 4.3.

Рис. 4.3. Результат выполнения программы