1.28k likes | 1.41k Views
封面. 程序设计基础. 程序文件 程序的基本结构 过程及其调用. VFP 的工作方式. 人机交互方式 交互式方式是通过在命令窗口中输入命令或通过选择菜单项来实现各种操作,适用于解决一些较为简单的问题。 程序方式 要处理复杂的问题,就应采取程序方式。. 6.1 程序文件. 6.1.1 程序文件. 程序由能够完成指定任务的一系列命令组成,这些命令被保存在程序文件中。程序文件又称为命令文件,其扩展名为 PRG 。 程序文件中既可包含能在命令窗口执行的 VFP 命令,也可包含一些程序控制语句(如 IF 语句、循环语句)。. 程序的概念.
E N D
程序设计基础 • 程序文件 • 程序的基本结构 • 过程及其调用
VFP的工作方式 人机交互方式 交互式方式是通过在命令窗口中输入命令或通过选择菜单项来实现各种操作,适用于解决一些较为简单的问题。 程序方式 要处理复杂的问题,就应采取程序方式。
6.1.1 程序文件 程序由能够完成指定任务的一系列命令组成,这些命令被保存在程序文件中。程序文件又称为命令文件,其扩展名为PRG。 程序文件中既可包含能在命令窗口执行的VFP命令,也可包含一些程序控制语句(如IF语句、循环语句)。
程序的概念 程序文件既可通过VFP内置的文本编辑器来建立和修改,也可通过其他文本编辑器(如记事本)来编辑。程序一旦建立,可以多次执行,也可被其他的程序、表单、菜单等调用。执行程序时,系统会自动地按一定的顺序来执行程序中的命令。
6.1.2 程序文件的建立和修改 菜单方式
修改程序 选择“文件”菜单的“打开”命令,打开“打开”对话框。 在“打开”对话框中,在“查找范围”下拉列表中定位到程序文件所在的文件夹,在“文件类型”下拉列表中选择“程序”,文件列表中显示出此文件夹下的程序文件。 双击要打开的程序文件,或者选择它,再单击“确定”按钮,即可打开程序文件的编辑窗口。
命令方式 MODIFY COMMAND <文件名>|? 当程序文件是一个新文件名时,系统将创建一个新的程序文件,并打开其编辑窗口。 当程序文件是一个已经存在的文件时,系统将打开该程序文件的编辑窗口,供用户修改。
程序书写规则 在程序中,每条命令都以回车键结束,一行只能写一条命令。 若命令需分行书写,应在上一行终了时输入续行符“;”。 在程序中可插入注释,以提高程序的可读性。 注释行以单词“NOTE”或符号“*”开头,它仅在编辑程序时显示,不会在运行程序时执行。 在语句末尾也可添加注释,这种注释以符号“&&”开头。
在程序处于打开状态时运行程序 如果程序已在编辑窗口被打开,单击常用工具栏的“运行”按钮,或在“程序”菜单中选择“执行程序名.prg”命令,可执行此程序。
程序(P) 运行(D) 通过菜单执行程序文件
通过命令执行程序文件 DO <程序名> 由于DO命令默认是运行PRG程序。若用户要运行程序文件,则只需指定主文件名,不需指定扩展名
通过项目管理器执行程序文件 在项目管理器中,选择“代码”选项卡中“程序”选项下的程序名,单击“运行”按钮可以运行该程序文件。
中止程序的运行 当VFP执行PRG源程序文件时,系统将自动对其编译,产生相应的FXP文件。系统实际执行的是FXP目标文件。 在执行程序的过程中,系统会自动地按一定的顺序逐条来执行程序中的命令。
中止程序的运行 如果程序有错,或在执行过程中用户按了ESC键中止程序,系统会打开“程序错误”对话框。 系统将暂停程序的运行,返回到命令窗口 用户可以在执行其他的操作后,选择“程序”菜单的“继续执行”命令或在命令窗口中执行“RESUME”命令,从程序的中止处继续运行程序 当用户选择“忽略”时,系统将忽略程序错误,继续执行程序 系统将取消此次程序的执行
6.1.4 输入命令 在VFP中,应用程序的输入/输出界面通常采用表单、报表等形式。但在编写小程序时,仍然常使用传统的输入命令。
字符串接收命令 ACCEPT [<提示信息>] TO <内存变量> 程序中执行到该语句时,在主窗口显示用户设置的提示信息,等待用户从键盘输入数据。 用户输入数据后,按回车键,系统将接收到的数据作为字符串赋值给内存变量,再继续往下执行程序。
字符串接收命令 <提示信息>是一个字符型表达式。执行此命令时,该表达式的内容作为提示信息,显示在屏幕上。 若缺省此项,则不显示提示信息。 由于此命令接收到的任何数据都会作为字符串。 用户在输入数据时,不需要输入字符串定界符。 若用户不输入任何数据,直接按回车键,则系统会 将对内存变量赋值为空串。
例题 在图书表中,根据用户输入的条形码,查找书籍的条形码、书名、售价、作者信息。 USE 图书 &&打开图书表 ACCEPT "请输入要查询的条形码" to txm &&接收用户要查询的条形码 LOCATE FOR 条形码=txm &&根据用户的输入查找记录 DISPLAY 条形码,书名,售价,作者 &&显示图书记录的相关信息 USE &&关闭数据表 RETURN
表达式输入命令 INPUT [<提示信息>] TO <内存变量> 该命令与ACCEPT命令类似,但该命令可接收用户输入的多种数据类型的表达式。用户可输入数值型、字符型、日期型或逻辑型表达式。系统先计算表达式的值,然后将值赋给指定的内存变量。内存变量的类型由表达式的数据类型决定。 当用户输入字符型、日期型或逻辑型常量时,应加上相应的定界符。
单个字符接收命令 WAIT [<提示信息>] [TO <内存变量> ] [WINDOW [AT <行>,<列>]] [TIMEOUT <表达式>] 该命令与ACCEPT命令类似,但该命令只能接收用户输入的一个字符。
单个字符接收命令 若缺省<提示信息>,执行此命令时,屏幕上显示“按任意键继续。” 若指定TO <内存变量>短语,执行此命令时,用户按任意键,不需按回车键,该键作为一个字符被接收到指定的内存变量中。若用户不输入任何数据,直接按回车键,或单击鼠标,系统会将对内存变量赋值为空串。若不指定TO <内存变量>短语,此语句的功能为暂停程序的执行,显示提示信息。用户按任意键,或单击鼠标,将继续执行程序。
单个字符接收命令 若指定WINDOW短语,将显示一个窗口显示提示信息。通常,窗口显示在屏幕的右上角。若用AT <行>,<列>短语,可指定窗口的位置。 TIMEOUT <数值表达式>短语,用来设置等待用户输入的时间,以秒为单位。如果在指定的时间内用户未输入任何字符,系统将自动执行后面的命令。
单个字符接收命令 例如,用户要在程序执行过程中查看数值型变量A的值,要求结果显示在10行30列位置的窗口中,显示5秒钟后继续执行程序,则语句为 WAIT “变量A的值为”+STR(A) WINDOW AT 10,30 TIMEOUT 5 又例如,用户要在程序执行过程中接收一个字符,将此值存储在变量B中。则语句为 WAIT “请输入一个字符”TO B
结束程序运行命令 在程序的结尾,通常执行以下命令,以结束程序的运行。当然,如果省略这些命令,也可以终止程序。 RETURN 结束当前程序的执行,返回到调用它的上级程序,若无上级程序,则返回到命令窗口
结束程序运行命令 CANCEL 终止程序运行,清除所有的私有变量,返回命令窗口 QUIT 退出VisualFoxPro系统,返回到Windows。
清屏命令 CLEAR 清除主屏幕窗口上的所有信息。
关闭文件命令 CLOSE ALL 关闭所有已打开的各类文件,并将当前工作区设为1号工作区。
关闭文件命令 CLEAR ALL 可以关闭文件,还可以清除所有用户定义的内存变量。
设置环境参数命令 SET TALK ON/OFF 许多命令在执行时会返回一些执行状态的信息 这些信息通常会显示在窗口或状态栏中 开启或关闭人机会话
设置环境参数命令 SET DEFAULT TO <路径> 设置默认的文件路径
程序的基本结构 结构化程序设计是根据给定的任务,设计、编写和调试出完成该任务的过程。 结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。
程序的基本结构 自顶向下、逐步求精的程序设计方法是从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图。
程序的基本结构 “单入口单出口”的思想认为:一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个一定只有一个唯一的入口和出口。据此,就很容易编写出结构良好、易于调试的程序。
A B C 6.2.1 顺序结构 顺序结构程序是最简单的程序结构,先执行A操作,再执行B操作,依次执行各条语句。
6.2.2 选择结构 选择结构是在程序执行时,根据不同的条件,选择执行不同的程序语句。 VFP的分支结构程序可以分为简单分支(IF-ENDIF)、选择分支(IF-ELSE-ENDIF)以及多路分支(DO CASE -ENDCASE)三种不同的程序
.N. 条件 .Y. 语句序列 简单选择语句 IF <条件表达式> <语句序列> ENDIF 如果条件成立,即<条件表达式.>的值为真,则执行语句序列,然后再执行ENDIF后面的语句。 否则,直接执行ENDIF后面的语句。 ENDIF的下一条语句
例题:简单选择语句 某地的计程车收费规则为:不超过2公里时,一律收取6元。超过部分每公里加收1.8元。 编程根据行车里程计算应付车费。 INPUT '请输入里程数' TO x &&接收要计算的行车里程 y=6 &&将车费赋值为6元 IF x>2&&判断x是否超过2公里 y=6+(x-2)*1.8&&重新计算车费 ENDIF ?’里程数为’,x,’车费为’,y&&显示里程和车费 RETURN &&返回命令窗口
双分支选择语句 如果条件成立,即<条件表达式>的值为真,则执行语句序列1,然后执行ENDIF后面的语句。 否则,执行语句序列2的语句,再执行ENDIF后面的语句。 IF <条件表达式> <语句序列1> ELSE <语句序列2> ENDIF
.Y. .N. 条件 语句序列2 语句序列1 双分支选择语句 ENDIF的下一条语句
例题:双分支选择语句 某地的计程车收费规则为:不超过2公里时,一律收取6元。超过部分每公里加收1.8元。 编程根据行车里程计算应付车费。 INPUT '请输入里程数' TO x &&接收要计算的行车里程 IF x<=2&&判断x是否超过2公里 y=6&&将车费赋值为6元 ELSE y=6+(x-2)*1.8&&将车费赋值为6元加超出的部分 ENDIF ?’里程数为’,x,’车费为’,y&&显示里程和车费 RETURN &&返回命令窗口
例题:双分支选择语句 在图书表中,根据用户输入的条形码查找书籍。如果找到,则显示书籍的条形码、书名、售价、作者信息;如果没有找到,显示‘查无此书’。 USE 图书&&打开图书表 ACCEPT "请输入要查询的条形码" to txm &&接收用户要查询的条形码 LOCATE FOR 条形码=txm&&根据用户的输入查找记录 IF FOUND()&&判断是否找到了输入条码 DISPLAY 条形码,书名,售价,作者&&显示图书记录的相关信息 ELSE ?’查无此书’&&显示没有这本书 ENDIF USE &&关闭数据表 RETURN &&返回命令窗口
嵌套选择语句 在解决一些复杂问题时,需要将多个选择结构语句结合起来使用。也就是说,在选择结构的<语句序列>中,允许包括另一个合法的选择结构,形成选择的嵌套。 对于嵌套选择结构的程序而言,每一个IF必须和一个ENDIF配对。 为了使程序易于阅读,内外层选择结构层次分明,通常按缩进格式来书写。
例题:嵌套选择语句 某商场采取打折的方法进行促销,购物金额在300元以上,按九五折优惠;购物金额在500元以上,按九折优惠;购物金额在1000元以上,按八五折优惠。编写程序,根据用户的购物金额,计算其优惠额及实际付款金额
例题:嵌套选择语句 INPUT '请输入购物金额' TO je&&接收要计算的购物金额 IF je<=300&&判断金额是否超过300元 yh=0&&没有优惠 ELSE IF je<=500 yh=je*0.05 &&优惠额为5% ELSE IF je<=1000&&判断金额是否超过1000元 yh=je*0.1 &&优惠额为10% ELSE yh=je*0.15&&优惠额为15% ENDIF ENDIF ENDIF ?’优惠额为’,yh,’实际付款为’,je-yh&&显示优惠额和实际付款 RETURN &&返回命令窗口