行, 也可以在某程序文件中执行。
在程序中通过 DO 命令可以调用另一个程序。
执行程序文件时,将依次执行文件中包含的命令, 直到所有命令执行完毕,或者执行到以下命令: ① CANCAL:终止程序执行,清除所有的私有变量,返回命令窗口。
② DO: 调用执行另一个程序。
③ RETURN:结束程序返回调用它的上级程序若无上级则返回命令窗口。
④ QUIT:结束程序执行并退出
VFP 统返回操作系统. Visual FoxPro 程序文件通过编译、连编,可以产生不同的目标代码文件,这些文件具有不同的扩展名。
当用 DO 命令执行程序文件时,如果没有指定扩展名, 系统将按下列顺序寻找程序文件的源代码或某种目标代码文件执行: .exe 、 (Windows 可执行文件) .appVisual FoxPro应用程序文件、.fxp(编译文件)、.prg(源程序文件)。
5.1.3 简单的输入输出命令 输入输出命令是用户和计算机之间的桥梁,在编制程序的过程中,通常要提供一些原始数据。
这些数据有些是已确定的,有些是变化的,在编制程序时不能确定,要根据用户需要在程序执行时交互式输入。
为了在程序执行过程中,能够交互式输入数据,Visual FoxPro 系统提供3 条常用交互式输入命令。
1. ACCEPT 命令 格式: ACCEPT 〔lt提示信息gt〕 TO lt内存变量gt 其功能是在程序执行过程中,显示lt提示信息gt,等待输入;然后用户输入任意可显示的 ASCII 字符和汉字,按 Enter 键结束数据输入;此时系统将用户输入的内容作为字符串赋值给指定的lt内存变量gt。
值得注意的是,该命令只接收字符型数据,输入的字符串不需要加定界符。
lt提示信息gt一般为字符串或字符型表达式。
【例 5-2】编写程序,从键盘上输入某数据表文件名,打开该数据表并显示其内容。
程序文件名为 prog2.prg。
首先,在主菜单的命令窗口下键入: MODIFY COMMAND prog2.prg系统进入程序编辑器后,键入下列命令序列: SET TALK OFF CLEAR ACCEPT〃请输入数据表文件名:〃 TO tablefile ampamp 从键盘上输入文件名作为字符串赋值;给字符型变量 tablefile USE amptablefile ampamp取出字符变量 tablefile 中的文件名并打开它 LIST USE SET TALK ON RETURN 上述程序在执行时,执行到 ACCEPT 命令时,将处于等待状态,此时输入文件名,如 spxx.dbf 以及 Enter 键后,程序继续执行;将打开spxx.dbf 数据表文件,显示其中的所有记录;最后关闭当前文件返回。
如图 5-1 所示执行过程及结果。
图 5-1 例 5-2 程序执行过程及结果 【例 5-3】编写程序,在 sp 数据库的 spxx.dbf 表中查找并显示任意一种商品信息。
程序文件名为 prog3.prg。
系统进入程序编辑器后键入下列命令序列: SET TALK OFF CLEAR OPEN DATABASE sp USE spxx ACCEPT 〃请输入商品编号:〃 TO shp ampamp 将商品编号输入到 sph 变量中 LOCATE FOR spbhshp ampamp 定位在字段 spbh 与内存变量 shp 的值匹配的记录上 DISPLAY ampamp 显示当前记录 CLOSE DATABASE SET TALK ON RETURN 其执行结果如图 5-2 所示。
图 5-2 例 5-3 程序执行过程及结果 2. INPUT 命令 格式: INPUT 〔lt提示信息gt〕 TO lt内存变量gt 其功能是在程序执行过程中,暂停程序的执行,屏幕显示lt提示信息gt,并等待用户输入数据,并将数据赋值给指定的内存变量。
INPUT 命令可以输入字符型、数值型、逻辑型、日期型和日期时间型等类型的数据, 而且可以是常量、 变量、 按 函数或表达式等形式, Enter键结束输入。
注意: 如果输入的是字符串,必须用定界符括起来;如果输入的是变量,事先该变量必须已经赋值;如果输入的是函数或表达式,INPUT命令先计算求值后再将该值赋给内存变量。
【例 5-4】编写程序,从键盘输入正方形的边长,求正方形的面积。
程序文件名为 prog4.prg。
程序代码如下: SET TALK OFF CLEAR INPUT 〃请输入正方形的边长:〃 TO a ampamp 将正方形的边长键入赋值给变量 a saa ampamp 求正方形面积值赋值给变量 s ”正方形的面积为:”s ampamp 在光标所在位置显示正方形的面积 SET TALK ON RETURN 【例 5-5】编程完成功能: 输入商品编号及数据,计算该商品的总价值。
程序文件名为 prog5.prg。
程序代码如下: SET TALK OFF CLEAR ACCEPT 〃请输入商品编号: 〃 TO shp INPUT 〃请输入该商品的数量: 〃 TO shl OPEN DATABASE sp USE spxx LOCATE FOR spbhshp ampamp spbh 为 spxx.dbf 表中的字段名,即商品编号 spmc〃的总价值为: 〃shlxsdj ampamp spmc 为商品名称,xsdj 为销售单价 USE CLOSE DATABASE SET TALK ON RETURN 3. WAIT 命令 格式: WAIT 〔lt提示信息gt〕 〔TO lt内存变量gt〕 〔WINDOW 〔AT lt行gtlt列gt〕〕 〔NOWAIT〕 〔CLEARNOCLEAR〕 〔TIMEOUT lt数值表达式gt〕 其功能是显示提示信息,暂停程序执行,直到用户按任意键或单击时继续执行。
WAIT 语句主要用于以下两种情况: ①暂停程序的运行以便观察程序的运行情况检查程序的中间结果 ② 根据实际情况输入某个字符,控制程序的执行流程。
各选项说明: ① 若选择可选项〔TO lt内存变量gt〕,将输入的单个字符作为字符型数据赋值给指定的内存变量;若用户是按 Enter 键或单击鼠标左键,lt内存变量gt的值为空串。
② 通常,提示信息显示在 Visual FoxPro 主窗口或当前用户自定义窗口中,如果指定了 WINDOW 子句,则会出现一个 WAIT 提示窗口显示提示信息。
提示窗口一般位于主窗口的右上角,也可用 AT 短语指定显示位置。
③ 若选择 NOWAIT 短语,系统将不等待用户按键继续执行。
④ 若选择 NOCLEAR 短语,则不关闭提示窗口,直到用户执行下一条 WAIT WINDOW 命令或 WAIT CLEAR 命令为止。
⑤ TIMEOUT 子句用来设定等待时间的秒数。
选择此项设定,一旦超时就不再等待用户按键,自动往下执行。
⑥ 若省略所有可选项,屏幕显示“键入任意键继续…”默认提示信息 【例 5-6】在 sp 数据库的 spxx.dbf 表中显示任意一件商品的信息。
程序文件名为 prog6.prg。
程序代码如下: SET TALK OFF CLEAR OPEN DATABASE sp USE spxx ACCEPT 〃请输入商品编号: 〃 TO shp LOCATE FOR spbhshp DISPLAY WAIT 〃判断是否正确?正确——1,不正确——0〃 TO a IF VALa1 WAIT 〃该记录正确有效!〃 window timeout 8 ELSE WAIT 〃该记录不正确, 请修改!〃 window at 2030 timeout 8 ENDIF USE CLOSE DATABASE SET TALK ON RETURN上述程序的运行结果如图 5-3 所示。
图 5-3 例 5-6 程序及运行结果 程序是由若干命令(包括输入输出命令)通过一定的结构组合而成的;即程序结构指程序中命令或语句执行的流程结构。
程序的基本结构有 3 种: 顺序结构、分支结构、循环结构。
5.2 顺 序 结 构 5.2.1 顺序结构流程及常用命令 1. 顺序结构流程图顺序结构是最简单的程序结构 它按命令在程序中出现的先后次序依次执行,也就是说,在一般情况下,从头至尾按序执行每一行语句或命令,直到遇到结束语句停止执行为止。
如上节 例 例中的例 5-1、 5-2、 5-3 等中的程序都是顺序结构的。
因此,顺序结构的流程图如图 5-4 所示。
图中的矩形框表示一个处理,带箭头的直线箭头方向表示程序的执行方向。
图 5-4 顺序结构流程 2. 常用命令 (1) SET TALK 命令 格式: SET TALK ON/OFF 其功能是打开或关闭人机对话。
在 Visual FoxPro 中,TALK 的初始状态为 ON,在这种状态下,系统在执行一些非显示语句时,将把执行结果等信息送到显示器显示。
在调试程序时,这种方式是极为有利的,但在执行程序时,一般都不希望如此,此时可用 SET TALK OFF 命令改变 TALK 的状态。
当 TALK 处于 OFF时,屏幕上只输出显示命令要求输出的结果。
(2) SET PRINTER 命令 格式 1: SET PRINTER OFF/ON 格式 2: SET PRINTER TO 〔lt文件名gt〕〔lt端口名gt〕 其功能是关闭或打开打印机设备。
格式 1 中,PRINTER 的初始状态是 OFF,当 PRINTER 状态为 ON 时,输出结果将被传送到打印机中。
格式 2 中,当选择 SET PRINTER TO lt文件名gt时,系统将把输出的内容传送到用户指定的文件中;当选择 SET PRINTER TO lt端口名gt时,系统将把输出内容传送到 LPT1、LPT2、LPT3、COM1、COM2 等用户指定的端口名中。
(3) TEXT 命令 格式: TEXT lt文本字符gt ENDTEXT 其功能是在屏幕上原样输出lt文本字符gt中的内容,一般用来向用户输出一段提示信息。
TEXT 与 ENDTEXT 在程序中必须配对,缺一不可。
(4)@命令 @命令的格式比较复杂,在此介绍最简单的两种格式。
① 屏幕输出格式命令 格式:@lt行列gt SAY lt表达式gt 第 其功能是在屏幕的第 X 行, Y 列上显示表达式的内容, 该表达式可以是常量、变量。
利用屏幕输出格式命令,用户可以在桌面的任何一个坐标点上显示有关的内容。
② 屏幕输入格式命令 格式:@lt行列gt 〔SAY lt表达式gt〕 GET lt变量gt 其功能是在第 X 行第 Y 列上首先输出lt表达式gt的内容,然后,接收用户从键盘上输入的内容。
lt变量gt可以是内存变量也可以是字段名变量,若是内存变量,则需要事先赋初值,否则计算机将报错;而字段名变量则因为在创建数据表时已经定义了变量的属性,因此,不需要再给该变量赋初值。
5 读语句 格式: READ 其功能是与@…GET 语句结合时,激活屏幕光标,以便输入或修改字符,然后读用户从键盘中输入的内容赋值给lt变量gt。
若需要将键盘中输入的内容保存到变量中去,则必须有一个 READ 语句,否则,用户输入的内容将不被传送到lt变量gt中。
5.2.2 程序举例 1. 显示一段提示信息源程序清单: SET TALK OFF CLEAR TEXT 欢迎进入 Visual FoxPro 系统 ENDTEXT CANCEL 2. 已知半径,求圆面积程序。
源程序清单如下: SET TALK OFF CLEAR SET PRINTER ON pi3.14 INPUT 〃请输入半径 r〃 TO r spirr 〃半径〃r 〃圆面积〃s SET PRINTER OFF SET TALK ON RETURN 3. 修改商品信息表 spxx.dbf 中指定商品的销售单价。
源程序清单: SET TALK OFF CLEAR USE spxx ACCEPT 〃〃 TO shp LOCATE FOR spbhshp @1020 SAY “商品编号:” spbh ampamp spbh 为商品编号的字段名 @1120 SAY “商品名称:” spmc ampamp spmc 为商品名称的字段名 @1220 SAY “销售单价:” get xsdj ampamp xsdj 为销售单价的字段名 READ USE SET TALK ON RETURN 5.3 分 支 结 构 数据处理过程往往是非常复杂的,应用程序运行时常常需要根据是否满足一定的条件,做出相应的逻辑判断、选择,决定程序如何运行。
分支结构,又称选择结构,就是为了满足这类运算而提供的程序执行方式。
5.3.1 简单分支选择结构 1. 简单分支语句格式: IF lt条件表达式gt lt语句行序列gt ENDIF 其功能是: 当执行该语句时,首先判断lt条件表达式gt的逻辑值,当其值为“真”时,执行lt语句行序列gt,然后执行 ENDIF 的后续语句;当其值为“假”时,直接执行 ENDIF 的后续语句。
简单分支语句的执行过程可以用图 5-5 的形式表示其流程。
其中的菱形框表示一个判断,其他图形符号与图 5-4 中表示的含义相同。
语句中lt条件表达式gt可以是逻辑表达式或关系表达式,IF 与 ENDIF 必须配对使用,二者缺一不可。
2. 简单分支结构应用举例 【例 5-7】编程求一元二次方程 AX2BXC0 的实根。
问题分析: 根据数学知识,一元二次方程的根是根据ΔB2-4AC的值来判断的。
当Δ≥0 时,方程有两个的实根。
当Δlt0 时,方程有两个的虚根。
源程序清单: SET TALK OFF CLEAR INPUT 〃系数 a〃 TO a INPUT 〃系数 b〃 TO b INPUT 〃系数 c〃 TO c deltabb-4ac IF deltagt0 x1-bSQRTdelta/2a ampamp SQRT为求平方根函数 x2-b-SQRTdelta/2a 〃第一个实根 x1〃x1 〃第二个实根 x2〃x2 ENDIF SET TALK ON RETURN 其运行结果如图 5-6 所示。
图 5-6 例 5-7 程.
上一篇:
UP
下一篇:
超市进销存管理系统的开发