第6章程序设计基础_第1页
第6章程序设计基础_第2页
第6章程序设计基础_第3页
第6章程序设计基础_第4页
已阅读5页,还剩77页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

1、第第6章章 程序设计基础程序设计基础6.1 6.1 程序文件的建立与运行程序文件的建立与运行6.2 6.2 结构化程序设计初步结构化程序设计初步6.3 6.3 顺序结构程序设计顺序结构程序设计6.4 6.4 程序的选择结构程序的选择结构6.5 6.5 循环结构循环结构6.6 6.6 多模块程序设计多模块程序设计6.7 6.7 参数传递与变量作用域参数传递与变量作用域 教学目的教学目的 了解面向过程的程序设计方法,结构化程序设计的三种基本了解面向过程的程序设计方法,结构化程序设计的三种基本结构,子程序和过程的使用方法。结构,子程序和过程的使用方法。 基本要求基本要求 通过对三种结构的学习,可以进

2、行简单的程序设计通过对三种结构的学习,可以进行简单的程序设计 教学要点教学要点 循环嵌套,模块调用,变量的作用域。循环嵌套,模块调用,变量的作用域。 6.1 6.1 程序文件的建立与运行程序文件的建立与运行 程序:程序:为完成某一特定任务而组织编写的一系列命令为完成某一特定任务而组织编写的一系列命令和语句。和语句。程序文件:程序文件:程序以文件的形式存放于磁盘上,这个文件就称程序以文件的形式存放于磁盘上,这个文件就称为程序文件。为程序文件。(1 1)命令方式)命令方式: MODIFY COMMAND : MODIFY COMMAND |? 或或MODIFY file MODIFY file |

3、? |? 6.1.2 VFP6.1.2 VFP程序文件的建立与执行程序文件的建立与执行1.1.程序文件的建立(默认扩展名为程序文件的建立(默认扩展名为. .PRGPRG) 第一条命令中,文件的默认扩展名为第一条命令中,文件的默认扩展名为.PRG.PRG,可省略,第,可省略,第二条命令中,建立程序文件时文件扩展名二条命令中,建立程序文件时文件扩展名.PRG.PRG必须同时输必须同时输入,不能省略。入,不能省略。 在文件名前可直接指明该文件保存的路径。在文件名前可直接指明该文件保存的路径。 用用ENDEND(即(即CTRL+ENDCTRL+END键,以下类似)或键,以下类似)或WW将编辑结果存将编

4、辑结果存盘,或执行盘,或执行“文件文件”菜单中的菜单中的“保存保存”命令存盘;用命令存盘;用QQ或或ESCESC键放弃存盘,并退出编辑程序。键放弃存盘,并退出编辑程序。执行该命令后,执行该命令后,VFPVFP将打开一个用于输入和编辑修改程将打开一个用于输入和编辑修改程序的窗口,窗口的标题栏所显示的就是该命令中的文序的窗口,窗口的标题栏所显示的就是该命令中的文件名,如图所示。件名,如图所示。 (2 2)菜单方式)菜单方式: : “文件文件” ” “新建新建” ” 弹出弹出“新建新建”的对话框的对话框 “ “文件类型文件类型”框里选择框里选择“程序程序” ” 单击按钮单击按钮“新建文件新建文件”

5、” 弹出文本编辑窗弹出文本编辑窗口,在这个窗口中就可以输入命令和语句了,最后,选择系统菜口,在这个窗口中就可以输入命令和语句了,最后,选择系统菜单单“文件文件”里的菜单项里的菜单项“保存保存”,按照系统提示将输入窗口中的,按照系统提示将输入窗口中的程序保存起来。程序保存起来。(3) (3) 在在“项目管理器项目管理器”对话框中选择对话框中选择“代码代码”选项卡中的选项卡中的“程序程序项项”,再单击,再单击“新建新建”按钮。按钮。 (4)(4)利用其它编辑软件建立和编辑命令文件利用其它编辑软件建立和编辑命令文件由于由于FoxProFoxPro的命令文件属于文本文件,因此可在的命令文件属于文本文件

6、,因此可在WindowsWindows操作系操作系统下利用统下利用WORDWORD、WPSWPS等编辑软件或等编辑软件或DOSDOS操作系统下利用操作系统下利用EDITEDIT等编辑等编辑软件来建立和编辑命令文件。软件来建立和编辑命令文件。 示例:建立应用程序示例:建立应用程序L1.PRG L1.PRG ,功能为:打开表文件,功能为:打开表文件“学学生生.dbf”.dbf”,根据键入的学生姓名在该表文件中查找并输出该学生,根据键入的学生姓名在该表文件中查找并输出该学生的基本情况,关闭文件,返回。的基本情况,关闭文件,返回。命令窗口:命令窗口:MODI COMM VFPL1.PRG MODI C

7、OMM VFPL1.PRG 编辑窗口:编辑窗口:* *L1.PRGL1.PRG SET TALK OFF SET TALK OFF USE VFP USE VFP学生学生. .DBFDBF ACCEPT “ ACCEPT “请输入学生姓名:请输入学生姓名:” ” TO XMTO XM LOCATE FOR LOCATE FOR 姓名姓名= =XMXM ? ? 学号学号, ,姓名姓名, ,性别性别, ,班级班级 USEUSE SET TALK OFF SET TALK OFF RETURN RETURN2.2.程序文件的修改程序文件的修改(1)(1)利用系统菜单,操作与建立程序文件相同。利用系统

8、菜单,操作与建立程序文件相同。(2)(2)在命令方式下,其操作与建立程序文件相同,但必须在命令方式下,其操作与建立程序文件相同,但必须带文件名或带文件名或“?”。(3)(3)若程序包含在一个项目中,可以在若程序包含在一个项目中,可以在“项目管理器项目管理器”对对话框中选定它,再单击话框中选定它,再单击“修改修改”命令按钮。命令按钮。3.3.程序文件的执行程序文件的执行方法一、在命令方式下执行命令文件方法一、在命令方式下执行命令文件 DODO程序文件名程序文件名WITH WITH 方法二、使用系统菜单执行命令文件方法二、使用系统菜单执行命令文件“程序程序” “” “运行运行( (D)D)”,然后

9、在弹出的,然后在弹出的“运行运行”对话对话框中,选择框中,选择“程序列表程序列表”中要执行的程序文件名,再单击中要执行的程序文件名,再单击“运行运行”按钮,程序就可以执行。按钮,程序就可以执行。方法三、若程序包含在一个项目中,则可以在方法三、若程序包含在一个项目中,则可以在“项目管理项目管理器器”对话框中选定它,再单击对话框中选定它,再单击“运行运行”按钮。按钮。4.4.程序书写规则程序书写规则(1)(1)命令分行命令分行程序中每行命令都以回车键结束,一行只能写一条命令。程序中每行命令都以回车键结束,一行只能写一条命令。若命令需分行书写,应在一行终了时健入继行符若命令需分行书写,应在一行终了时

10、健入继行符“;”,然后,然后按回车键,继续在下一行输入。按回车键,继续在下一行输入。 (2)(2)命令注释命令注释 程序中可插入注释,以提高程序的可读性。程序中可插入注释,以提高程序的可读性。 注释行以符号注释行以符号“* *”开头,它是一条非执行命令,仅在程序开头,它是一条非执行命令,仅在程序中显示。命令行的后面也可添加注释,这种注释以符号中显示。命令行的后面也可添加注释,这种注释以符号“&”&”开头。开头。例如,例如,* * 本程序用于修改表的指定纪录本程序用于修改表的指定纪录 SET DATA USA & SET DATA USA & 日期格式置为日期格式

11、置为 MM-DD-YY MM-DD-YY 6.1.36.1.3、常使用的命令。、常使用的命令。命令命令 set talk set talk 命令命令格式:格式:set talk on/offset talk on/off功能:该命令控制其它命令执行的结果输出不输出到屏幕上功能:该命令控制其它命令执行的结果输出不输出到屏幕上命令命令 set print set print 命令命令格式:格式:set print off/onset print off/on功能:该命令控制输出结果不输出输出到打印机打印输出功能:该命令控制输出结果不输出输出到打印机打印输出命令命令文本输出命令文本输出命令格式格式1

12、 1:texttext 文本信息文本信息 endtextendtext功能:此命令把文本信息内容显示出来,允许文本信功能:此命令把文本信息内容显示出来,允许文本信息出现多行,它只能在程序工作方式中使用,而且息出现多行,它只能在程序工作方式中使用,而且TEXTTEXT与与ENDTEXTENDTEXT必须成对出现。必须成对出现。格式格式2 2:功能:能将一行文本信息的内容按书写形式的原样显示出功能:能将一行文本信息的内容按书写形式的原样显示出来。来。 与与的区别在于前者是在下一行的第一列开始输出,的区别在于前者是在下一行的第一列开始输出,而后者则不换行,在当前光标位置处开始显示。而后者则不换行,在

13、当前光标位置处开始显示。命令命令5 5:清屏命令:清屏命令格式:格式:clearclear 功能:清屏,常将此命令用于程序开始,保持屏幕整洁功能:清屏,常将此命令用于程序开始,保持屏幕整洁. .命令命令4 4 注释语句注释语句 格式一:格式一:note note 注释字符注释字符 格式二:格式二: * * 注释字符注释字符 格式三:格式三:& & 注释注释 功能:格式一、格式二一般对程序作注释。格式三注释功能:格式一、格式二一般对程序作注释。格式三注释某命令语句,只用在被注释的命令行之后。某命令语句,只用在被注释的命令行之后。命令命令6 6:返回命令:返回命令格式:格式: re

14、turn to masterreturn to master 功能:功能:return return 在一个主程序中用于结束此程序的运在一个主程序中用于结束此程序的运行并返回命令窗口;在子程序中用于结束子程序并返回到调行并返回命令窗口;在子程序中用于结束子程序并返回到调用此过程中的下一语句用此过程中的下一语句 return to masterreturn to master将过程的调用直接返回主程序。将过程的调用直接返回主程序。 中止程序执行命令中止程序执行命令格式:格式:CANCELCANCEL功能:中止功能:中止FoxProFoxPro程序的执行。程序的执行。说明:当说明:当FoxProF

15、oxPro程序运行到该语句时,将不再执行其后面的程序运行到该语句时,将不再执行其后面的所有语句,而直接退出程序,返回到命令窗口,同时关闭所所有语句,而直接退出程序,返回到命令窗口,同时关闭所有已打开的文件。有已打开的文件。 命令命令8. 8. 非格式化交互式命令非格式化交互式命令单字符接收命令(即等待命令)单字符接收命令(即等待命令)格式:格式:WAITWAIT TO TOWINDOWATWINDOWAT , NOWAIT CLEAR|NOCLEAR TIMEOUT NOWAIT CLEAR|NOCLEAR TIMEOUT功能:暂停程序的执行,等待用户输入一个字符或按任功能:暂停程序的执行,等

16、待用户输入一个字符或按任一键。也可只用于输出一条提示信息。一键。也可只用于输出一条提示信息。说明说明 WAIT WAIT命令使用命令使用VFPVFP程序暂停运行,等用户按任意键(或回程序暂停运行,等用户按任意键(或回车)后,程序继续执行。车)后,程序继续执行。 用于输出一条提示信息。如缺省用于输出一条提示信息。如缺省 ,则执行命令后屏幕显示则执行命令后屏幕显示“按任意键继续按任意键继续”,提示用户按任,提示用户按任意键,系统将继续运行。意键,系统将继续运行。 用于保存从键盘键入的字符,如果不选用于保存从键盘键入的字符,如果不选TOTO子句,子句,则输入的数据不予保存。则输入的数据不予保存。 W

17、indows Windows子句可使主屏幕上出现一个子句可使主屏幕上出现一个WAITWAIT提示窗口,用于提示窗口,用于输出提示信息,该窗口的位置由输出提示信息,该窗口的位置由ATAT选项的选项的 , 来指定,来指定,若缺省若缺省ATAT选项,选项, 在主屏幕右上角显示。在主屏幕右上角显示。 若使用若使用NOWAITNOWAIT选项,系统将不等用户按键选项,系统将不等用户按键, ,立即往下执行。立即往下执行。字符串接收命令字符串接收命令格式:格式:ACCEPT ACCEPT TO TO内存变量内存变量 功能:暂停程序的执行,等待用户输入字符串数据。功能:暂停程序的执行,等待用户输入字符串数据。

18、任意类型数据接收命令任意类型数据接收命令格式:格式:INPUT INPUT TO TO 功能:暂停程序的执行,等待用户输入数据。功能:暂停程序的执行,等待用户输入数据。 系统执行该语句时,暂停正在运行着的程序,并显示提系统执行该语句时,暂停正在运行着的程序,并显示提示信息,然后等待用户从键盘输入数据,它允许用户输入多示信息,然后等待用户从键盘输入数据,它允许用户输入多个字符直至输入回车为止。并将输入的信息以字符串的形式个字符直至输入回车为止。并将输入的信息以字符串的形式存储在内存变量中,故常用于输入字符型的数据。存储在内存变量中,故常用于输入字符型的数据。 WAIT WAIT和和ACCEPTA

19、CCEPT的相同点是:它们接收的均是字符型数据,的相同点是:它们接收的均是字符型数据,故两者所接收的字符型数据都无需用单、双引号或方括号括故两者所接收的字符型数据都无需用单、双引号或方括号括起来。起来。 WAIT WAIT和和ACCEPTACCEPT的最大区别是:的最大区别是:WAITWAIT只接收单个字符,并只接收单个字符,并且不需要输入回车键,而且不需要输入回车键,而ACCEPTACCEPT可接收多个字符,且必须用可接收多个字符,且必须用回车键来结束字符串的输入。回车键来结束字符串的输入。说明:说明: WAIT WAIT和和ACCEPTACCEPT只能满足字符型变量的赋值,而只能满足字符型

20、变量的赋值,而INPUTINPUT能满能满足字符、数值、日期、逻辑型变量的赋值足字符、数值、日期、逻辑型变量的赋值, ,可用于输入各种类可用于输入各种类型的数据。型的数据。使用使用INPUTINPUT语句若给变量赋的值是字符型,需加定界符,否则语句若给变量赋的值是字符型,需加定界符,否则系统会把它当成一个变量名处理;若给变量赋的值是逻辑型系统会把它当成一个变量名处理;若给变量赋的值是逻辑型常量,需用定界符常量,需用定界符(.)(.)括住;输入日期型常量两端须加花括号括住;输入日期型常量两端须加花括号;输入数值型常量,则直接输入整数或实数,也可以输入;输入数值型常量,则直接输入整数或实数,也可以

21、输入一个表达式。一个表达式。 提示信息的内容同提示信息的内容同WAITWAIT和和ACCEPTACCEPT语句。语句。9.9.格式化输入输出命令格式化输入输出命令格式化输出语句:格式化输出语句: SAYSAY格式:格式: 行行, ,列列SAYSAY表达式表达式功能:在指定的行和列输出表达式的值。功能:在指定的行和列输出表达式的值。说明:说明:行行, ,列确定光标的位置。把显示屏看作是由行和列组成列确定光标的位置。把显示屏看作是由行和列组成的二维坐标系,其坐标系为的二维坐标系,其坐标系为2525行行* *8080列,规定行值取值范围是列,规定行值取值范围是整数整数0 02424,列值取值范围是整

22、数,列值取值范围是整数0 07979。那么,屏幕最左上角。那么,屏幕最左上角字符的坐标就为(字符的坐标就为(0 0,0 0),最右下角字符的坐标就为(),最右下角字符的坐标就为(2424,7979)。)。例如:例如:55,30 30 SAY “ABCD”SAY “ABCD”执行结果将在屏幕的第执行结果将在屏幕的第5 5行第行第3030列位置开始显示字符串列位置开始显示字符串ABCD ABCD 格式化输入语句:格式化输入语句:格式:格式:SAYSAY GET GET READ READ 功能:定位显示功能:定位显示GETGET变量的值;变量的值;READREAD命令激活当前未被激活的命令激活当前

23、未被激活的所有所有GETGET变量,用户就可对这些变量,用户就可对这些GETGET变量进行编辑。变量进行编辑。说明:说明: GETGET READ READ给变量赋值的方式为全屏幕操作。开始执行时光给变量赋值的方式为全屏幕操作。开始执行时光标停在标停在GETGET变量显示区的第一个位置上,利用方向键可在显示区内变量显示区的第一个位置上,利用方向键可在显示区内上下左右移动光标。当光标在最后一个上下左右移动光标。当光标在最后一个GETGET变量的显示位置时,按变量的显示位置时,按下回车键则数据存入变量,且全屏幕编辑结束。接着就执行下回车键则数据存入变量,且全屏幕编辑结束。接着就执行READREAD

24、的的后继命令。后继命令。 若缺省若缺省SAYSAY子句,子句,GETGET变量值从由变量值从由 指定的坐标开始显示;指定的坐标开始显示;含有含有SAYSAY子句时先显示其表达式值,然后隔一个字符接着显示子句时先显示其表达式值,然后隔一个字符接着显示GETGET变变量的值。量的值。 GET GET变量必须具有初值,除变量的类型遵照初值外,其长度也将变量必须具有初值,除变量的类型遵照初值外,其长度也将由初值决定。故使用前必须先定义。由初值决定。故使用前必须先定义。6.2 6.2 结构化程序设计初步结构化程序设计初步 1.1.算法及流程图算法及流程图(1)(1)算法的概念算法的概念: :根据问题要求

25、拟定用计算机求解的策略和步根据问题要求拟定用计算机求解的策略和步骤,并把它用某种工具描述出来,称之为骤,并把它用某种工具描述出来,称之为“算法设计算法设计”。 (2)(2)算法的流程图描述算法的流程图描述 : :用一些简单的几何框图表示各种类型用一些简单的几何框图表示各种类型的操作,然后用带箭头的有向流线将各个框图连结起来,以的操作,然后用带箭头的有向流线将各个框图连结起来,以表示其执行的先后顺序,这种框图称为表示其执行的先后顺序,这种框图称为“流程图流程图”。2.2.结构化程序设计方法结构化程序设计方法 结构化程序指整个程序由顺序、选择、循环三种基本结构组成结构化程序指整个程序由顺序、选择、

26、循环三种基本结构组成。 (1)(1)自顶向下逐步求精:自顶向下逐步求精:从全局出发,通盘考虑,把问题的整体从全局出发,通盘考虑,把问题的整体分解成若干个相对独立的小问题,然后再把小问题分解为若干分解成若干个相对独立的小问题,然后再把小问题分解为若干个相对独立的更小的问题,直到能表示成程序为止。个相对独立的更小的问题,直到能表示成程序为止。 (2)(2)模块化设计:模块化设计:由一个大问题分解成若干个相对独立的小问题,由一个大问题分解成若干个相对独立的小问题,每个小问题实现一定的功能,称为功能模块。对大的功能模块,每个小问题实现一定的功能,称为功能模块。对大的功能模块,采用自顶向下逐步求精的方法

27、划分为更小的功能模块。各功能采用自顶向下逐步求精的方法划分为更小的功能模块。各功能模块的程序可单独编写和调试,这样便于多人协助完成较大型模块的程序可单独编写和调试,这样便于多人协助完成较大型的程序设计。的程序设计。3. 3. 程序设计的步骤程序设计的步骤(1)(1)分析问题分析问题主要是分析待编程序要解决什么问题,需要输入什么主要是分析待编程序要解决什么问题,需要输入什么数据,需要做哪些处理,需要输出什么数据等等。数据,需要做哪些处理,需要输出什么数据等等。(2)(2)画流程图画流程图用流程图来描述处理问题的过程。用流程图来描述处理问题的过程。(3)(3)编写程序编写程序根据程序流程图,将所需

28、要的根据程序流程图,将所需要的VFPVFP的命令、语句组织在的命令、语句组织在一起。一起。(4)(4)调试调试通过运行程序对程序进行正确性检验和测试。通过运行程序对程序进行正确性检验和测试。 符符 号号 名名 称称 功功 能能起止框起止框描述流程图的开始和结束描述流程图的开始和结束处理框处理框代表一个处理过程,其特征是一代表一个处理过程,其特征是一个入口,一个出口个入口,一个出口判断框判断框为选出几条路线中的一条而进行为选出几条路线中的一条而进行的判断(条件转移操作)的判断(条件转移操作)输入输输入输出框出框表示输入输出表示输入输出 流程线流程线表示信息流动的通道表示信息流动的通道 连接符连接

29、符一个流程图在一页纸上画不下时,一个流程图在一页纸上画不下时,用该符号连接用该符号连接4.4.流程图介绍流程图介绍(1)(1)绘制流程图时所用到的基本符号绘制流程图时所用到的基本符号说明:说明: 处理框中含有一个语句功能或一段程序,一般用自然处理框中含有一个语句功能或一段程序,一般用自然语言或数学表达式描述,尽量简明扼要。语言或数学表达式描述,尽量简明扼要。 流向线要清晰明确,不能相互交叉,不能出现死循环流向线要清晰明确,不能相互交叉,不能出现死循环流向线。流向线。 无论框图描述的处理过程如何,所画框图总是只有一无论框图描述的处理过程如何,所画框图总是只有一个入口,最后汇集到一个出口。个入口,

30、最后汇集到一个出口。 例:计算例:计算1 12 23 3100100。 SET TALK OFFSET TALK OFF S=0 S=0 FOR N=1 TO 100 FOR N=1 TO 100 S=S+N S=S+N ENDF ENDF ? 1 ? 12 23 3100=,S100=,S RETURN RETURN 算法流程图 2)2)举例:用框图描述求一元二次方程举例:用框图描述求一元二次方程ax2+bxax2+bx+c=0+c=0的实根的实根的过程的过程分析:分析:首先输入首先输入a,b,ca,b,c的值,其次,计算判断求一元二次方程实的值,其次,计算判断求一元二次方程实根的条件根的条

31、件b b* *b-4b-4* *a a* *c c的值,最后判断的值,最后判断b b* *b-4b-4* *a a* *c c的值是否的值是否满足实根存在的条件,若不满足,则输出方程无实根,满足实根存在的条件,若不满足,则输出方程无实根,若满足则方程有二个实根,输出两实根若满足则方程有二个实根,输出两实根x1,x2x1,x2:x1=(-b+sqrtx1=(-b+sqrt(b(b* *b-4b-4* *a a* *c)/(2c)/(2* *a)a)x2=(-b-sqrtx2=(-b-sqrt(b(b* *b-4b-4* *a a* *c)/(2c)/(2* *a)a)6.3 顺序结构程序设计顺序

32、结构程序设计 1.1.顺序结构顺序结构 程序运行时,按照命令(语句)的排列顺序逐条执行,程序运行时,按照命令(语句)的排列顺序逐条执行,这种结构就称为顺序结构。这种结构就称为顺序结构。 2.2.简单的输入输出语句简单的输入输出语句 (1)(1)数据输入语句数据输入语句:INPUT :INPUT 1)1)格式格式: INPUT : INPUT TO TO 2)2)功能功能: :暂停程序运行,显示提示信息,等待用户从键盘上输入数暂停程序运行,显示提示信息,等待用户从键盘上输入数据,用户可以输入任意合法的表达式。据,用户可以输入任意合法的表达式。 (2)(2)单字符输入语句单字符输入语句: WAIT

33、 : WAIT 1)1)格式格式:WAIT :WAIT TO TO WINDOWS WINDOWS 2)2)功能功能: :暂停程序运行,显示提示信息,等待用户键入任何一个键,暂停程序运行,显示提示信息,等待用户键入任何一个键,然后继续执行程序。然后继续执行程序。 (3)(3)简单输出语句:?、简单输出语句:?、? ? 1)1)格式格式:?/? :?/? 2)2)功能功能: :依次计算并显示表达式表中各表达式的值,所显示的依次计算并显示表达式表中各表达式的值,所显示的值与值之间间隔一个空格。值与值之间间隔一个空格。 (4) (4) 信息显示函数信息显示函数: MESSAGEBOX( ) : ME

34、SSAGEBOX( ) 1)1)格式格式: MESSAGEBOX(: MESSAGEBOX(,) ) 2)2)功能功能: :暂停程序运行,在对话框中显示提示信息,等待用户暂停程序运行,在对话框中显示提示信息,等待用户单击按钮,并返回一个整数表示单击的是哪个按钮。单击按钮,并返回一个整数表示单击的是哪个按钮。 由三个数码相加产生,即由三个数码相加产生,即: : + 例例:MESSAGEBOX:MESSAGEBOX函数举例函数举例 MESSAGEBOX函数举例函数举例对话框图示对话框图示 MESSAGEBOX(“欢迎使用本系统!”) MESSAGEBOX(“删除记录?”,1+48+256) MES

35、SAGEBOX(“继续执行吗?”,3,”请确认”)3.3.环境设置语句环境设置语句环境设置语句:环境设置语句:SET SET 设置系统环境和状态的语句为设置系统环境和状态的语句为 SETSET语语句,句,SETSET语句实际上是一个语句组,分为两种格式:语句实际上是一个语句组,分为两种格式: 格式格式 SET SET ON/OFF ON/OFF 格式格式 SET SET TO TO 常用的几个常用的几个SETSET语句语句: : SET DEFAULT TO SET DEFAULT TO 功能:设置默认的工作目录。功能:设置默认的工作目录。 (2) SET PATH TO (2) SET PA

36、TH TO 功能:设置搜索路径。功能:设置搜索路径。(3) SET TALK ON/OFF (3) SET TALK ON/OFF 功能功能: :控制是否使某些命令产生屏幕控制是否使某些命令产生屏幕显示显示 (4) SET PRINT ON/OFF (4) SET PRINT ON/OFF 功能:控制屏幕上的输出内容是否同时功能:控制屏幕上的输出内容是否同时送打印机打印。送打印机打印。4.4.注释注释 (1)(1)注释语句注释语句 1)1)格式格式 * */NOTE /NOTE 2)2)功能功能 注释语句是非执行语句,它们不对计算机产生任何操注释语句是非执行语句,它们不对计算机产生任何操作作,

37、仅仅对程序起注解作用。仅仅对程序起注解作用。 (2)(2)行末注释行末注释 行末注释用在语句(命令)末尾,以行末注释用在语句(命令)末尾,以“&”&”起头,后跟本行的注起头,后跟本行的注释内容。释内容。6.3.1 6.3.1 顺序结构程序设计顺序结构程序设计1.1.概念概念顺序结构程序:自始至终严格按照程序中语句的先后顺序逐顺序结构程序:自始至终严格按照程序中语句的先后顺序逐条执行,是最基本、最普遍的结构形式。条执行,是最基本、最普遍的结构形式。顺序结构的流程图:顺序结构的流程图:顺序结构顺序结构ABc例:编程,根据输入的半径值,计算出相应的圆的周长。例:编程,根据输入的半径值

38、,计算出相应的圆的周长。 SET TALK OFFSET TALK OFF CLEAR CLEAR INPUT “ INPUT “请输入圆的半径:请输入圆的半径:” ” TO RTO R L=2 L=2* *3.14163.1416* *R R 5,5 SAY “ 5,5 SAY “圆的周长是:圆的周长是:”+ +STR(L,6,3)STR(L,6,3) SET TALK ON SET TALK ON6.4 程序的选择结构程序的选择结构定义:分支结构:就是按照一定的条件由判断语句或选择语定义:分支结构:就是按照一定的条件由判断语句或选择语句构成的双重或多重走向的程序。句构成的双重或多重走向的程

39、序。语语 句句 行行条件表达式条件表达式语句行序列语句行序列ENDIF后面的语句后面的语句YN简单分支结构简单分支结构的流程图的流程图1 1)简单分支格式:)简单分支格式: IF IF ENDIFENDIF注:注:IFIF和和ENDIFENDIF必须成对出现必须成对出现说明:说明:(1)IF .ENDIF(1)IF .ENDIF配对组成一条语句,缺一不可。配对组成一条语句,缺一不可。(2)IF .ENDIF(2)IF .ENDIF语句只能在程序中使用,不能使用于交互式语句只能在程序中使用,不能使用于交互式状态。状态。 (3)(3)该语句的执行过程是:首先对逻辑表达式进行判断,然后该语句的执行过

40、程是:首先对逻辑表达式进行判断,然后根据逻辑表达式的取值确定是否执行根据逻辑表达式的取值确定是否执行 。当。当 的值为的值为“真真”时,顺序执行时,顺序执行IFIF与与ENDIFENDIF之间的语句序列,之间的语句序列,然后再执行然后再执行ENDIFENDIF后的语句;当逻辑表达式的值为后的语句;当逻辑表达式的值为“假假”时,时,不执行不执行IFIF与与ENDIFENDIF之间的语句而直接执行之间的语句而直接执行ENDIFENDIF后面的语句。后面的语句。逻辑表达式也称为条件,故以后叙述中逻辑表达式也简称为逻辑表达式也称为条件,故以后叙述中逻辑表达式也简称为条件。条件。例例: :从键盘接收两个

41、数,在屏幕输出大数。从键盘接收两个数,在屏幕输出大数。 INPUT X= TO XINPUT X= TO X INPUT Y= TO Y INPUT Y= TO Y IF XY & IF XY &如果如果XY,XY,把把X X与与Y Y交换交换 T=X &T=X &引入第三个变量引入第三个变量T,T,进行三角交换进行三角交换 X=YX=Y Y=T Y=T ENDIF ENDIF ?X ?X RETURN RETURN 2) 双边分支格式:双边分支格式: IF ELSE ENDIF条件成立?条件成立?语句序列语句序列1语句序列语句序列2Endif后的语句后的语句Y

42、N双边分支的流程图双边分支的流程图说明:该语句执行过程是:首先判断逻辑说明:该语句执行过程是:首先判断逻辑表达式的值是否为真,若为真,执行表达式的值是否为真,若为真,执行 ,而不执行,而不执行 ,并,并从从ENDIFENDIF后面的语句开始继续执行;若为假,后面的语句开始继续执行;若为假,则不执行则不执行 1,而执行,而执行 ,然后再执行,然后再执行ENDIFENDIF后面的语句。后面的语句。 例例:编一个程序,输入一个教工号,在编一个程序,输入一个教工号,在STAFF表中查找,若查到就表中查找,若查到就给该教师增加给该教师增加100元基本工资,并在信息窗口提示相应的信息;若查元基本工资,并在

43、信息窗口提示相应的信息;若查不到则提示不到则提示“查无此人!查无此人!”。vOPEN DATABASE 教学管理教学管理 &打开打开“教学管理教学管理”库作为当前库库作为当前库vUSE STAFF &打开当前库中打开当前库中STAFF表表v CLEARv INPUT 请输入教工号:请输入教工号: TO JGH v LOCATE ALL FOR 教工号教工号=JGHv IF FOUND()v REPLACE 基本工资基本工资 WITH 基本工资基本工资+100v =MESSAGEBOX(该教师的基本工资已增加该教师的基本工资已增加100元元”)v ELSEv =MESSAGEBO

44、X(查无此人!查无此人!)v ENDIFv CLOSE DATABASE &关闭当前库关闭当前库v RETURNIF语句多重嵌套一般格式:语句多重嵌套一般格式: IF ELSE IF ELSE IF ELSE ENDIF ENDIF ENDIF3)多分支结构多分支结构注:注: (1)IF、ELSE(可不选可不选)、ENDIF必须成对使用必须成对使用 (2)最好采用缩格(锯齿形)的书写方式)最好采用缩格(锯齿形)的书写方式多分支程序用于解决要根据多种条件,从各种情况中选择一种进行处理的问题。多分支程序用于解决要根据多种条件,从各种情况中选择一种进行处理的问题。条件条件n条件条件2条件条件

45、1语句序列语句序列1语句序列语句序列n+1语句序列语句序列n语句序列语句序列2ENDCASE的下一语的下一语句句情况判断语句格式情况判断语句格式:DO CASE分支程序用于解决要根据多种条件,从各种情况中选择一种进 CASE CASE CASE OTHERWISE ENDCASE说明:说明:DO CASEDO CASE和和ENDCASEENDCASE须成对出现须成对出现在情况语句中,如果逻辑表达在情况语句中,如果逻辑表达式的值为真的情况多于一个,则式的值为真的情况多于一个,则仅执行第一个逻辑表达式值为真仅执行第一个逻辑表达式值为真的语句系列。的语句系列。DO CASEDO CASE语句之间可以

46、嵌套使用,语句之间可以嵌套使用,DO CASEDO CASE语句和语句和IFIF语句也可以嵌套语句也可以嵌套使用使用DO CASEDO CASE语句和语句和DO WHILEDO WHILE也可也可以嵌套使用。以嵌套使用。 例例: :显示当前季节程序。显示当前季节程序。 M=MONTH(DATE() &M=MONTH(DATE() &获取当前月份获取当前月份 DO CASE DO CASE CASE M=2 OR M=12 CASE M=3 AND M=3 AND M=6 AND M=6 AND M=9 AND M=9 AND M=11 =MESSAGEBOX(” =MESSAG

47、EBOX(”现在是秋季现在是秋季) ENDCASE ENDCASE RETURN RETURN 6.5 6.5 循环结构循环结构定义:按照一定条件重复进行某种特定操作的程序称为定义:按照一定条件重复进行某种特定操作的程序称为循环结构程序。循环结构程序。VFPVFP中有三种循环结构,中有三种循环结构,条件循环(当循环条件循环(当循环WHILEWHILE)计数循环(计数循环(FOR-ENDFORFOR-ENDFOR或或FOR-NEXTFOR-NEXT)库文件记录扫描循环(库文件记录扫描循环(SCANSCAN)。)。 DO WHILE DO WHILE 1 LOOPLOOP 2 EXITEXIT 3

48、 ENDDOENDDO条件条件成立成立?loopexitENDDOENDDO后面的语句后面的语句YN1、条件循环、条件循环备注备注v 例例:用用DO WHILE语句编写程序语句编写程序,实现例实现例6.2算法。算法。v S=0 &存放累加和的变量存放累加和的变量S初值为初值为0v N=1 &取第一个自然数取第一个自然数v DO WHILE N=100 v S=S+N &累加当前自然数累加当前自然数v N=N+1 &取下一个自然数取下一个自然数v ENDDOv ?Sv RETURN(2)(2)循环体中两条特殊语句:循环体中两条特殊语句:EXITEXIT和和LOOP

49、LOOP(1)(1)格式格式跳出循环语句:跳出循环语句:EXITEXIT短跳循环语句短跳循环语句:LOOP :LOOP (2)(2)功能功能在循环体中执行到在循环体中执行到EXITEXIT时,立时,立即无条件跳出循环,转去执行即无条件跳出循环,转去执行 ENDDO ENDDO 的后一个语句。若执行的后一个语句。若执行到到LOOPLOOP语句,则立即返回语句,则立即返回DO DO WHILEWHILE重判循环条件,而不再重判循环条件,而不再执行循环体内的其他语句。执行循环体内的其他语句。 DO WHILE DO WHILE DO WHILE DO WHILE EXIT EXIT LOOPLOOP

50、 ENDDO ENDDO ENDDOENDDO (3)EXIT (3)EXIT语句的一个典型应用语句的一个典型应用 EXITEXIT语句常用在下列控制结构中,用于控制循环语句常用在下列控制结构中,用于控制循环次数不确定时的循环退出。次数不确定时的循环退出。 DO WHILE .T. &DO WHILE .T. &循环条件为永真循环条件为永真 ) IF IF EXITEXIT ENDIF ENDIF ENDDO ENDDO例例: : 从键盘输入若干个非零的数值,当输入数值从键盘输入若干个非零的数值,当输入数值“0”0”时结束输入,时结束输入,统计有效数值的个数和它们的平均值。统计

51、有效数值的个数和它们的平均值。 CLEARCLEAR S=0 & S=0 &存放累加和存放累加和 N=0 &N=0 &存放数值个数存放数值个数 DO WHILE .T. &DO WHILE .T. &这是一个永真循环这是一个永真循环 INPUT INPUT 请输入数值,请输入数值, 输入零时结束输入零时结束 TO SZ TO SZ IF SZ=0 IF SZ=0 EXIT EXIT ENDIF ENDIF S=S+SZ S=S+SZ N=N+1 N=N+1 ENDDO ENDDO ? 共输入有效数值个数共输入有效数值个数:,N:,N ? ? 平均

52、值是平均值是:,S/N:,S/N RETURN RETURN 2、计数循环格式:、计数循环格式:FOR = TO STEP LOOP EXIT ENDFOR| NEXT (注:(注:步长可为步长可为正值正值和和负值)负值)备注备注 例例:裝有裝有100只鸡蛋的蛋箱,运输过程中打碎了若干鸡只鸡蛋的蛋箱,运输过程中打碎了若干鸡蛋。货主开箱取鸡蛋,若蛋。货主开箱取鸡蛋,若5只只5只的取,最后剩下一只;只的取,最后剩下一只;若若6只只6只的取,最后也剩一只;若只的取,最后也剩一只;若7只只7只的取;最后刚只的取;最后刚好取完;请问有多少只好鸡蛋?好取完;请问有多少只好鸡蛋? clear for i=

53、1 to 100 if mod(i,5)=1 and mod(i,6)=1 and mod(i,7)=0 ?i, endif endf return3、表扫描循环结构、表扫描循环结构格式:格式:SCAN FOR WHILE LOOP EXIT ENDSCAN备注备注SCAN循环专用于控制循环专用于控制对数据表中记录进行对数据表中记录进行逐条操作。逐条操作。功能功能 针对当前表中指定范针对当前表中指定范围内满足条件的每条围内满足条件的每条记录,逐一执行记录,逐一执行SCAN与与ENDSCAN之间的语句序列。之间的语句序列。 例例: 用用SCAN循环实现对循环实现对STAFF表中出生于表中出生于5

54、0年代的教年代的教师增加师增加100元工资。元工资。 OPEN DATABASE 教学管理教学管理 USE STAFF IN 0 SCAN FOR 出生日期出生日期=1950/01/01 REPLACE 基本工资基本工资 WITH 基本工资基本工资+100 ENDSCAN CLOSE DATABASE RETURN 4、多重循环、多重循环格式(以当型循环结构为例):格式(以当型循环结构为例):DO WHILE 条件表达式条件表达式1 语句序列语句序列1 DO WHILE 条件表达式条件表达式2 语句序列语句序列2 DO WHILE 条件表达式条件表达式3 语句序列语句序列3 ENDDO 语句序

55、列语句序列4 ENDDO 语句序列语句序列5 ENDDO4.循环的嵌套循环的嵌套 例例:某学生食堂采购员带某学生食堂采购员带1000元钱去市场买鸡,已知元钱去市场买鸡,已知每只小鸡每只小鸡5元,每只公鸡元,每只公鸡20元,每只母鸡元,每只母鸡30元,现在要元,现在要求求1000元钱正好买元钱正好买100只鸡且品种齐全,请编程序帮助只鸡且品种齐全,请编程序帮助采购员制订采购方案。采购员制订采购方案。 CLEAR FOR I=1 TO 33 &最多可以买最多可以买33只母鸡只母鸡 FOR J=1 TO 50 &最多可以买最多可以买50只公鸡只公鸡 FOR K=1 TO 100 &a

56、mp;最多可以买最多可以买100只小鸡只小鸡 IF 30*I+20*J+5*K=1000 AND I+J+K=100 ?I,J,K ENDI ENDF ENDF ENDF循环语句与循环语句与IF语句和语句和DOCASE语句的相互嵌套语句的相互嵌套循环语句与循环语句与IF语句和语句和DOCASE语句的相互嵌套有如下几语句的相互嵌套有如下几种形式。种形式。形式一:形式一: DO WHILE IF ELSE ENDIF ENDDO形式二:形式二: if do while enddo endif注意:在嵌套使用时,不能互相交叉。注意:在嵌套使用时,不能互相交叉。形式四:形式四: docase case

57、 do while enddo case endcase 形式三:形式三: do while do case case endcase enddo6.6.1子程序子程序6.6.2自定义函数自定义函数6.6.3过程过程6.6 多模块程序设计多模块程序设计应用程序一般都是多模块程序,可包含多个程序模块。应用程序一般都是多模块程序,可包含多个程序模块。模块是可以命名的一个程序段,可指主程序、子程序和自模块是可以命名的一个程序段,可指主程序、子程序和自定义函数。本节介绍模块的构成及调用方法,多模块程序定义函数。本节介绍模块的构成及调用方法,多模块程序中变量的作用域,程序调用方法以及结构化程序设计等。中

58、变量的作用域,程序调用方法以及结构化程序设计等。 6.6.1子程序子程序 一、调用与返回一、调用与返回 对于两个具有调用关系的程序文件,常称调用程序对于两个具有调用关系的程序文件,常称调用程序为主程序,被调用的程序为子程序。为主程序,被调用的程序为子程序。 主程序执行时遇到主程序执行时遇到DO命令,执行就转向子程序,称为命令,执行就转向子程序,称为调用子程序。子程序执行到调用子程序。子程序执行到RETURN语句,就会返语句,就会返回到主程序中调用命令处的下一语句继续执行程序,回到主程序中调用命令处的下一语句继续执行程序,称为从子程序中返回,简称返回。称为从子程序中返回,简称返回。2.带参数子程

59、序的调用与返回带参数子程序的调用与返回DO命令允许带一个命令允许带一个WITH子句,用来进行参数传递。子句,用来进行参数传递。格式:格式:DO IN说明:说明:(1) 中的参数可以是表达式,但若为内存变量必须中的参数可以是表达式,但若为内存变量必须具有初值。具有初值。(2) 当当是是IN子句子句中的一个过程时,中的一个过程时,DO命令调用该过程。命令调用该过程。 调用子程序时参数表中的参数值要传送给子程序,子程调用子程序时参数表中的参数值要传送给子程序,子程序中必须设置相应的参数接收语句接收传递来的参数值。序中必须设置相应的参数接收语句接收传递来的参数值。VFP用用PARAMETERS命令接收

60、参数值和回送参数值。命令接收参数值和回送参数值。格式:格式:PARAMETERS 功能:指定内存变量以接收功能:指定内存变量以接收DO命令发送的参数值,返回主命令发送的参数值,返回主程序时把内存变量值返回给主程序中相应的内存变量。程序时把内存变量值返回给主程序中相应的内存变量。说明:说明:(1)PARAMETERS必须是被调用程序的第一个语句。必须是被调用程序的第一个语句。(2)命令中的参数被命令中的参数被VFP默认为私有变量,返主时回送参数值默认为私有变量,返主时回送参数值之后即被清除。之后即被清除。(3)命令中的参数依次与调用命令命令中的参数依次与调用命令WITH子句中的参数相对应,子句中的参数相对应,故两者参数个数必须相同。故两者参数个数必须相同。ymj=05,10 SAY“请输入半径:请输入半径:”GET bj DEFAULT 0READDO js WITH bj,ymj &调用子程序调用子程序? “ymj=”,ymj &显

温馨提示

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

评论

0/150

提交评论