Pascal子程序之函数
- 格式:pps
- 大小:184.00 KB
- 文档页数:16
Pascal语言子程序中参数的使用第2卷第l期2000年2月辽宁高职LIAONINGHIGHERVOCA TIONAL TECHNICALINSTITUTEJOUR NALV ol2.NO.1Feb2000Pascal语言子程序中参数的使用张学军,李密(辽宁电子计算机学校.早新高专汁算机教研室,辽宁阜新:123000)摘要本文主要讨论Pascal语言子程序中值参数,变量参数的拟定和赋值,这对更深刻的理解子程序的调用是非常必要的.关键词值参数:变量参数:实在参数:Pascal语言中图分类号TP3r”PA弓言在子程序调用过程中入何理解对值参数,变量参数的拟定,赋值是非常重要的,我们知道值参数和变量参数是子程序与被调用程序之间传递数据的机构,调用程序与子程序间是靠参数传递信息的.例1PROGRAMXCJ1(INPUT,OUTPUT):BEGINN:=4V ARN:INTEGER:V:=3:Y,Z:REAL:Z:=0PROCEDURESUB1(M:INI,EGER:V ARS,Z:REAL):SUB1(N,V,Z): BEGINV::2木Y:WRITELN(N:3,V:5:l,Z:5:1)S:=S木Y:END.z:=S/N输出结果为:436.09.0END:在过程SUB1的形式参数表自定义了三个参数,其中不带保留字V AR的M:INTEGER指明了M是值参数,带V AR的V ARS,z:REAL指明了S,z是变量参数.参数的赋值是这样的:过程体执行前:主程序:N囤Y=地址1圉z=ttgtJk2囵3l;子程序:卅4fs=地址1z=地址2M是值参数,所以得到了实在参数N的值.S,z是变量参数.所以S,z分别得到了Y与z的地址,实现了Y与S和z的单元共享.过程体执行后:子程序:s=地址1z:地址2主程序:N囤圆S=地址1Z:地址2子程序:州4l从这个例子中我们可以清楚看到:M与s和z的赋值过程是有明显区别的那么我在子程序的调用过程中如何对值参数,变量参数进行拟定和赋值呢?收稿日期:1999—04-274辽宁高职第2卷1.参数的拟定在程序设计过程中.过程和函数中的形式参数选用值参数还是变量参数要视具体情况丽定.对子函数一般是希望出一个或多个自变量,通过函数的计算得到一个函数值.不希望在函数调用之后改变自变量的值,所以函数的形式参数只用值参数,对于过程经常希望通过实在参数与形式参数的结合传回数据,所以需要传回数据的那些参数必须用变量参数,而希望在过程运行时,其值不受影响的实在参数只能用值参数与之相应.例2任给三角形的三条边,求其面积.PROGRAMzxj2(INPUT,OUTPUT):V ARAREA,X,Y,Z:REAL:FOUNCTIONSUB2(A,B,C:REAL):REAL:V ARP:REAL:BEGINP:=(A+B+C)/2:SUB2:=SQRT(P木(P-A)木(P-B)木(P_C))END:BEGINREAD(X,Y,Z)AREA:=SUB2(X,Y,Z)WRUTEKB(AREA:6:2)END.结果为:4579.80在此函数的调用过程中,我们只希望通过给三个边长,通过函数的计算得到一个函数值(面积)因此形式参数理所当然是值参数.例3用子程序交换两个上整形变量x和Y的内容PROGRAMxcj3(INPUT.OUTPUT):BEGINX:=10:V ARX,Y:INTEGER:Y:99:PROVEDURESUB3(V ARA,B:INTEGER):WRIrELN(BEFORECALL INGSWAP:V ART:INTEGER:’,’X=,X:3,’Y=,Y:3):BEGINT:=A:SUB3(X,Y)A:=B:WRITELN(‘.AFTERCALLNGSWAP:’.’X,X:3,’Y,Y:3):B:=TENDEND:执行结果为:BFFORECALLINGSWAP:X=10Y=99 AFTERCALLINGSWAP:X=99Y=10在此过程的调用中需要x,Y与A,B的结果传回结果,所以过程的形式参数是变量参数.2.参数的赋值在子程序的调用过程中,实在参数与形式参数之间存在个数,位置,数据类型的一一对应的关系.调用子程序时将实在参数的值赋给对应的值参数,值参数只具有将实参数的值带入过程体内的作用.无论其参加何种计算,并不影响与之相配的调用程序中的实在参数值.其物理过程是:在子程序被调用时,系统为每个值参数开辟了与其类型相适应的临时存储单元,然后实在参数值赋给对应的值参数,这称为值的传送由于同一位置的实在参数与值参数是不同的存储单元.因此值参数在子程序执行过程中的改变并不影响实在参数的值,一旦子程序执行完毕.系统将收回临时存储单元,值参数的值则不存在了.以例2说明:函数体执行前:主程序:x曰Y国z团AREA~:;;子程序:蛔困P口一◆第1期张学军,李密:Pasca1语言子程序中参数的使用8)函数体执行后:主程序:x同Y因zAREA网子程序:蝈朝阳咽函数执行完毕,临时分配的A,B,c三个存储元被系统收回,值参数的值也就不存在了.若调用子程序时,对于变量参数是用实在参数的名去替换过程中出现的变量参数,实在参数的值由变量参数带入子程序体内,在子程序中经运算处理,变量参数被赋以新值,返回调用程序也使实在参数得到该新值,因此变量参数具有将实在参数传入子程序和将子程序内变量参数的值返回给调用程序实在参数的作用.其物理过程是:系统并不为变量参数另外开辟存储单元,而是将实在参数的地址传递给对应的变量参数,使变量参数具有实在参数的地址,实现其单元共享,这称为地址传送.因此.对变量参数的每一个操作都是通过它所保留的地址直接对实在参数的操作,从而达到了调用程序和被调用子程序之间互相传送数据的目的.当过程执行完毕时,变量参数也随之消失,变量参数的值已保留在与其对应的实在参数中.以例3说明在过程体执行前过程体执行完毕:主程序:x=地址3I10fY=地址4J99lx=地址3B=地址4I{主程序:9ll1ol子程序:A=地址3Y=地址4YIlA:地址3B=地址4过程:1110j至此我们可以看出,在子程序调用过程中如何正确理解拟定形式参数及它们的赋值过程,对深刻理解程序的调用过程确有深刻的意义.参考文献【l】谭浩强,田淑清.paSCa1语言程序设计.北京:高等教育出版社,1988 【2】陆悯.PaSCa1语言程序设计.北京:航空工业出版社,1995【3】郑启华.PaSCa1程序设计.北京:清华大学出版社,1991【4】PeterGrdgono着,蒋国南译.北京:清华大学出版社,1981 TOUseTheParmneterInSubprogramOfPascalLanguageZhangXue-jun,LiMi(TheComputerSection.FuxinHigherProfessionalCollege.Liaoning:1230 00)Abstract:IUthepapertheauthordiscusseschieflyvalueparanleterandvariabl eparauleterwhichisveD- essentialtounderstandprofoundlythetransferofsubprogram. Keywords:V alueParalneter:VariableParalneter;RealParalneter;PascalLa nguage.【责任编辑,阜新高专:董艳双)。
Pascal常用函数PASCAL内自带的函数,通常可以直接调用,特殊的需要调用数据库,如:used math一、标准函数二、数学函数与过程三、字符类型函数四、字符串函数与过程五、布尔类型函数六、math单元的函数与过程一、标准函数标准函数。
Turbo Pascal语言提供了自变量为整型量的标准函数有顺序函数算术函数和转换函数等。
标准函数是Turbo Pascal语言预先定义的,它们实际上是能完成特定功能的称步子程序的程序段。
每个标准函数都用一个标识符来标识,每个标准函数都能完成一个特定的功能,在程序中可以直接调用它们。
Turbo Pascal语言中某些标准函数与数学中的函数有相似之处。
1、整数类型函数整型是顺序类型,即所有的整型数都是按一定的顺序排列的。
如3的后序数是4,350的后序数是351。
以后介绍的布尔型、字符型、枚举类型和子界类型等都是顺序类型。
顺序函数可以对顺序类型数据进行操作,但要注意它们自变量的取值范围。
①前趋函数:Pred(x)函数值为x-l,例如:Pred (6)=5 Pred (-21)=-22②后继函数:Succ (x)函数值为x+l,例如:Succ (l5)=16 Succ (-114)= -113③绝对值函数:Abs (x)函数值为|X|,例如:Abs (-119)=119 Abs (101)=101④平方函数:Sqr (x)函数值为X*X,例如:Sqr (-5)=25 Sqr (l0)= 100以上四个函数的结果仍是整型数。
⑤奇函数:Odd (x),函数的结果为布尔型。
当X为奇数时,函数值为true;当X为偶数时,函数值为false,例如:Odd (13)= True Odd (16)= False⑥字符函数:Chr (X),函数值是序号的ASCII字符,属字符型,例如:Chr (65)=‟A‟ Chr (66)=‟B‟2、实数类型函数在下列算术函数中,X可以是实型或整型数的表达式。
Pascal 过程与函数Pascal中的例程有两种形式:过程和函数。
理论上说,过程是你要求计算机执行的操作,函数是能返回值的计算。
两者突出的不同点在于:函数能返回计算结果,即有一个返回值,而过程没有。
两种类型的例程都可以带多个给定类型的参数。
不过实际上函数和过程差别不大,因为你可以调用函数完成一系列操作,跳过其返回值(用可选的出错代码或类似的东西代替返回值);也可以通过过程的参数传递计算结果(这种参数称为引用,下一部分会讲到)。
下例定义了一个过程、两个函数,两个函数的语法略有不同,结果是完全相同的。
procedure Hello;beginShowMessage ('Hello world!');end;function Double (Value: Integer) : Integer;beginDouble := Value * 2;end;10] of Integer;X, I: Integer;beginType ofvtInteger: Result :=Result + Args [I].VInteger;vtBoolean:if Args [I].VBoolean thenResult := Result + 1;vtChar:Result := Result + Ord (Args [I].VChar);vtExtended:Result := Result + Args [I].VExtended^;vtString, vtAnsiString:Result := Result + StrToIntDef ((Args [I].VString^), 0);vtWideChar:Result := Result + Ord (Args [I].VWideChar);vtCurrency:Result := Result + Args [I].VCurrency^;end;.private{ Private declarations }IP: IntProc;X: Integer;end;学完下一章,你会更清楚地了解这段代码的意思,目前只要能知道怎样添加过程类型定义、怎样修改相应的代码就行了。
pascal语言中function和procedure -回复Pascal是一种结构化的编程语言,由Niklaus Wirth在1970年代初开发。
它的目标是提供一种简洁而清晰的方式来编写可读性强且易于维护的程序。
在Pascal中,function和procedure是两个重要的概念,用于定义子程序以进行代码的模块化和重用。
本文将详细介绍function和procedure在Pascal语言中的特性和用法。
一、Function的概念和用法1.1 Function的定义Function是一种子程序,在Pascal中用于执行并返回一个值。
它的定义与过程(procedure)类似,但有一个返回类型。
返回类型可以是内置的数据类型(如整数、实数、布尔值等)或用户自定义的数据类型。
1.2 Function的语法在Pascal中,函数的定义使用函数头和函数体来表示。
函数头包括函数名、形式参数列表和返回类型。
函数体包括函数的实现代码。
函数头的一般格式如下所示:function <函数名>(<形式参数列表>): <返回类型>;1.3 Function的实例下面是一个计算圆的面积的函数的示例:function CalculateArea(radius: Real): Real;beginCalculateArea := Pi * radius * radius;end;在这个示例中,函数名为CalculateArea,形式参数列表包括一个类型为Real的参数radius,返回类型为Real。
函数体中的代码计算圆的面积并将结果返回。
1.4 Function的调用要调用一个函数,在函数名后面添加相应的实际参数。
实际参数的数量和类型必须与函数定义中的形式参数列表匹配。
下面是一个调用CalculateArea函数的示例:area := CalculateArea(3.14);这个示例将计算半径为3.14的圆的面积,并将结果赋给变量area。
在Pascal语言中,函数(function)和过程(procedure)都是用于执行特定任务的代码块,但它们在某些方面存在一些重要的差异。
函数的主要目的是计算并返回一个值。
函数有一个返回类型,并在定义时通过一个变量接受输入参数。
这意味着您可以将函数的结果赋给另一个变量或在表达式中使用。
函数体包含了一系列执行特定计算的语句,这些语句最终产生一个返回值。
另一方面,过程(也称为子程序)没有返回值。
过程主要用于执行一系列操作,这些操作可能改变程序的状态或输出结果,但它们不返回任何值。
过程可以接受输入参数,这些参数允许您在调用过程时传递数据。
过程通常用于执行特定的任务,例如打印输出、修改数据结构或执行一系列操作。
总结来说,函数和过程在Pascal语言中都扮演着重要的角色。
函数用于计算并返回值,而过程用于执行一系列操作并改变程序的状态或输出结果。
根据您的需求选择适当的函数或过程,可以使您的代码更加清晰、易于维护和重用。
一、常用算法子程序基本数学类:(1)两个变量交换数值:procedure swap(a,b:integer;var c,d:integer);beginc:=b; d:=a;end;(2)两组数据交换数值:procedure swap(i,j:integer;); //传入两个数组的下标var k,l:integer;beginfor k:=1 to n dobeginl:=a[i,k]; a[i,k]:=a[j,k]; a[j,k]:=l;end;end;(3)求两数的最大值:function max(a,b:integer):integer;beginIf a>b then max:=a else max:=b;end;(4)求一组数的最小值:function min(a:arr)of integer;var i:integer;beginmin:=maxint;for i:=1 to a[0] doif min>a[i] then min:=a[i];end;(5)求两个数的最大公约数:function gcd(a,b:integer):integer;beginif b=0 then gcd:=aelse gcd:=gcd(b,a mod b);end ;(6)判断一个数是否是素数function prime (n: integer): Boolean;var i: integer;beginfor i:=2 to trunc(sqrt(n)) doif n mod i=0 thenbeginprime:=false; exit;end;prime:=true;end;(7)求出1~n范围内的所有素数procedure getprime(n:longint; var a:arr);var i,j,l:longint;t:array[1..50000] of boolean;beginfillchar(t,sizeof(t),true);t[1]:=false; i:=2;while i<n dobeginif p[i] thenbeginj:=i*2;while j<n do begin t[j]:=false; inc(j,i); end;end;end;l:=0;for i:=1 to n doif t[i] then begin inc(l);a[l]:=i; end;a[0]:=l;end;1、进位制转换:(1)十进制转k进制:///////////////////////////////////////////////////////整数///////////////////////////////////////////////////////////////procedure trans_10_k(n,k:longint;var a:arr);var i:longint;beginfillchar(a,sizeof(a),0);while n<>0 dobegininc(a[0]); a[a[0]]:=n mod k; n:=n div k;end;If a[0]=0 then a[0]:=1;end;/////////////////////////////////////////////////////////小数///////////////////////////////////////////////////////////procedure trans_10_k(m:real;l,k:integer; var a:arr); //小数(l=16时相当于十进//制的第5位) beginfillchar(a,sizeof(a),0);while (m<>0)and(a[0]<=l) dobeginm:=m*k; inc(a[0]); a[a[0]]:=trunc(m); m:=m-a[a[0]];end;end;(2)k进制转十进制://///////////////////////////////////////////////////////////整数////////////////////////////////////////////////////////function trans_k_10(k:integer;a:arr):longint;var i,j:longint;beginj:=1; trans_k_10:=0;for i:=1 to a[0] dobegintrans_k_10:=trans_k_10+a[i]*j;j:=j*k;end;end;////////////////////////////////////////////////////////////小数////////////////////////////////////////////////////////function trans_k_10(k:integer;a:arr):real;var l:real;i:integer;beginl:=1;for i:=1 to a[0] dobeginl:=l/k; trans_k_10:=trans_k_10+a[i]*l;end;end;(1)高精度数m进制转成高精度n进制:procedure chu_m_n(a:arr;m,n:integer;var b:arr; var y:integer);var i:integer;beginy:=0;for i:=a[0] downto 1 dobeginy:=y*m+a[i]; b[i]:=y div n; y:=y mod n;b[0]:=a[0];while b[b[0]]=0 do dec(b[0]);if b[0]<1 then b[0]:=1;end;////////////////////////////////////////////////////////////////////////////////////////////////////procedure trans_m_n(a:arr;m,n:integer; var b:arr);var i,j,k:integer;beginfillchar(b,sizeof(b),0);while not((a[0]=1)and(a[1]=0)) dobegininc(b[0]); chu_m_n(a,m,n,a,b[b[0]]);end;end;(2)2进制转换成2k进制(如:8进制(k=3)、16进制(k=4))procedure trans_2_2k(a:arr;k:integer; var b:arr);var i,j:integer;wq:array[1..10]of longint;beginwq[1]:=1; for i:=2 to k do wq[i]:=wq[i-1]*2;fillchar(b,sizeof(b),0);for i:=1 to a[0] div k +1 dofor j:=1 to k do b[i]:=b[i]+a[(i-1)*k+j]*wq[j];b[0]:=a[0] div k +1;while b[b[0]]=0 do dec(b[0]);if b[0]<1 then b[0]:=1;end;(6)2k进制转换成2进制:procedure trans_2k_2(a:arr;k:integer; var b:arr);var i,j,l:integer;beginfillchar(b,sizeof(b),0); l:=0;for i:=1 to a[0] dofor j:=1 to k dobeginb[(i-1)*k+j]:=a[i] mod 2; a[i]:=a[i] div 2;end;b[0]:=a[0]*k;while b[b[0]]=0 do dec(b[0]); if b[0]<1 then b[0]:=1;end;2、高精度计算:以下标程均为十进制,如改为10n进制可提高n倍速度。
PAScAL函数大全PAScAL 函数大全函数标识符自变量类型意义结果类型abs整型、实型绝对值同自变量arctan 整型、实型反正切实型cos整型、实型余弦实型exp整型、实型指数实型frac 整型、实型小数部分实型int整型、实型整数部分实型ln整型、实型自然对数实型pi无自变量圆周率实型sin整型、实型正弦实型sqr整型、实型平方同自变量sqrt 整型、实型平方根实型例:abs(-4)=4abs(-7.49)=7.49--arctan(0)=0.0 sin(pi)=0.0 cos(pi)=-1.0 frac(-3.71)=-0.71int(-3.71)=-3.0 --sqr(4)=16sqrt(4)=2--2.标量函数函数标识符自变量类型意义结果类型odd整型判断奇数布尔型pred离散类型求前趋同自变量succ离散类型求后继同自变量例:odd(1000)=false odd(3)truepred(2000)=1999 succ(2000)=2001 pred('x')='w' succ('x')='y'3.转换函数函数标识符自变量类型意义结果类型chrbyte型自量对应的字符字符型ord离散类型自量对应的序号 longintround实型四舍五入longinttrunc 实型截断取整longint4.杂类函数函数标识符自变量类型意义结果类型random 无自变量[0,1)之间的随机实数realrandom word[0,自变量)之间的随机整数wirdrandomize 无自变量用一随机值初始化内部随机数产生器longintupcase字符型使小写英文字母变为大写字符型Gmycn管理员UID 1精华 2积分 779帖子 208威望 60金钱 630魅力 338阅读权限 2552006-10-2 注册状态在线 #2发表于 2006-11-2 16:19 资料个人空间短消息Pascal语言函数集(含Delphi控件属性)abort 函数引起放弃的意外处理abs 函数绝对值函数addexitproc 函数将一过程添加到运行时库的结束过程表中 addr 函数返回指定对象的地址adjustlinebreaks函数将给定字符串的行分隔符调整为cr/lf序列align 属性使控件位于窗口某部分alignment 属性控件标签的文字位置 allocmem 函数在堆栈上分配给定大小的块allowgrayed 属性允许一个灰度选择ansicomparestr 函数比较字符串(区分大小写) ansicomparetext 函数比较字符串(不区分大小写) ansilowercase 函数将字符转换为小写ansiuppercase 函数将字符转换为大写 append 函数以附加的方式打开已有的文件arctan 函数余切函数给文件变量赋一外部文件名 assignfile 函数assigned 函数测试函数或过程变量是否为空 autosize 属性自动控制标签的大小 backgrounddi2001.jpg 属性背景色beginthread 函数以适当的方式建立用于内存管理的线程 bevelinner 属性控件方框的内框方式bevelouter 属性控件方框的外框方式 bevelwidth 属性控件方框的外框宽度 blockread 函数读一个或多个记录到变量中 blockwrite 函数从变量中写一个或多个记录 borderstyle 属性边界类型borderwidth 属性边界宽度break 命令终止for、while、repeat循环语句 brush 属性画刷caption 属性标签文字的内容changefileext 函数改变文件的后缀chdir 函数改变当前目录checked 属性确定复选框选中状态返回指定序数的字符 chr 函数closefile 命令关闭打开的文件标签的颜色 color 属性columns 属性显示的列数comparestr 函数比较字符串(区分大小写) concat 函数合并字符串继续for、while、repeat的下一个循环 continue 命令copy 函数返回一字符串的子串cos 函数余弦函数ctl3d 属性是否具有3d效果cursor 属性鼠标指针移入后的形状date 函数返回当前的日期datetimetofiledate函数将delphi的日期格式转换为dos的日期格式datetimetostr 函数将日期时间格式转换为字符串 datetimetostring 函数将日期时间格式转换为字符串 datetostr 函数将日期格式转换为字符串dayofweek 函数返回星期的数值dec 函数递减变量值decodedate 函数将日期格式分解为年月日 decodetime 函数将时间格式分解为时、分、秒、毫秒 delete 函数从字符串中删除子串deletefile 命令删除文件返回剩余磁盘空间的大小 diskfree 函数disksize 函数返回指定磁盘的容量dispose 函数释放动态变量所占的空间disposestr 函数释放字符串在堆栈中的内存空间ditherbackgrounddi2001.jpg? 使背景色的色彩加重或减少50% dragcursor 属性当鼠标按下时光标的形状 dragmode 属性按动的作用方式dropdowncount 属性容许的显示数据项的数目 editmask 属性编辑模式enabled 属性是否使标签呈现打开状态 encodedate 函数将年月日合成为日期格式 encodetime 函数将时、分、秒、毫秒合成为时间格式endmargin 属性末尾边缘eof 函数对有类型或无类型文件测试是否到文件尾 eoln 函数返回文本文件的行结束状态erase 命令删除外部文件exceptaddr 函数返回引起当前意外的地址从集合中删除一些元素 exclude 函数exceptobject 函数返回当前意外的索引立即从当前的语句块中退出 exit 命令exp 函数指数函数expandfilename 函数返回包含绝对路径的字符串 extendedselect 属性是否允许存在选择模式,true时,multiselect才有意义extractfiledir 函数返回驱动器和路径 extractfileext 函数返回文件的后缀 extractfilename 函数返回文件名extractfilepath 函数返回指定文件的路径 fileage 函数返回文件已存在的时间 fileclose 命令关闭指定的文件filecreate 命令用指定的文件名建立新文件 filedatetodatetime 函数& nbsp;将dos的日期格式转换为delphi的日期格式 fileexists 函数检查文件是否存在filegatattr 函数返回文件的属性filegetdate 函数返回文件的dos日期时间标记 fileopen 命令用指定的存取模式打开指定的文件filepos 函数返回文件的当前指针位置 fileread 命令从指定的文件读取filesearch 命令在目录中搜索指定的文件 fileseek 函数改变文件的指针filesetattr 函数设置文件属性filesetdate 函数设置文件的dos日期时间标记 filesize 函数返回当前文件的大小filewrite 函数对指定的文件做写操作fillchar 函数用指定的值填充连续字节的数 findclose 命令终止findfirst/findnext序列 findfirst 命令对指定的文件名及属性搜索目录findnext 命令返回与文件名及属性匹配的下一入口 floattodecimal 函数将浮点数转换为十进制数 floattostrf 函数将浮点数转换为字符串 floattostr 函数将浮点数转换为字符串floattotext 函数将给定的浮点数转换为十进制数 floattotextfmt 函数将给定的浮点数转换为十进制数 flush 函数将缓冲区的内容刷新到输出的文本文件中 fmtloadstr 函数从程序的资源字符串表中装载字符串 fmtstr 函数格式化一系列的参数,其结果以参数 result 返回font 属性设置字体format 函数格式化一系列的参数并返回pascal字符串 formatbuf 函数格式化一系列的参数formatdatetime函数用指定的格式来格式化日期和时间 formatfloat 函数指定浮点数格式frac 函数返回参数的小数部分freemem 函数按给定大小释放动态变量所占的空间 getdir 返回指定驱动器的当前目录getheapstatus 返回内存管理器的当前状态getmem 建立一指定大小的动态变量,并将指针指向该处 getmemorymanager 返回内存管理器的入口点 glyph 函数按钮上的图象halt 停止程序的执行并返回到操作系统hi 返回参数的高地址位high 返回参数的上限值hint 属性提示信息int 返回参数的整数部分include 添加元素到集合中insert 在字符串中插入子串inttohex 将整型数转换为十六进制数inttostr 将整型数转换为字符串ioresult 返回最新的i/o操作完成状态isvalidident 测试字符串是否为有效的标识符 items 属性默认显示的节点kind 属性摆放样式largechange 属性最大改变值图象布局 layout 属性length 函数返回字符串的动态长度 lines 属性缺省显示内容ln 函数自然对数函数lo 函数返回参数的低地址位loadstr 函数从应用程序的可执行文件中装载字符资源lowercase 函数将给定的字符串变为小写 low 函数返回参数的下限值max 属性最大值maxlength 属性最大长度min 属性最小值mkdir 命令建立一子目录move 函数从源到目标复制字节multiselect 属性允许同时选择几个数据项 name 属性控件的名字new 函数建立新的动态变量并设置一指针变量指向它newstr 函数在堆栈上分配新的字符串now 函数返回当前的日期和时间 odd 测试参数是否为奇数onactivate 事件焦点移到窗体上时触发 onclick 事件单击窗体空白区域触发双击窗体空白区域触发 ondblclick 事件onclosequery 事件使用者试图关闭窗体触发 onclose 事件窗体关闭后才触发oncreate 事件窗体第一次创建时触发用户切换到另一应用程序触发 ondeactivate 事件ondragdrop 事件鼠标拖放操作结束时触发 ondragover 事件有其他控件从他上面移过触发 onmousedown 事件按下鼠标键时触发 onmouseup 事件释放鼠标键时触发 onmousemove 事件移动鼠标时触发 onhide 事件隐藏窗体时触发onkeydown 事件按下键盘某键时触发 onkeypress 事件按下键盘上的单个字符键时触发 onkeyup 事件释放键盘上的某键时触发 onpaint 事件窗体上有新部分暴露出来触发 onresize 事件重新调整窗体大小触发 onshow 事件在窗体实际显示之前瞬间触发 ord 返回序数类的序数outlinestyle 属性类型outofmemoryerror 引起outofmemory 意外pageindex 属性页索引页 pages 属性paramcount 函数返回在命令行上传递给程序的参数数量 paramstr 函数返回指定的命令行参数pen 属性画刷设置返回圆周率pi pi 函数picture 属性显示图象pictureclosed 属性设置closed位图pictureleaf 属性设置leaf位图pictureminus 属性设置minus位图pictureopen 属性设置open位图pictureplus 属性设置plus位图pos 函数在字符串中搜索子串pred 函数返回先前的参数random 函数返回一随机函数randomize 函数用一随机数初始化内置的随机数生成器 read 函数对有格式的文件,读一文件组件到变量中;对文本文件,读一个或多个值到一个或多个变量中readln 函数执行read过程,然后跳到文件下一行readonly 属性只读属性reallocmem 函数分配一动态变量 rename 函数重命名外部文件renamefile 函数对文件重命名打开已有的文件 reset 函数rewrite 函数建立并打开一新的文件 rmdir 函数删除空的子目录round 函数将实数值舍入为整型值 runerror 函数停止程序的执行scrollbars 属性滚动条状态seek 函数将文件的当前指针移动到指定的组件上 seekeof 函数返回文件的文件结束状态 seekeoln 函数返回文件的行结束状态 selectedcolor 属性选中颜色setmemorymanager 函数设置内存管理器的入口点 settextbuf 函数给文本文件指定i/o缓冲区 shape 属性显示的形状showexception 函数显示意外消息与地址 sin 函数正弦函数sizeof 函数返回参数所占的字节数 smallchange 属性最小改变值sorted 属性是否允许排序sqr 函数平方函数sqrt 函数平方根函数开始边缘 startmargin 属性state 属性控件当前状态将数值转换为字符串 str 函数stralloc 函数给以null结束的字符串分配最大长度-1的缓冲区strbufsize 函数返回存储在由stralloc分配的字符缓冲区的最大字符数strcat 函数将一字符串附加到另一字符串尾并返回合并的字符串 strcomp 函数比较两个字符串strcopy 函数将一个字符串复制到另一个字符串中strdispose 函数释放堆栈上的字符串strecopy 函数将一字符串复制到另一个字符串并返回结果字符串尾部的指针strend 函数返回指向字符串尾部的指针stretch 属性自动适应控件的大小strfmt 函数格式化一系列的参数stricomp 函数比较两个字符串(不区分大小写)stringtowidechar 函数将ansi字符串转换为unicode字符串 strlcat 函数将一字符串中的字符附加到另一字符串尾并返回合并的字符串strlcomp 函数以最大长度比较两个字符串strlcopy 函数将一个字符串中的字符复制到另一个字符串中 strlen 函数返回字符串中的字符数strlfmt 函数格式化一系列的参数,其结果中包含有指向目标缓冲区的指针strlicomp 函数以最大长度比较两个字符串(不区分大小写) strlower 函数将字符串中的字符转换为小写strmove 函数将一个字符串中的字符复制到另一个字符串中 strnew 函数在堆栈上分配一个字符串将以null结束的字符串转换为pascal类的字符串 strpas 函数strpcopy 函数将pascal类的字符串复制为以null结束的字符串 strplcopy 函数从pascal类的最大长度字符串复制为以null结束的字符串 strpos 函数返回一个字符串在另一个字符串中首次出现指针 strrscan 函数返回字符串中最后出现字符的指针 strscan 函数返回字符串中出现首字符的指针strtodate 函数将字符串转换为日期格式strtodatetime 函数将字符串转换为日期/时间格式 strtofloat 函数将给定的字符串转换为浮点数strtOInt 函数将字符串转换为整型strtOIntdef 函数将字符串转换为整型或默认值strtotime 函数将字符串转换为时间格式strupper 函数将字符串中的字符转换为大写style 属性类型选择suce 函数返回后继的参数交换参数的高低地址位 swap 函数tabs 属性标记每一项的内容标记索引 tabindex 属性text 属性显示的文本texttofloat 函数将字符串(以null结束的格式)转换为浮点数返回当前的时间 time 函数timetostr 函数将时间格式转换为字符串trim 函数从给定的字符串中删除前导和尾部的空格及控制字符 trimleft 函数从给定的字符串中删除首部的空格及控制字符 trimright 函数从给定的字符串中删除尾部的空格及控制字符 trunc 函数将实型值截取为整型值truncate 函数截去当前文件位置后的内容unselectedcolor 属性未选中颜色upcase将字符转换为大写uppercase 将给定的字符串变为大写val 函数将字符串转换为整型值vararraycreate 函数以给定的界限和维数建立变体数组 vararraydimcount 函数返回给定变体的维数vararrayhighbound 函数返回给定变体数组维数的上界vararraylock 函数锁定给定的变体数组vararraylowbound 函数返回给定变体数组维数的下界 vararrayof 函数返回指定变体的数组元素vararrayredim 函数通过改变上限来调整变体的大小解锁指定的变体数组 vararrayunlock 函数varastype 函数将变体转换为指定的类型varcase 函数将变体转换为指定的类型并保存它 varclear 函数清除指定的变体varcopy 函数将指定的变体复制为指定的变体 varformdatetime 函数返回包含日期时间的变体 varisarray 函数测试变体是否为数组varisempty 函数测试变体是否为unassigned varisnull 函数测试变体是否为nullvartodatetime 函数将给定的变体转换为日期时间 vartype 函数将变体转换为指定的类型并保存它 visible 属性控件的可见性wantreturns 属性为true时,按回车键产生一个回车符;为false时,按下ctrl+enter才产生回车符write 命令对有格式的文件,写一变量到文件组件中;对文本文件,写一个或多个值到文件中writeln 命令执行write过程,然后输出一行结束标志widecharlentostring 函数将ansi字符串转换为unicode字符串widecharlentostrwar 函数将unicode字符串转换为ansi字符串变量widechartostring 函数将unicode字符串转换为ansi字符串widechartostrvar 函数将unicode字符串转换为ansi字符串变量。
pascal中exit(一个变量)、exit(一个子程序)都是什么意思exit(),返回一个值,exit(一个子程序)的子程序也必须是function,要有值才能exit。
而且这样用exit语句都是在function中用的。
比如exit(1)就是这个function的返回值为1exit(dp)就是返回dp这个子程序运行出来的值...还有在procedure中用的exit是不返回值的。
而且只要有exit,子程序就会执行后退出...在Pascal中,exit可用在自定义函数中或主程序中,以下为详细说明:1.自定义函数中的exit:在自定义函数中,exit的作用是返回函数的值,如下代码:var a:longint;function f(a:longint):longint;beginexit(a+2) //返回函数的值a+2end;beginreadln(a);writeln(f(a)); //调用函数f()end.样例输入:10输出:12在自定义函数f()中,利用exit来返回该函数的值a+2。
2.主程序中的exit:在主程序中,exit的作用是结束程序,如下代码:var a:longint;beginreadln(a);writeln(a+1);exit;writeln(a+2);end.样例输入:10输出:11在输出时没有输出12,即没有运行writeln(a+2);这一语句,因为当程序运行到exit语句时,就直接结束了程序,exit后面的代码不会执行。
exit 是退出当前程序块。
即在任何子程序中执行 exit ,那么将退出这个子程序。
如果是在主程序中执行 exit,那么将退出整个程序。
相当于 goto 这个程序块的末尾的end 。
例如:试除法判断素数时,一旦整除,就把函数值赋为false ,然后exit。
注意:类似上面,exit 也是只对当前这一个子程序产生作用,如果多重嵌套子程序,那么其中某个子程序执行了exit 以后,将返回到调用它的那个语句的下一个语句。
一、数学函数:inc(i) 使i:=i+1;inc(i,b) 使i:=i+b;dec(i) 使i:=i-1;dec(i,b) 使i:=i-b;abs(x) 求x的绝对值例:abs(-3)=3chr(x) 求编号x对应的字符。
例:chr(65)='a' chr(97)='a' chr(48)='0' ord(x) 求字符x对应的编号。
例:ord(‘a')=65 ord(‘a')=97 另外:ord(false)=0 ord(true)=1sqr(x) 求x的平方。
例:sqr(4)=16sqrt(x) 求x的正根. 例:sqrt(16)=4 (ps:负数是不能进行运算的,如果需要就要先取绝对值:sqrt(-4)是错的,应该为sqrt(abs(-4)) round(x) 求x的四舍五入例:round(4.5)=5trunc(x) 求x的整数部分例:trunc(5.6)=5 结果是integer型int(x) 求x的整数部分例int(5.6)=5.0 结果是real型frac (x) 求x的小数部分例 frac(5.6)=0.6pred(x) 求x的前导 pred(‘b')='a' pred(5)=4 pred(true)=falsesucc(x) 求x的后继 succ(‘b')='c' succ(5)=6 succ(false)=trueodd(x) 判断x是否为奇数。
如果是值为true,反之值为false. odd(2)=false odd(5)=truepower(a,n) 求a的n次方 power(2,3)=8 {只有在开启math库时才可以使用}random 取0~1之间的随机数(不能取到1)randomize 随机数的种子函数,在每次设置随机数时都要把这个函数放在最前面.fillchar(a,size(a),0) 数组初始化,即把数组a的值全部置为0 ;赋成布尔型变量也可以,但注意,赋成1或其他数字,计算机并不会把数组赋成你想要的值,却是其他的数字shr: x shr n 把x换成二进制后向右移n位,相当于把x 除以 2^nshl: x shl n 把x换成二进制后向左移n位,相当于把x 乘以 2^n pascal标准函数2009-10-31 21:14pascal标准函数一、变量改变:1、inc(i) 使用后I:=I+1; Inc(I,b)使用后I:=I+b;2、Dec(i) ;使用后I:=I-1;dec(I,b)使用后I:=I-b;3、求x的绝对值 Abs(x) 例:abs(-3)=3二、数学计算方面:1、求x的平方 Sqr(x) 例:sqr(4)=162、求x的开方 Sqrt(x) 例:sqrt(16)=43、求x的四舍五入round(x) 例:round(4.5)=54、求x的整数部分trunc(x) 例:trunc(5.6)=5 结果是integer型5、求x的整数部分int(x)例int(5.6)=5.0 结果是real型6、求x的小数部分frac (x) 例 frac(5.6)=0.67、求a的n次方 power(a,n) 例power(2,3)=88、random 取0~1之间的随机数(不能取到1)9、randomize 随机数的种子函数,在每次设置随机数时都要把这个函数放在最前面 ,randomize(4800)+200 可以取互200至5000之间的整数。
pascal函数大全pascal函数编辑本段一、数学函数:Inc(i) 使i:=i+1; (在free pascal中,它是过程,不能再将值赋给变量,也不能写在语句中直接调用)dec(i) 使i:=i-1; (在free pascal中,它是过程,不能再将值赋给变量,也不能写在语句中直接调用)Abs(x) 求x的绝对值例:abs(-3)=3Chr(x) 求编号x对应的字符。
例:Chr(65)=’A’chr(97)=’a’chr(48)=’0’Ord(x) 求字符x对应的编号。
例:ord(‘A’)=65 ord(‘a’)=97 另外:ord(false)=0 ord(true)=1 Sqr(x) 求x的平方。
例:sqr(4)=16Sqrt(x)求x的开方. 例:sqrt(16)=4round(x) 求x的四舍五入例:round(4.5)=5 结果是integer型trunc(x) 求x的整数部分例:trunc(5.6)=5 结果是integer型int(x) 求x的整数部分例int(5.6)=5.0 结果是real型frac (x)求x的小数部分例frac(5.6)=0.6 (在free pascal中想看小数型式的结果,在输出时应指定场宽)pred(x) 求x的前导pred(‘b’)=’a’pred(5)=4 pred(true)=falsesucc(x) 求x的后继succ(‘b’)=’c’succ(5)=6 succ(false)=trueodd(x) 判断x是否为奇数。
如果是值为true,反之值为false. Odd(2)=false odd(5)=truepower(a,n) 求a的n次方power(2,3)=8 {只有在开启math库时才可以使用}random 取0~1之间的随机数(不能取到1)randomize 随机数的种子函数,在每次设置随机数时都要把这个函数放在最前面.Fillchar(a,size(a),0) 数组初始化,即把数组a的值全部置为0 {赋成布尔型变量也可以}SHR: x SHR n 把x换成二进制后向右移n位,相当于把x 除以2nSHL: x SHL n把x换成二进制后向左移n位,相当于把x 乘以2n编辑本段二、字符串函数1. 连接运算concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.例:concat(‘11’,’aa’)=’11aa’;2. 求子串。
第九讲子程序之函数程序设计基础班A班本次课程的主要内容子程序的概念函数的定义和运用;重点:熟练掌握函数在程序设计中的使用,进一步了解子程序的概念和结构化程序设计的思想。
引言在前面的学习中,我们曾经学习了程序设计中的三种基本控制结构(顺序、分支、循环)。
用它们可以组成任何程序。
但在应用中,还经常用到子程序结构。
通常,在程序设计中,我们会发现一些程序段在程序的不同地方反复出现,此时可以将这些程序段作为相对独立的整体,用一个标识符给它起一个名字,凡是程序中出现该程序段的地方,只要简单地写上其标识符即可。
这样的程序段,我们称之为子程序。
子程序的运用充分体现了结构化的程序设计的两个基本要点&自顶向下,逐步求精的设计方法&程序的模块化子程序的使用不仅缩短了程序,节省了内存空间及减少了程序的编译时间,而且有利于结构化程序设计。
因为一个复杂的问题总可将其分解成若干个子问题来解决,如果子问题依然很复杂,还可以将它继续分解,直到每个子问题都是一个具有独立任务的模块。
这样编制的程序结构清晰,逻辑关系明确,无论是编写、阅读、调试还是修改,都会带来极大的好处。
在一个程序中可以只有主程序而没有子程序(本章以前都是如此),但不能没有主程序,也就是说不能单独执行子程序。
子程序的示意图Program Begin..调用子程序一....调用子程序二....End.子程序一Begin......End;子程序二Begin......每个子程序都有独立的功能我们通过参数的传递来实现,子程序也是先定义在使用函数相关概念pascal中子程序有两种形式:函数和过程。
在此之前,我们曾经介绍并使用了pascal提供的各种标准函数,如ABS,SUCC等等,我们通过参数和函数名来调用它们 比如X:=SQRT(1000);{一般来说函数都会返回一个处理过后的值)这些函数为我们编写程序提供了很大的方便。
但这些函数只是常用的基本函数,编程时经常需要自定义一些函数。
在pascal中,函数也遵循先说明后使用的规则,在程序中,函数的说明放在调用该函数的程序(主程序或其它子程序)的说明部分。
函数的结构主程序的结构很相似。
函数定义1:自定义函数的一般格式为:function 函数名(形式参数表): 类型;{函数首部}局部变量说明部分;begin语句系列; {函数体}end;{在此函数体中最终要将结果赋予函数名}说明:①函数由首部与函数体两部分组成。
②函数首部以关键字function开头。
③函数名是用户自定义的标识符。
④函数的类型也就是函数值的类型,所求得的函数值通过函数名传回调用它的程序。
可见,函数的作用一般是为了求得一个值。
⑤形式参数简称形参,形参即函数的自变量。
自变量的初值来源于函数调用。
在函数中,形参一般格式如下:变量名表1:类型标识符1;变量名表2:类型标识符2;…;变量名表n:类型标识符n可见形参表相当于变量说明,对函数自变量进行说明,但应特别注意:此处只能使用类型标识符,而不能直接使用类型。
function 函数名(形式参数表): 类型;{函数首部}局部变量说明部分;begin语句系列; {函数体}end;{在此函数体中最终要将结果赋予函数名}说明:⑥当缺省形参表(当然要同时省去一对括号)时,称为无参函数。
⑦函数体与程序体基本相似,由说明部分和执行部分组成。
⑧函数体中的说明部分用来对本函数使用的标号、常量、类型、变量、子程序加以说明,这些量只在本函数内有效。
⑨函数体的执行部分由begin开头,end结束,中间有若干用分号隔开的语句,只是end后应跟分号,不能像程序那样用句号“.”。
⑩在函数体的执行部分,至少应该给函数名赋一次值,以使在函数执行结束后把函数值带回调用程序。
(二)函数的调用我们可以在任何与函数值类型兼容的表达式中调用函数,或者说,函数调用只能出现在允许表达式出现的地方,或作为表达式的一个因子。
函数调用方式与标准函数的调用方式相同。
函数调用的一般格式:<函数名>或<函数名>(实在参数表)说明:①实在参数简称实参。
实参的个数必须与函数说明中形参的个数一致,实参的类型与形参的类型应当一一对应。
②调用函数时,一般的,实参必须有确定的值。
③函数调用的步骤为:计算实参的值,“赋给”对应的形参,然后通过函数运算最终返回一个值到主程序中;举例说明比如:我们定义了一个取两个数最大值的函数Function MAX_NUM(I,j:integer):integer;{I,J称为形参}BeginIf i>j then max_num:=Ielse max_max:=j;End;调用时只需要在主程序中写MAX_NUM(A,B);{A,B我们称为实参}将A,B运算后的值,交给形式参数I,J,然后将运算的结果代回到主函数过程中;自定义函数只是主程序的说明部分,若主程序中没有调用函数,则系统不会执行函数子程序。
当主程序调用一次函数时,则将实在参数的值传给函数的形式参数,控制转向函数子程序去执行,子程序执行完毕后自动返回调用处。
例题解析求任意输入的五个自然数的最大公约数。
解:算法分析:⑪自定义一个专门求两自然数的最大公约数的函数GCD;⑫调用自定义函数,第一次求前两个数的最大公约数;从第二次开始,用每次求得的最大公约数与下一个数再求两个数最大公约数,直到最后。
本题共四次“求两个数的最大公约数”,设输入的五个自然数分别是a1,a2,a3,a4,a5,采用如下步骤:①求a1,a2两个数的最大公约数→ 存入a1;②求a1,a3两个数的最大公约数→ 存入a1;③求a1,a4两个数的最大公约数→ 存入a1;④求a1,a5两个数的最大公约数→ 存入a1;⑤输出a1,此时的a1已是五个数的最大公约数参考程序Program Exam42;Var a1,a2,a3,a4,a5: integder;function GCD(x,y: integer): integer; {自定义函数}Var n:integer;{局部变量}beginWhile x mod y <>0 dobeginn:=x; x:=y; y:=n mod yend;GCD:=y {将运算的结果赋予函数名}end;Begin{主程序}Write('input 5 Numper:');readln(a1,a2,a3,a4,a5);{输入五个数}Write('(',a1,',',a2,',',a3,',',a4,',',a5,')=');a1:=GCD(a1,a2);{调用函数GCD,a1,a2是实参}a1:=GCD(a1,a3);a1:=GCD(a1,a4); a1:=GCD(a1,a5);Writeln(a1);readln实例分析二例2求正整数A和B之间的完全数(A<B).分析:所谓完全数是指它的小于该数本身的因子之和等于它本身,如6=1+2+3,6即是一个完全数。
因此我们可定义一个布尔型函数perfect(x),若x是完全数,其值为TURE,否则为FALSE。
整个程序算法如下:1 for i:=A to B do2 if perfect(i) then writeln(i);program ex7_1;vari,a,b : integer;function perfect(x:integer):boolean;vark,sum : integer;beginsum:=1; {累加x所有小于本身的因数}for k:=2 to x div 2 doif x mod k=0 then sum:=sum+k;{判断x是否是完全数}perfect:=x=sum; {将结果赋值给函数名}end;{end of perfect}begin{主程序开始}write('Input a,b:');readln(a,b);writeln('List of all perfect numbers:');for i:=a to b do {从a到b逐个判断,是完全数则打印出来if perfect(i) then writeln(i);end.自定义函数的缺陷自定义函数通常被设计成求一个函数值,一个函数只能得到一个运算结果。
若要设计成能得到若干个运算结果(比如交换两个数的值),或完成一系列处理,就需要自定义“过程”来实现。
思考一求输入的三个数字(0<=N<=10)的阶乘之和比如输入3 5 8,则输出3!+5!+8!的值提示:1:阶乘的运算的结果比较大,很容易超过INTEGER范围2:我们可以定义一个函数FUNCTION JIECHENG(I:INTEGER):INT64来实现阶乘的运算思考二如果一个自然数除了1和本身,还有别的数能够整除它,这样的自然数就是合数。
例如15,除了1和15,还有3和5能够整除,所以15是合数。
14,15,16是三个连续的合数,试求连续五个最小的合数。
要求定义一个函数求数字是不是合数。