函数不能做为语句单独使用,多出现在条件和:=的右边位置;过程无返回值,必须做为语句单独使用
ABS(-5); 错
A:=ABS(-5); 对
FILLCHAR(W,SIXZEOF(W),0); 对
W:=FILLCHAR(W,SIXZEOF(W),0); 错
Pascal把常用的一些运算定义为系统标准函数,简称为标准函数;标准函数的名字都是预定义标识符;引用一个函数就称为函数调用,调用时只要在程序中写出某一函数名以及函数所需要的参数,系统就会自动运算并得出结果,例如:abs(-123)将返回123。
Pascal的标准函数共有17个,可分为四类:算术函数、转换函数、顺序函数及逻辑判断函数。
一、算术函数
(1)、求绝对值-ABS:是英文单词absolute(绝对)的缩写,ABS(x)表示求x的绝对值
例如:PROGRAM EX;
Var a:integer;b:real;
BEGIN
a=-34.5;
b=234.5;
write(abs(a):5:1,' ',abs(b):5:1); {将输出 34.5 234.5}
readln;
END.
(2)、反正切函数-ARCTAN:ARCTAN(x)表示求x的反正切函数值,返回值为real型
例如:PROGRAM EX;
Var a:integer;b:real;
BEGIN
a=1;
b=1.0;
write(abs(a):6:4,' ',abs(b):6:4); {将输出 0.7854 0.7854}
readln;
END.
(3)、余弦函数-COS、正弦函数-SIN:COS(x)表示求x的余弦值;SIN(x)表示求x的余弦值。这里的x必须为弧度,不能直接使用角度单位的量。如果x为角度数,可以用后面的方式转换:x*3.14/180
(4)、指数函数-EXP、自然对数函数 -LN:EXP是英文单词exponent(指数)的缩写,EXP(x)表示求以e为底x为指数的函数值 ,即EX;LN是英文单词logarithrm(自然对数)的缩写,LN(x)表示求x的自然对数,即LOGeX
(5)、平方函数-SQR、正平方根函数-SQRT:SQR是英文单词square(平方)的缩写;SQRT是英文单词square root(平方根)的缩写
几点说明:Pascal中无幂运算,要求XY可以用后面的公式:XY=eYLNX (X>0)
求常用对数可用公式:logX=lnX/ln10。
e≈2.71828
如:求三次根号下X,可以表示为EXP(1/3*LN(X))
二、类型转换函数
(1)、取整数函数-TRUNC:如TRUNC(7.8)的值为7,TRUNC(-6.1)的值为-6
(2)、四舍五入函数-ROUND:如ROUND(7.8)的值为8,ROUND(-6.1)的值为-6
(3)、序号函数-ORD:返回参数的对应的序号;若参数为字符,则返回其ASCII码(A的ASCII码为,a的ASCII码为97)值,如ORD('B')的值为66;若参数为BOOLEAN,则ORD(TRUE)的值为1,ORD(FALSE)的值为0
(4)、字符函数-CHR:返回序号所对应的字符,与ORD互为反函数;如CHR(66)的值为'B'
注意TRUNC与ROUND的区别
三、顺序函数
(1)、前趋函数-PRED:返回参数的前一个数据,若参数为第一项,则函数无意义
(2)、后继函数-SUCC:返回参数的后一个数据,若参数为最后一项,则函数无意义
四、逻辑判断函数
(1)奇偶判断函数-ODD:判断参数的奇偶性,当参数为偶数时,函数值为FALSE;当参数为奇数时,函数值为TRUE
(2)、文件尾函数-EOF:判断文件位置指针是否指向文件结束符,是则为TRUE,反之为FALSE
(3)、行结束函数-EOLN:判断文件位置指针是否指向换行符符,是则为TRUE,反之为FALSE
五、与字符串相关的函数和过程函数和过程名 功 能 说 明
CONCAL(ST1,...,STN) 将N个字符串连接起来 等效于ST1+...+ST2,是函数
COPY(S,M,N) 取S中第M个字符开始的N个字符 若M大于S的长度,则返回空串;否则,若M+N大于s的长度,则截断,是函数
LENGTH(S) 求s的动态的长度 返回值为整数,是函数
POS(SUB,S) 在S中找子串SUB 返回值为SUB在S中的位置,为byte型,是函数
UPCASE(CH) 将字母CH转换成大写字母 若CH不为小写字母,则不转换,是函数
INSERT(SOUR,S,M) 在S的第M个字符位置处插入子串SOUR 若返回串超过255,则截断,是过程
DELETE(S,M,N) 删除S中第M个字符开始的N个字符串 若M大于S的长度,则不删除;否则,若M+N大于S的长度,则删除到结尾,是过程
STR(X[:W[:D]],S) 将整数或实数X转换成字符串S W和D是整型表达式,意义同带字宽的write语句,是过程
VAL(S,X,CODE) 将字符串S转换成整数或实数X 若S中有非法字符,则CODE存放非法字符在S中的下标;否则,CODE为零,CODE为整型,是过程
FILLCHAR(S,N,CH) 给S填充N个相同的CH 用于初始化数组或字符串,N常用SIZEOF(S)代替,是过程
注:关于字符串的几点说明
①空串表示为'',其长度为0,不等于含有一个空格的串' ',它的长度为1;如:A:='';就是将A字符串置空
②FILLCHAR可以用于字符串变量和任何类型数组变量的初始化,比如:
FILLCHAR(A,SIZEOF(A),0) 将整型数组A全置0
FILLCHAR(B,SIZEOF(B),TRUE) 将布尔型数组B全置0
FILLCHAR(C,SIZEOF(C),'A') 将整型字符串C全置'A'
其中SIZEOF是返回变量的空间,以变量的基类型为单位
Pascal字符串函数:
val(s,n,code);
把s字符串换成n,code是返回代码。{值为0,则失败,值为1,则成功}
附:
数字转字符:
str(n,s);
字符串转为数值val
定义: procedure Val(S; var V; var Code: Integer);
在这里:
S 是由一系列数字字符构成的字符串类型变量;。
V 是整型或实型变量;
Code 是Integer型变量
注意:Val将S转为它的数值形式。
例子:
var s:string;I, Code: Integer;
begin
s:=‘1234‘;
val(s,i,code);
writeln(i); { 1234 }
end.
用 val 函数。
var i:string;
t:integer;
begin
i:='32';
val(i,t);//此时 t 等于32
end.
但是如果转换的字符串中有其他字符,那么转换出来的值为0;
var i:string;
t:integer;
begin
i:='abcd';
val(i,t);//此时 t 等于0
end.
这个是必须定义一个整形变量的,如果这样输出 write(val(i));是错误的。
可以用自定义函数。
var i:string;
function vai(var x:string):integer; //定义一个自定义函数
begin
val(x,vai);
end;
begin
i:='123';
write(vai(i));// vai(i)=123;
readln
end.
用这个函数: val
这么用:val(s,k,code)
用途:将字符串s转为数值,存在k中;code是错误代码
给你举个例子
var s:string;k,code:integer;
begin
s:='1234';
val(s,k,code);
write(k);{k=1234}