6. Sqr(x) - квадрат числа
7. Sqrt(x) - квадратный корень
8. Exp(x) - экспонента
9. Ln(x) - натуральный логарифм
10. Pi - число пи
11. Sin(x) - синус
12. Cos(x) - косинус
13. Arctan(x) - арктангенс
Все остальные математические функции можно получить, пользуясь этим основным набором: например, десятичный логарифм - Ln(x)/Ln(10), тангенс - Sin(x)/Cos(x) и т.д. Аргументы функций могут быть любыми арифметическими выражениями и задаются в круглых скобках после имени функции, аргументы функций Sin и Cos выражаются в радианах. Вычислим квадрат синуса 70 градусов : Sqr(Sin(Pi/180*70)) .
При вычислении математических функций может происходить ошибка Floating point overflow – например, при использовании функций Sqr или Exp. Кроме того, при вычислении логарифма неположительного числа, квадратного корня отрицательного числа и применении функций Trunc и Round к слишком большому по абсолютной величине числу происходит ошибка номер 207: Invalid floating point operation.
Кроме перечисленных выше математических функций Паскаль предоставляет еще несколько полезных числовых функций и процедур разного назначения:
14. High(целый тип) - возвращает наибольшее возможное значение данного типа.
15. Low (целый тип) - возвращает наименьшее возможное значение данного типа.
16. SizeOf(тип)
SizeOf(переменная) - возвращает размер в байтах заданного типа или заданной переменной. Функция SizeOfприменима к любому типу, в т.ч. и к структурированным типам - массивам, записям и некоторым другим, речь о которых пойдет ниже.
17. Random(Range:Word) - возвращает целое случайное число в диапазоне от 0 до Range-1.
18. Random - возвращает вещественное случайное число в из отрезка [0,1].
19. Randomize - процедура, инициализирующая генератор случайных чисел, используя текущее системное время.
Выведем несколько случайных чисел в диапазоне от 0 до 99 :
Begin
Randomize;
WriteLn(Random(100));
WriteLn(Random(100));
WriteLn(Random(100));
End.
При первом запуске программы она вывела числа13,38,48, при втором запуске -63,99,6, при третьем запуске - 23,87,92. Это действие процедуры Randomize - поскольку при каждом запуске системное время, которое отсчитывает операционная система, было различным, мы каждый раз получали различные последовательности случайных чисел. Теперь исключим из программы оператор Randomize; и запустим ее несколько раз - каждый раз мы будем получать тройку чисел 0,3,86. Обратите внимание, что процедура используется в операторе вызова, а функция используется в выражении. Запись Random(100);неверна, поскольку Random - это функция, но также неверна и записьWriteLn(Randomize);. Можно считать, что различие между процедурой и функцией состоит в том, что процедура выполняет некоторую последовательность действий, а функция вычисляет некоторое значение. Заметим, что Read и Write - это тоже процедуры. Для работы с внутренним двоичным представлением двухбайтовых целых чисел (типа Word или Integer) существуют функции
20. Lo(x) - возвращает младший байт аргумента.
21. Hi(x) - возвращает старший байт аргумента.
22. Swap(x) - меняет местами младший и старший байты. Для целочисленных переменных определены процедуры
23. Inc(x)
Inc(x,d)
24. Dec(x)
Dec(x,d)
где x - имя переменной, d - любое целочисленное выражение. Процедура Incувеличивает значение переменной на d, а процедура Dec - уменьшает на d; второй аргумент этих процедур можно не задавать, тогда он будет принят равным 1. Например, вместо операторов a:=a+3; b:=b-1; c:=c+a+b; мы могли бы написать Inc(a,3); Dec(b); Inc(c,a+b); и такой способ записи был бы предпочтительней.