vf结构化程序设计精品PPT课件.ppt

上传人(卖家):三亚风情 文档编号:2754771 上传时间:2022-05-23 格式:PPT 页数:61 大小:554.50KB
下载 相关 举报
vf结构化程序设计精品PPT课件.ppt_第1页
第1页 / 共61页
vf结构化程序设计精品PPT课件.ppt_第2页
第2页 / 共61页
vf结构化程序设计精品PPT课件.ppt_第3页
第3页 / 共61页
vf结构化程序设计精品PPT课件.ppt_第4页
第4页 / 共61页
vf结构化程序设计精品PPT课件.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

1、Visual FoxPro程序设计教程E-mail: 第第9 9章章 结构化程序设计结构化程序设计9 9.1 .1 程序设计基础程序设计基础9 9.2 .2 顺序结构程序顺序结构程序9 9.3 .3 选择结构程序选择结构程序9.4 9.4 循环结构程序循环结构程序9.5 9.5 程序的模块化程序的模块化9.6 9.6 程序调试程序调试 vf执行命令的方式:通过使用菜单或者在命令窗口执行,还有一种程序工作方式:把有关的操作命令组织在一起,存放到一个文件中,发出调用该文件的命令后,vf就可以自动地执行该文件中的命令,直到全部命令执行完毕。9.1程序设计基础 1.程序设计的概念 程序设计:程序设计反

2、映了计算机解决问题的全过程,包含多方面的内容,而编写程序只是其中一个方面。使用计算机解决实际问题,通常先对问题进行分析并建立数学模型,然后考虑数据的组织方式和算法。并用某一种程序设计语言编写程序,最后调试程序使之产生预期的结果。 拿到一个实际问题后,应对问题的性质与要求进行深入分析,从而确定求解问题的数学模型或方法,接下来进行算法设计并画出流程图。有了算法流程图,在来编写程序时很容易的事。所以编写程序之前,先要把解决的问题分析清楚 例如,在学生表中,需要按照学号查询学生的姓名和入学成绩。根据表操作的有关知识,很容易写出算法: (1)打开学生表 (2)输入待查学生的学号 (3)查找学号所对应的记

3、录 (4)显示该记录的学号、姓名和入学成绩 用计算机解决问题时,用计算机解决问题时,必须先确定算法,然后根据算法编写程必须先确定算法,然后根据算法编写程序,最后通过运行程序来达到解决问题的目的序,最后通过运行程序来达到解决问题的目的。算法的概念算法的概念 做做任何事任何事都有一个过程(应有序)。都有一个过程(应有序)。 即在允许的范围内进行有步骤的若干个操作序列。即在允许的范围内进行有步骤的若干个操作序列。 如学生考试:如学生考试: 进入考场,按指定座位入座;进入考场,按指定座位入座;填写考生相关信息;填写考生相关信息;答题;答题;检查;检查;如有错,则修改;如有错,则修改;交卷。交卷。 这种

4、事先设计出这种事先设计出“行动步骤行动步骤”即解题操作序列称之为算法。通即解题操作序列称之为算法。通俗地说,俗地说,算法就是在规定的环境下,为解决某一问题而采取的方算法就是在规定的环境下,为解决某一问题而采取的方法和步骤。法和步骤。 实际应用中,需要按照流程图描述算法,显得直观、简洁。流程图有一般流程图、N-S图等。一般流程图用菱形框表示判断,用矩形框表示进行某种处理,用流程线将各步操作连接起来。也可以用其它形式的流程图描述算法。 2.程序的控制结构 任何程序都由3种基本控制结构组成。即顺序结构、选择结构和循环结构 (1)顺序结构 顺序结构是程序设计中最基本、最常见的结构。顺序结顺序结构是程序

5、设计中最基本、最常见的结构。顺序结构的程序始终是按照语句排列的构的程序始终是按照语句排列的先后顺序从上到下逐条顺序先后顺序从上到下逐条顺序执行执行。 (2) (2)选择结构选择结构 利用计算机具有逻辑判断能力的特点,根据不同的逻辑利用计算机具有逻辑判断能力的特点,根据不同的逻辑条件转去执行不同的程序语句,这些不同的转向语句就构成条件转去执行不同的程序语句,这些不同的转向语句就构成了分支结构。了分支结构。 (3) (3)循环结构循环结构 具有重复操作功能的程序称为循环结构程序。在编制程序时,重复操作的语句不必重复编写,只要用循环结构的方法来处理,便能实现重复操作。重复执行的部分称为循环体。循环结

6、构分为当型循环和直到型循环。各种结构如p135 当型循环先判断条件是否满足,当条件P满足时反复执行A程序块,每执行一次测试一次P,直到P不满足为止,跳出循环体执行它下面的基本结构 直到型循环先执行一次循环体,在判断条件P是否满足,如果不满足则反复执行循环体,直到P满足为止。 两种循环结构的区别在于: 当型循环结构是先判断条件,后执行循环体,而直到型循环结构是先执行,后判断。直到型循环结构至少执行一次循环体,而当型循环可能一次也不执行循环体。 3.结构化程序设计方法 结构化程序设计方法是被普遍采用的一种程序设计方法,是软件开发的重要方法,用这种方法设计的程序结构清晰,易于阅读和理解,便于调试和维

7、护 结构化程序设计方法采用自顶向下、逐步求精和模块化的分析方法。 自顶向下:指对设计的系统有一个全面的理解,从问题的全局入手,把一个复杂的问题分解成若干个相互独立的子问题,然后对每一个子问题做进一步的分解,如此重复,直到每个问题解决为止。 逐步求精:程序设计的过程是一个渐进的过程,先把一个子问题用一个程序模块来描述,在把每一个模块的功能逐步分解细化为一系列的具体步骤,以至于能有某种程序设计语言的基本控制语句来实现。逐步求精总是和自顶向下结合使用,一般把逐步求精看做自顶向下设计的具体体现。 模块化是结构化程序设计的重要原则,所谓模块化就是把大程序按照功能分为较小的程序。一般来说,一个程序是由一个

8、主控模块和若干个子模块组成的。主控模块是用来完成某些公用操作及功能选择,而子模块是用来完成某项特定功能。一个复杂的问题可以分解成若干个简单的子问题来解决。这种设计风格,便于分工合作,讲一个庞大的模块分解成若干个子模块分别完成,然后用主控模块控制、调用子模块。模块化结构如P136 总之,结构化程序设计过程就是将问题求解由抽象逐步具体化的过程。这种方法符合人们解决复杂问题遵循的普遍规律,可以显著提高程序设计的质量和效率。 4.程序文件的建立与执行 在在VFPVFP中,程序是保存在一个扩展名为中,程序是保存在一个扩展名为.prg.prg的程序文件中,通过调的程序文件中,通过调用和执行该程序文件来运行

9、程序。用和执行该程序文件来运行程序。I.I.建立程序文件建立程序文件 可用如下操作之一:可用如下操作之一: 菜单方式:菜单方式: “ “文件文件”“”“新建新建”“”“程序程序”“”“新建文件新建文件”按钮。按钮。 常用工具:常用工具: “ “新建新建”按钮按钮“程序程序”“”“新建文件新建文件”按钮。按钮。 项目管理器:项目管理器: 选选“代码代码”卡卡“程序程序”项项 “ “新建新建”按钮。按钮。 命令:命令: MODIFY COMMAND MODIFY COMMAND | |? MODIFY FILE MODIFY FILE | |?之后,系统打开程序文件编辑窗口依次输入程序代码。之后,

10、系统打开程序文件编辑窗口依次输入程序代码。 说明: (1)程序文件类型: .prg (可省略)。命令为file时不能省略扩展名 (2)保存文件的路径:用户指定或建立在VFP默认文件夹下。 (3)文件名中可以包含通配符*和?,与文件名相匹配的文件都会被打开,都拥有自己的编辑窗口,用户可以通过“窗口”菜单来选择所需要的窗口,最好在命令后加入文件名,可以直接建立或修改给出的文件,以后不需要在存盘时在输入文件名。(4)文件名将显示在“程序窗口”标题栏的左侧。 II.II.运行程序文件运行程序文件 命令方式:命令方式: DO DO 菜单方式:菜单方式: “ “程序程序”菜单菜单“运行运行”命令。命令。

11、工具方式工具方式( (在程序打开的状态在程序打开的状态) ): 单击常用工具栏的程序运行按钮单击常用工具栏的程序运行按钮 ! 或或 按组合键按组合键 CTRL+E CTRL+E 。 如果程序不带扩展名,如果程序不带扩展名,vfvf将会按下列顺序寻找并执行这些程序:将会按下列顺序寻找并执行这些程序:可可执行文件(执行文件(.exe).exe)、应用程序、应用程序(.app)(.app)、编译后的目标程序文件、编译后的目标程序文件(.fxp(.fxp)、)、程序文件程序文件(.prg)(.prg)III.代码颜色 VFP系统默认在程序代码中以绿色表示命令注释绿色表示命令注释;蓝色表蓝色表示命令关键

12、字示命令关键字;黑色;黑色表示非命令关键字或者用户自定义使用的字符;红色则表示有语法错误的程序代码红色则表示有语法错误的程序代码,提醒用户进行改正。如果用户要重新设置代码颜色,可以选择VFP系统“工具”菜单下面的“选项”命令,打开“选项”对话框,在“语法着色”选项卡中进行自定义设置。 IV. 常用的命令当程序文件被执行时,文件中包含的命令将被依次执行,直到所有的命令被执行完毕。但当执行到程序文件中的以下命令时会终止执行或改变执行循序:lCANCAL:终止程序运行,清除所有的私有变量,返回命令窗口。lDO:转去执行另一个程序。lRETURN:结束当前程序的执行,返回到调用它的上级程序,若无上级程

13、序则返回命令窗口。QUIT:退出Visual FoxPro系统,返回到操作系统9.2 顺序结构程序程序文件中的一些辅助命令程序文件中的一些辅助命令I注释语句注释语句(1)程序注释语句程序注释语句格式:格式:NOTE 或或 * 功能:注释说明。其后内容不需要用定界符定界,执功能:注释说明。其后内容不需要用定界符定界,执行时也不显示。要单独成行。行时也不显示。要单独成行。(2 2)语句行注释语句行注释格式:格式:& & 功能:对语句进行注释。功能:对语句进行注释。 不可单独成行,须写在某语句之后不可单独成行,须写在某语句之后 。II状态设置命令状态设置命令(1 1)设置会话状态设置会话状态格式:格

14、式:SET TALK ON|OFFSET TALK ON|OFF功能:是否关闭系统交互对话方式(默认打开的)。功能:是否关闭系统交互对话方式(默认打开的)。(2 2)设置屏幕状态设置屏幕状态格式:格式:SET CONSOLE ON|OFFSET CONSOLE ON|OFF功能:是否显示键盘的输入内容(默认是显示的)。功能:是否显示键盘的输入内容(默认是显示的)。 如果要求输入的内容保密设置如果要求输入的内容保密设置 OFF OFF状态。状态。 (3)设置缺省驱动器和目录格式:SET DEFAULT TO 功能:设置输入/输出操作的缺省驱动器和目录。 缺省时为当前目录。例:若打开或保存的文件都

15、在D盘下的AA文件夹中,则可用命令: SET DEFAULT TO D:AA (4)设置独占方式 格式:SET EXCLUSIVE ON|OFF 功能:设置是否以独占方式打开表文件(默认独占)。 (5)设置字符精确匹配 格式:SET EXACT OFF|ON 功能:设置是否完全匹配(默认不完全匹配)。 决定字符串比较符“=”两边内容是否完全匹配。III.输入输出命令i.程序输出命令 (1)格式:?/? (2)功能:该命令可以对进行求值,并将结果输出到系统屏幕中,其中“?”表示换行显示结果,“?”则表示在同一行显示结果。? 今天是, date()ii. 程序输入命令 1)Accept命令 (1)

16、格式:Accept To (2)功能:在VFP屏幕当前光标处显示的内容,等待用户的输入,按回车表示输入结束,系统会将用户输入的内容以字符串的形式存储在中。 Accept命令只能接受输入字符型数据,内容最多为256个字符,输入内容时不需要加字符定界符。 Accept 请输入内容: to xyz?你输的内容是:,xyz 2)Input命令 (1)格式:Input To (2)功能:Input命令与Accept命令功能基本相同,都是在VFP屏幕当前光标处显示的内容,等待用户的输入,按回车表示输入结束,系统会将用户输入的内容作为一个表达式进行处理,计算表达式的值,并将其存储在中。与Accept命令不同

17、的是,Input命令允许输入各种类型的数据。 Input 请输入内容: to xyz ?你输的内容是:,xyz Input命令也可以输入是字符型, 逻辑型、日期型数据,但需加定界符 字符型 (“ ” ) 逻辑型 (.t. .f.) 日期型 ( 1990-09-09 ) 默认使用严格日期格式,在输入时也可用ctod将字符型的转换成日期型iii.Say命令 (1)格式:SayGetDefault (2)功能:该命令表示在屏幕窗口的指定位置中输出Say子句中的内容,等待用户的输入,按回车表示输入结束,系统会将用户输入的内容存储在Get中。 必须使用必须使用read命令激活当前所命令激活当前所有有ge

18、t变量。变量。 5,10 say 输入半径: get R default 0readS=3.14*R*R? 圆的面积是:,S4)Wait命令 (1)格式:WaitToWindowsAt,NowaitClear NoclearTimeout (2)功能:在VFP程序文件的执行过程中,遇到Wait代码时暂停执行,并显示Wait指定的信息,用户按任意键或者单击鼠标后可以继续执行程序文件。Wait 谢谢使用VF系统! Wait 谢谢使用VF系统! windows Wait 谢谢使用VF系统! windows at 5,5WaitIV.顺序结构程序 顺序结构是程序设计中最基本、最常见的结构。顺序顺序结构

19、是程序设计中最基本、最常见的结构。顺序结构的程序始终是按照语句排列的先后顺序从上到下逐条结构的程序始终是按照语句排列的先后顺序从上到下逐条顺序执行。顺序执行。 例例. .在学生表中,按照学号查询学生的姓名和入学成绩在学生表中,按照学号查询学生的姓名和入学成绩 CLEAR CLEAR SET TALK OFF SET TALK OFF USE USE 学生学生 ACCEPT ACCEPT 请输入待查学生的学号请输入待查学生的学号: to bh: to bh LOCATE FOR LOCATE FOR 学号学号=bh =bh &查找学号为查找学号为bhbh的记录的记录 DISP DISP 学号学号

20、, ,姓名姓名, ,入学成绩入学成绩 USE USE SET TALK ON SET TALK ON RETURN RETURN 9.3 选择结构程序 在解决实际问题中,往往需要根据给定的条件来在解决实际问题中,往往需要根据给定的条件来决定应采取的处理方法。利用计算机具有逻辑判断能决定应采取的处理方法。利用计算机具有逻辑判断能力的特点,根据不同的逻辑条件转去执行不同的程序力的特点,根据不同的逻辑条件转去执行不同的程序语句,这些不同的转向语句就构成了分支结构。语句,这些不同的转向语句就构成了分支结构。1简单判断语句(IFENDIF) 格式: IF ENDIF 功能:先判断条件表达式的值,当其值为

21、真时,则执行IF和ENDIF之间的命令序列;反之则转去执行ENDIF语句之后的语句。说明:可以是各种表达式的组合,如关系表达式、逻辑表达式或者其他逻辑量。但表达式的返回值只能是逻辑值.T.或.F.。2二路选择分支结构(二路选择分支结构(IFELSEENDIF)格式:格式:IF ELSE ENDIF功能:功能:先判断先判断,若其值为真,则执行,若其值为真,则执行,然后转去,然后转去执行执行ENDIF之后的语句;若其值为假,则执行之后的语句;若其值为假,则执行,然后转去执行,然后转去执行ENDIF之后的语句之后的语句。 条件条件?满足执行满足执行YN不满足执行不满足执行例 根据输入的学生姓名,在学

22、生表中查找学生记录 SET TALK OFF &执行程序时,要求会话处于断开状态 USE 学生 name=space(8) 10,5 SAY请输入学生姓名: GET name READ LOCATE FOE 姓名=name &在学生表中查找该记录 IF FOUND() DISPLAY &找到了,输出该记录 ELSE 12,5 SAY对不起,该单位无此人! ENDIF SET TALK ON &程序执行完后,会话状态打开 USE RETURN3分支结构的嵌套分支结构的嵌套格式如下:格式如下:IFIF1 IF IF2 ELSE ELSE ENDIF ENDIF ENDIFENDIF 注意:IF分支

23、结构中IF和ENDIF语句必须成对出现,缺一不可。系统在执行分支结构的嵌套时,由IF语句的最内层开始,逐层将IF和ENDIF配对。4多路分支选择结构多路分支选择结构格式:格式:DO CASEDO CASE CASE CASE 1 1 CASE CASE 2 1 CASE CASE n n OTHERWISE OTHERWISE n+1ENDCASEENDCASE功能: 在执行DO CASE语句时,依次判断各的值是否为真,若为真,则执行CASE语句下的语句序列,直到遇到下一个CASE、OTHERWISE或ENDCASE。 条件可以为关系表达式、逻辑表达式或其他逻辑量。DO CASE-ENDCAS

24、E结构语句功能流程:条件条件1语句语句1YN条件条件2语句语句2YN条件条件3语句语句3YN语句语句N+1N例在学生表中,查询周文杰的记录,根据性别和年龄确定参加运动会的项目SET TALK OFFUSE 学生LOCATE FOR 姓名=周文杰IF .NOT.EOF() &指针不是位于表尾时,开始搜索记录 DO CASE CASE 性别=男 ?请参加拔河比赛 CASE 性别 =女 AND YEAR(date()-YEAR(出生日期)25 ?请参加投篮比赛 CASE 性别 =女 AND YEAR(date()-YEAR(出生日期)=25 ?请参加1500米比赛 END CASE ELSE ?无此

25、学生END IFSET TALK ONRETURN9.4 循环结构程序 在处理实际问题中,常常需要重复执行某些相同的程序段。具有重复操作功能的程序称为循环结构程序。在编制程序时,重复操作的语句不必重复编写,只要用循环结构的方法来处理,便能实现重复操作。Visual FoxPro提供了条件循环、计数循环和扫描循环等循环语句。 1条件循环DO WHILEENDDO语句 在编程时,若不知道要重复执行多少次操作,则可设置一个条件,当条件的值为真时就循环,反之则退出循环。 DO WHILE EXIT LOOP ENDDO 说明: (1)DO WHILE 称循环入口语句,也称循环出口语句。ENDDO语句会

26、自动将程序返回DO WHILE语句,再对进行判断。 (2)有选项LOOP时,程序将无条件地返回到DO WHILE语句,重新判断的值,LOOP:无条件循环命令 (3)有选项EXIT时,程序将无条件地退出循环,转去执行ENDDO后面的语句,退出DO WHILE 循环,EXIT:无条件结束循环命令 功能:先判断的值,当的值为真时,反复执行DO WHILE与ENDDO之间的循环体语句,直到的值为假时退出循环,转去执行ENDDO之后的语句 注意:(1)在循环前,必须先对循环变量赋初值。(2)在循环内,必须有一条能改变循环变量值的语句,以保证循环能够结束。(3)当DO WHILE 后的为逻辑常量.T.时,

27、在循环体中一定要有EXIT语句,以保证能退出循环。 条件条件?重复内容含改变条件重复内容含改变条件YN【例】从键盘输入一正整数N,编程计算S=1+2+3+N的值。分析:(1)键盘输入:用INPUT实现;(2)重复相加(循环内容) :一般采用重复执行累加的方法来求和。先进行1+2,再加3,再加4, ; 即用累加器形式: S=S+X ;(3)初值问题:X为1、S为0 ;(4)终值问题(即循环条件):X小于或等于键盘上输入的数 ;(5)改变循环条件的语句:X=X+1 (是循环内容);(6)输出问题:?S (体现在循环外)。程序代码如下:SET TALK OFFCLEARINPUT 请输入一个正整数:

28、 TO NX=1S=0DO WHILE X=N & 条件X小于等于输入的N S=S+X & 累加求和 X=X+1 & 求下一个X的值ENDDO ?SSET TALK ON 说明:(1)循环变量名由用户自行定义。(2)初值、终值和步长值可以是常量、变量或表达式。(3)当终值大于初值时,步长应为正,反之则为负,若省略步长,则默认为1。(4)执行FOR语句时,先用循环变量值与终值比较,若不超过终值,则执行循环体,反之则退出循环;退出循环时,循环变量值等于最后一次循环时的值加上一个步长值。(5)当执行到ENDFOR语句时,循环变量自动增加一个步长并返回FOR语句 2计数循环FORENDFOR语句 若已

29、知循环的次数及循环变量的步长,使用FOR循环会比DO WHILEENDDO循环更方便。 格式:FOR = TO STEP ENDFOR 功能:功能:从循环变量的从循环变量的开始,重复执行循环体内的开始,重复执行循环体内的语句,每执行完一次,循环变量自动增加一个语句,每执行完一次,循环变量自动增加一个值,值,若循环变量值不超过若循环变量值不超过,则继续循环,反之则退出循,则继续循环,反之则退出循环环。 说明:(1)循环变量名由用户自行定义。(2)初值、终值和步长值可以是常量、变量或表达式。(3)当终值大于初值时,步长应为正,反之则为负,若省略步长,则默认为1。(4)执行FOR语句时,先用循环变量

30、值与终值比较,若不超过终值,则执行循环体,反之则退出循环;退出循环时,循环变量值等于最后一次循环时的值加上一个步长值。(5)当执行到ENDFOR语句时,循环变量自动增加一个步长并返回FOR语句 例 判断以下for循环执行结果 FOR k=1 TO 6 STEP 2 j=k NEXT ?j,k &程序的输出值是5 7 3.扫描型循环SCANENDSCAN语句 处理表循环的专门语句结构,以实现对表记录的逐条扫描操作。 有的操作需要对表中的记录逐条进行。用DO WHILE循环处理时,每循环一次,都要用条件“.NOT.EOF()”来测试记录指针是否到文件尾,并且在循环体中还要用命令SKIP来向下移动记

31、录指针。用SCANENDSCAN可以简化循环的操作步骤。格式:SCAN 范围FOR ENDSCAN 功能:功能:在当前表中对指定范围、满足条件的记录进行在当前表中对指定范围、满足条件的记录进行逐个记录的扫描操作,扫描结束自动退出循环逐个记录的扫描操作,扫描结束自动退出循环。 SCAN循环执行流程如下图:循环执行流程如下图: 说明:(1)循环时能自动向下移动指针,直至文件尾。(2)若指定了范围和条件,则对指定范围、满足条件的记录作扫描操作,若缺省范围和条件,则对所有记录进行扫描。(3)选项LOOP和EXIT的功能与DO WHILE循环结构相同。是表尾?是表尾?重复内容自带重复内容自带SKIPNY

32、 例 对学生表分别统计少数民族男、女学生的人数 CLEAR STORE 0 TO x,y USE 学生 SCAN FOR 少数民族否 IF 性别=男 x=x+1 ELSE y=y+1 ENDIF ENDSCAN ?少数民族男生有:+STR(x,2)+人 ?少数民族女生有:+STR(y,2)+人 USE RETURN &没有上级程序,则返回到命令窗口 9.5 程序的模块化 I.子程序 (1 1)概念概念 子程序是独立于主程序之外的一个程序文件。子程序是独立于主程序之外的一个程序文件。 (2 2)创建方法创建方法与建立程序文件的方法相同,扩展名仍是与建立程序文件的方法相同,扩展名仍是.prg.pr

33、g。 (3 3)作用作用 利用子程序,可以简化程序中多处重复出现完成相同利用子程序,可以简化程序中多处重复出现完成相同功能的程序段的设计问题,功能的程序段的设计问题, 在程序运行中,子程序可被多次调用。在程序运行中,子程序可被多次调用。 格式: DO WITH i.子程序的调用(出现在上级程序的语句) 格式: DO WITH 功能: 在程序中运行到该语句时,转去执行指定的子程序,执 行结束后返回到调用语句的下一条语句继续往下运行。若选择WITH ,则将指定的参数传递到子程序中供其使用。 ii.子程序的返回(出现在子程序最后的语句)格式:RETURN TO MASTER功能:RETURN将返回到

34、主程序调用语句的下一条语句继续执行其他语句;RETURN TO MASTER将返回到最高层调用处。说明:在子程序运行中,若遇到以下情况都能自动结束并返回主程序:RETURN、RETRY、CANCEL、子程序的末尾。当遇到QUIT命令时,返回主程序后退出Visual FoxPro系统。 II.II.过程过程 在一个系统模块中,子程序存放在分散的程序文件中,虽然方便编辑和维护,但系统运行时,需要打开多个子程序文件,这样既增加了运行时间,又降低了系统运行效率。引入过程程序设计,可以弥补上述不足。1.过程的概念 过程是由PROC和ENDPROC包围的程序段。它与子程序的功能相同,即把具有相对独立功能的

35、常用代码集中在一起,供主程序在需要时调用。其基本格式为:PROCEDURE ENDPROC 过程可以独立保存在一个过程文件中,也可以放在主程序的后面。包含过程的文件称为过程文件,过程文件中的过程可以被多次调用。 过程文件的格式为:PROCEDURE ENDPROCPROCEDURE ENDPROCPROCEDURE ENDPROC2过程文件的调用 (1)过程文件的打开(出现在上级程序中) SET PROCEDURE TO (2)过程文件的关闭(出现在上级程序中) SET PROCEDURE TO 或 CLOSE PROCEDURE (3)过程的调用(出现在上级程序中) DO 过程名 WITH

36、(4)接收参数(出现在过程程序中) PARA 注意:在调用过程文件之前必须先打开过程文件,但若过程包含在主程序中,则可直接调用。子程序与过程的区别:(1)子程序只能独立存在于一个程序文件中,在主程序中可以直接调用;(2)过程可与主程序放在同一个文件中。此时在主程序中可能直接调用;(3)过程也可独立于主程序之外,即放在一个过程文件中。此时则须先打开过程文件再调用。 III.III.自定义函数自定义函数 按一定格式、由用户定义(编写)的、可供主程序调按一定格式、由用户定义(编写)的、可供主程序调用的程序段称为自定义函数。用的程序段称为自定义函数。1自定义函数的建立自定义函数的建立格式:格式: FU

37、NCTION ENDFUNC功能:将包含的功能:将包含的定义为函数,并为其指定一个定义为函数,并为其指定一个函数名。函数名。 说明:(1)的首条语句一般为: PARAMETERS 用于指定接收参数的变量名。(2) 的最后一条语句必须为: RETURN 当函数返回主程序时,函数值通过RETURN后的参数传递给主程序中的调用函数。(3)自定义函数要保存在一个独立的程序文件中。主程序调用自定义函数时,必须先用命令: SET PROC TO 打开该函数所在的程序文件。 2自定义函数的调用 格式:函数名() 功能:返回自定义函数的函数值。 说明调用自定义函数步骤: (1)须先在主程序中通过命令“SET

38、PROC TO ”打开包含自定义函数的程序文件; (2)再由“函数名()”的格式获得函数值。例如,若定义了一个求圆面积的函数为SA(R),当求半径为50的圆面积可直接由?SA(50)而得出结果 IV.参数传递与作用域 在一个系统模块的运行过程中,主程序与子程序之间通过相互传递参数来完成整体上的运行。一般主与子之间参数传递通过: (1)内存变量的作用域属性。 (2)命令 DO WITH1用内存变量作用域属性传递参数用内存变量作用域属性传递参数 VFP VFP中,内存变量具有中,内存变量具有4 4种作用域属性:自然属性、公种作用域属性:自然属性、公用属性、私有属性和本地属性。用属性、私有属性和本地

39、属性。(1 1)自然属性自然属性 在程序中在程序中没有特别声明没有特别声明过,只是通过赋值或数组定义过,只是通过赋值或数组定义出现的变量都是自然属性的内存变量。出现的变量都是自然属性的内存变量。具有以下特点:具有以下特点: 作用范围作用范围:作用于定义该变量的程序及其下属的:作用于定义该变量的程序及其下属的子程序。子程序。 传递方向传递方向:单向(主:单向(主子)传递。子)传递。 变量寿命变量寿命:主程序运行结束该变量被自动删除。:主程序运行结束该变量被自动删除。 2)公用属性 自然属性的变量受作用域、传递方向和使用寿命的限制,不能使变量在整个系统模块中共享。 VFP为用户提供了一种能在系统模

40、块的所有程序中使用的变量,这种能被所有程序共享的变量,称为具有公用属性的内存变量。有以下特点: 声明格式:PUBLIC ALL LIKE /EXCEPT 作用范围:系统模块中的所有程序。 传递方向:双向(主子);调用时将变量值带入,返回时带回最后改变的值。在任一级程序都可定义,上级或下级都能传递。 变量寿命:主程序运行结束仍保留在内存中。说明: 已用其他方法定义的变量不能再用PUBLIC定义,公共变量的初值为.F.。 在子程序中定义的公共变量返回主程序时其值也能被带回。 中可以包括普通变量,也可以包括数组变量(P155) 任何全局变量必须先定义,后赋值 使用ALL选项时,定义所有内存变量,使用

41、ALL LIKE时,定义所有变量名与匹配的内存变量,使用ALL EXCEPT时,定义所有变量名不与通配符匹配的内存变量。通配符中有?和* 全局变量在程序结束时不释放,即使主程序也是这样 在命令窗口中建立的所有内存变量或者数组自动定义为全局型(3)私有属性 有时用户希望变量能在其所有的下属子程序中使用,而不希望与上级主程序共享,并且可以与上级主程序定义的变量同名,在运行时彼此不受影响。为实现这一目的,Visual FoxPro为用户提供了一种称为具有私有属性的内存变量。有以下特点: 声明格式:PRIVATE 或PRAVITE ALL LIKE /EXCEPT ALL指上级程序中的所有变量都被屏蔽

42、。 作用范围:该程序及下级子程序。 传递方向:主子,与自然属性的变量相同。 (4)本地属性 有时用户需要变量只能在一个子程序或过程中使用,而不希望被上级主程序或下级子程序共享,运行时,当与上级主程序或下属子程序同名时,彼此不会受影响(即当与上级程序同名时,屏蔽上级程序中的同名变量值,当与下级程序同名时,则保持其原有的值)。这种类似于私有属性又不影响下属子程序中同名变量的属性称为本地属性。具有以下特点: 声明格式:LOCAL 作用范围:该程序本身。 传递方向:无。 变量寿命:程序运行结束被自动删除。 特殊作用:可屏蔽上级程序与当前程序同名的变量,同时也不受下属子程序中同名变量的影响。若在一个程序

43、中出现同一个变量具有两种属性,则赋值时相互不受影响。 注意:(1)不能在一个子程序或过程中重复定义,但在上级程序中用PUBLIC和PRIV定义过的变量仍可在子程序或过程中用LOCAL定义;(2)用LOCAL定义的变量初值为.F.。 2.用DO命令传递参数 用内存变量属性传递参数时,要求主、子程序使用的变量名一定要相同。若不想受变量名的限制,可用调用命令来传递参数。(1)传递参数 格式:DO WITH 说明:WITH后的参数可以是常量、变量或表达式。(2)接收参数的命令格式 格式:PARAMETERS 说明:PARAMETERS后的参数只能是变量名。 注意: 传递参数的命令可以位于主程序中的任意

44、位置; 接收参数的命令必须出现在子程序或过程中可执行命令的第一行(3)参数传递的方式 有两种:即引用传递和值传递。i.引用传递(也称址传递) 当WITH后为内存变量名时,则每个变量的值传给PARA中的对应变量,且随子程序中的对应变量的变化而变化。 子程序返回主程序时,将传回最后改变的变量值。ii.值传递 当WITH后为常数、表达式或圆括号括起来的内存变量时,每个表达式的值传给PARA中的对应变量,但其值不随子程序中的对应变量的变化而变化。 程序返回主程序时,最后改变的变量值将不传回。 在自定义函数中,默认的参数传递方式是值传递方式。要改变参数的传递方式,需要使用命令: SET UDFPARMS

45、 TO VALUE |REFERENCE 功能:该命令用于设置参数传递方式。选择VALUE,按值传递方式传递参数,选择REFERENCE,按地址传递方式传递参数。 例.写出下列程序的输出 SET TALK OFF x=1 y=3 DO sub WITH x,(y),5 &传递了三个参数x,y,5;x是地址传递方式,y是值传递方式,5是常量 ?x,y RETURN PROCEDURE sub PARAMETER a,b,c a=a+b+c b=a+b-c RETURN 学习程序设计方法后,将用程序的方法来对表内容进行操作。其思想就是将在命令窗口中对表操作的步骤及使用的命令按编程的规则写到程序文件

46、中,通过运行程序文件来实现对表内容的操作。 对表内容进行的基本操作有:打开表文件、输入表记录、移动数据记录指针、查询和显示表记录、修改或删除表记录等。涉及到的操作命令有:USE、LIST、LOCATE、GO、APPEND、DELETE和REPLACE等。 9.6 程序调试 程序设计是一项创造性的劳动,编好的程序难免会有这样那样的错误以及许多考虑不周的地方,所以程序的调试在程序设计中有非常重要的地位。vfp提供了功能强大的调试工具-调试器,可以帮助用户进行程序调试工作1.程序调试概述 程序调试首先确定程序出错的位置,然后加以改正,一直到满足预定的设计要求为止。程序调试往往是先分模块调试,当各模块

47、都调试通过后,在联合起来调试,通过联调后,便可试运行,试运行无误既可投入正常使用, 程序的错误有两类:语法错误和逻辑错误。语法错误相对容易发现和修改,当程序运行出现此类错误时,vfp会自动中断程序的运行,并弹出编辑窗口,显示出错的命令行,给出错误的信息,这时可以方便的修改错误,逻辑错误就不那么容易发现了,这类错误是系统无法确定的,只有由用户自己来查错。需要跟踪程序的运行,在动态执行过程中监视并找出程序中的错误。 语法错误:指不符合语法规则产生的错误。例如,表达式不完整、缺少必要的标点符号、关键字输入错误、数据类型不匹配、循环语句或选择语句的关键字不匹配等。通常,编译器对程序进行编译的过程中,会

48、把检测到的语法错误以提示的方式列举出来,又称为编译错误。语法错误的调试,可以通过集成开发环境提供的调试功能来实现,在程序进行编译时,编译器会对程序中的语法错误进行诊断。编译诊断的语法错误分为三种:致命错误、错误和警告 逻辑错误:程序运行后,没有得到设计者预期的结果。这说明程序存在逻辑错误。这种错误在语法上是有效的,但是在逻辑上是错误的。例如:使用了不正确的变量,指令的次序错误,循环的条件不正确,程序设计的算法考虑不周全等。通常,逻辑错误也会附带产生运行错误,在一般情况下,编译器在编译程序时,不能检测到程序中的逻 辑错误,也不会产生逻辑错误的提示,因此逻辑错误比较难排除,需要程序员仔细的分析程序

49、,并借助集成开发环境提供的调试工具,才能找到出错的原因,并且排除错误 2.调试器窗口 工具-调试器命令或者在命令窗口输入DEBUG命令,系统就可以打开调试器窗口 包括5个窗口 (1)跟踪窗口 (2)监视窗口 (3)局部窗口 (4)调用堆栈窗口 (5)调试输出窗口3.设置断点 调试器窗口中包括4种类型的断点: p 经常不断地学习,你就什么都知道。你知道得越多,你就越有力量p Study Constantly, And You Will Know Everything. The More You Know, The More Powerful You Will Be写在最后谢谢你的到来学习并没有结束,希望大家继续努力Learning Is Not Over. I Hope You Will Continue To Work Hard演讲人:XXXXXX 时 间:XX年XX月XX日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(vf结构化程序设计精品PPT课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|