第6章 程序设计基础.docx
- 文档编号:6185560
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:50
- 大小:268.57KB
第6章 程序设计基础.docx
《第6章 程序设计基础.docx》由会员分享,可在线阅读,更多相关《第6章 程序设计基础.docx(50页珍藏版)》请在冰豆网上搜索。
第6章程序设计基础
第6章程序设计基础
教学目标与要求:
深入了解程序的概念
熟练掌握程序的建立、修改、保存和执行
熟练掌握与程序有关的常用命令和函数
熟练掌握顺序结构、分支结构、循环结构的编程
熟练掌握过程、自定义函数、内存变量的作用域、参数传递
教学重点难点:
分支结构,循环结构
过程和自定义函数
内存变量的作用域,参数传递
学习指导:
程序就是包含多条命令的文件,它是解决实际问题常采用的方式。
VisualFoxPro既支持传统的结构化程序设计,也支持面向对象程序设计。
用前者设计用户界面较为复杂和烦锁,后者利用辅助工具可快速设计用户界面,并能自动生成简单的应用程序。
但在面向对象程序设计中,其代码编写的算法基础仍需借鉴结构化程序设计思想,因此,结构化程序设计可以说是面向对象程序设计的基础。
本章将对结构化程序设计的方法和有关命令进行介绍。
教学内容:
6.1程序设计概述
6.1.1程序的概念
1.命令执行方式
在VisualFoxPro环境下,命令有以下两种执行方式:
(1)单命令方式
单命令方式也称交互操作方式,在命令窗口输入命令按回车键,命令被立即执行,屏幕会显示该命令的执行结果,这种方式还包括:
菜单方式以及工具按钮方式。
其特点是简单、直观,但效率低,不便于反复执行。
(2)程序方式
程序方式也称批命令方式,这种方式可将多条VisualFoxPro命令按一定的序列存放于一个文件中,执行该文件,则文件内的命令被自动依次执行。
该方式的特点是,文件可被反复执行,且极大的降低了用户的介入程度。
2.VisualFoxPro程序
存放VisualFoxPro命令序列的文件称为VisualFoxPro程序文件(简称程序),也称命令文件,扩展名为.PRG。
按照预期的功能要求编写程序的过程称为程序设计。
程序设计的方法包括:
结构化程序设计和面向对象程序设计。
结构化程序设计注重程序的流程,通过组织命令序列编写程序,程序的基本结构包括顺序、分支和循环三种;面向对象程序设计以对象为核心,通过对对象的访问构建程序。
6.1.2算法
1.算法的概念
算法指解决问题的确定的、有限的步骤。
确定是指每一操作步骤的工作内容是明确的,具有可操作性;有限指整个问题的解决在若干步骤后结束,具有可终止性。
如求半径为3圆的面积,其步骤如下:
(1)令R为3;
(2)令S为3.14×R2;
(3)输出S。
显然,上述求圆面积的步骤就是一个算法,因其满足算法的可操作性以及可终止性:
首先,其每一个操作步骤都是明确的,是可以具体执行的;其次,它可在有限的操作步骤后结束。
但是,下面求3x2+5x-1=0两个实根的步骤,就不是一个算法:
(1)令A为3,B为5,C为-1;
(2)求x1,x2;
(3)输出x1,x2。
由于其第
(2)步求x1,x2的方法不明确,没有可操作性,所以它不是一个算法。
从算法所具有的可操作性和可终止性,可以得出如下结论:
(1)由于算法中所有的操作步骤都是确定的,具有可操作性,而任何确定的、无二义的操作,计算机都可以按部就班地一步步执行,因此算法可容易的转变为计算机能够执行的程序。
(2)计算机求解任何问题,必须在一个有限的时间段内得到处理结果,算法的可终止性保证了这一点。
2.算法的表示
算法的表示方法有多种,目的都是对解决问题步骤的描述,是进行程序设计的依据。
算法的表示方法有文字、伪码和图形等。
用图形表示算法最为直观,如:
控制流程图(FC)、结构流程图(N-S)、问题分析图(PAD)等。
下面介绍最为常用的控制流程图。
控制流程图(简称FC:
FlowChart),又称程序框图,是直观描述算法的结构和处理内容的图示。
它是使用最早、最广泛的算法描述工具,特点是直观形象、简单易懂。
FC由具有特定含义的四种基本图符组成,如图5-1所示,这些基本图符构成了三种基本控制结构。
(1)基本图符
● 圆弧框:
表示一个问题处理的开始和结束。
● 矩形框:
表示处理,对应于一条或者多条顺序执行的程序命令。
● 菱形框:
表示判断,对应于程序中的分支命令。
● 流程线:
表示执行的次序。
图6-1控制流程图基本图符
(2)控制结构
所谓控制结构是指对处理步骤执行顺序的控制。
有三种基本控制结构,分别为顺序结构、分支结构、循环结构,用于控制处理步骤按三种不同顺序执行。
常见的控制流程往往是这三种结构的混合,而不是单一的某种基本结构。
①顺序结构
顺序结构指按照处理步骤出现的先后顺序有序的向下执行。
求半径为3的圆面积的算法就是一个顺序结构,其控制流程图如图6-2所示。
②分支结构
指根据对给定条件的判断结果,决定下一步所执行的处理步骤。
例如:
在学生成绩表1中,查找姓名为“孙雯文”的记录,如果找到将其显示出来,否则显示“查无此人”,其算法的控制流程图如图6-3所示。
图6-2求圆面积算法
图6-3分支结构实例图6-4循环结构实例
③循环结构
循环结构指根据需要反复执行某些处理步骤,被反复执行的这些处理步骤称为循环体。
图6-4是一个循环结构的控制流程图,在这个循环中,当I<4时执行循环体,一直到I为4时,条件I<4为“假”,则结束循环,其一共循环了三次。
3.VisualFoxPro程序的逻辑结构
VisualFoxPro程序多数情况是进行数据处理,一般一个程序应包括如下三部分:
(1)获得原始数据;
(2)进行数据处理;
(3)输出处理结果。
这三部分符合解决问题的逻辑思路,如果将其转换为VisualFoxPro命令,计算机按此次序执行这些命令后,就会输出预期的处理结果。
如上述求半径为3圆面积的程序如下:
R=3
S=3.14*R*R
?
S
4.程序设计步骤
(1)分析问题。
获得已知和要求;
(2)确定算法,明确解决问题的步骤;
(3)画出控制流程图。
检查是否满足预期功能;
(4)编写程序。
将控制流程图各步骤对应转换为VisualFoxPro命令;
(5)调试程序。
运行程序找出并改正其中的错误。
如图6-3所示的分支实例,对应转换为VisualFoxPro命令如下:
USE学生成绩表1
INDEXON姓名TAGXMSY
SEEK"孙雯文"
IFFOUND()
DISPLAY
ELSE
?
"查无此人"
ENDIF
USE
如果将以上命令按序存放于一个扩展名为.PRG的文件中,这个文件即为VisualFoxPro程序,执行该程序就可自动执行这些命令,从而实现对学生成绩表1“孙雯文”进行查找等操作。
(3)画出控制流程图;
6.2程序文件的建立和执行
6.2.1程序文件的建立与编辑
1.程序文件的建立与打开
(1)命令方式
命令格式:
MODIFYCOMMAND[<文件说明>]
功能:
打开程序编辑窗口,用于创建和修改VisualFoxPro程序。
<文件说明>由用户指定,缺省的扩展名为.PRG。
用户在命令窗口中输入该命令并按回车键后,便可以建立或打开程序文件。
说明:
①<文件说明>前可用路径指定文件的存放位置,缺省的存放位置为当前目录。
②指定位置没有文件说明所指程序文件,将会打开一个程序编辑窗口,供用户输入一个新程序,如图6-5所示。
③若指定位置有文件说明所指程序文件,则在打开的程序编辑窗口显示之,供用户编辑,同时会在磁盘上产生一个同名、同内容的.BAK文件。
如:
MODIFYCOMMANDP1.PRG
MODIFYCOMMANDC:
\USER\P2.PRG
SETDEFAULTTOD:
\学籍项目
MODIFYCOMMANDP3.PRG
图6-5程序编辑窗口
(2)菜单方式
建立:
选择“文件”菜单→“新建”→“程序”→“新建文件”。
打开:
选择“文件”菜单→“打开”,在“打开”对话框中,选择文件类型为“程序”,再选定要打开的程序文件,单击“确定”按扭。
2.程序的输入、修改与存盘
进入程序编辑窗口后,可将所编程序命令依序输入,每输完一条命令按回车键,再输下一条命令;如要修改,可采用同文字处理软件WORD中相同的方法进行。
输入或修改结束后用CTRL+END或CTRL+W键存盘并退出程序编辑窗口,用ESC键放弃存盘并退出程序编辑窗口;也可以选择“文件”菜单中的“保存”和“另存为”进行存盘,用“关闭”放弃存盘并退出程序编辑窗口。
例如:
用命令方式建立用于求圆面积的AREA.PRG程序文件。
操作步骤如下:
第一步:
在命令窗口中键入命令:
MODIFYCOMMANDAREA.PRG。
第二步:
在打开的程序编辑窗口中依次输入:
INPUT"输入圆的半径:
"TOR
S=3.14*R^2
?
S
第三步:
按CTRL+W键存盘并退出程序编辑窗口。
6.2.2程序文件的执行
1.命令方式
命令格式:
DO<程序文件说明>
功能:
将<程序文件说明>指定的程序从磁盘调入内存并执行。
该命令可以在命令窗口执行,也可作为程序中的一条命令使用。
执行该命令时,首先查找是否有编译产生的.FXP的目标文件,如果找到,则将其装入内存并执行,否则,则查找同名的未经编译的.PRG程序文件(称源程序),将其编译生成.FXP后再执行,如果未找到同名的.PRG程序文件,则显示“文件不存在”的出错信息。
如:
DOAREA.PRG
DOAREA.PRG命令执行时,会在系统默认的位置查找并执行AREA.PRG,其运行结果显示在VisualFoxPro窗口的工作区,如图6-6所示。
如果AREA.PRG不在系统默认的位置,可在文件说明前加路径,如:
DOD:
\学籍项目\AREA.PRG。
图6-6程序的运行
2.菜单方式
选择“程序”菜单→“运行”,在“运行”对话框中,选择要执行的程序,单击“运行”按扭,或双击要执行的程序文件说明。
3.工具方式
当程序编辑窗口被打开且是当前窗口时,单击如图5-6所示工具栏内的“运行”按钮,可执行当前程序编辑窗口内程序;也可以按快捷键Ctrl+E来执行。
6.3常用命令及消息框函数
6.3.1常用编程命令
1.注释命令
程序注释:
NOTE|*<注释字符>
命令注释:
&&<注释字符>
功能:
在程序中插入注释信息解释型字符。
以上命令都可对程序进行解释,供用户理解程序,从而提高程序的可读性。
系统对注释命令不产生任何操作。
“NOTE”或“*”必须写在命令行的开头,用于对程序或程序段的解释;“&&”写在命令行的右面,与左面的命令之间必须以空格分隔,可对其所在命令行进行解释。
例6-1修改学生基本情况表中孙雯文入学成绩的程序。
P1.PRG源程序清单如下:
NOTE加分程序
OPENDATABASED:
\学籍项目\学生库 &&打开学生数据库
USE学生基本情况表
*查找并修改
LOCATEFOR姓名="孙雯文"
REPLACE入学成绩WITH入学成绩+20 &&孙雯文的入学成绩加20分
DISPLAY
USE
2.键盘输入命令
(1)WAIT命令
命令格式:
WAIT[<提示信息>][TO<内存变量名>][NOWAIT][TIMEOUT<数值表达式>]
功能:
将键盘输入的一个字符存入指定的内存变量中。
该命令可暂停程序的运行,等待用户输入一个字符或按下一任意键后程序继续执行。
其中各子句说明如下:
①TO<内存变量名>用来存放键入的字符,如果不选TO子句,则输入的字符不予保存。
②若按下回车键或其他不可打印键,则将空串存放在TO后的内存变量中。
③如果缺省<提示信息>,则屏幕显示“按任意键继续…”提示信息。
④若使用NOWAIT选项,系统将不等用户按键,立即往下执行。
⑤TIMEOUT子句用来设定等待时间(秒数),一旦超时将自动往下执行。
WAIT命令常常用于:
输出提示信息、键盘输入一个字符来控制程序流程和设定延时等。
例6-2 用WAIT设定延时3秒钟,并且用WAIT给变量M输入数据。
P2.PRG源程序清单如下:
CLEAR
?
"欢迎使用本系统!
"
?
"日期:
"+DTOC(DATE())
WAIT""TIMEOUT3
CLEAR
WAIT"请输入:
"TOM
?
M
当执行前两个?
命令时,在屏幕显示“欢迎使用本系统!
”以及当天日期,然后执行到第一个WAIT,用户按任意键或等待3秒钟后以上字样被CLEAR命令清除。
程序执行第二个WAIT时,先在屏幕上显示“请输入:
”,等待用户通过键盘给M输入数据,当输入6时,则系统将字符"6"存入M,然后接着往下执行。
(2)ACCEPT命令
命令格式:
ACCEPT[<提示信息>]TO<内存变量名>
功能:
将键盘输入的一串字符存入指定的内存变量中。
命令执行时,先在屏幕上显示出<提示信息>,然后等待用户通过键盘输入数据,输入结束后按回车键,所输入的数据作为一个字符串赋给TO后的内存变量。
例6-3 当口令验证正确时就调用P1.PRG的程序。
P3.PRG源程序清单如下:
CLEAR
ACCEPT"请输入口令:
"ToPassword
IFPassword="123"&&判断口令是否为“123”
DOP1.PRG&&口令正确,执行P1.PRG程序
ELSE
?
"口令错误!
"
QUIT &&口令错误,退出VisualFoxPro环境
ENDIF
(3)INPUT命令
命令格式:
INPUT[<提示信息>]TO<内存变量名>
功能:
将键盘输入的表达式的值存入指定的内存变量中。
与ACCEPT命令的格式和功能都类似,但所输入的数据可以是任意类型的表达式,输入结束按回车键,所输入的表达式的值赋给TO后的内存变量,内存变量的类型由所输入数据的类型决定。
例如:
INPUT"请输入年龄:
"TOAge&&输入N型如:
18,Age的值为18
INPUT"请输入S的值:
"TOS&&可输入各类型表达式如:
2+3,S的值为5
INPUT"请输入姓名:
"TOXM&&输入C型要加定界符,如:
"张三"
INPUT"请输入日期:
"TOrq&&输入D型,如:
{^2006/05/03}
3.格式输入输出命令
格式输入输出命令可在VisualFoxPro系统窗口的工作区指定位置进行输入和输出。
VisualFoxPro系统窗口坐标系如图6-6所示。
格式输入输出命令的子句较多,功能很强,下面只介绍其基本格式和功能。
图6-6VFP窗口坐标系
(1)格式输出命令
基本格式:
@<行,列>SAY<表达式>
功能:
在指定<行,列>位置输出<表达式>的值。
该命令用于在VisualFoxPro系统窗口的工作区指定<行,列>位置显示<表达式>的值。
命令中的“行”和“列”是数值表达式。
例6-4用@命令编程求10+15的值。
P4.PRG源程序清单如下:
CLEAR
STORE10TOA
STORE15TOB
@5,10SAY"A+B=" &&从第5行,第10列开始显示
@5,COL()SAYA+B &&COL()是光标所在的列号,值为14
@ROW()+1,10SAY"END!
" &&ROW()是光标所在的行号,值为5
程序执行结果如下:
A+B=25
END!
例6-5用@命令显示“学生基本情况表”中1985年1月26日出生的记录。
P5.PRG源程序清单如下:
USE学生基本情况表
LOCATEALLFOR出生日期={01/26/85}
@5,16SAY"姓名:
"+姓名
@5,36SAY"性别:
"+性别
@5,16SAY"出生日期:
"+DTOC(出生日期)
@5,36SAY"入学成绩:
"+STR(入学成绩,5,0)
USE
该程序执行后在屏幕上显示:
姓名:
张伟峰 性别:
男
出生日期:
01/26/85入学成绩:
685.0
(2)格式输入命令
基本格式:
@<行,列>[SAY<表达式1>][GET<变量名>][DEFAULT<表达式2>]
功能:
在指定<行,列>位置输出<表达式1>和<变量名>的值。
该命令用于在VisualFoxPro系统窗口的工作区指定<行,列>位置开始显示<表达式1>,空一格后,再接着突出显示GET子句后变量的值。
其中各子句说明如下:
①SAY子句一般作为提示信息,常常为C型。
GET子句用来对变量的值进行修改。
若缺省SAY子句,GET变量值从指定位置开始显示。
②GET子句中的变量可以是一个内存变量或一个字段变量。
如果是内存变量,其必须具有初值,或用DEFAULT子句的<表达式2>指定初值(若变量具有初值,本子句被忽略)。
初值一旦指定,该变量的类型在编辑期间就不能改变,字符型变量宽度与数值型变量的小数位数也无法再变。
如果是字段变量,则其所在的表文件必须打开。
③GET子句的变量必须用READ命令来激活。
即一个或若干个GET变量,必须遇到READ命令才能编辑变量的值。
当光标移出这些GET变量组成的区域时READ命令执行结束。
若无READ命令与之配合,本命令仅具输出功能。
例6-6 求两数的平方和。
P6.PRG源程序清单如下:
X=0
@2,3SAY"X="GETX
@3,3SAY"Y="GETYDEFAULT0
READ
Z=X^2+Y^2
?
"平方和为:
",Z
程序执行时,分别输入2和4,则结果如下:
X=2
Y=4
平方和为:
20
例6-6在“学生成绩表1”中,根据姓名查找记录并修改其各科考试成绩。
P6.PRG源程序清单如下:
USE学生成绩表1
XM=""
@3,16SAY"请输入姓名:
"GETXM
READ
LOCATEALLFOR姓名=XM
@5,20SAY"姓名:
"+姓名+"学号:
"+学号
@6,10SAY"高等数学:
"GET高等数学
@6,25SAY"大学英语:
"GET大学英语
@6,40SAY"大学语文:
"GET大学语文
READ
USE
该程序执行后在屏幕上显示:
请输入姓名:
赵新月
姓名:
赵新月学号:
20020302
高等数学:
85大学英语:
80大学语文:
65
第一个@和READ命令配合等同于ACCEPT命令,输入“赵新月”后,指针会指在该记录上,执行第二组@命令后遇到READ命令时,光标停留在高等数学字段值85的首位时,修改该值后按回车键,光标会移至大学英语字段值的首位,等待用户修改该值,可同样对大学语文的值进行修改。
修改后的数据会自动被保存到“学生成绩表1”中。
如果不修改直接按回车键,则原字段值保持不变。
4.其它常用命令
(1)CLEAR
功能:
清除VisualFoxPro主窗口工作区所显示的信息。
(2)CANCEL
功能:
释放所有局域变量,终止程序的执行,返回VisualFoxPro系统。
(3)QUIT
功能:
关闭所有文件,释放所有变量,退出VisualFoxPro,返回Windows操作系统。
(4)CLEARALL
功能:
关闭所有文件,释放所有变量,清除所有用户自定义的菜单和窗口,并将当前工作区置为1区。
相当于刚进入VisualFoxPro系统。
(5)SETTALKON|OFF
功能:
打开或关闭人机对话。
在SETTALKON状态下,程序执行时把一些非显示命令的执行结果显示出来,可用SETTALKOFF命令关闭这些信息的输出,在OFF状态下,只有输出命令的结果才能显示。
系统默认状态为ON状态,这种状态适合于调试程序。
例6-8对“学生成绩表1”中“大学英语”字段求平均。
P8.PRG源程序清单如下:
SETTALKON
USE学生成绩表1
AVERAGE大学语文TOCH&&显示CH的值
?
CH &&显示CH的值
SETTALKOFF
AVERAGE大学语文TOCH &&不显示CH的值
?
CH &&显示CH的值
6.3.2消息框函数
消息框函数是VisualFoxPro已预先定义好的一个对话框,用户编程时只需调用该函数就可显示这个对话框,并根据用户的不同操作得到不同的返回值。
函数格式:
MessageBox(<字符表达式1>[,<数值表达式>[,<字符表达式2>]])
功能:
在屏幕上产生一个消息对话框。
对话框中显示一条信息、一个图标和最多三个按钮,如图6-8和6-9是MessageBox函数使用了不同参数调用后所产生的对话框。
图6-8消息对话框1图6-9消息对话框2
其中:
<字符表达式1>:
指定消息框中显示的文字(即消息内容)。
<字符表达式2>:
指定消息框标题的文字内容。
<数值表达式>:
用来指定消息框四个方面的内容:
按钮的个数、图标的样式、默认按钮以及模态性,它们的取值分别见表6-1、表6-2、表6-3和表6-4。
表6-1按钮个数
参数值
显示的按扭
0
只显示“确定”按钮
1
显示“确定”与“取消”按钮
2
显示“终止”、“重试”、与“忽略”按钮
3
显示“是”、“否”和“取消”按钮
4
显示“是”和“否”按钮
5
显示“重试”和“取消”按钮
表6-2图标样式
参数值 图标
参数值 图标
16
48
32
64
表6-3默认按钮表6-4模3态性
参数值
默认按钮
参数值
模态性
0
第一个按钮
0
应用程序级模态
256
第二个按钮
4096
系统级模态
512
第三个按钮
几点说明:
⒈默认按钮是指当显示消息对话框时被首先选中的按钮。
⒉模态性是指当显示消息对话框时,是否还能对程序中的其它窗口进行操作。
应用程序级模态:
不关闭消息对话框,不允许对本程序中的其它窗口进操作。
系统模态:
不关闭消息对话框则无法对所有程序进行操作。
⒊<数值表达式>的值为:
从以上四个表中各取一值相加后的结果。
例如下面两条命令分别显示图6-8和图6-9所示的消息对话框。
?
MessageBox("口令错误,请重新输入!
",16,"错误")&&16=0+16+0+0
Int1=MessageBox("数据未存"+CHR(13)+"保存否?
",3+48+0+0,"注意")
⒋调用消息框函数时,若省略<数值表达式>,则对话框上只显示一个“确定”按钮,没有图标;若省略了<字符表达式2>,则标题为应用程序名。
⒌程序运行到MessageBox函数时,先显示消息框,然后等待用户响应。
当用户选择一个按钮后,MessageBox函数返回一个代表所选按钮的整数,然后继续执行其下面的命令。
各按钮对应的整数如表6-5所示。
表6-5MessageBox函数的返回值
返回值
按钮
返回值
按钮
1
确定
5
忽略
2
取消
6
是
3
终止
6
否
4
重试
例6-9删除“学生成绩表1”中姓名为“王星”的记录,删除时用图6-10所示的消息对话框3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 程序设计基础 程序设计 基础