Реферат: Синтаксис описания и вызова процедуры
Label 0; описываем метку, которая нам пригодиться позже
var
rez:real;
m,n:longint; - описываем глобальные переменные.
functionfact(z: longint): real; объявляем функцию, даем ей имя fl, указываем формальные параметры. В данном случае это параметр-значение z.
var
y: real; описываем локальную переменную, т.е. она будет использоваться только в теле функции. Real использован потому, что уже 13! Выходит за рамки longint
begin
y:=1; необходимо присвоить переменной значение, равное единице, по крайней мере по двум причинам:
при умножении числа на 1 получается это же число, поэтому при у=1 исключены ошибки в начале вычисления факториала.
известно, что 0!=1, поэтому при m или n = 0 цикл не запускается, а значение 0! Оказывается равным 1.
whilez>1 doзапускаем цикл в обратную сторону, т. к. результат получается один и тот же, но при этом не приходится описывать дополнительную локальную переменную для запуска цикла с параметром. 1 исключаем из вычисления факториала по вышеуказанным причинам.
begin
y:=y*z;
z:=z-1
end;
fact:=yэтим оператором присваиваем функции значение факториала.
Точку с запятой перед end можно не ставить.
end; конец функции
begin начало тела программы
writeln('введите неотрицательные числа'); данный оператор выводит на экран текст, заключенный между ‘’, помогает понять, чего же требует программа.
0:readln(m,n); при помощи этого оператора ввода информации исходные данные заносятся в ячейки памяти.
ifmorn <0 thenbeginwriteln(‘вы ошиблись, вводите неотрицательные числа’);
goto 0
end; если пользователь все же ввел отрицательные числа, то программа выдаст неверный результат, данная последовательность операторов выводит на экран сообщение об ошибке пользователя и возвращает к вводу чисел
rez:=(fact(m)+fact(n))/fact(m+n); вычисляем значение (m!+n!)/(m+n)!
writeln('результат: ',rez) данный оператор вывода информации выводит на экран вычисленное значение.
end. конец программы
Приведем для пущей надежности еще несколько результатов счета