Язык программирования Pascal. Процедуры и функции. Рекурсия. Васильев В.В - 11 стр.

UptoLike

11
нять значения формальных параметров . При этом изменение выполняется
непосредственно в ячейках памяти фактических параметров . При заверше-
нии работы процедуры / функции память, отведенная для работы процедуры ,
очищается . При этом новые значения фактических параметров не теряются .
Входные/выходные параметры , передаваемые по ссылке, называются пара -
метрами-переменными. В заголовке процедуры /функции при описании
параметров - переменных перед их идентификаторами ставится служебное
слово var.
Фактические параметры -переменные могут быть переменными любого типа,
в том числе и файлового.
Одной из распространенных задач, приводящих к процедурам и функци-
ям, является задача, связанная с операциями над большими числами.
Есть люди , которым нравится получать точные значения математических
величин. Например , в XVI в. Рудольф Ван Койне (Голландия) вычислил значе-
ние
π
c точностью до 35-го знака после запятой и завещал высечь это число
на своем надгробии.
Задача 2. Вычислить число
e
c точностью до 50-го знака после запятой .
Многие функции вычисляются в ПК по формулам Тейлора. Математиче-
ские константы могут быть найдены как суммы бесконечных последовательно-
стей , выражающих данные константы . Например ,
(
)
π
4
1
1
3
1
5
1
7
1
2
1
1
=+++
+
......
n
n
Разложим функцию
e
x
в ряд Маклорена при
1
=
x
:
e
n
=++++++1
1
1
1
2
1
3
1
!
!
!
...
!
...
Если переменная , хранящая очередной член ряда, будет иметь тип real, то
мы не сможем достигнуть желаемой точности, поскольку очередной член ряда
будет слишком мал (фактически, в памяти будет храниться ноль). Действи -
тельные числа в памяти ПК представлены приближенно. Количество точных
цифр числа ограничивается количеством знаков , выделенных для представле -
ния числа .
Ниже приведен текст программы , которая печатает число десятичных зна-
ков , выделяемых для представления действительного числа .
Program Tochnost;
Uses crt;
Const a=1.0;
Var n:integer; r:real;
Begin
Textbackground(7); Textcolor(blue); Clrscr;
r:=1.0; n:=0;
repeat
n:=n+1; r:=r/10
until a=a+r;
write('Точность типа real равна 1Е-',n);