1、6.1.1 6.1.1 程序程序 在命令窗口中执行在命令窗口中执行MODIFY COMMAND exam6_1MODIFY COMMAND exam6_1命命令后,弹出代码编辑窗口,在该窗口中输入上述程令后,弹出代码编辑窗口,在该窗口中输入上述程序代码并保存。在命令窗口输入:序代码并保存。在命令窗口输入:DO exam6_1DO exam6_1,程,程序执行结果为:序执行结果为:20050010 001 38.020050010 001 38.0 从该例子可以看出从该例子可以看出:程序代码保存在一个程序文程序代码保存在一个程序文件件exam6_1.prgexam6_1.prg中,可以多次执行。
2、中,可以多次执行。【例【例6.26.2】输入】输入3 3个数,找出其中的最大值并个数,找出其中的最大值并输出。输出。6.1.2 6.1.2 算法及算法的表示算法及算法的表示n分析:假设这分析:假设这3 3个数分别用个数分别用a a、b b、c c表示,表示,最大值用最大值用maxmax表示。由于计算机一次只能比表示。由于计算机一次只能比较较2 2个数,首先可以将个数,首先可以将a a和和b b进行比较,把其进行比较,把其中大的数放入中大的数放入maxmax中,再将中,再将maxmax与与c c比较,又比较,又将大的数放入将大的数放入maxmax中,最后将中,最后将maxmax输出。此输出。此时
3、时maxmax中的值就是中的值就是a a、b b、c c中的最大值。中的最大值。可以将求解这一问题的算法描述为:可以将求解这一问题的算法描述为:第第1 1步:输入步:输入a a、b b、c c。第第2 2步:将步:将a a、b b中大的一个数放入中大的一个数放入maxmax中。中。第第3 3步:将步:将c c与与maxmax中大的数放入中大的数放入maxmax中。中。第第4 4步:输出步:输出maxmax。从该例子可以看出,算法是对一个问题从该例子可以看出,算法是对一个问题的解决方法和步骤的描述,是一个有穷规的解决方法和步骤的描述,是一个有穷规则的集合。一个算法应该具有以下特点:则的集合。一个
4、算法应该具有以下特点:n确定性确定性。一个算法给出的每个计算步骤。一个算法给出的每个计算步骤都必须是准确的、无二义性。在【例都必须是准确的、无二义性。在【例6.26.2】中每一个步骤的含义都是确定的。中每一个步骤的含义都是确定的。有穷性有穷性。一个算法必须在执行有穷多个计算步。一个算法必须在执行有穷多个计算步骤后终止。在【例骤后终止。在【例6.26.2】中执行】中执行4 4个步骤后问题处理结个步骤后问题处理结束。束。有效性有效性。算法中的每一个步骤必须能够有效地。算法中的每一个步骤必须能够有效地执行,并能够得到确定的结果。执行,并能够得到确定的结果。输入输入。一个算法可以有。一个算法可以有0
5、0个或个或1 1个以上的输入。个以上的输入。在【例在【例6.26.2】中需要输入】中需要输入a a、b b、c 3c 3个数。个数。输出输出。一个算法有。一个算法有1 1个或多个的输出,一个算法个或多个的输出,一个算法得到的结果就是算法的输出。在【例得到的结果就是算法的输出。在【例6.26.2】中输出的】中输出的是是maxmax。任何一个问题能否让计算机处理,关键在任何一个问题能否让计算机处理,关键在于能否设计出合理的算法,有了合适的算法,再使于能否设计出合理的算法,有了合适的算法,再使用合适的计算机语言来编写程序。用合适的计算机语言来编写程序。VFPVFP就是一种语就是一种语言工具。要用言工
6、具。要用VFPVFP编写出高质量的程序,一方面要编写出高质量的程序,一方面要构建合理的算法,另一方面要掌握构建合理的算法,另一方面要掌握VFPVFP的语法规则,的语法规则,它是实现算法的基础。它是实现算法的基础。输入输入a,b,ca,b,c开始开始输入输入a,b,ca,b,c将将a,ba,b中大的数放在中大的数放在maxmax中中将将c,maxc,max中大的数放在中大的数放在maxmax中中输出输出maxmax开始开始输出输出maxmax将将c,maxc,max中大的数放在中大的数放在maxmax中中将将a,ba,b中大的数放在中大的数放在maxmax中中(a)(a)(b)(b)ABA AB
7、 B (a)(a)流程图流程图 (b b)N-SN-S图图 选择(或分支)结构选择(或分支)结构:根据条件是否成立而执行根据条件是否成立而执行不同的程序模块。在下图中,当条件不同的程序模块。在下图中,当条件P P为真时,执为真时,执行行A A,否则执行,否则执行B B。即要么执行。即要么执行A A,要么执行,要么执行B B。P PT FT F A B A B条 件条 件p pA AB BY YN N (a)(a)流程图流程图 (b b)N-SN-S图图 循环结构循环结构:是指重复执行某些操作,重复执行的是指重复执行某些操作,重复执行的部分称为循环体。如图所示为当型循环结构,当部分称为循环体。如
8、图所示为当型循环结构,当条件条件P P为真时,反复执行为真时,反复执行A A,直到条件,直到条件P P为假时才终为假时才终止循环。其中止循环。其中A A是循环体,是循环体,A A被重复执行的次数称被重复执行的次数称为循环次数。循环结构除当型循环外,还有直到为循环次数。循环结构除当型循环外,还有直到型循环。型循环。条件条件P PA AN N 条件条件P P A AY Y (a)(a)流程图流程图 (b b)N-SN-S图图 6.1.3 6.1.3 结构化程序设计方法概述结构化程序设计方法概述问题问题C1C1问题问题A A问题问题B1B1问题问题B2B2问题问题BnBn问题问题C2C2问题问题Cn
9、Cn 在模块划分时,应该尽可能地保证数据的独立性和模块在模块划分时,应该尽可能地保证数据的独立性和模块功能的唯一性。也就是说,各模块间的耦合性要尽量弱,即功能的唯一性。也就是说,各模块间的耦合性要尽量弱,即一个模块最好像是一个黑盒子,模块间的数据交换要尽量少;一个模块最好像是一个黑盒子,模块间的数据交换要尽量少;模块的内聚性要尽量强,即每个模块只完成单一的功能。模块的内聚性要尽量强,即每个模块只完成单一的功能。采用结构化程序设计方法的好处是:可以使每个模块功能采用结构化程序设计方法的好处是:可以使每个模块功能明确,模块间的关系简单、清晰(即可读性强),每个模块明确,模块间的关系简单、清晰(即可
10、读性强),每个模块内部的修改尽可能不影响其他模块(即独立性好),同时每内部的修改尽可能不影响其他模块(即独立性好),同时每个模块的正确性容易验证(即可维护性好)。个模块的正确性容易验证(即可维护性好)。在在VFPVFP中,程序模块化是通过编写子程序、过程、函数来中,程序模块化是通过编写子程序、过程、函数来实现的。实现的。6.2.1 6.2.1 程序文件的建立、编辑与修改程序文件的建立、编辑与修改 1 1)在项目管理器中创建程序文件)在项目管理器中创建程序文件 如果要让程序包含在一个项目文件中,如果要让程序包含在一个项目文件中,可在项目管理器中建立程序文件。可在项目管理器中建立程序文件。在左图所
11、示的【项目管理在左图所示的【项目管理器】中,选择【代码】选项卡器】中,选择【代码】选项卡中的中的“程序程序”项,单击【新建】项,单击【新建】按钮,进入代码编辑窗口,输按钮,进入代码编辑窗口,输入程序内容。入程序内容。2 2)用菜单方式新建程序文件)用菜单方式新建程序文件 在【文件】菜单中选择【新建】菜单选项,在在【文件】菜单中选择【新建】菜单选项,在出现的【新建】对话框中选择出现的【新建】对话框中选择“程序程序”文件类型,文件类型,再单击【新建文件】按钮即可进入代码编辑窗口编再单击【新建文件】按钮即可进入代码编辑窗口编辑程序代码。辑程序代码。如果要修改已有的程序文件,则在【文件】菜如果要修改已
12、有的程序文件,则在【文件】菜单中选择【打开】菜单项,这时弹出一个包含文件单中选择【打开】菜单项,这时弹出一个包含文件列表的对话框。在【文件类型】列表框中选择列表的对话框。在【文件类型】列表框中选择“程程序序”,然后在文件列表中选定要修改的程序文件,然后在文件列表中选定要修改的程序文件,单击【确定】按钮即可。单击【确定】按钮即可。3 3)用命令方式新建程序文件)用命令方式新建程序文件 格式:格式:MODIFY COMMAND MODIFY COMMAND|?|?例如,在命令窗口中输入例如,在命令窗口中输入“MODIFY COMMAND MODIFY COMMAND search”search”命
13、令(如图命令(如图6.86.8所示),即可打开代码编所示),即可打开代码编辑窗口。如果程序文件不存在,系统就自动建立一辑窗口。如果程序文件不存在,系统就自动建立一个指定名字的新程序文件;如果文件已存在,则将个指定名字的新程序文件;如果文件已存在,则将打开该程序文件。打开该程序文件。用上述用上述3 3种方法之一创建程序文件后,种方法之一创建程序文件后,必须在代码编辑完毕时,保存文件。其方法是必须在代码编辑完毕时,保存文件。其方法是选择【文件】菜单下的【保存】或【另存为】选择【文件】菜单下的【保存】或【另存为】命令进行保存;也可以利用命令进行保存;也可以利用“Ctrl+W”Ctrl+W”组合键组合
14、键进行保存,程序将保存在当前盘的当前路径下进行保存,程序将保存在当前盘的当前路径下(注意:(注意:“Ctrl+Q”Ctrl+Q”组合键放弃存盘)。组合键放弃存盘)。6.2.2 6.2.2 执行程序文件执行程序文件6.3.1 6.3.1 基本的输入基本的输入/输出命令输出命令1 1)INPUTINPUT命令命令 格式:格式:INPUT INPUT TO TO 功能:在屏幕上显示功能:在屏幕上显示 ,并等待用,并等待用户通过键盘输入表达式,再把表达式的值赋给指定户通过键盘输入表达式,再把表达式的值赋给指定的的 。例如:例如:s=75s=75 input to ainput to a?a=,a?a=
15、,a 执行上述命令执行上述命令,若输入的内容为若输入的内容为s+20s+20,则输出结果为:,则输出结果为:a=95a=95 这表明变量这表明变量a a接收的是表达式的值。接收的是表达式的值。2 2)ACCEPTACCEPT命令命令格式:格式:ACCEPT ACCEPT TO TO 功能:该命令和功能:该命令和INPUTINPUT类似,不同的是它会把输类似,不同的是它会把输入内容作为字符串常量赋值给指定的入内容作为字符串常量赋值给指定的 。3 3)WAITWAIT命令命令格式:格式:WAIT WAIT TO TO WINDOW WINDOW AT AT,NOWAITNOWAITCLEAR|NO
16、CLEARCLEAR|NOCLEARTIMEOUTTIMEOUT 功能:该命令的作用是暂停程序的执行,直到用功能:该命令的作用是暂停程序的执行,直到用户按任意键或单击鼠标或等待输入一个字符(可户按任意键或单击鼠标或等待输入一个字符(可存入指定的内存变量)或在指定时间内继续程序存入指定的内存变量)或在指定时间内继续程序的执行。的执行。说明:在该命令中,若选用说明:在该命令中,若选用WINDOWWINDOW,则会出现一个用于,则会出现一个用于显示提示信息的显示提示信息的WAITWAIT提示窗口,通常位于主窗口的右上角。提示窗口,通常位于主窗口的右上角。若需指定提示窗口的位置时,可使用若需指定提示窗
17、口的位置时,可使用ATAT实现;若同时选用实现;若同时选用NOWAITNOWAIT和和WINDOWWINDOW,则程序不等待用户按键就继续执行;若选,则程序不等待用户按键就继续执行;若选用用NOCLEARNOCLEAR,则不关闭提示窗口,直到执行下一条,则不关闭提示窗口,直到执行下一条WAIT WAIT WINDOWWINDOW或或WAIT CLEARWAIT CLEAR为止;若选用为止;若选用TIMEOUTTIMEOUT,则在超过设定,则在超过设定等待时间后程序自动继续执行。等待时间后程序自动继续执行。例如:若在主窗口的例如:若在主窗口的1010行、行、2020列处显示提示信息列处显示提示信
18、息“输入输入无效,请等待重新输入无效,请等待重新输入”,1010秒钟后自动关闭提示窗口,秒钟后自动关闭提示窗口,程序继续执行。可使用命令:程序继续执行。可使用命令:WAIT“WAIT“输入无效,请等待重新输入无效,请等待重新输入输入”WINDOW TIMEOUT 10 AT 10,20”WINDOW TIMEOUT 10 AT 10,20。6.3.2 6.3.2 程序文件中的辅助命令程序文件中的辅助命令3 3)清屏命令)清屏命令命令格式:命令格式:CLEARCLEAR功能:清除屏幕内容。功能:清除屏幕内容。4 4)SET TALK ON/OFFSET TALK ON/OFF功能:控制非输出性的结果是否在屏幕上显示出功能:控制非输出性的结果是否在屏幕上显示出来。系统默认值为来。系统默认值为ONON。5 5)SET SAFETY ON/OFFSET SAFETY ON/OFF功能:确定在改写已有文件前,是否显示提示对功能:确定在改写已有文件前,是否显示提示对话框。系统默认值为话框。系统默认值为ONON。