Возвращает абсолютную величину параметра.
Объявление
Function Abs(X) : (тип параметра);
Режим
Windows, Real, Protected
Замечания
Параметр X — выражение вещественного или целочисленного типа. Результат того же типа, что и X, является абсолютной величиной X.
См. также
Пример
Язык:
Русский
English
лабораторные работы и задачи по программированию и информатике, егэ по информатике
Процедуры и функции
Отличие от стандартного Паскаля: значение присваивается в Result .
function Add(a,b:real):real; begin Result:= a + b; end;
function Add(a,b:real):real:= a + b;
Или же функция может выступать в качестве процедуры (нежелательный вариант):
function Add(a,b:real):= a + b; begin print(Add(2,8)); end;
function SP(a,b: real):=(a*b,2*(a+b)); begin print(SP(2,3)); end;
Короткие процедуры:
procedure p(a, b: real):= if a Использование модуля
Функции и процедуры принято помещать в пользовательские модули.
Для модуля создается отдельный файл, например, MyUnit.pas, в котором прописывается код функции или процедуры:
Unit MyUnit; <название модуля>interface <раздел служит для объявления используемых ниже функций и процедур>function MyFunc(x:real):real; procedure MyPr(x:real); implementation <реализация функций и процедур>function MyFunc(x:real):real; begin . end; procedure MyPr(x:real); begin . end; end.
В файле с основной программой:
Uses MyUnit; var . begin . end.
Тестирование процедур и функций
Все созданные процедуры принято тестировать. Для этого существует стандартная функция Assert:
function Add(a,b:integer):integer; begin Result:= a + b; end; begin Assert(Add(2,3)=(2+3), ‘Тест не прошел’); print (Add(4,6)); end.
Первый параметр функции Assert должен быть истинным, второй параметр — сообщение об ошибке. Если первый параметр оказывается ложным (т.е. функция работает неверно), то будет сгенерированно исключение и выведено сообщение об ошибке из второго параметра.
Обобщенные функции (Generic-функции)
Не всегда удобно, когда мы указываем конкретный тип аргументов функции или конкретный тип возвращаемого функцией значения.
Есть понятие обобщенной функции, в которой не указано к какому типу будут относиться ее аргументы или возвращаемое ею значение:
Подпрограмма образуется из обобщенной подпрограммы подстановкой конкретных типов в качестве параметров.
Запись такой функции выглядит так:
function MyFunc (a:T):T; begin . end;
В данном примере и аргумент и значение функции имеют изначально неопределенный тип.
Еще пример с обобщенной функцией.
Решение задач
function IsitDigit (d:T):boolean; begin var ch:=[0..9]; if d in ch then result:=true else result:=false; end; begin var n:=readInteger(‘введите число > 0′); assert (n>0,’число должно быть > 0’); print(IsitDigit(n)); end.
function AddToRightDigit(i,n:integer):integer; begin var str:=n.ToString+i; result:=str.ToInteger; end; begin var n :=readInteger (‘введите число’); var i :=readInteger(‘введите постфикс’); print(AddToRightDigit(i,n)) end.
function ASred(x,y:real):=(x+y)/2; begin var x:= readReal(‘введите x’); var y:= readReal(‘введите y’); println(‘результат средн. арифм: ‘,ASred(x,y)); end.
Функция Abs в Паскале возвращает абсолютное значение переменной. Результат, возвращаемый функцией Abs, имеет тот же тип данных, что и аргумент — параметр, передаваемый в функцию. Этот параметр может иметь любой числовой тип данных.
Синтаксис функции Abs для целых чисел:
function Abs(L : LongInt) : LongInt;
function Abs(I : Int64) : Int64;
Последний вариант возможен только для FreePascal и Lazarus, так как в классическом Паскале нет типа данных Int64.
Синтаксис функции Abs для вещественных чисел:
function Abs(D : ValReal) : ValReal;
ValReal — это вещественный тип данных с наибольшим доступным значением в данной операционной системе. Фактически это псевдоним (алиас) одного из типов Extended или Double.
А теперь пример использования:
Здесь мы сначала объявляем переменную с начальным значением равным -100 (отрицательное число).
А в программе используем функцию Abs и в результате переменная у будет равна 100 (положительное число).
Что вычисляет функция Abs
Вообще Abs — это сокращение от Absolute. Как нетрудно догадаться, переводится это слово как “абсолютный, чистый, несомненный”.
Вы должны помнить из школьного курса математики, что абсолютное число, то есть абсолютная величина или модуль числа х — это неотрицательное число, определение которого зависит от типа числа х.
В математике модуль числа х обозначается так: |x|.
То есть функция Abs в любом случае возвращает положительное число. Такая функция есть практически во всех языках программирования, так как используется довольно часто и входит в основы математики.
Таким образом, можно сказать, что функция Abs(х) вычисляет модуль числа х. То есть Abs(х) в Паскале — это то же самое, что |x| в математике.
Ну и напоследок давайте создадим свой собственный аналог функции, которая возвращает модуль числа. Итак, функция будет примерно такая:
Здесь мы передаём в функцию целое число, которое может быть как отрицательным, так и положительным. В функции мы проверяем значение этого числа. Если число отрицательное, то мы умножаем его на -1, и таким образом получаем положительное число. Если число положительное, то мы ничего не делаем — просто возвращаем полученное через параметр iNum число.
Как видите, алгоритм довольно простой.
Правда, наша функция может работать только с целыми числами. Но это уже мелочи.