




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模块化程序设计过程与函数过程与函数1、标准函数和过程:如sqr(x),writeln(x)2、自定义函数和过程(为什么出现自定义的函数和过程呢?)3、子程序:函数和过程统称为“子程序”4、子程序的思想是结构化程序设计的核心子程序的执行过程function<函数名>(<形式参数表>):<函数类型>; {函数首部}<局部变量说明> {说明部分}begin <语句1>; <语句2>; ······ <语句n>; <函数名>:=<表达式>;end;{执行部分}函数定义的格式:函数说明1)自定义函数是一个子程序.2)函数首部以关键字function开头。函数名是用户自定义的标识符。在同一程序中,所定义的函数名,不能再用作其它变量名、数组名、过程名等;
函数说明3)括号内为形式参数表,即形参表。形参即函数的自变量,其初值来源于主程序的调用,只有在程序的执行过程中调用了函数,形参才能得到具体的值并参与运算,求得函数值。4)函数的类型也就是函数值的类型。pascal规定一个函数只能求出一个简单值,所以函数值的类型只能是任何非结构类型。函数值将通过函数名传送回调用程序。函数体1、函数体包括函数的说明部分和函数的执行部分。2、函数的说明部分用来对函数体内所用的类型、常量、变量等进行说明,这些量只在本函数内有效,退出函数体后,为这些量分配的存储单元被释放。其变量与函数体外的同名变量无关;函数体3、函数的执行部分以begin开头,以end结束(end后有一个分号)。在执行部分,至少要有一条将函数值传给函数名的赋值语句,即:<函数名>:=<表达式>这样就由函数名将求得的函数值带回调用该函数的程序中。自定义函数的实质相当于定义了一个求值的模块,当一个语句中使用了这个函数时,这个模块才被调用执行。在使用自定义函数时,必须先定义然后才能使用。
functionjc(n:integer):integer;vark,t:integer;begint:=1;fork:=2tondot:=t*k;jc:=t;end;函数名形参函数类型函数体函数首部jc:=t;例1:求3!+5!+7!的值。问题分析:编写一个求n!的函数。Programex1;Varsum:longint;functionjc(n:integer):longint;Vark,t:integer;begint:=1;
fork:=2tondot:=t*k;
fac:=t;end;begin
sum:=jc(3)+jc(5)+jc(7);
{主程序调用}
writeln(sum);end.函数调用的一般格式:<函数名>(实在参数表)说明:〈实在参数表〉是一些由逗号分隔的参数,它们是在调用函数时所用的自变量。只有在调用函数时,才将实在参数的值传送到形参的临时内存单元中去。可见,形参实质上是实参的一个“替身”。实参的个数必须与函数说明中形参的个数一致,实参的类型与形参的类型应当一一对应。说明:调用函数时,一般的,实参必须有确定的值。函数调用的步骤为:先计算实参的值,再“赋给”对应的形参;函数的定义是静态的,若定义后未被调用,则该函数永远不会被执行。调用的自定义函数应在调用之前已定义过。函数调用的一般格式:<函数名>(实在参数表)说明:自定义函数中的形参,因不是实际存在的变量,故又称为虚拟变量,它们并不占用内存单元,只有在调用函数时,才临时开辟相应的内存单元,存放实在参数的值。可以在任何与函数值类型兼容的表达式中调用函数,或者说,函数调用只能出现在允许表达式出现的地方,或作为表达式的一个因子。函数调用方式与标准函数的调用方式相同。函数调用的一般格式:<函数名>(实在参数表)例2求三角形的面积vars,a,b,c:real;
functionarea(a,b,c:real):real;varp:real;beginif((a+b)>c)and((b+c)>a)and((a+c)>b)thenbeginp:=(a+b+c)/2;area:=sqrt(p*(p-a)*(p-b)*(p-c));endelsewriteln(‘无解‘);end;beginread(a,b,c);s:=area(a,b,c);writeln('s=',s:);end.例3定义函数digit(n,k)分离出整数n从右边数的第k个数字如digit(31859,3)=8programex4;varn,k,answer:longint;
beginreadln(n,k);answer:=digit(n,k);writeln(answer);end.
functiondigit(n,k:integer):integer;vari:longint;beginfori:=1tok-1don:=ndiv10;digit:=nmod10;end;过程与函数在Pascal中,自定义过程与自定义函数一样,都需要先定义后调用。函数一般用于求值,而过程一般实现某些操作,两者的本质区别就是在于:函数有一个值返回,主程序中调用时要有一个相应类型的变量来接收这个值,而过程只是完成某些操作,没有返回值,调用时可以当成完成某项功能的一条命令。过程定义的格式:procedure<过程名>(<形式参数表>);//过程首部<说明部分>;begin //以下是过程体
<语句1>…<语句n>end;过程与函数说明:1)过程首部以关键字procedure开头。2)过程名是用户自定义的标识符,只用来标识一个过程,不能代表任何数据,因此不能说明"过程的类型"。3)形参表缺省(当然要同时省去一对括号)时,称为无参过程。4)形参表的一般格式形式如下:
[var]变量名1:类型;…;[var]变量名n:类型。说明:5)过程体与程序、函数体类似。与函数体不同的是:函数体的执行部分至少有一个语句给函数名赋值,而过程体的执行部分不能给过程名赋值,因为过程名不能代表任何数据。6)过程体的说明部分可以定义只在本过程有效的标号、常量、类型、变量、子程序等。
过程调用是通过一条独立的过程调用语句来实现的,它与函数调用完全不同。过程调用与调用标准过程(如write,read等)的方式相同。调用的一般格式为:<过程名>或<过程名>(实在参数表)说明:1)实参的个数、类型必须与形参一一对应。2)对应于形参的实参可以是表达式,对应于变量形参的实参只能是变量。3)过程调用的步骤为:计算实参的值;将值或变量的"地址"传送给对应的形参;执行过程体;返回调用处。例4、输出以下一个图形:*** *** **** ***** ******【分析】我们前面学习可用的二重循环打印出上图形,现我们设置一个过程打印出N个连续的"*"号。例4、输出以下一个图形:*** *** **** ***** ******Programex6_8;vari:integer;Procedureprint(n:integer);//该过程打印出连续n个星号,并换行varj:integer;beginforj:=1tondo
write('*');writeln;end;BEGINfori:=1to6do
print(i);//调用过程,第i行打印i个连续星号END.例6、定义一个求N!的过程
Procedure
js(n:integer);vars:longint;
i:integer;begin
s:=1;fori:=1tondo
s:=s*i;
writeln(n,'!=',s);end;在该过程中,它的值的返回形式和函数不一样:函数是由函数名返回,而过程不是由过程名返回的;在过程的首部不用对过程的类型进行说明。过程与函数有下列主要区别:1)标识符不同。函数的标识符为FUNCTION,过程为:PROCEDURE。2)函数在定义时一定要进行函数的类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中考化学化学方程式计算技巧试卷
- 2025房屋租赁转让合同
- 2025企业租赁合同范本 合同范本
- 2025企业年金基金管理合同书
- 机械厂员工的辞职报告(3篇)
- 2025商场租赁承包合同协议书商场承包租赁合同
- 2025劳务派遣合同范本
- 感恩老师演讲稿范文1500字(16篇)
- 我的成长之路:写人记事作文15篇
- 代购代销合同合同销售合同
- 2020版劳动实践河北科学技术出版社五年级下册自制风筝飞起来教案
- 远程防喷器控制装置
- 光学谐振腔精品课件
- 化工原理课程设计-23万吨年煤油冷却器的设计
- 江苏南通市生育保险津贴待遇申请表
- DBJ51 014-2021 四川省建筑地基基础检测技术规程
- PCB 设计技巧
- 八年级初二物理上册期末试卷及答案(人教版)
- 科技咨询师培训课件一(1)
- 汽车维修技术论文两篇
- 心理学基础试卷A
评论
0/150
提交评论