Арифметические процедуры

Лекция 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 := Арифметические процедуры - student2.ru Арифметические процедуры - student2.ru

Выражение, встречающееся неоднократно, обозначим s = sin x, t = x2 + a2, тогда y = 0,5× Арифметические процедуры - student2.ru ×(0,5×10-3 + Арифметические процедуры - student2.ru ).

Упрощение арифметических выражений и программирование сложных выражений в несколько приёмов экономит память, уменьшает время трансляции и выполнения программы.

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; б) Арифметические процедуры - student2.ru ; в) |a + bx|;

г) sin 8; д) cos2x3; е) tg x;

ж) log2 Арифметические процедуры - student2.ru ; з) 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 = Арифметические процедуры - student2.ru 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; з) Арифметические процедуры - student2.ru ; и) еp×q; к) Арифметические процедуры - student2.ru .

Арифметические процедуры

Для быстрого увеличения и уменьшения целых переменных определены процедуры 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)] – выход в операционную систему с передачей кода возврата (если он указан).

Наши рекомендации