VFP自定义过程和函数.doc_第1页
VFP自定义过程和函数.doc_第2页
VFP自定义过程和函数.doc_第3页
VFP自定义过程和函数.doc_第4页
VFP自定义过程和函数.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课题:自定义过程、函数与子程序目的要求:了解子程序、自定义过程与函数,掌握自定义过程与函数的格式、参数、调用,通过实例领会自定义过程与函数的编写。了解有关形参与实参的概念,掌握调用过程与函数时参数的传递重点:过程与函数的格式、参数、调用;过程与函数的编写;参数的传递。 难点:解决问题能力的培养和提高。 学时:4学时教学过程及内容:导入:程序设计时,将一个大的程序按功能分解成若干相对独立的模块,一个模块用来完成一个特定的任务。由其它模块调用的、完成某种特定功能的独立程序,叫做子程序或过程、函数 。例如求8!+6!+9!的和。如果我们把求阶乘的程序写成一个子程序或过程或函数,那么在执行时只是参数不同罢了。这样就大大地简化了我们的程序。今天我们一起来了解有关于子程序、过程、函数的有关内容。新授内容:一、子程序概念:子程序实质上是一个程序文件。1、建立:modi comm 子程序名2、格式:与程序一样3、调用:do 子程序名 WITH 参数4、例:求8!+6!+9!的和&main.prg JC.PRGSET TALK OFF SET TALK OFFCLEAR CLEARS=0 P=1N=8 FOR I=1 TO NDO JC P=P*IN=6 ENDFORDO JC S=S+PN=9 RETURN DO JC?SRETURN 或&MAIN.PRG JC.RPGSET TALK OFF PARAMETERS NCLEAR P=1S=0 FOR I=1 TO NDO JC WITH 8 P=P*IDO JC WITH 6 ENDFORDO JC WITH 9 S=S+P?S RETURN RETURN 二、自定义过程概念:由procedure开头,endproc结尾一段代码,我们称之为过程。1、格式:PROCEDURE 过程名LPARAMETERS 参数列表过程体RETURN TO MASTER|TO 程序名ENDPROC2、例CLEARS=0DO JC WHIT 8DO JC WITH 6DO JC WITH 9?“8!+6!+9!的和为:”?SRETURN PROCEDURE JCLPARAMETERS XP=1FOR I=1 TO XP=P*IENDFORS=S+PENDPROC 3、说明:(1)过程名的定义同变量命名规则(2)参数用于接受从调用语句传过来的值(do jc with 6),各参数间用“,”分隔。(3)RETURN语名控制返回,RETURN TO MASTER表示返回最上层,RETURN TO 程序名,则返回指定的程序。若只有RETURN,则返回调用语句所在程序。若无RETURN,则默认为RETURN。(4) 其即可与调用语句存放在一个程序文件中(必须位于程序的后面),也可以放在其他程序文件中。4、过程调用:(1)与调用语句在一个程序文件中,直接用:do 过程名 with 参数列表(2)与调用语句不在一个程序文件中,则用:DO 过程名 IN 程序文件名 WITH 参数列表。或先用SET PROCEDURE TO 程序文件名 ADDITIVE 命令指定过程所在的文件,然后用:do 过程名 with 参数列表 调用。5、例:分别求半径为5、8、6的周长和面积*MAIN.PRG CLEARSET PROCEDURE TO SUB DO ZCMJ WITH 5DO ZCMJ WITH 8DO ZCMJ WITH 6SET PROCEDURE TO RETURN *SUB.PRG PROCEDURE ZCMJ LPARAMETERS R ?”周长为:”,3.14*2*R ?”面积为:”,3.15*R*R ENDPROC 或*main.PRG CLEARDO ZCMJ IN SUB WITH 5DO ZCMJ IN SUB WITH 8DO ZCMJ IN SUB WITH 6RETURN 6、练习:分别求8!、5!、10!7、再例:分别判断99、111、999是不是素数CLEARDO SS WITH 99DO SS WITH 111DO SS WITH 999RETURN PROCEDURE SS LPARAMETERS XT=.T.FOR I=1 TO INT(SQRT(X)IF MOD(X,I)=0T=.F.EXITENDIFENDFORIF T ?STR(X,4)+”是素数”ELSE ? STR(X,4)+”不是素数”ENDIF ENDPROC 二、自定义函数概念:由FUNCTION开头,ENDFUNC结尾的一段代码,我们称之函数1、格式:FUNCTION 函数名 参数列表函数体RETURN 返回值ENDFUNC 或FUNCTION 函数名 LPARAMTERS 参数列表函数体RETURN 返回值ENDFUNC 2、例:CLEAR ?“8!+6!+9!的和为:”?JC(8)+JC(6)+JC(9)RETURN FUNCTION JC(X)S=1FOR I=1 TO X S=S*IENDFOR RETURN SENDFUNC 3、说明:(1)函数名的定义同变量命名规则(2)参数用于接受从调用语句传过来的值(jc(8),各参数间用“,”分隔。(3)RETURN语名用于返回结果。(4) 其即可与调用语句存放在一个程序文件中(必须位于程序的后面),也可以放在其他程序文件中。4、函数调用:(1)与调用语句在一个程序文件中,直接用:函数名(参数)(2)与调用语句不在一个程序文件中,则必须先用SET PROCEDURE TO 程序文件名 ADDITIVE 命令指定函数所在的文件,然后用:函数名(参数)调用。5、例:从键盘输入一个正整数,然后将其转换成二进制数、八进制数CLEAR INPUT “请输入一个正整数:” to N ?”转换成二制数为:”+jz(n,2)?”转换成八制数为:”+jz(n,8)RETURN FUNCTION JZ LPARAMETERS X,R Y=“”DO WHILE X!=0P=MOD(X,R)Y=STR(P,1)+YX=INT(X/R)ENDDORETURN YENDFUNC 6、课堂练习:分别求21、35、20的二制数7、再例:证明歌德巴赫猜想:即每个偶数均可分解为两个素数之和。如6=3+3,10=3+7,有多种情况的只求一种。现断判6100之间的偶数CLEAR FOR I=6 TO 100 STEP 2FOR J=3 TO I-3 STEP 2IF SS(J)IF(I-J)?I,J,I-JEXITENDIFENDIFENDFOR ENDFOR RETURN FUNCTION SS(N)FOR L=2 TO INT(SQRT(N)IF MOD(N,L)=0RETURN .T.ENDIF ENDFOR RETURN .T.ENDFUNC 四、参数的传递参数的类型1、形参:定义过程和函数时所指定的参数。2、实参:调用过程和函数时所给出的参数3、参数的要求:调用时实参的个数必须等于或少于形参的个数,当实参的个数少于形参的个数时,则其它的形参的值为.F.。参数的传递1、按值传递:将实数的值传给形参。当按值传递时,若在过程和函数中改变了形参的值,其不会影响实参的值。例:DO JC WITH 8 DO JC WITH (N) Ss(n)2、引用传递:将实数的地址传给形参,又称按地址传递。当地址传递时,若在过程和函数中改变了形参的值,将会影响实参的值。例:DO JC WITH N SS(N)或ss(n)3、SET UDFPARMS TO VALUE | REFERENCE作用:在向自定义函数传递参数时,确定变量是按值传递,还是按地址传递。说明:SET UDFPARMS TO VALUE为按值传递 SET UDFPARMS TO REFERENCE为按地址传递注:()和优先于SET UDFPARMS TO命令。在调用过程时,变量始终为按地址传递。4、例:SET TALK OFF CLEAR n=5 sub(n)?n SET UDFPARMS TO VALUE n=6sub(n)?n n=7sub(n )?n SET UDFPARMS TO REFERENCE n=8sub(n)?nn=9sub(n)?n RETURN func sub LPARAMETERS xx=x+10?xENDfunc小结1、过程、函数的格式、调用语句2、过程、函数的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论