Visual_FoxPro_程序设计

上传人:hs****ma 文档编号:578463334 上传时间:2024-08-24 格式:PPT 页数:99 大小:1.01MB
返回 下载 相关 举报
Visual_FoxPro_程序设计_第1页
第1页 / 共99页
Visual_FoxPro_程序设计_第2页
第2页 / 共99页
Visual_FoxPro_程序设计_第3页
第3页 / 共99页
Visual_FoxPro_程序设计_第4页
第4页 / 共99页
Visual_FoxPro_程序设计_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《Visual_FoxPro_程序设计》由会员分享,可在线阅读,更多相关《Visual_FoxPro_程序设计(99页珍藏版)》请在金锄头文库上搜索。

1、第四章第四章 程序设计程序设计问题的提出:前面我们给同学们介绍的都是关于数据库和数据表的有关操作,那么在管理信息系统中如何实现软件的各项功能?解决问题的方法:这就需要学习Visual FoxPro 6.0第二个重要部分程序设计。通过程序设计的学习,主要是要求同学们能掌握程序设计的一般方法,了解软件各项功能实现的方法。第四章第四章 程序设计程序设计本章主要介绍的内容有:常量、变量、数组、函数和表达式;程序文件的建立与修改;程序的基本结构;过程的概念及使用。第四章第四章 程序设计程序设计通过学习本章内容,您能够做到:掌握Visual FoxPro 6.0中常量、变量、数组、函数和表达式的使用;掌握

2、程序设计的基本方法;学会利用程序方式解决某项任务。本章目录本章目录4.1 引 例 4.2 语言基础 4.3 程序文件 4.4 结构化编程 4.5 过 程 HOME4.1 引 例 例如“学生管理系统”应用软件的用户登陆界面。只有输入正确的用户名和密码,才能进入管理系统 。 当密码正确时进入主菜单,如左图所示。当密码不正确时显示提示信息,如右图所示。此例是如何实现,其中的程序是如何设计的呢? 具体执行的程序为: LPARAMETERS nKeyCode, nShiftAltCtrl &定义参数if nkeycode=13 &判断密码输入后是否按回车 if thisform.text2.value=

3、ABCDEFG &判 断 输 入 密 码 是 否 为”ABCDEFG” DO 系统菜单.mpr &若为”ABCDEFG”,则执行“系统菜单.mpr” thisform.tabstop=.t. &光标移至下一处 thisform.release &释放当前表单 else &若密码不是”ABCDEFG” wait window对不起,口令不正确,您不能使用本系统! &显示密码错误时的提示信息 this.value=” &设置当前表单的text2为空 thisform.tabstop=.f. &光标仍停在该文本框 endif endif 4.2 语言基础4.2.1 常量、变量与数组 4.2.2 表达

4、式 4.2.3 函数 4.2.1 常量、变量与数组常量是指在程序执行过程中其值不改变的量,而变量在程序执行过程中允许其值随时改变。Visual FoxPro 6.0中常量有数值型常量、字符型常量、逻辑型常量、日期型常量、日期时间型常量和货币型常量,不同类型的常量有不同的书写格式;Visual FoxPro 6.0的变量有字段变量、系统内存变量和用户内存变量三类。 1.常量数值型常量(N) 例 如 : 80, 12.56, -5.76, 5.87E10(表 示 5.871010),3.64E-12字符型常量(C) 例如: abcd,1234,中华民族,Visual FoxPro 6.0 逻辑型常

5、量(L) 例如:.T., .Y. ,.f.,.N. 注 意:两边的小圆点不能省略。 日期型常量(D) 例如:1993/02/12,1999-12-05,2002.07.24 日期时间型常量(T) 例 如 : 1993/02/12 10:15:25am, 1999-12-05 11:22:37am,2002.07.24 09:14:38am 货币型常量(Y) 例如:$48.25,$57.27 2变量 Visual FoxPro 6.0的变量有字段变量、用户内存变量和系统内存变量三类,用户内存变量简称内存变量。 字段变量、用户内存变量的名称要求以字母(或汉字)、下划线打头后面跟字母、下划线和数字,

6、系统内存变量名则由系统自行设定。 (1)字段变量 数据表结构中每一个数据项都是一个字段变量,Visual FoxPro 6.0字段变量的数据类型有13种类型。每个字段变量是在建立表时定义的,其字段变量名称由1-128个字符组成,它是个多值变量,其值随记录指针移动而发生改变,它的当前值是记录指针所指记录(当前记录)的相应字段值。 (2)内存变量 1)变量的引用 内存变量的引用是通过内存变量名来访问该内存变量的,当某个内存变量名与当前表中某字段变量同名时,对该内存变量的引用必须在变量名前加上前缀M.(或M-),否则系统将访问同名的字段变量。 如:若当前表为XSDA.DBF,其中有XM字段变量,此时

7、执行XM=123后则内存中存在一个名为XM的内存变量,要想引用XM这个内存变量应为:M.XM或M-XM。 2)内存变量的赋值: 内存变量不需事先定义,要使用一个内存变量可直接赋值,内存变量赋值有两种格式:格式一:=格式二:STORE TO 注 意:赋值号(=)一次只能给一个内存变量赋值;STORETO命令可一次给若干个内存变量赋予相同的值 3)内存变量的显示: 显示内存变量有以下四种格式:格式一: ? 格式二: ? 格式三: LIST MEMORY LIKE TO PRINTER|TO FILE 格式四: DISPLAY MEMORY LIKE TO PRINTER|TO FILE 【例4.1

8、】定义常用类型的内存变量并赋值后显示在命令窗口键入如下命令:STORE 28.45 TO AX &定义内存变量AX,数值型,其值为28.45STORE 中华民族 TO B &定义内存变量B,字符型,其值为”中华民族”STORE .T. TO C &定义内存变量C,逻辑型,其值为.T.STORE $128 TO D5 &定义内存变量D5,货币型,其值为$128E=1998.04.06 &定义内存变量E,日期型,其值为1998年4月6日F=2001/04/08 9:28:35am &定义内存变量F,日期时间型,其值为2001年4月8日上午9点28分35秒STORE 27 TO X,Y,Z &定义内

9、存变量X,Y,Z,数值型,其值都为27LIST MEMO LIKE ? &显示内存变量,LIKE ?表示内存变量名为任意一个字符内存变量,本命令显示所有变量名为一个字符的内存变量属性。 再在命令窗口输入LIST MEMO LIKE ? &显示所有变量名最多为二个字符的内存变量属性。 屏幕显示执行的结果如下: 4)内存变量的释放格式一:RELEASE ALL LIKE|EXCEPT 格式二:CLEAR ALL 例如: RELEASE x,y &清除内存变量x,y RELEASE ALL &清除用户定义的所有内存变量 (3)系统内存变量 系统内存变量是Visual FoxPro 6.0自动生成与维

10、护的变量,用于控制输出和显示信息的格式。为了与一般的内存变量有所区别,系统内存变量名前一律加下划线“_”。 3数组 数组是按一定的顺序排列的一组内存变量,数组中的各个变量称为数组元素。数组必须先定义后使用。 (1)数组的定义 (2)数组与表间传递数据 (1)数组的定义 命令格式:格式一:DIMENSION (,),(,)格式二:DECLARE (,),(,) 注 意:系统规定数组元素下标的下限为1。 例如命令“DIMENSION X(3),A(2,3)”分别定义了数组名为X的一维数组和数组名为A的二维数组。 数组X的下标下限为1,上限为3,故数组X的元素为:X(1)、X(2)、X(3); 二维

11、数组A的下标下限为(1,1),上限为(2,3),因而数组A有二行三列共6个元素: A(1,1) A(1,2) A(1,3) A(2,1) A(2,2) A(2,3) 数组的输入: dime a(10) a(1)=5 a(2)=10 数组的输出: ? a(1),a(2) (2)数组与表间传递数据 数组与表之间、变量与表之间都可以交换数据,通过数组不仅传送的数据多、速度快,且能自动定位。 数组与表间传递数据分为: 1)表数据传递到数组 2)数组内容传递到表 1)表数据传递到数组格式一:COPY TO ARRAY FIELDS 范围FOR|WHILE 功能:将当前工作区中打开的表当前记录开始的若干满

12、足条件记录的指定字段内容复制到指定数组中。格式二:SCATTER FIELDS MEMO TO |TO BLANK|MEMVAR|MEMVAR BLANK 功能:将当前工作区中打开的表当前记录内容复制到一组与字段名同名的内存变量或数组中。 【例4.2】将xsda.dbc表中男生的姓名复制到x_m中,并显示该数组的值。CLEARUSE xsdaLIST xm FOR xb=男COPY TO ARRAY x_m FIELDS xm FOR xb=男FOR I=1 TO alen(x_m) &函数alen(x_m)返回数组x_m的长度 ? x_m(i)ENDFORRETURN2)数组内容传递到表格式

13、一:APPEND FROM ARRAY FIELDS FOR 功能:将指定数组中的内容添加到当前表的末尾(不包括备注型和通用型字段)。格式二:GATHER FROM |MEMVAR FIELDS MEMO 功能:将指定数组或一组与表字段名同名内存变量中的内容复制到当前表的当前记录中。格式三:INSERT INTO FROM ARRAY |MEMVAR 功能:将指定数组或一组与表字段名同名内存变量中的内容插入或追加到指定表中。4.2.2 表达式 表达式是Visual FoxPro 6.0命令的重要组成部分,它是通过运算符将常量、变量、函数等运算对象连接起来的式子。根据表达式结果值的数据类型不同,

14、Visual FoxPro 6.0表达式分为: 1.数值表达式 2.字符表达式 3.日期表达式 4.逻辑表达式 1.数值表达式 用算术运算符将数值型常量、变量、函数连接起来的式子,其结果值的数据类型为N型。 例如:?24*32/4 54 ? 3*92%5+3 6 2.字符表达式 使用字符串运算符将字符型数据连接起来形成的式子,其运算结果的数据类型仍是字符型。 例如:A=Hello B=Friend! ? A+B Hello Friend! ? A-B HelloFriend! 3.日期表达式 使用算术运算符将日期型数据、数值型数据连接起来的式子,其运算结果的数据类型是日期型或数值型。 例如:?

15、 2001/12/12+12 12/24/01 ? 2001/12/12-10 12/02/01 ? 2002/07/28-2002/06/08 50 4.逻辑表达式 使用逻辑运算符将逻辑型数据或关系表达式连接起来的式子,其运算结果的数据类型是逻辑型。 (1)关系表达式 用关系运算符将两个运算对象连接起来的式子,其运算结果的数据类型是逻辑型。具体格式为: 例如:? 05 .F. ? 2001/06/03=450 AND XB=“男” 表示的是:入学分(字段名为RXF)在450分以上的男生。 注 意:在某个表达式中既有关系运算,又有逻辑运算时,先进行关系运算,再进行逻辑运算。 4.2.3 函数函

16、数是用程序来实现的一种数据运算或转换。Visual FoxPro 6.0提供了十分丰富的函数,并且提供了用户自定义函数的功能。使用起来十分方便、灵活。 每一函数都有三个要素:函数名、参数和返回值。 函数调用格式:函数名()例如:SUBSTR(ABCDEFG,3,2) 下面将介绍Visual FoxPro 6.0的部分常用函数 1.数值型常用函数 2.字符型常用函数 3.日期时间型常用函数 4.数据类型转换常用函数 5.表操作常用函数 6.分支函数IIF( ) 1.数值型函数 ABS(n)、 SQRT(n)、 EXP(n)、 LOG(n)、 LOG10(n)、INT(n)、SIGN(n)、MAX

17、(n1,n2)、MIN(n1,n2)、MOD(n1,n2)、ROUND(n1,n2)、RAND(n)2. 字符型函数 SUBSTR(C,N1,N2) 、LEFT(C,N)、LEN(C)、 RIGHT(C,N)、 AT(C1,C2)、TRIM(C)、ALLTRIM(C)、 SPACE(N)、UPPER(C)、LOWER(C) 、&3.日期时间型函数 DATE( ) 、TIME( )、 DATETIME( )、 YEAR(D)、 MONTH(D)、 DAY(D)4.转换函数 VAL( C) 、 STR(N1,N2,N3) 、 CHR(N)、 ASC( C) 、CTOD(C)、DTOC(D)、 CT

18、OT(C)、 TTOC(T) 5. 表操作函数 BOF( )、 EOF( )、 RECCOUNT(N)、 FCOUNT(N) 、FOUND(N)、RECNO( )、DELETE(N|表名)、DBF(N) 6.分支函数 格式:IIF(,) 功能:当成立,即结果为真(.T.)时,函数返回的值;若不成立,即结果为假(.F.)时,函数返回的值。 示 例例:USE XSDA ? BOF() .F. SKIP -1 ? BOF() .T. ? RECNO() 1 GO BOTTOM ? EOF() .F. SKIP 1 ? EOF() .T.4.3 4.3 程序文件程序文件 Visual FoxPro 6

19、.0的命令执行方式有交互方式、菜单方式和程序方式。从本节开始我们将学习利用程序方式来执行Visual FoxPro 6.0命令以完成一些具体任务。 4.3 4.3 程序文件程序文件 4.3.1程序文件的建立 4.3.2程序文件的修改 4.3.3程序文件的运行 4.3.1 程序文件的建立 程序是能够完成一定任务的命令有序集合。这些命令的集合被放在一个有特定扩展名(.prg)的文件中,这个文件称为程序文件或命令文件。 建立程序文件有三种方式:命令方式、菜单方式和项目管理器方式。 (1)命令方式 格式:MODIFY COMMAND 功能:打开一个程序编辑窗口,录入或修改程序,程序文件的扩展名为.pr

20、g。程序编辑窗口 (2)菜单方式 使用菜单方式创建程序的步骤为: 单击“文件”菜单中“新建”菜单项或单击“新建”工具按钮,打开“新建”对话框,如图所示 。 在“新建”对话框中,选择“程序”,然后单击“新建文件”,出现程序编辑窗口。 在程序编辑窗口录完程序内容后,存盘退出,关闭窗口。 (3)项目管理器方式 使用项目管理器方式创建程序的步骤为 :打开项目管理器对话框。 切换至“全部”页面,打开“代码” 文件夹,从中选择“程序”项;或选“代码”页,从中选择“程序”项,如图所示。单击“新建(N)”按钮,进入程序编辑窗口。 4.3.2 程序文件的修改编辑好的程序文件可以再次进行修改,具体方式也有三种。1

21、.命令方式格式:格式:MODIFY COMMAND 功能:打开一个程序编辑窗口,修改程序。 2. 菜单方式 使用菜单方式修改程序的步骤为: 单击“文件”菜单中“打开”菜单项出现“打开”对话框,如图所示。 在“打开”对话框选“文件类型”为“程序”,选择要编辑的程序文件名,单击“确定”后,就会打开程序编辑窗口。 用户编辑修改完成后存盘退出,修改即告完成。 3.项目管理器方式 使用项目管理器方式修改程序的步骤为: 打开项目管理器对话框。 切换至“全部”页面,打开“代码” 文件夹,选择“程序”文件夹并展开,或打开“代码”页从中选择“程序”项并展开,选择要修改的程序文件。 单击“修改(M)”按钮,进入程

22、序编辑窗口。 修改程序内容后,存盘退出同时关闭程序编辑窗口。 4.3.3 程序文件的运行 程序文件的运行也有三种方式,即命令方式、菜单方式和项目管理器方式。 1.命令方式 格式:DO 功能:运行指定的程序文件。 2.菜单方式 在主菜单“程序”中选择“运行”菜单项,将出现如图所示的运行对话框,从中选择要运行的程序文件,然后双击程序文件名或单击“运行”按钮即可。 3.项目管理器方式 在项目管理器中运行某个程序文件的步骤为: 打开项目管理器对话框。 切换至“全部”页面,打开“代码” 文件夹,选择“程序”文件夹并展开,或打开“代码”页从中选择“程序”项并展开,选择要运行的程序文件。 单击“运行(U)”

23、按钮,则执行所选的程序。 4.4 4.4 结构化编程结构化编程 我们已经学习了如何创建程序,但如何编写程序文件呢?这一节我们就来学习Visual FoxPro 6.0结构化程序设计的内容。VFP程序的基本结构有三种,它们是顺序结构、分支结构和循环结构。各种程序都是由这三种基本结构经不同组合而成。在介绍这三种基本结构之前,我们先来学习VFP程序编写的一些规则。 程序的书写规则: 命令分行:程序中每条命令都以回车键结束,一行只能写一条命令。若命令一行书写不下需分行书写时,应在一行终了处键入续行符“;”,然后回车写续行。 命令注释:程序中可插入注释,以提高程序的可读性。格式一:* 在要解释的命令前,

24、又称行首注释。格式二:& 在要解释的命令后,又称行尾注释。 4.4 4.4 结构化编程结构化编程4.4.1 顺序结构 4.4.2 分支结构 4.4.3 循环结构 4.4.1 顺序结构 1.基本输入输出命令 (1)基本输入命令 1)INPUT命令 格式:INPUT TO 功能:等待用户从键盘输入数据,存入到指定的内存变量中。 2)ACCEPT命令 格式:ACCEPT TO 功能:等待用户从键盘输入字符型数据,并存入到指定的内存变量中。 从键盘输入的字符串不需要引号作为定界符。 3)WAIT命令 格式:WAITTOWINDOWSAT,TIMEOUT 功能:显示的内容(提示信息)并暂停系统的执行,直

25、到用户按下任一键或单击鼠标后,程序再继续执行。 4)SAYGET命令 格式: SAY GET READ 功能:在指定的位置显示提示信息,等待用户编辑变量。 GET语句的一般使用格式为: 变量的初值设定 SAY GET READ (2)基本输出命令 Visual FoxPro 6.0基本输出命令有?、?、SAY三条命令和MessageBox()函数,其中?和?在本章4.2.1已作了简单的介绍,下面将进一步介绍这几条输出命令。 1) ?|?命令 2)SAY命令 3)MessageBox()函数 1) ?|?命令 格式: ?|? PICTURE FUNCTION AT , 功能:计算表达式的值,并将

26、结果送往屏幕、打印机或同时送往二者。 2)SAY命令格式: SAY 功能:在指定的行、列位置输出表达式的值。有关函数:ROW() 返回当前屏幕光标所处的行位置COL() 返回当前屏幕光标所处的列位置PROW() 返回打印机当前打印所处的行位置PCOL() 返回打印机当前打印所处的列位置 4,10 say 现在是北京时间: &在(4,10)位置显示现在是北京时间: 6,24 say ttoc(datetime() &在(6,24)位置显示当前日期时间 3)MessageBox()函数 格式:MessageBox(,) 功能:显示一个自定义对话框。 示例: MessageBox()函数应用举例 在

27、命令窗口输入:MessageBox(请选择按钮) 2. 顺序结构: 按命令在程序中出现的选后次序依次执行。 为了表示程序的执行次序,经常用流程图来描述程序的执行,顺序结构流程图可表示为如图所示。从流程图可以看出,顺序结构程序执行时无分支,它是依据命令在程序中出现的次序(命令A命令B命令n)依次执行的,也就是顺序结构的流程是单一直线式的。 顺序结构流程图命令A命令B命令命令n顺序结构流程图现实生活中许多任务往往比较复杂,经常需要根据不同的具体情况选择相应的解决方案。如“学生管理系统”中,如以每位同学的成绩(表 XSCJ.DBF中的CJ)来核定其课程的等级。是优秀还是良好,就要根据各位同学CJ高低

28、的不同来分别处理。这种情况反映到程序设计中,仅仅靠单一直线式流程的顺序结构程序解决起来就比较困难,这时就需要分支结构程序来完成。 4.4.2 分支结构 分支结构是指程序流程发生了分支,程序执行时根据条件选择其中某一分支执行的程序结构,又称选择结构。Visual FoxPro 6.0的分支结构按分支多少分为双分支(IF/ENDIF)和多分支(DO CASE/ENDCASE)两类。1.双分支结构IF/ENDIF语句 2.多分支结构DO CASE/ENDCASE语句 双分支 单分支格式:IF 格式:IF ELSE ENDIF ENDIF1.双分支结构 双分支流程图 单分支语句流程图条件语句组1语句组

29、2ENDIF的下一条语句N条件语句组ENDIF的下一条语句YN条件语句组1ENDIF的下一条语句条件N语句组2ENDIF的下一条语句条件Y语句组1ENDIF的下一条语句NENDIF的下一条语句Y Y【例4.6】根据学生的年龄,输出学生的姓名和性别。年龄大于等于20输出大,年龄小于20且大于等于18的输出中,年龄小于18的输出小。SNAME= SSEX= SOLD=010,10 SAY请输入学生姓名: GET SNAME11,10 SAY请输入学生性别: GET SSEX12,10 SAY ”请输入学生年龄: ” GET SOLDREADIF SOLD=20 ? SNAME,SSEX, 大ELS

30、E IF SOLD=18 ? SNAME,SSEX, 中 ELSE ? SNAME,SSEX, 小 ENDIFENDIF2.多分支结构格式: DO CASE CASE CASE CASE OTHERWISE ENDCASE采用DO CASE语句改写例4.6的程序。SNAME= SSEX= SOLD=010,10 SAY请输入学生姓名: GET SNAME11,10 SAY 请输入学生性别: GET SSEX12,10 SAY 请输入学生年龄: GET SOLDREADDO CASE CASE SOLD=20 ? SNAME,SSEX, 大 CASE SOLD=18 ? SNAME,SSEX,

31、中 CASE SOLD18 ? SNAME,SSEX小ENDCASE4.4.3 循环结构 在程序设计过程中,经常会遇到反复执行某几条命令或程序段的问题。如“学生管理系统”中,要查询表XSCJ.DBF中符合给定条件的每位同学并显示,如用LOCATE命令将会非常复杂。若采用顺序结构,将要重复给出相同或相似的命令组合,这样使得程序显得累赘,编码效率低。这时如果采用循环结构来完成,将使程序变得简洁。 循环结构是指根据条件是否成立,决定是否重复执行某程序段。 Visual FoxPro 6.0的循环结构有 1.FOR循环 2.DO WHILE循环 3.SCAN循环 4.循环嵌套 1.FOR循环 格式:

32、FOR = TO STEP EXIT LOOP ENDFOR|NEXT 功能:首先给循环变量赋初值,判断循环变量是否超过终值,若没有超过终值则执行循环体,使循环变量增加一个增量;若超过终值则跳出循环,执行ENDFOR|NEXT 后面的语句。执行LOOP转至循环的开始处执行;执行EXIT退出循环 。【例4.13】 FOR循环示例一。FOR I=1 TO 5? IENDFOR程序执行结果为: 1 2 3 4 5 【例4.15】输出斐波纳契(fibonacci)数列的前20项,数列的规律是:第一、二个数是1,从第三个数起,每个数是前面两个数之和。 CLEAR f1=1 f2=1 ? f1,f2 FO

33、R i=3 TO 20 f3=f1+f2 ? f3 f1=f2 f2=f3 ENDFOR RETURN2. WHILE 循环 格式: DO WHILE EXIT LOOP ENDDO 功能:首先判断循环变量是否满足条件,若满足则执行循环体,在循环体中使循环变量发生改变;若不满足条件则跳出循环,执行ENDDO 后面的语句。DO WHILE 循环流程图 【例4.18】用DO WHILE实现FOR循环的功能 CLEAR K=2 &相当于FOR K=2 DO WHILE K=10 &相当于TO 10 ? K=,K K=K+2 &相当于STEP 2 ENDDO RETURN 运行结果: K= 2 K=

34、4 K= 6 K= 8 K= 103.SCAN循环 格式: SCAN FOR|WHILE ENDSCAN 功能:在指定范围内,扫描满足给定条件的记录,若满足条件,则执行循环体。【例4.19】显示XSDA.DBF表中前8个记录里性别为女的记录。CLEARUSE xsdaSCAN NEXT 8 FOR xb=女 DISPLAYENDSCANRETURN运行结果: 4.循环嵌套 在一个循环体内又完整地包含另一个循环,称为循环的嵌套。FOR DO WHILE SCAN FOR DO WHILE SCAN ENDFOR ENDDO ENDSCAN ENDFOR ENDDO ENDSCAN4.5 4.5

35、过程过程前面我们介绍了程序设计的三种基本结构,通过顺序结构、分支结构、循环结构能够设计出一些简单的程序。在实际运用中问题往往较复杂,如果仅仅采用这三种基本结构,程序设计工作难度将大大增加,程序代码也显得累赘。 Visual FoxPro 6.0的子程序结构分为:过程、函数和方法三类。一般来说,过程与函数的区别在于函数要返回一个值而过程不一定有返回值,方法则是限制在一个对象中的子程序。下面分别介绍。 1.过程 2.自定义函数 3.自定义方法 4.参数传递 5.变量作用域 1. 过程(1)过程定义:格式: PROCEDURE PARAMETERS|LPARAMETERS RETURN ENDPRO

36、C功能:定义一个指定名称的过程和其具体的内容。 (2)过程调用 过程调用语句: DO WITH IN 功能:调用所指定的过程。 打开过程文件的语句: 格式:SET PROCEDURE TO ,ADDITIVE 关闭过程文件命令:格式一:SET PROCEDURE TO格式二:RELEASE PROCEDURE , 功能:格式一命令关闭所有打开的过程文件 格式二命令关闭指定的过程文件【例4.23】将本节前面的多次间断调用相似程序段程序结构示意用过程调用表示:set talk off procedure sub SET PROCEDURE TO S1 clear DO SUB return DO

37、SUB DO SUB SET PROCEDURE TOset talk on return2.自定义函数 Visual FoxPro 6.0函数分为两类:标准函数和自定义函数。标准函数是VFP已经定义好的子程序,可供用户直接调用,如前面介绍的LEN()、SUBSTR()、AT()、ROUND()等,自定义函数则需要用户自己编定程序。 (1)建立函数 格式:FUNCTION PARAMETERS RETURN (2)调用函数格式1:函数名(实参表)格式2:变量名= 函数名(实参表) 【例4.25】采用自定义函数求1!+2!+10!即n!CLEARS=0FOR i=1 TO 10 S=S+fact

38、(i) &调用函数ENDFOR? sum=,sRETURN* 建立求n!的函数factFUNCTION factPARAMETERS nv=1FOR j=1 TO n v=v*jENDFORRETURN v运行结果:sum= 40379133.自定义方法 VFP的方法也分为两种:内部方法和自定义方法。内部方法是VFP已经制定好的子程序,用户可以直接调用或修改后使用,VFP同时允许用户自行定义方法。 方法程序的格式: PARAMETERS RETURN 建立自定义方法的步骤: 添加新方法 在表单设计器中选“表单”中的“新建方法程序”项,在对话框中输入方法名,例如m1,单击“添加”; 编写自定义方

39、法的代码 双击属性窗口的新方法名或进入代码窗口,选新方法名输入代码,存盘。 例 如 : =MESSAGEBOX(“这 里 是 自 定 义 的 新 方 法 ”,64+0+0) 自定义方法的调用 与调用表单中内部方法一样,可以在事件过程或其他的方法程序中调用。 例:command1的click事件中调用方法m1:thisform.m14.参数传递 参数传递可以用:(1)全局变量进行参数传递;(2)用参数传递语句进行参数传递格式1: DO|WITH 格式2: | (实参表) 说明: 实参可以由多个数值、内存变量和表达式组成,各参数之间用逗号“,”分隔,每个参数传递一个数据。若实参为数值或表达式,只能

40、向被调用程序发送数据称按值传递;若实参为变量,是将实参的地址传递给相应的形式参数,则形参和实参是同一个量,即可以双向传递数据,称按引用传递。 按格式2调用子程序,系统默认是按值传递。 重新设置参数传递方式: SET UDFPARMS TO VALUE|REFERENCE 形参只能是内存变量,用于接受从对应实参传递来的数据。若实参是一个表达式,在传递参数时,首先计算表达式的值,然后把这个值传递给对应的形参;若实参为一个内存变量,在传递参数时,把变量的值传递给对应的形参,在返回调用程序时,把形参改变后的值传递给对应的实参,带回调用程序。要想用内存变量作为实参,且在返回后又不改变其值,即不受形参变化的影响,需把实参放在圆括号内,使之成为表达式。5.变量作用域 (1)公共变量 语句:PUBLIC 可在所有程序中使用,程序运行结束,公共变量不会自动被清除。 (2)私有变量 语句:PRIVATEALL|LIKE|EXCEPT 未说明的变量为私用变量,在定义的程序及其子程序中有效,定义该变量的程序运行结束时被自动清除。 用该语句可暂时隐藏上级程序中的同名变量,直到声明它的程序执行结束后,恢复使用隐藏的上级同名变量。 (3)本地变量 语句:LOCAL 只能在它的程序中使用,而不能在其上层程序或下级子程序中使用,程序运行结束时被自动清除。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号