第6章 程序设计基础.docx

上传人:b****6 文档编号:6185560 上传时间:2023-01-04 格式:DOCX 页数:50 大小:268.57KB
下载 相关 举报
第6章 程序设计基础.docx_第1页
第1页 / 共50页
第6章 程序设计基础.docx_第2页
第2页 / 共50页
第6章 程序设计基础.docx_第3页
第3页 / 共50页
第6章 程序设计基础.docx_第4页
第4页 / 共50页
第6章 程序设计基础.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

第6章 程序设计基础.docx

《第6章 程序设计基础.docx》由会员分享,可在线阅读,更多相关《第6章 程序设计基础.docx(50页珍藏版)》请在冰豆网上搜索。

第6章 程序设计基础.docx

第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

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1