Арифметические процедуры
Лекция 17
Тема: Стандартные процедуры и функции
Функции преобразования
Следующие функции преобразуют значение аргумента к другому типу:
chr (x : byte) : char – возвращает символ ASCII с заданным номером.
Например, write(chr(105)); Результат = ‘i’.
ord (x) : longint – возвращает порядковый номер скалярного аргумента.
Например, write(ord(‘A’)); Результат = 65.
round (x:real) : longint – возвращает округленное значение аргумента, преобразованного к целому типу.
Например, write(round(5.6):2); Результат = 6.
trunc (x:real) : longint – преобразовывает аргумент к целому типу путем отбрасывания дробной части.
Например, write(trunc(5.7):2); Результат = 5.
Арифметические функции
Для математических расчетов определены следующие функции:
int (x : real) : real – возвращает целую часть аргумента.
frac (x : real) : real - возвращает дробную часть аргумента.
x = int (x) + frac (x)
pi : real – возвращает значение числа “пи” (p = 3,141592653589793…- отношение длины окружности к диаметру).
abs (x) – возвращает абсолютное значение аргумента (аргумент этой функции может быть и вещественным, и целым).
arctan (x :real) : real – возвращает арктангенс аргумента. Для вычисления других обратных тригонометрических функций следует пользоваться тождествами:
arcsin(x) = arctan(x/sqrt(1 – x*x));
arcctg(x) = pi/2 – arctan(x);
arccos(x) = pi/2 – arctan(x / sqrt(1 – x*x));
cos(x : real) : real – возвращает косинус аргумента.
sin(x : real) : real – возвращает синус аргумента.
exp (x : real) : real – возвращает экспоненту аргумента.
ln (x : real) : real – возвращает натуральный логарифм аргумента.
sqr (x) – возвращает квадрат аргумента. Аргумент может быть и вещественным, и целым.
sqrt (x : real) : real – возвращает квадратный корень аргумента.
Пример 5.1. Составить программу вычисления функции по формуле
y :=
Выражение, встречающееся неоднократно, обозначим s = sin x, t = x2 + a2, тогда y = 0,5× ×(0,5×10-3 + ).
Упрощение арифметических выражений и программирование сложных выражений в несколько приёмов экономит память, уменьшает время трансляции и выполнения программы.
program p51;
const pi = 3.14;
var a, x, y, t, s : real;
begin read(a, x); t := a*a+x*x; s := sin(x);
y := 0.25*s*s / t; y := y * (1.0E-03 + sqrt(abs(p-x)) / ln(t) / abs(s));
write(‘a=’:5, a:8);
write(‘x=’:5, x:8);
write(‘y=’:5, y:8)
End.
Задание 5.1
1. Запишите на Паскале следующие формулы:
а) (1 + х)2; б) ; в) |a + bx|;
г) sin 8; д) cos2x3; е) tg x;
ж) log2 ; з) ch x; и) arcctg 103;
к) acrsin x.
2. Запишите на Паскале следующие формулы (x >0):
а) x-1; б) x4; в) x-2; г) x5;
д) x100; е) ж) з)
3. Запишите на Паскале следующие формулы:
а) б) в)
4. Вычислите значения выражений:
а) б) в)
5. Переменной присвойте дробную часть положительного числа
Возведение в степень
Если показатель степени – целое число, то возведение в степень сводится к многократному умножению в случае, когда показатель степени больше нуля, и многократному делению, если меньше нуля. Например:
Выражение | Запись в Паскале |
y = x2 | y := x * x или y := sqr(x) |
y = x5 | y := x * sqr(sqr(x)) |
y = x-2 | y := 1/ x / x или y := 1 / (x*x) |
y = x-9 | y := 1 / x / sqr(sqr(sqr(x))) |
Если показатель степени – вещественное число, то возведение в степень программируется согласно тождеству
v u = e u×ln v.
Отсюда v u ~ exp (u * ln(v)).
Например:
Выражение | Запись в Паскале |
y = x3/5 | y := exp (3/5 * ln(x)) |
Удобно пользоваться функциями sqrt(x) sqr(x):
Выражение | Запись в Паскале |
y = | y := sqrt(sqrt(x * sqr(sqr(x)))) |
Задание 5.2
Запишите на Паскале следующие выражения:
а) еp+q; б) е|p+q|; в) xp+q; г) x|p+q|; д) (p + q) x;
е) |p + q| x; ж) еp×q; з) ; и) еp×q; к) .
Арифметические процедуры
Для быстрого увеличения и уменьшения целых переменных определены процедуры dec и inc.
dec(x [, n : longint]) – уменьшает значение первого аргумента на величину второго параметра, а если он отсутствует, то на 1.
Например, x := 10; dec(x,2); Результат = 8.
inc(x [, n : longint]) – увеличивает значение первого аргумента на величину второго параметра, а если он отсутствует, то на 1.
Например, x := 10; inc(x,3); Результат = 13.
Скалярные функции
Скалярные функции обрабатывают данные любого скалярного типа, кроме вещественного.
odd (x: longint) : boolean – возвращает true, если аргумент нечетный. Например, результатом выполнения функции odd(3) будет true.
pred (x) – возвращает предшествующий элемент в типе аргумента. Например, результатом выполнения функции pred(90) будет 89.
succ(x) - возвращает следующий элемент в типе аргумента.
Например, результатом выполнения функции succ(90) будет 91.
Примечание. Если
var i : integer;
{то следующие три оператора эквивалентны, но каждый следующий выполняется быстрее предыдущего}
i := i + 1; i := i - 1;
i := succ(i); i := pred(i);
inc(i); dec(i);
Процедуры завершения
Выход из процедуры и завершение Паскаль-программы реализуются следующими средствами:
Exit – выход из процедуры.
Halt[(Code:Word)] – выход в операционную систему с передачей кода возврата (если он указан).