Основные математические функции (стандартные функции)
В этом разделе приведены основные математические функции, встроенные в системную библиотеку Турбо Паскаль. Стандартные функции служат для выполнения элементарных математических расчетов, часто требуемых при написании программ. Разработчики Паскаля стремились сделать его программное ядро максимально компактным, поэтому в него не вошел ряд функций, обычно имеющихся в других языках, таких, как вычисление максимума и минимума, возведение числа в произвольную степень и др. Физически коды стандартных функций хранятся в стандартной библиотеке Паскаля – файле с именем TURBO.TPL. Все функции оформляются одинаково: после имени функции следует ее аргумент, заключенный в круглые скобки. Если аргументов несколько, они разделяются запятыми. Информацию об основных стандартных функциях удобно представить в виде таблицы:
Таблица 1.6
Математическая запись | Запись на языке Турбо Паскаль | Пояснение | Тип аргумента и результата функции |
|x| | abs(x) | модуль аргумента x | Integer или Real |
x2 | sqr(x) | квадрат аргумента x | аргумент – I или R, результат – R |
sin x cos x arctg x | sin(x) cos(x) arctan(x) | Остальные тригонометрические функции выражаются через эти | аргумент – I или R, результат – R |
ex ln x | exp(x) ln(x) | экспонента и натуральный логарифм | аргумент - I или R, результат – R |
sqrt(x) | квадратный корень от аргумента x | аргумент - I или R, результат – R | |
p | pi | функция без аргументов, вернет число p | R |
trunc(x) | функция отбрасывает дробную часть аргумента, аргумент не округляется | аргумент R, результат L | |
frac(x) | функция выделяет дробную часть своего аргумента | R | |
round (x) | округление вещественного числа до ближайшего целого | аргумент R, результат L | |
Int(X) | возвращает число, равное целой части числа аргумента. | R | |
Random(X) | Возвращает случайное целое число в диапазоне 0..X. Если аргумент опущен (Random), то возвращается случайное вещественное число от 0 до 1. | результат I, если аргумент I; результат R, если аргумент опущен | |
Inc(X,Y) | Увеличивает значение числа X на Y. Если число Y не указано, то увеличение происходит на 1. | I | |
Dec(X,Y) | Уменьшает значение числа X на Y. Если число Y не указано, то уменьшение происходит на 1. | I |
Здесь x обозначает любую подходящую по типу переменную, либо результат вычисления выражения соответствующего типа (см. ниже), либо соответствующий по типу результат, вычисленный другой стандартной функцией. Функция pi не имеет аргументов и возвращает число π.
Функции возведения в произвольную степень в Турбо Паскале нет. Используйте многократное умножение для возведения в целочисленную степень, либо функции Exp и Ln для возведения в вещественную степень.
Перед использованием Random в программах рекомендуется сначала инициализировать генератор псевдослучайных чисел процедурой Randomize. В противном случае при каждом запуске программы будет генерироваться одна и та же последовательность случайных чисел.
Пример. Вывод на экран 5 случайных чисел в диапазоне -10..10.
var i: integer;begin randomize; for i:=1 to 5 do writeln(random(21)-10);end.Примеры
1) возвести x в пятую степень
x*x*x*x*x или sqr(x)*sqr(x)*x или sqr(sqr(x))*x, последнее показывает, что результаты одних функций могут быть аргументами других – это называют вложением функций. Разумеется, тип результата, возвращаемый вложенной функцией, должен быть подходящим для аргумента внешней функции.
2) возвести величину a в произвольную степень x
Так как в Паскале нет функции возведения в произвольную степень, воспользуемся формулой ax=ex*ln a
a:=2.5; x:=0.25;
ax:=exp(x*ln(a));
обратите внимание, что все скобки в выражении должны быть парными. Или:
= exp(1/3ln(x)).
3) вычислить sin2x => sqr(sin(x)).
Нельзя писать sin*x или sin x, после имени функции может следовать только аргумент в круглых скобках.
4) вычислить k=tg(t). Т.к. функции tg нет, пишем k:=sin(t)/cos(t);
5) вычислить:
При необходимости изменить обычное старшинство операций в записи выражения используются круглые скобки.
Правильная запись: y:=(a+b)/2; Неправильно y:=a+b/2, т.к. это означает .
6) В записи выражений нельзя пропускать знак *, как часто делается в математике.
b2-4ac -> sqr(b)-4*a*c
Тип выражения
Турбо Паскаль построен на основе строгого соблюдения концепции типов, в соответствии с которой все применяемые в языке операции определены только для операндов совместимых типов. Поэтому для всех операций оговариваются допустимые типы операндов и тип получаемого результата.
В программе данные одного типа могут преобразовываться в данные другого типа. Такое преобразование может быть явным и неявным.
При явном преобразовании типов используются вызовы специальных функций преобразования, аргументы которых принадлежат одному типу, а значение – другому. Например, это функции ORD, TRUNC, ROUND и т.д.
Неявное преобразование типов возможно в выражениях, составленных из вещественных и целочисленных переменных. Тип выражения в этом случае определяется старшим из типов входящих в него операндов (т.е. стандартных функций, переменных, констант).
Пример:
var i,j,x:integer;
f:real;
. . .
i+4*j целый тип выражения, можно записать результат в целую переменную.
f+i*0.5 вещественный, результат пишется в вещественную переменную.
Оператор x:= i+4*j будет синтаксически правильным, а x:= f+i*0.5 будет неверным. Среда разработчика при компиляции сообщит об ошибке несовместимости типов.
Операция деления / в Паскале всегда дает вещественное число. Для деления целых чисел с целым результатом (остаток отбрасывается) используйте div, для взятия остатка от деления двух целых – mod.
Тип переменной позволяет не только устанавливать длину её внутреннего представления, но и контролировать те действия, которые выполняются над ней в программе. Такой контроль осуществляется на этапе компиляции программы и это важное преимущество Турбо Паскаля перед другими языками.