结构化程序设计3.ppt_第1页
结构化程序设计3.ppt_第2页
结构化程序设计3.ppt_第3页
结构化程序设计3.ppt_第4页
结构化程序设计3.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

,Visual Foxpro程序设计 第7章 结构化程序设计,计算机 科学学院,教师:,2009年 月 日,7.1 程序设计的基本概念与步骤,7.2 顺序结构程序设计,7.3 分支结构程序设计,7.4 循环结构,7.5 子程序、过程与自定义函数,提要,7.1 程序设计的基本概念与步骤,7.1.1 程序设计的基本概念 程序设计反映了利用计算机解决问题的全过程,包含多方面的内容,而 编写程序只是其中的一个方面。使用计算机解决实际问题,通常是先对问题 进行分析并建立数学模型,然后考虑数据的组织方式和算法,并用某一种程 序设计语言编写程序,最后调试程序,使之运行后能产生预期的结果。这个 过程称为程序设计。 基于本书的教学对象和面向要处理问题的简单性,本书简化了其他过 程,主要介绍怎样使用Visual FoxPro语句来编写程序的环节。对于 Visual FoxPro程序来讲就是为实现某一任务,将若干条Visual FoxPro命令和程序设计语句按一定的结构组成的命令序列,它保存在一个 以.PRG为扩展名的文本文件中。,7.1.2 结构化程序设计的特点及基本结构,结构化程序设计方法是被普遍采用的一种程序设计方法, 要求设计者按照一定的结构形式来设计和编写内 容,采用自上而下,逐步细化的原则,将设计过程分为若 干层次,逐步解决。在解决这些问题的过程中,会采用相 应的结构和一定的算法来控制和组织程序。,1算法概念及表示 算法:为某目标功能而设计的处理流程以及使用命令来实现的方法。 表示算法的形式有很多,本书中介绍利用流程图来表示的方法。这种方法使 用不同的几何图形框来代表各种不同性质的操作,直观易于理解。 常用的流程符号如图7-1所示,图7-1 流程符号,2程序的控制结构 任何复杂的程序都由3种基本控制结构组成。它们是顺序结构、选择结构 和循环结构。 顺序结构:根据程序中语句的书写顺序依次执行的命令序列。 分支结构:在程序执行过程中,根据不同的条件,选择执行不同的程序语 句,用来解决有选择,有转移的诸多问题。分支结构以条件或判断为起始 点,根据逻辑判断是否成立而决定程序运行的走向。 循环结构:根据特定的条件,从某处开始有规律的反复执行某一处理块 (循环体),循环体的执行次数由一个控制循环的条件决定。 这三种结构的流程图如图7-2表示:,图7-2 三种结构流程图,3程序的模块化结构 模块化是结构化程序的重要原则,所谓模块化就是把大程序按照功能分 为较小的程序。一般来讲,一个程序是由一个主控模块和若干子模块组 成的,主控模块用来完成某些公用操作及功能选择,而子模块用来完成 某项特定的功能。 这种设计风格便于分工合作,将一个庞大的模块分解为若干个子模块分 别完成,然后用主控模块调用子模块。这种程序的模块化结构如(图7- 3)所示: 结构化程序的设计过程就是将问题求解由抽象逐步具体化的过程。这种 方法符合人们解决复杂问题遵循的普遍规律,可以显著提高程序设计的 效率。,图7-3 程序的模块化结构,7.1.3 程序设计的基本步骤,程序设计的步骤一般分为问题分析、确立算法、编写程序和调试序。 问题分析是按程序开发书中用户要求进行具体的分析,确定编程的目 标; 确定算法就是选择较好的计算方法解决问题; 编写程序是按计算机语言和确定的算法进行编码,最后把编好的程序 送入计算机运行并反复调试检查,纠正错误,直到得到正确的结果为 止。,7.1.4 程序文件的建立与执行,程序文件(简称程序)也叫命令文件,它的扩展名为.PRG。用户 可在命令方式和菜单方式下建立并执行程序文件。 1在命令方式下建立和编辑程序文件 【格式】MODIFY COMMAND 【功能】打开程序文件编辑窗口,建立、编辑一个指定的程序文 件,其扩展名为.PRG。 【说明】当程序输入或修改完成,可执行“文件”菜单中的“保存”命 令,或关闭编辑窗口,或按CTRL+W键将文件存盘。若要放弃当 前的编辑内容,则按CTRL+Q键。,【例7-1】建立程序文件EX1.PRG,在屏幕上显示“欢迎使用学 生管理系统”信息。操作步骤如下: (1)在命令窗口中输入命令MODIFY COMMAND EX1, 如图7-4所示。,图7-4 命令窗口,(2)输入命令后按回车键,进入程序编辑窗口。接着在程序编辑窗 口中逐条输入3条程序语句,如图7-5所示。 (3)输入完语句后,按Ctrl+W键将程序存盘,建立程序文件EX1.PRG,并返回到系统主窗口。,图7-5 程序编辑窗口,2用菜单方式建立和编辑程序文件 在Visual FoxPro中,用菜单方式建立和编辑程序文件的操作步骤如下: (1)选择“文件”菜单下的“新建”命令,出现“新建”对话框,如图7-6所示。,图7-6 “新建”对话框,(2)在“新建”对话框中,选中“程序”项,单击“新建文 件”按钮,进入程序编辑窗口,如图7-7所示。 图7-7 程序编辑窗口 (3)在程序编辑窗口中,逐条输入命令行或程序语句。,(4)输入完毕,按Ctrl+W键存盘,或打开“文件”菜单,单击“保存”按钮(或“另存为”命令),打开“另存为”对话框,如图7-8所示。 图7-8 “另存为”对话框 (5)选择盘符及文件目录,输入程序的文件名,然后单击“保存”按钮,保存当前程序文件。如果单击“取消”按钮,则返回到程序编辑窗口,继续编辑。,3用命令方式运行程序文件 【格式】DO 【功能】在命令窗口运行扩展名为.PRG的程序文件。 4用菜单方式运行程序文件 在Visual FoxPro的菜单方式下运行程序文件的操作步骤如下: (1)打开“程序”菜单,单击“运行”命令,出现“运行”对话框,如图7- 9所示。 (2)在“运行”对话框中,选定程序文件名,然后单击“运行”按钮,运 行程序。,建立程序文件时,需要在文件中按语句格式要求输入相关 的命令,下面将介绍语句的书写规则和一些其它常用命令。,图7-9 “运行”对话框,5程序的书写规则 编写Visual FoxPro程序时,应注意以下几点: (1)程序中的每一行只能书写一条命令,每条命令都以回车键结束。 (2)一条命令可以分成多行书写,可在行末键入续行标志“;”, 然后按回车键。 (3)为了提高程序的可读性,可在程序的行首加入注释语句,以 注释符“*”开头,说明程序的功能;也可以在每一条命令的行尾添 加注释,以注释符“&”开头,注明每条语句的功能及含义。,6编程中的常用语句介绍 (1)交互式输入命令 1)WAIT单字符输入命令 【格式】WAITTOWINDOW AT 【功能】暂停程序的运行,并在屏幕上显示提示信 息,等待用户从键盘上输入一个字符(或按任意键后),继续往下执行。,【说明】 是提示用户进行操作的信息,当此项缺省时,屏幕上 显示“按任意键继续”的信息,当按任意键后,将继续执行。 选择TO是将输入的字符保存到指定的内存变量中, 否则,输入的字符不予以保存。 选择WINDOW AT 选项时,可在屏幕右上角出现 一个WAIT提示窗口。提示窗口的位置也可以由AT中的行列值指定。 【例7-2】WAIT命令的应用举例。 WAIT WAIT “请按任意键继续!“ WAIT “请按任意键继续!“ WINDOW AT 16,20,2)ACCEPT字符串输入命令 【格式】 ACCEPT TO 【功能】 先显示提示信息,然后等待用户从键盘上输入字符型数据 到指定的内存变量中。 【例7-3】 显示表XSQK中指定学生姓名的记录。 CLEAR & 清除屏幕 USE XSQK EXCLUSIVE & 打开表 xsqk.dbf ACCEPT “请输入姓名:” TO xm & 输入学生姓名 LIST FOR 姓名=xm & 显示所输入的学生的记录,3)INPUT表达式输入命令 【格式】INPUT TO 【功能】先显示提示信息,然后等待用户从键盘上输入数据到指定 的内存变量中。 【说明】用INPUT命令输入的数据,可以是数字型、字符型、日期 型和逻辑型。是字符型、日期型和逻辑型时必须加定界符。 【例7-4】 显示表XSQK中指定年代的记录。 CLEAR & 清除屏幕 USE XSQK EXCLUSIVE & 打开表xsqk.dbf INPUT “请输入出生年代:” TO rq & 输入年代值 LIST FOR YEAR(出生日期)=rq & 显示指定年代的记录,4)定位输入命令 【格式】 SAY GET READ 【功能】 在屏幕指定的行列位置上输入数据。 【说明】 命令中的各选项说明如下: 是指屏幕窗口的位置。 SAY 给出提示信息。 GET 取得变量的值。其中可以是字段变量或内存 变量,如果是字段变量,应先打开表文件,如果是内存变量,应先赋 值。 GET子句必须使用命令READ激活。在带有多个GET子句的命令后, 必须遇到READ命令才能编辑GET中的变量。当光标移出这些GET变 量组成的编辑区时,READ命令才执行结束 。,(2). 其他命令 1)清屏命令CLEAR 【格式】CLEAR 【功能】清除屏幕上的内容。 2)文本输出TEXT与ENDTEXT 【格式】TEXT ENDTEXT 【功能】把TEXT与ENDTEXT之间的文本信息按书写形式的原样显示在屏幕上。 【说明】TEXT与ENDTEXT之间的文本信息可为一行或多行,可以是字符串或汉字 信息。TEXT与ENDTEXT必须成对出现。 【例7-5】 TEXT * * 全国计算机等级考试 * * ENDTEXT,4)返回命令RETURN 【格式】RETURN 【功能】结束当前程序的运行。 【说明】如果当前程序无上级程序,该命令用于结束程序的运行,返回 到命令窗口。如果当前程序是一个子程序,该命令用于结束当前程序运 行,返回到调用该程序的上级程序中。 5)终止程序文件的执行CANCEL 【格式】CANCEL 【功能】该命令可以终止程序执行并关闭所有打开的文件,返回到系统的 命令窗口。 6)退出系统QUIT 【格式】QUIT 【功能】可以终止程序的运行,关闭所有打开的文件,正常退出Visual FoxPro系统,返回到Windows环境。该命令与Visual FoxPro“文件”菜单中 的“退出”命令功能相同。,7.2 顺序结构程序设计,顺序结构是程序中最简单、最常用的基本结构。这种结构的程序运行时,按 程序中命令(语句)书写的先后顺序一条一条地从上至依次执行。 【例7-6】顺序显示学生表(学生.DBF)中的前四条记录,学生表信息 如图7-10所示,图 7-10 学生表内容,程序如下: SET TALK OFF CLEAR & 清屏 USE 学生 DISPLAY & 显示第1条记录 WAIT “按任意键,显示下一个学生的信息“ SKIP & 记录指针下移一条记录 DISPLAY & 显示第2条记录 WAIT “按任意键,显示下一个学生的信息“ SKIP & 记录指针下移一条记录 DISPLAY & 显示第3条记录 ? “现在显示的是第”+STR(RECNO()+“条记录” & 显示“现在显示的是第3条记录” USE SET TALK ON RETURN & 程序结束,【程序说明】 其中 “现在显示的是“+str(recno()+”条记录“ 是一个字符串表 达式 ,该表达式由字符串常量 “现在显示的是第“与字符型函数 str(recno()及字符串常量”条记录“三部分通过 “+“连接而成。 表达式的值为“现在显示的是第3条记录” ,其中3是由函数recno() 获得。,【例7-7】在学生表(学生.DBF)中查找指定学号所对应的该学生, 按格式显示并可修改姓名、性别和出生日期三个字段的信息。 学生表信息如上图7-10所示,程序如下: SET TALK OFF CLEAR USE 学生 ACCEP “请输入学生学号:“ TO xh LOCATE ALL FOR ALLTRIM(学号)=xh 2,2 SAY “*显示学生信息*“ 3,2 SAY “学生姓名:“ GET 姓名 3,20 SAY “性别:“ GET 性别 4,2 SAY “学号:“ GET 出生年月 READ 5,2 SAY “*显示结束*“ USE SET TALK ON RETURN 【程序说明】要求用户从键盘上输入学号。然后执行定位查询语句 找到该学生,然后用定位输出语句显示提示和字段内容。其中特别 要注意函数alltrim()的使用。,7.3 分支结构程序设计,在例7-7中,我们已经能够实现一个简单的查询程序,但该例中没有 对语句“LOCATE ALL FOR ALLTRIM(学号)=xh“的执行情况进行判断, 这里可能存在两种情况:1.该记录存在 2. 该记录不存在。 因此,下面执行的语句将会根据情况的不同而不同。要解决这个问 题,我们将引入新的结构-分支结构。 所谓分支结构,是指在程序执行时,根据不同的条件选择执行不同的 程序语句。Visual FoxPro提供了以下3种分支结构语句: 单向分支语句:IFENDIF 双向分支语句:IFELSEENDIF 多向分支语句:DO CASEENDCASE,1单向分支语句 【命令】IF ENDIF 【功能】首先计算的值,若其值为真,执行命令行序列 中的各条命令,然后执行ENDIF后面的命令;若其值为假,则直接执行 ENDIF后面的命令。 【说明】 (1)单向分支语句的执行流程图见图7-2分图左边所示。 (2)ENDIF是语句结束的标志,不能缺少,【例7-8】输入一个数,如果大于0则显示为正程序如下: INPUT “请输入一个数“ TO num IF num0 ? “该数是正数“ ENDIF WAIT “按任意键结束程序“ RETURN 【程序说明】该程序运行时,要求用户从键盘上输入一个 数,然后程序根据所输入的数判断是否大于0,是的话则 执行语句 ? “该数是正数”,接着顺序执行ENDIF后的语句 WAIT“按任意键结束程序“。,【例7-9】在学生表(学生.DBF)中输入学生学号,如果存在则按格 式显示该学生的姓名、性别和出生日期、入校成绩,并可对出生日期 和入校成绩做修改。学生表信息如上图7-10所示 【程序说明】该程序运行时,要求用户从键盘上输入学号,然后程序 根据所输入的学号在表中查找该学生。如果找到的话(即函数found() 的值为真),就按指定的格式显示并修改该学生的相关信息,程序如下: SET TALK OFF CLEAR USE 学生 ACCEPT “请输入学生学号“ TO xh LOCATE ALL FOR ALLTRIM(学号)=xh IF FOUND() 2,2 SAY “*显示学生信息*“ 3,2 SAY “学生姓名:“+姓名 3,20 SAY “性别:“+性别 4,2 SAY “出生年月:“ GET 出生年月 4,20 SAY “入校成绩:“ GET 入校成绩 ROW()+1 ,COL() SAY “*显示结束*“ READ ENDIF USE SET TALK ON RETURN,2双向分支语句 【命令】 IF ELSE ENDIF 【功能】首先计算的值,若其值为真,执行,然后执行ENDIF后面的命令;若其值为假,执行,然 后执行ENDIF后面的命令。 【说明】双向分支语句的执行流程图如图7-2分支图右边所示。,【例7-10】输入一个数,如果大于0则显示“该数为正”,否则显示“该数 不为正”。程序如下: INPUT “请输入一个数“ TO num IF num0 ? “该数是正数“ ELSE ? “该数不为正” ENDIF WAIT “按任意键结束程序“ RETURN 【程序说明】该程序运行时,要求用户从键盘上输入一个数,然后程序根 据所输入的数判断是否大于0。是的话则执行语句 ? “该数是正数”;否则 执行语句 ? “该数不为正”。接着都会顺序执行ENDIF后的语句wait“按任 意键结束程序“。,【例7-11】在学生表(学生.DBF)中输入学生学号,如果存在则 按格式显示该学生的姓名、性别和出生日期,并将其入校成绩加10 分,否则显示“该学生不存在”。学生表信息如上图7-10所示 【程序说明】该程序运行时,要求用户从键盘上输入待查学生的学 号,然后程序根据所输入的学号在表中查找该学生的记录,如果找 到的话(即:not eof()的值为真),则按格式显示相应记录并将 入校成绩增加10分;若not eof()的值为假,表示未找到,显示信 息“该学生不存在”。本程序中特别要注意replace语句的使用。,程序如下: SET TALK OFF CLEAR USE 学生 ACCEP “请输入学生学号“ TO xh LOCATE ALL FOR ALLTRIM(学号)=xh IF NOT EOF() 2,2 SAY “*显示学生信息*“ 3,2 SAY “学生姓名:“ GET 姓名 3,20 SAY “性别:“ GET 性别 4,2 SAY “出生年月:“ GET 出生年月 ROW()+1 ,2 SAY “*显示结束*“ REPLACE 入校成绩 WITH 入校成绩+10 ELSE ? “该学生不存在“ ENDIF USE SET TALK ON RETURN,【例7-12】在学生表(学生.DBF)和成绩表(成绩1.DBF)中查找指定 学号所对应的该学生,显示其姓名、性别和课程号及成绩四个字段的信息。 两表信息如图7-11所示 【程序说明】本例是针对两表查询的例子,所以在进行操作前首先要建立两 表的关联,同时要注意该例子是针对一对一关系的情况下编写的。,图 7-11 学生表和成绩1表内容,程序如下: SELE 1 USE 成绩1 INDEX ON 学号 TAG xh SELE 2 USE 学生 SET RELATION TO 学号 INTO A ACCEP “请输入学生学号“ TO xh LOCATE ALL FOR ALLTRIM(学号)=xh IF FOUND() DISP FIELDS 姓名,性别,A.课程号,A.成绩 ELSE ? “该学生不存在“ ENDIF CLOSE ALL SET TALK ON RETURN,3. 分支的嵌套 前面我们已经学习了两个语句即单向分支和双向分支语句的使用。两种分 支结构中都有命令序列,如果命令序列中又包含ifendif 语句或if elseendif语句的话,则就是分支的嵌套形式 【例7-13】在学生表(学生.DBF)中输入学生学号,如果不存在则显示 “该生不存在”,否则继续判断是否是1987年后出生,如果是则显示该条 记录,否则显示“该生不满足要求”。学生表信息如上图7-10所示 【程序说明】本程序是ifelseendif语句的两重嵌套,嵌套发生在肯定 部分。另外,应用分支的嵌套可解决例7-8中对输入数的三种判断结果 即:正数、负数和零,读者可自行思考如何实现。,程序如下: SET TALK OFF CLEAR USE 学生 ACCEP “请输入学生学号“ TO xh LOCATE ALL FOR ALLTRIM(学号)=xh IF FOUND() IF YEAR(出生年月)1987 DISPLAY ELSE ? “该生不满足要求” ENDIF ELSE ? “该生不存在” ENDIF USE SET TALK ON RETURN,4多向分支语句 【命令】DO CASE CASE CASE CASE OTHERWISE ENDCASE,【功能】系统将依次判断条件表达式是否为真,若某个条件表达式的值为真, 则执行该CASE段的命令行序列,然后执行ENDCASE后面的命令。当所有CASE 中的值均为假时,如果有OTHERWISE,则执行,然后再执行ENDCASE后面的命令。否则直接执行ENDCASE后面的命令。 【说明】DO CASE-ENDCASE必须配对使用,DO CASE与第一个CASE 之间不应有任何命令。在DO CASE-ENDCASE命令中,每次最多只能执行一 个。在多个CASE的值为真时,只执行第一个值为真的,然后执行ENDCASE的后面的命令。,【例7-14】某公司为了促进销售,采用了购货打折扣的优惠方法,即每位 顾客一次购货款在300元以上,给予九五折优惠;购货款在600元以上给予 九折优惠;购货款在1000元以上给予八五折优惠,编程序,根据优惠的条 件计算每位顾客的应付货款的程序。 问题分析:根据给定的条件,设每位顾客购货款为X,优惠后的应付款为 Y,应付款的计算表达式如下:,【程序说明】程序运行时,首先从键盘输入每位顾客购货款,并存入X变量中,然后依次进行条件判断,当某一条件表达式的逻辑值为真时,就执行下列满足条件的表达式。当CASE的条件都为假时,就执行OTHERWISE下面的命令,然后到ENDCASE后面执行。,程序如下: CLEAR INPUT “输入每位顾客购货款:“ TO x & 从键盘上输入顾客购货款到变量X中 DO CASE & 进入多分支语句 CASE x300 y=x CASE x600 y=0.95*X CASE x1000 y=0.9*X OTHERWISE y=0.85*x ENDCASE ? “每位顾客购货款:“,x ? “优惠后顾客应付款:“,y RETURN,7.4 循环结构,在程序设计中,经常需要对某一个程序段(即一条或多条命令) 反复执行,这种程序结构称为循环结构。循环结构的特点是:当 给出的循环条件为真时,反复执行一组命令,这组被重复执行的 命令序列称为循环体。当循环条件为假时,则终止循环体的执 行。简言之,循环结构就是由循环条件控制循环体是否重复执行 的一种语句结构。 常用的循环语句有以下3种: 条件型循环:DO WHILEENDDO 计数型循环:FORTOENDFOR 扫描型循环:SCANENDSCAN,1条件型循环语句 条件型循环语句是根据的值决定循环体命令的执行次数。 这是一种常用的循环方式,也称为当型循环结构。 【格式】DO WHILE LOOP EXIT ENDDO 【功能】当的值为真时,重复执行DO WHILE与ENDDO之间的,否则结束循环,执行ENDDO后面的命令。为循 环条件,为循环体。 【说明】如果循环体包含LOOP命令,那么当遇到LOOP时,就直接转到DO WHILE处重新判断条件。如果循环体包含EXIT命令,那么当遇到EXIT时,就 结束循环,转到执行ENDDO后面的语句。,2计数型循环语句 计数型循环语句适用于循环次数已知的情况下,它是根据用户设置的循环变量的 初值、终值和步长来决定循环体的执行次数。计数型循环语句又称FOR循环语句。 【格式】 FOR = TO STEP LOOP EXIT ENDFOR | NEXT 【功能】通过比较与来决定是否执行。执行FOR语句时,首先将循环初值赋给循环变量,然后将循环变量与循环终值比较,当为正数时,若的值不大于,执行循环体;当为负数时,若的值不小于,执行循环体。一旦遇到ENDFOR或NEXT语句,值自动加上,然后返回到FOR语句,重新与进行比较。直到循环变量超过或小于循环终值时,结束循环。步长的默认值为1。 【说明】FOR中的循环变量是内存变量。步长值可以是正值,也可以是负值,当步长值为1时,可以省略。步长值不能为0,否则会造成死循环。,3指针型循环语句 指针型循环语句是在数据表中建立的循环,它是根据用户在表中设置的当前记 录指针来对一组记录进行循环操作,是Visual FoxPro中特有的一种循环语句。 【格式】SCAN FOR WHILE LOOP EXIT ENDSCAN 【功能】针对当前表进行循环操作,用记录指针控制循环次数。在指定的中 依次寻找满足 FOR条件或 WHILE 条件的记录,并对找到的记录执行中 的命令。 【说明】SCAN与ENDSCAN循环语句中隐含了EOF()和SKIP处理。表示记录范 围,默认值为ALL。,7.5 子程序、过程与自定义函数,在编制程序时,经常会遇到有些运算或某段程序在程序运行中被多次调用的 情况,为了有效解决上述重复调用,有必要设计相对独立并能完成特定功能 的程序段,这种程序段称为子程序。调用子程序的程序称为调用程序。对于 一个子程序来说,除了被调用以外,还可以调用其他子程序。此时,该子程 序便成为其子程序的调用程序。在一个应用系统中,处于最高层次的调用程 序称为主程序。 1子程序的建立 子程序作为一个独立程序,与其他程序一样可以用MODIFY COMMAND 命令、菜单或项目管理器等多种方法建立和调试,也是以程序文件名.PRG 的形式独立存盘。,2子程序的调用 子程序的调用是通过下面调用语句实现的。 【格式】DO WITH 【功能】调用并执行子程序文件的内容。 【说明】调用程序可以调用任何子程序。子程序还可以调用下一级子程 序,但子程序不能调用自己上层的调用程序。子程序可以返回调用它的 调用程序中,也可以直接返回到主程序中。可选项“WITH ” 的作用是主程序向子程序传递参数。如果选用了WITH项,则子程序的 第一条命令必须是: PARAMETERS 或LPARAMETERS &参数作为局部变量 DOWITH中的参数可以是常量、变量、表达式、函数等,在进行传递时是将它们的值传递到被调用的子程序或过程中。 DO命令可以在命令窗口中执行,也可以放在调用的程序文件中执行。,3子程序的返回 子程序执行后,可以采用下面语句返回到调用程序。 【格式】RETURN TO MASTER 【功能】该语句终止子程序执行,返回到调用程序中调用语句的下一个语句 执行。如无调用程序,则返回命令窗口。若选择TO MASTER选项时, 则直接返回到主程序。 【说明】子程序的一个重要标志是:以RETURN语句作为结束语句,而一 般在主程序和无上一级调用程序的程序尾部用CANCEL语句作为结束语 句。,7.5.2 自定义函数 Visual FoxPro除了提供许多系统函数外,也允许用户自定义函数(User Defined Funtion),简称UDF。自定义函数既可以放在主程序中,只对 主程序有效,也可以作为独立文件保存。在Visual FoxPro中UDF可以分 为:独立UDF和依附UDF。 1独立UDF 独立自定义函数和子程序的区别在于自定义函数必须有返回值。定义格式 如下。 【格式】PARAMETERS 命令序列 RETURN 【功能】建立自定义函数 【说明】RETURN 语句中的值作为返回函数值,它决 定了函数的类型,如缺省该语句,则返回函数值为.T.。,2依附UDF 依附自定义函数不能作为一个独立的程序文件,它以FUNCTION开头,依附在程序的后面或某个过程中。定义格式如下。 【格式】 FUNCTION PARAMETERS 命令序列 RETURN 【功能】定义依附自定义函数 【说明】FUNCTION 在程序里标识UDF的开始并定义函 数名。,7.5.3 过程 把多个子程序合并成一个大的文件,在该文件中,每个子程序仍然是独立的,这 个大的公用程序文件被称作过程文件。其中的每个子程序模块成为过程。在系统 执行过程中,只需打开相应的过程文件即可调用其中的多个过程,从而大大减少 了访问磁盘的次数,可提高程序运行效率。过程文件的扩展名仍然是.PRG。 1过程定义 【格式】PROCEDURE PARAMETERS RETURN ENDPROC 【功能】建立一个过程。 【说明】过程名和过程文件是两个不同的概念,每个过程是具有独立功能的一段 程序,过程名是一个没有扩展名的过程名称。一个过程文件可以由一个或多个过 程构成。 在PROCEDURE与ENDPROC之间如果使用RETURN命令,可以返回到上一层程序。,2调用过程 【格式】DO 【功能】用于调用的程序段。 3过程文件的打开和关闭 调用过程时,首先打开包含被调用过程的过程文件。过程文件使用后需要 及时关闭。 (1)打开过程文件。 【格式】SET PROCEDURE TO 【功能】打开一个过程文件。 (2)关闭过程文件。 【格式】CLOSE PROCEDURE 【功

温馨提示

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

评论

0/150

提交评论