第7章程序设计基础.ppt

上传人:本田雅阁 文档编号:2542081 上传时间:2019-04-06 格式:PPT 页数:147 大小:1.19MB
返回 下载 相关 举报
第7章程序设计基础.ppt_第1页
第1页 / 共147页
第7章程序设计基础.ppt_第2页
第2页 / 共147页
第7章程序设计基础.ppt_第3页
第3页 / 共147页
亲,该文档总共147页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第7章程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第7章程序设计基础.ppt(147页珍藏版)》请在三一文库上搜索。

1、第7章 程序设计基础,福建农林大学东方学院,7.1 命令格式,由两部分组成 命令动词,表示应执行的操作 若干个短语,对操作提供某些限制性说明。 一般格式如下: 命令动词 短语 如:copy to aa for 性别=“男”,命令书写的规则,命令以命令动词开头 用空格来分隔各单词短语 命令的最长是254个字符,用分行符;分行 命令动词和关键字可以缩写为前四个字符 如 MODIFY STRUCTURE 可写为 MODI STRU 不分大小写,可以混合使用 变量名、字段名和文件名时,应避免与命令动词和关键字同名,以免运行时发生混乱,与表有关的命令,与表有关的命令格式: 命令动词 范围 FOR FIE

2、LDS 命令中的 FOR、FIELDS是关键字,用户不得随意更改。,约定: 表示可选项,不选用使,系统自动使用默认值 表示必选项 :表示对表记录操作的范围 ALL 表示全体记录 NEXT N 当前记录开始后续共计 N 个记录 RECORD N 特指第 N 号记录。 REST 从当前记录开始到表尾的所有记录 FOR条件 选择操作 FIELDS 投影操作,与表有关的命令,操作释例,Go 3 Disp all Go 2 Disp next 2 Go 3 Disp rest Go 3 Disp record 5,7.2 数据库的操作命令,常用的操作命令 包括 数据库的建立 打开 设置 关闭 删除,1.

3、创建数据库 CREATE DATABASE 命令 命令格式: CREATE DATABASE 数据库名|? 命令功能:用于创建一个数据库,说明:,(1)数据库名已经存在,则提示新的路径或文件名 (2)参数“?”或无参数,弹出对话框,位置及名称 (3)数据库以.DBC为其扩展名,以.DCT为备注文件,索引文件则以.DCX为扩展名 (4)该命令以独占方式创建并打开一个数据库 例如:创建一个名为t1.dbc的数据库,并显示有关数据库的信息 CREATE DATABASE t1 创建数据库t1 CLEAR 清除屏幕 DISPLAY DATABASE 显示数据库t1信息,2.打开数据库,用OPEN DA

4、TABASE命令打开已经存在的数据库 命令格式: OPEN DATABASE 数据库名|? 命令功能: 打开一个指定的数据库。 说明:,3.设置当前数据库,SET DATABASE TO 命令 命令格式: SET DATABASE TO 数据库名 命令功能: 设置当前数据库。,说明:,(1)数据库名为当前要打开的数据库名称 (2)略名,弹出一个显库对话框 例如: OPEN DATABASE t1 库t1.dbc OPEN DATABASE t2 库t2.dbc DISPLAY DATABASE 显示当库t2.dbc的信息 SET DATABASE TO t1 置t1为当前库 DILPLAY D

5、ATABASE 显示当库t1的信息 SET DATABASE TO t2 设t2为当库 DISPLAY DATABASE 显库t2.dbc的信息,4.关闭数据库,命令格式: CLOSE DATABASE ALL 说明: ALL用于关闭所有打开的数据库 如果没有指定此参数,则将关闭当前数据库,5.删除数据库,命令格式: DELETE DATABASE 数据库名|? DELETE TABLESRECYCLE,说明,要删除的数据库文件必须保证处于非使用状态 ?弹出一个“删除”对话框 DELETE TABLES删除数据库中包含的表和包含这些表的数据库 RECYCLE文件放入回收站中,可恢复删除的文件

6、SET SAFETY的值为ON,删文件前会提示用户 SET SAFTY设置为OFF,VFP将不做任何提示,表的操作命令,包括: 创建表 打开一个存在的表 将一个自由表加入到数据库中去 从数据库中移去表 显示表中信息 关闭 删除表,1.创建表,命令格式: CREATE数据库表名 命令功能: 创建数据库表或自由表,其扩展名为.dbf 如有数据库打开,则该表是数据库表,且已加入到该数据库中,否则该表是自由表,例如: 新建一个表a1,将它包含到数据库t1中 OPEN DATABASE t1 &打开数据库t1 CREATE TABLE a1 &创建表a1.dbf,将其包含到数据库t1中,2.将自由表加入

7、到数据库中,命令格式: ADD TABLE自由表名|? 说明: 1)自由表名指定要加入到一个已打开的数据库中的自由表的名称 2)不指定名称或 “?”作为参数,弹出对话框 3)表一旦加入到库中,不再是自由表 4)可以通过REMOVE TABLE命令将该表从数据库中移出,使之成为新的自由表,库中表的一些规定:,必须是一个有效的.DBF文件 不能与数据库中已存在的表重名 一个表只能属于一个数据库,不能再成为其他数据库中的表,3.将表从数据库中移出,命令格式: REMOVE TABLE 数据库表名|? DELETERECYCLE 说明: 1)参数?或忽略数据库表名时,将打开对话框 2)参数DELETE

8、 用于指定将表从数据库和磁盘中删除 3)RECYCLE参数,先放回收站中,不立即删,可恢复 4)与表相连的主索引、默认值及有效性规则将被删除 5)当一个表从数据库中移出时,它将变成一个自由表,例如,建2个表并加入到库t1中,而后执行删除命令 OPEN DATABASE t1 打开数据库 CREATE c1 创建表c1.dbf CREATE c2 创建表c2.dbf CLEAR 清屏幕 DISPLAY DATABASE 显示当前数据库信息 REMOVE TABLE c2 移动数据库表c2.dbf CLEAR 清屏幕 DISPLAY DATABASE 显示当前数据库信息 ADD TABLE c2

9、将表c2添加到当前库中 DELETE DATABASE t1 删除数据库t1,4.显示表的结构,命令格式: LIST STRUCTURE TO PRINTER|TO FILE 文件名 说明: (1)有TO PRINTER选项时,将屏幕显示的信息输出到打印机 (2)有TO FILE 文件名选项时,将屏幕显示的信息输出到指定的文件,5.修改表的结构,命令格式: ALT TABLE 表名 命令功能: 修改表的结构,7.输入记录,表的结构建立,没有数据,是空表 命令格式: APPEND BLANK 命令功能: 从表的末尾追加记录 BLANK,末尾追加一空记录,不出现APPEND输入记录窗口,7.打开表

10、,命令格式: USE 表名 命令功能: 打开一个和多个已经存在的表 说明: 表名用于指定需要打开表的名称,8.关闭表,命令格式: USE CLOSE TABLES ALL 命令功能: USE 关闭已打开的表 CLOSE TABLES ALL可以同时关闭多个表。 说明: 及时关闭,从内存上卸下表,以防止操作不当,*记录指针定位,用RECNO()函数,可测试当前记录指针 绝对指针定位 命令格式: GO TO TOP GO TO BOTTOM GO TO RECORD N GO TO数值表达式 GO TO N 命令功能: 使记录指针指向表中的指定记录,说明,GO TOP 定位第一个逻辑记录 GO B

11、OTTOM 定位最后一个逻辑记录 GO RECORD N 指针定位到表的N号记录 GO数值表达式定到表达式值取整后的记录 GO N 指针定位到N号记录 当选用参数N时,GO、TO均可省略不写,相对指针转移,命令格式: SKIP +-数值表达式 命令功能: 相对当前位置按表达式值移动若干个记录 值为正时,指针向后移 为负值时,指针向前移 缺省选择项时指针向后移一个记录 说明: GO绝对定位,定位到所指的记录上 SKIP是相对定位命令,以当前记录为中心,按给定的表达式值相对地移动若干记录,记录的显示,两种格式: LIST 范围FIELDS字段名表FOR条件TO PRINTER OFFTO FILE

12、文件名NOCONSOLENOOPTIMIZE DISPLAY 范围FIELDS字段名表FOR条件TO P RINTEROFFTO FILE文件名NOCONSOLENOOPTIMIZE,说明:,LIST=DISPLAY ALL显示的全部记录 OFF时,不显示记录号 有FOR条件显示出满足条件表达式的记录 FIELDS字段名表,显示指定字段 有范围,显示指定范围 TO PRINTER,显示的结果送到打印机输出 TO FILE文件名,结果输出到文件 NOCONSOLE,不将显示结果送到主窗口和TO PRINTERTO FILE 文件名一起使用 NOOPTIMIZE短语时,不使用RUSHMORE优化技

13、术,差别有两点:,LIST缺省范围是显示全体记录 DISPLAY缺省当前记录 LIST具有连续显示特点 DISPLAY具有分页显示,满一页就停止,并提示按任一键继续显示下页内容,例7.1,将ZGDA表中职称是讲师的、年龄在45岁以下的记录显示出来,并且只列出 姓名、年龄、职称三个字段 USE ZGDA LIST FIELDS 姓名,年龄,职称 FOR 职称“讲师”AND年龄45,【例7.2】 将ZGDA表的后4个记录显示出来,并且将第1和第5个记录分别显示出来 【例7.3】 将ZGDA表中1995年1月1日以后参加工作的记录显示出来 【例7.4】 将ZGDA表的后4个记录中性别是女的记录显示出

14、来,7.3 表的修改和维护,1.EDIT 和 CHANGE命令 格式分别是: EDIT 范围FIELDS字段名表 FOR条件 CHANGE范围FIELDS字段名表 FOR 条件 命令功能: 进入全屏幕编辑方式,对当前打开的表的记录进行修改,说明:,缺省所有的选择项,从当前记录开始进行修改 FIELDS字段名表,对列出的字段进行修 改 范围和FOR条件,范围内满足条件的记录进行修改 缺省了范围是指全部记录,2.BROWSE命令,命令格式: BROWSE FIELDS 字段名表 命令功能: 该命令以窗口方式显示当前表的内容,并可以对窗口内的数据按需要进行修改 使用EDIT命令和CHANGE命令时

15、一行只显示一个字段 每屏幕只能显示一个记录,3.REPLACE命令*,命令格式: REPLACE范围字段1WITH表达式1ADDITIVE,字段2WITH表达式2ADDITIVE FOR条件 命令功能: 成批地、快速地修改满足给定条件的一批记录 修改的方法是 用WITH后面表达式的值替换WITH前面的字段内容,说明:,(1) 系统不进入全屏幕编辑方式 (2) 范围和FOR条件,修改范围内满足条件的所有记录,缺省范围,当前记录 (3)REPLACE命令可以对备注字段的数据进行替换 可用关键字ADDITIVE,追加到备注的文本内容的尾部 否则表达式的内容覆盖备注字段中的原有内容 (4)字段名和表达

16、式的数据类型必须相同 数值字段,表达式的值大于字段宽度时,四舍五入运算,或采取科学计数法,【例7.5】,在表DA.DBF中,对工资小于800元的职工各增加10元 USE DA REPLACE ALL 工资 WITH 工资+10 FOR 工资800 USE,记录的插入与删除,1.记录的插入 APPEND 命令是从表末尾增加新记录 命令格式: INSERT BLANK BEFORE 命令功能: 在当前表中的当前记录之前或之后插入记录 说明:,说明:,(1)没有选择项,是在当前记录之后插入一个记录 (2)如果有BEFORE选择项,是在当前记录之前插入一个记录 (3)如果有BLANK选择项,是在当前记

17、录之后插入一个空白记录,2.记录的删除,分两步进行: 对欲删除的记录打删除标记 “*”,称为逻辑删除 必要时,可恢复,即把“*”去掉 把带有删除标记的记录真正删除,称为永久性删除记录或称物理删除记录,(1)逻辑删除记录命令,命令格式: DELETE范围FOR条件 命令功能: 指定范围内满足条件的那些记录加上删除标记“*” 说明: 若省略两个选择项,则给当前记录打删除标记“*” 当用命令 SET DELETE ON 在显示或有关操作时,作了删除标记的记录就不起作用,如同真正删除这些记录一样。,【例7.6】,将表DADBF的4号记录打上删除标记 USE DA DELETE RECORD 4 LIS

18、T,(2)记录恢复删除命令,命令格式: RECALL 范围FOR条件 命令功能: 将规定范围内的、符合条件的、已作了删除标记的记录恢复。即把删除 标记“*”去掉。,(3)永久性删除记录命令,命令格式: PACK 命令功能: 将带有删除标记的记录从当前表中删除 并重新调整表的记录号 说明: 执行PACK命令后,删除的记录在表中不再存在,并且不能被恢复,称永久性删除记录,(4)删除表的全部记录命令,命令格式:ZAP 命令功能: 将已打开的表中的全部记录一次性删除 说明: (1)执行此命令,只是删除全部记录,而表的结构仍然保留。 (2)该命令等效于执行了DELETE ALL命令后再执行PACK命令。

19、,表的排序,按一定的条件在已有的表之外产生一个新的有序表 ,从而实现数据的重新组织。 命令格式: SORT TO 文件名 ON字段名1ACD,字段名2ACDASCENDING|DESCENDING范围FOR条件FIELDS字段名表 命令功能:对当前表中指定范围内满足条件的记录,根据关键字段按字符顺序 、数值大小或时间顺序进行重新排列,生成一个新的表。,说明:,新生成的表,扩展名为.DBF 不选择范围和条件时,对全部记录进行排序 不指定FIELDS,新表结构全部字段组成 多重排序,即先对字段名1 排序,对于记录相同的记录,再按字段名2排序,依此类推 A和D分别表示升序和降序,升序符号可以省略不写

20、 C使排序时不分大小写字母 C可以和A或D连用,两种选择可以只用一条斜线,如AC或 DC ASCENDING和DESCENDING仅对那些没有指定A和D的关键字段起作用,关键字段默认按升序 A排序,【例7.7】,将表A1.DBF按工资排序,排序后的表名为GZ.DBF USE A1 SORT ON 工资 TO GZ USE GZ LIST,7.4 索引文件,表排序的方法: 分类方法 索引 两种索引文件类型 一种为单入口索引文件 其扩展名为.IDX索引文件 复合索引文件 其扩展名为.CDX索引文件 索引就像一本书的目录索引可使读者快速找到所需的内容一样,(1)单入口索引文件,是与FoxBASE表索

21、引文件相兼容的索引文件 一个表可以有多个这样的索引文件 其扩展名为.IDX索引文件,(2)复合索引文件 包含许多索引 每个索引都有一个TAG标志 复合索引文件就好像是许多单个索引的集合 1)结构复合索引文件: 这样的索引文件与相关的表同名 但扩展名为.CDX 当表被打开时,索引文件也自动被打开 并能自动及时更新 2)独立型复合索引文件: 这样的索引文件不与相关的表同名 且不会随相关表的打开而自动打开,1.建立索引文件,命令格式: INDEX ON索引表达式TOIDX索引文件名|TAG标志名OFCDX索引文件名 FOR条件COMPACTASCENDING|DESCENDINGUNIQUEADDI

22、TIVE 命令的功能: 对满足指定条件的记录按索引表达式进行索引, 形成.IDX索引文件或.CDX索引文件。,主要参数说明:,如有关键字TAG,表示建立复合索引 TAG关键字标志名为复合索引一个索引标志 选择OFCDX索引文件名时,可建立独立型复合索引文件 缺省时可建立与表同名的结构化复合索引文件 有FOR条件时,按满足条件的记录进行索引 ASCENDING任选项,排序方式是按升序 DESCENDING任选项,排 序方式是按降序 默认时为升序,主要参数说明:,索引表达式中的字段名可以是数值型、字符型或日期型 表达式由多个字段组成时,必须转换成相同的数据类型 转换可使用VAL()、STR()、C

23、TOD()、DTOC()函数。如果索引表达式的字段类型一致时,必须用“+”连接。 选择COMPACT项时,在建立单入口索引时使用,表示可生成一个压缩的单独索引文件 复合索引文件自动采用压缩方式。 UNIQUE项时,多记录有相同的关键字表达式值,第一个记录有效,包含在索引文件中 若未指定UNIQUE,则所有记录均包含在索引文件中,2.打开和关闭索引文件,打开索引文件的两种命令 1)用USE打开表和索引文件 2)用SET INDEX打开索引文件,1)用USE打开表和索引文件,命令格式: USE表文件名INDEX索引文件名表|?ORDER数值表达式|IDX文件名 命令功能: 本命令将索引文件连同表主

24、文件一起打开 执行此命令后,关闭当前工作 区前使用的表及索引文件,2)用SET INDEX打开索引文件,命令格式 SET INDEX TO索引文件名表|?ADDITIVE 命令功能: 打开表主文件后,用此命令打开已建立的索引文件 说明: 凡与表一同打开的多个索引文件,用APPEND、BROWSE、EDIT及REP LACE命令修改时,均会自动地修改所有的索引文件。 结构化复合索引文件随着表的打开而打开,随着表的关闭而关闭。 对于单入口索引 文件和独立型索引文件可以用上述命令,该命令可以一次打开一个或多个索引文件,3)确定主控索引,命令格式: SET ORDER TO数值表达式|IDX文件名|T

25、AG标志名OFCDX索引文件名ASCENDING|DESCENDING 一个表可以同时打开多个索引文件 但是只有一个索引起作用,称之为主索引,4)关闭索引文件,命令格式: 格式1 USE 格式2 SET INDEX TO 格式3 CLOSE INDEX 说明: 格式1)可以关闭表及其索引文件 格式2)与格式3)功能相同,可以关闭.IDX文件与独立型复合索引文件,但不能关闭结构化复合索引文件,【例7.8】,有一个表A1.DBF,按工资建立单入口的索引文件(.IDX文件), 其文件名为GZ.IDX。 USE A1 INDEX ON 工资 TO GZ 6 records indexed SET IN

26、DEX TO GZ LIST,3.添加记录后的重新索引,命令格式:REINDEX 命令功能: 重新建立已索引过的索引文件。 说明: 已有索引文件,在输入记录前,并没有打开,需要再一次建立索引文件 使用该命令时,必须先打开索引文件,数据检索,数据检索的命令: 顺序检索 LOCATE CONTINUE 索引检索 FIND SEEK,1.查找命令FIND,命令格式: FIND 字符串数字 命令功能: 从表的索引文件中查找指定字符串或与数字相匹配的记录 找到:将记录指针指向 函数FOUND()返回逻辑真值 未找到:指向文件尾,eof()为真 此时的记录号为表的最大记录号+1 函数FOUND()返回逻辑

27、假值,说明:,检索值可以是字符串和数字,但不能是表达式 若使用字符型内存变量检索时,必须使用宏代换&函数,以内存变量的内容检索 字符串不用定界符 如果字符串以空格 开始,必须用定界符,【例7.9】查找字符型数据,USE A1 INDEX XM FIND 孟彬彬 DISPLAY FIND 孙 DISPLAY,2.检索命令 SEEK,命令格式: SEEK表达式 命令功能: 在主控索引文件中将记录指针定位在索引关键字内容与命令中指定的表达式相匹配的第一个记录 SEEK能实现快速查找信息,SEEK说明:,当表达式为字符型数据时,必须用单引号、双引号或方括号括起来 如果是内存变量或 数值型表达式时,不用

28、定界符 FIND不能查找日期型数据,而SEEK可以 直接查找日期索引关键字的内容。 后接表达式: 用内存变量可直接用SEEK检索,不用加宏替换函数,【例7.10】,查找字符型数据 利用前面以姓名为索引关键字的索引文件 USE A1 SET INDEX TO XM SEEK “张 燕“ DISPLAY,顺序查找命令(LOCATE与CONTINUE),直接查找命令,不用索引 命令格式: LOCATE 范围 FOR条件 命令格式: CONTINUE 命令功能: 对当前表中的记录进行顺序查找,查找指定范围内满足条件的第一个记录 若有满足条件的记录,将记录指针定位在满足条件的第一个记录,并显示出当前记录

29、的记录号Record=n),说明:,用LOCATE命令查询时,不用对表进行排序或建立索引文件 若在表中没有查找到满足条件的记录则屏幕显示出“END OF LOCATE SCOPE”的文件结束标志信息 若LOCATE 与 CONTINUE联合使用,可以实现查询每一个满足条件的记录 不可再用LOCATE FOR,否则还是找到第一个记录。,【例7.11】,查找工资560.00元的记录 USE A1 LOCATE ALL FOR 工资560.00 DISPLAY CONTINUE DISPLAY CONTINUE,7.5 统计命令,求和命令(SUM) 求平均值命令(AVERAGE) 计数命令(COUN

30、T) 求统计量命令(CALCULATE) 分类汇总命令,求和命令(SUM),命令格式: SUM范围字段名表 TO内存变量表|数组名 FOR条件 命令功能: 对当前表指定的数值型字段进行列向求和,【例7.12】,以B1.DBF表为例,进行下面的统计操作: (1)将所有数值型字段求和 (2)将性别是女的记录求和 USE B1 LIST SUM 5 records summed SUM FOR 性别“女“ 3 records summed,求平均值命令(AVERAGE),命令格式: AVERAGE范围字段名表 TO内存变量表|数组名 FOR条件 命令功能: 对当前表指定的数值型字段列向求算术平均值,

31、【例7.13】,对B1.DBF表指定数值型字段求算术平均值,并把结果送到对应的内存变量中 USE B1 AVERAGE 基本工资,年龄 TO C1,C2 5 records average ? C1,C2 2348.00 27,计数命令(COUNT),命令格式: COUNT范围FOR条件 TO内存变量|数组名 命令功能: 统计当前表中记录的个数 *受set deleted on|off影响 Set deleted on则不数有删除标记的记录 RECCOUNT()不受其影响,例:,Use da &设该表中记录个数为8,一个逻辑删除 Go 3 Dele Set deleted on Count 7

32、 ? Reccount() 8 Set deleted off Count 8 ? Reccount 8,【例7.14】,将B1.DBF表中对性别是男的记录进行统计,并且存储到内存变量中 USE B1 COUNT FOR 性别“男“ TO XB 2 records ?XB 2,求统计量命令(CALCULATE),命令格式: CALCULATE数值表达式范围 FOR条件表达式 TO内存变量名表|TO数组名 命令功能: 该命令是根据当前表中的各数值型字段组成的数值表达式进行计算,【例7.15】,对表B1.DBF分别统计记录个数、平均年龄、最小年龄,将结果存入A1,A2,A3中,并显示变量的值。 U

33、SE B1 CALCULATE CNT(),AVG(年龄),MIN(年龄) TO A1,A2,A3 ? A1,A2,A3 5 27 21,分类汇总命令,命令格式: TOTAL ON关键字段 TO目标文件名范围 FIELDS字段名表FOR条件 命令功能: 对已排序或已索引过的表,按指定关键字段相同的那些记录进行分组求和,并将处理结果存入到目标文件名指定的表中,其结构与有序文件结构相同。,说明:生成新的表文件(sort),(1)如果没有任何选择项,将按关键字段分组,并对所有数值型字段求和生成一个新的表。 (2)有范围短语时,将按指定范围内的记录进行分组求和。 (3)有FIELDS字段名表短语时,将

34、按指定的数值型字段分组求和。 (4)有FOR条件短语时,将对满足条件的那些记录的数值型字段分组求和。,【例7.16】,将B1.DBF表按性别分组,求工资总和 第一步:先显示一下B1.DBF表的内容。 USE B1 LIST 第二步:建立索引文件,关键字段为性别。 INDEX ON 性别 TO B1X LIST 第三步:计算工资总和,形成一个新的表HB.DBF,其结构与B1表中的结构相同 TOTAL ON 性别 TO HB USE HB LIST,7.6 命令文件的建立与运行,程序使用的方式: 向导方式 菜单方式 命令方式: 命令窗口的显示(Ctrl+F2) 程序执行方式: 将多条命令按一定的结

35、构编写成一个程序(.prg) 然后命令机器去执行这个程序(do 命令) 基本逻辑结构: 顺序结构 条件分支结构 循环结构,命令文件 由一系列VFP命令组成的程序 一般以某种方式建立并存入磁盘中 使用时再调出来执行 两种方式建立: 用VFP的文本编辑程序建立命令文件 采用全屏幕编辑方式 一般的文本编辑程序 如:记事本,命令文件,命令格式: MODIFY COMMAND 文件名 命令功能: 生成和编辑命令文件 文件名中若未指定扩展名,系统认定为.PRG文件,【例7.17】,在D盘上建立一个查看DA1表结构和内容的命令文件 MODIFY COMMAND W1 CLEAR USE stu LIST S

36、TRUCTURE wait LIST USE 存盘: 按CTRL+W 建立了一个W1.PRG 的命令文件,命令文件的运行,在VFP 命令窗口中,用DO命令运行命令文件 命令格式: DO命令文件名WITH发送参数表 说明: 执行DO命令,首先将指定的文件读到内存中 后逐条地执行该文件中的命令,编程中的辅助命令,1.命令执行结果输出命令 命令格式: SET TALK ONOFF 命令功能: 选择ON状态时,命令的操作结果显示或打印 选择OFF状态则命令结果不显示 缺省时为ON状态,2.命令行输出命令,命令格式: SET ECHO ONOFF 命令功能: 选择ON状态时,在屏幕或打印机上输出命令行及

37、运行结果 选择OFF状态只输出运行结果,不输出命令本身 缺省为OFF状态 命令格式:SET PRINT ONOFF 命令功能: 选择ON状态时,接通打印机 选择OFF状态时,断开打印机 缺省值为OFF状态,3.数据的输出语句,命令格式:SET DEVICE TO PRINTSCREEN 命令功能: 将SAY命令的结果送到打印机或屏幕。 说明: 有PRINT项,输出便发往打印机 但执行该语句后并没有启动打印机 须通过按CTRL+P或输入SET PRINT ON命令方可使打印机启动 若选用SCREEN选择项,则输出转向屏幕,命令文件终止命令(CANCEL),命令格式: CANCEL任意字符 命令功

38、能: 本命令终止命令文件的执行,回到VFP提示符下并关闭所有打开的文件 任意字符可用于书写注释,7.7 程序结构,顺序结构 分支结构 循环结构,顺序结构,顺序依次执行 按照语句排列的先后顺序,一条接一条地依次执行。 顺序结构是程序中最基本的常用的结构。,【例7.19】,顺序结构程序:求 1+2+3+4 的结果 SET TALK OFF X=0 X=X+1 X=X+2 X=X+3 X=X+4 ? X CANCEL 运行这一程序时,系统逐条执行各语句,求行1+2+3+4之和,最后显示和为10,【例7.20】,编一个程序,将华氏温度F=68度变换成摄氏温度C,并将结果显示出来。 计算公式为:C=5(

39、F-32)9 程序如下: SET TALK OFF F=68 C=5*(F-32)/9 ? “摄氏:” + STR(C, 4) + “度“ + ”,” +; “华氏:“ + STR(F, 4) + “度“ CANCEL 运行结果:,分支结构,体现计算机的逻辑判断能力 根据给定的不同逻辑条件,转向执行不同的程序语句,进行相应的处理。 这些不同的转向就构成了分支结构 分类: 简单分支语句(IFENDIF) 选择分支语句(IFELSEENDIF) 结构分支(do case-endcase),简单分支语句(IFENDIF),语句格式: IF 条件表达式 语句组 ENDIF 语句功能: 当条件为真时,执

40、行IF和ENDIF之间的语句行序列 当条件为假时,执行ENDIF后面的语句 简单分支流程图,【例7.21】,显示DA.DBF中有无工资低于650元的记录 程序如下: USE DA LOCATE FOR 工资 65000 IF .NOT.EOF( ) DISPLAY ENDIF,选择分支语句(IFELSEENDI F),语句格式: IF条件表达式 语句组1 ELSE 语句组2 ENDIF 语句功能: 当条件为真时,先执行语句组1 然后再去执行ENDIF后面的语句 当条件为假时,先执行语句组2 后再转去执行ENDIF后面的语句,【例7.22】,某地至北京的邮路里程为1043KM,通过邮政局向北京城

41、区寄交“特快专递“邮件,应在24小时内到达,计费标准每克为0.05元,但超过100克后,超出数每克为0.02元。试编写程序计算邮费。 计算公式如下: 0.05W 当 W100 克 0.05100+0.02(W-100)当 W100 克,SET TALK OFF CLEAR INPUT “请输入邮件的重量为:“ TO W IF W=100 X=0.05*W ELSE X=0.05*100+0.02*(W-100) ENDIF ? “邮件的重量为”+STR(W,6,2)+“克,其邮费为:“+STR(X,6,2)+“元“ CANCEL,运行,IF条件语句的嵌套,说明:,有IF必有ENDIF,成对出现

42、。 每一层的IF和ELSE及ENDIF必须一一对应。 IF-ELSE-ENDIF 每个命令各占一行,不能在同一行出现。,结构分支语句(DOCASEEND CASE),选择的方案较多时,用选择判断语句 DO CASEENDCASE,语句格式:,DO CASE CASE 条件表达式1 语句组1 CASE 条件表达式2 语句组2 : OTHERWISE 语句组 N ENDCASE,语句功能:,从头依次查看每一个CASE的条件表达式,只要某一个条件表达式的值为真,就执行该条件下的语句组。 其他条件下的语句组都跳过去,接下来执行ENDCASE后面的语句。 OTHERWISE是一个可选项,若所有的条件都不

43、成立,则执行OTHERWISE后面的语句。 如果没有可选项OTHERWISE,则所有的条件都不成立 ,接着执行ENDCASE后面的语句。,说明:,如有两个或两个以上的条件为真,则只执行第一个条件表达式值为真的 CASE后的语句组,执行完后,即转去执行ENDCASE之后的语句,而不会再去判断下一个CASE中的条件 DO CASE中的CASE条件表达式个数不限 每个CASE条件表达式之间是独立的 DO CASE和CASE条件表达式1之间不允许出现任何语句 DO CASE 和 ENDCASE必须成对出现,循环是指按照给定的条件去重复执行一段具有特定功能的程序,循环结构程序设计,DO WHILEEND

44、DO循环,语句格式: DO WHILE条件表达式 语句组 ENDDO 语句功能: 当条件表达式的值为真时,执行语句组。 否则执行ENDDO后面的语句,说明:,DO WHILE 和 ENDDO之间的语句称为循环体 一条语句 一组语句 一个VFP子程序 ENDDO是循环终止语句,循环以此为终点 循环语句本身不会修改执行的条件 要在循环体内设置修改循环条件的语句 否则会出现死循环,循环语句流程图,【例7.23】,以显示方式输出1到10的数字 SET TALK OFF CLEAR I1 DO WHILE I = 10 ? I II1 ENDDO 语句II1就是用来修改循环条件,【例7.24】,程序如下

45、: STORE 0 TO C, W USE ZGDA DO WHILE .NOT.EOF( ) DO CASE CASE (年龄45).AND.职称=“讲师“ W=W+1 CASE (年龄45) .AND.职称=“副教授“ C=C+1 ENDCASE SKIP ENDDO ? “人数为: “,W ? “人数为: “,C SET TALK ON CANCEL,请解读该段程序,说明其功能?,转跳语句(LOOP),在DO WHILEENDDO 内提供了一条短路语句,可以起到转跳作用。 语句格式:LOOP 语句功能: 中断本次循环体的执行 跳回到DO WHILE的开始处,重复条件的判断。,说明:,LO

46、OP语句一定要用在DO WHILE的循环体内才有意义 LOOP语句使它后面的语句在本次循环时不被执行 在具有多重DO WHILEENDDO嵌套的程序中,LOOP只返回到与它本身所处的内层循环体相匹配的 DO WHILE语句,【例7.25】,工资小于160元的增加10元 SET TALK OFF USE DA2 DO WHILE .NOT.EOF( ) IF 工资160 REPLACE 工资 WITH 工资10 SKIP LOOP ENDIF SKIP ENDDO,请解读该段程序,说明每一个命令的功能?,【例7.26】,求0100之间奇数之和 SET TALK OFF X=0 Y=0 DO WH

47、ILE X100 X=X+1 IF INT(X/2)=X/2 LOOP ELSE Y=Y+X ENDIF ENDDO ? “0100之间的奇数之和为: “, Y SET TALK ON CANCEL,请解读该段程序,说明每一个命令的功能?,运行,此程序中,用INT(X/2)是否等于X/2判断X是否为偶数 是则执行LOOP语句,返回DOWHILE 如果INT(X/2)不等于X/2 说明X的值为奇数 执行LOOP后面的语句,将奇数累加,2.出口语句(EXIT),如果在循环的中途,需要结束循环而转到本层循环的后继命令去执行,可以用出口命令。 语句格式: EXIT 语句功能: 终止DO WHILEENDDO的正常循环 无条件地转到ENDDO的后继命令去执行 多重循环,只能跳出一层,【例7.27】,计算123100的和 SET TALK OFF N1 S0 DO WHILE .T. IF N100 EXIT ENDIF S=S+N N=N+1 ENDDO ? “S=”,S,运行,多重循环中LO

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1