版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/7/16,1,程序设计基础,2020/7/16,2,本章主要内容,程序设计的基本概念 程序文件建立与运行 三种程序控制结构 多模块程序 程序调试,2020/7/16,3,程序设计的基本概念,一、VFP的工作方式 命令工作方式(或交互工作方式) 通过菜单选择的方法或在命令窗口中逐条输入命令的方法来执行的。 程序工作方式 根据解决实际问题的需要,将一系列符合Visual FoxPro要求的命令按一定的逻辑结构编排成一个完整的应用程序,然后输入到计算机内自动地、连续地加以执行。,2020/7/16,4,程序设计的基本概念,二、 VFP的编程方式 面向过程编程方式 用结构化编程语言来编写结构
2、化的程序,它把一个复杂的程序分成较小的过程,每个过程可以单独进行调试。 面向对象编程方式 用面向对象的技术编程,它把编程工作主要集中在描述的对象上,程序是事件驱动的,在执行过程中,等待的是一个事件。,对于制作简单短小的应用程序,使用过程编程方式比较容易,同时,这也是面向对象编程方式的基础。本章重点介绍面向过程的程序设计。,2020/7/16,5,程序设计的基本概念,三、程序设计的步骤 分析问题或任务,总结或抽象出问题的数学模型 根据数学模型确定解决问题的算法思想 确定要建立的数据表或数据库的基本结构及其数据表之间的关系 画出程序流程图 编写程序,实现功能要求,并在计算机上调试通过 用典型数据对
3、所编写的程序进行测试,验证程序的可靠性 编写使用说明书,整理有关资料,进行总结,2020/7/16,6,6.1 程序文件建立与运行,程序文件 程序是由命令组成的ASCII码文本文件,所以程序文件也称为命令文件。该文件可用任何文本编辑器或字处理软件来建立。 程序文件扩展名 源文件的扩展名是.PRG,程序在运行时,会产生主文件名与.PRG程序主文件名相同,扩展名为.FXP的目标文件。,2020/7/16,7,6.1.1 程序文件建立,建立程序最简单的方法是用系统本身提供的编辑器。 VFP有2种方式进入程序编辑器窗口:菜单方式和命令方式,2020/7/16,8,菜单方式建立程序文件,用菜单建立程序的
4、步骤为: 单击菜单“文件”“新建”命令或者单击常用工具栏的“新建”按钮,打开“新建”对话框。,打开“程序1”的程序编辑新窗口。,2020/7/16,9,命令方式建立程序文件,格式:MODIFY COMMAND |? 功能:打开程序编辑窗口,从中可以修改或 创建程序文件。 几点说明: :指定修改或创建的程序文件名。 如果用MODIFY COMMAND ?,则出现“打开”对话框,如图所示。,2020/7/16,10,命令方式建立程序文件,在用命令建立程序文件时,最好在命令后加上程序文件名,这样可以直接创建或修改用户给出的程序文件。 建好的文件将保存在“默认目录”指定的文件夹下,默认的扩展名是.PR
5、G。如果需要保存在其它文件夹下,还可在命令中指定路径。如: MODI COMM D:excerciseexample,2020/7/16,11,程序输入与保存,例 6-1 在程序编辑窗口输入如下6条命令。 CLEAR +!+ALLTRIM(STR(c,3)+!=,s RETURN,2020/7/16,90,子程序举例2,例 6-20 用带参数传递数据的方法编程计算球的体积(四舍五入保留三位小数)。球体积的计算公式是:volume=4/3r3,Visual FoxPro表达式是:volume=4/3*PI()*r3。 注意,在建立含有参数传递子程序时,子程序的第一条语句必须是: PARAMETE
6、R 要与DO WITH 语句中的中的参数一一对应,以便相互传递数据,由PARAMETER 中给出的参数叫形参,而DO WITH 中给出的参数叫实参。实参的名称与形参的名称可以一样,也可以不一样。一般情况下实参的个数等于(或小于)形参的个数,但不能大于形参的个数,如实参个数小于形参的个数,多出的形参取逻辑值.F.。,2020/7/16,91,子程序举例2,本例计算球的体积的子程序代码是: PARAMETER r,volume volume=ROUND(4/3*PI()*r3,3) RETURN 将该子程序以文件名qtj 保存起来。,主程序代码如下: CLEAR INPUT 请输入球的半径: TO
7、 r cube=0 DO qtj WITH r,cube ?半径为+ALLTRIM(STR(r,10)+“;球的体积是:,cube RETURN,2020/7/16,92,6.3.2 自定义函数,Visual FoxPro提供了许多系统函数,用户也可以自己定义函数(User Defined Function),简称UDF。在Visual FoxPro中有两种形式的UDF: 独立用户定义函数 依附用户定义函数,2020/7/16,93,独立用户定义函数,格式: PARAMETERS 命令序列 RETURN 功能:定义一个可以独立运行的函数。,2020/7/16,94,独立用户定义函数说明,(1)
8、PARAMETERS :接受函数运行时传递过来的数据,如果函数不需要传递数据,该语句可省略。,(2)命令序列:用于进行各种处理的命令组合。简单的函数也可以为空。,(3)RETURN 语句中的值作为返回函数值,它决定了函数的类型。如缺省该语句,则返回函数值为.T.。,2020/7/16,95,独立用户定义函数说明,(4)函数名称就是保存时用的程序文件名。如果UDF的名称与已有的函数名相同,系统只承认已有函数,因此不能用已有的函数名来命名UDF。,(5)UDF的调用形式是()。参数表中每个参数可以是任何合法的Visual FoxPro表达式,参数的个数必须与UDF中PARAMETERS语句里的参数
9、表参数个数相等,数据类型也应符合UDF中的要求。,2020/7/16,96,独立用户定义函数举例,例 6-21 定义一个计算求立方数的函数。 该程序的代码如下 *求立方数函数。函数名为cube *(即以cube.prg为文件名存盘) PARAMETERS v RETURN v*v*v 在右面程序代码中,调用求立方函数cube.prg,求1到10的立方数。,*求1到10的立方数 CLEAR FOR i=1 TO 10 ?i,cube(i) ENDFOR RETURN,独立用户定义函数,2020/7/16,97,依附用户定义函数,依附用户定义函数不能作为一个独立的程序文件,它以FUNCTION开头
10、,依附在某程序的后面或某过程文件中。依附用户定义函数用如下格式定义。 FUNCTION PARAMETERS 命令序列 RETURN 功能:定义一个跟随在主程序后面的依附用户定义函数。 说明:FUNCTION 在程序里标识UDF的开始并定义函数名。其它与独立函数规定相同。,2020/7/16,98,依附用户定义函数举例,例 6-22 用依附定义函数编写求1-10的立方数。 该程序的代码如下: *求1到10的立方数。主程序 CLEAR FOR i=1 TO 10 ?i,cube1(i) ENDFOR RETURN * 下面是依附用户定义函数代码 FUNCTION cube1 PARAMETERS
11、 v RETURN v*v*v,依附用户定义函数,2020/7/16,99,6.3.3 过程,可以把多个子程序合并成一个大的文件,在该文件中,每个子程序仍然是独立的,这个大的公用程序文件被称作过程文件,其中的每个子程序模块称为过程。由于过程文件是集中起来以一个文件的形式存储在磁盘上的,调用时作为一个文件一次打开,每个子过程可随时调用,从而大大减少了访问磁盘的次数,能够提高程序运行效率。,2020/7/16,100,6.3.3 过程,格式: PROCEDURE PARAMETERS RETURN 功能:定义一个过程。,说明: (1)过程是以PROCEDURE开头,并标识出的程序或程序段,指定生成
12、过程的名称,是过程体,用DO 命令调用。 (2)过程可以放在主程序的后面,由主程序调用。 (3)可以将一个或多个过程组织在一个程序文件中,需要时分别调用。,2020/7/16,101,过程举例1,例 6-23 用主程序调用过程的方式编程求圆面积、圆周长、球体积。,过程代码如下(跟随在主程序的后面):,2020/7/16,102,过程举例1,*主程序代码如下: CLEAR INPUT 请输入半径: TO radius mj=0 zc=0 tj=0 DO ymj WITH mj,radius DO yzc WITH zc,radius DO qtj WITH tj,radius ?半径为+ALLT
13、RIM(STR(radius,10)+的圆面积是:,mj ?半径为+ALLTRIM(STR(radius,10)+的圆周长是:,zc ?半径为+ALLTRIM(STR(radius,10)+的球体积是:,tj RETURN,2020/7/16,103,过程举例2,例 6-24 在主程序中调用过程文件中的过程的方式编程求圆面积、圆周长、球体积。 可以将例6-23中三个子过程组合成一个过程文件,假设文件名为:circle。它的程序代码如下:,2020/7/16,104,过程举例2,*过程文件circle的代码 PROCEDURE ymj PARAMETERS s,r s=pi()*r2 RETUR
14、N PROCEDURE yzc PARAMETERS s,r s=2*pi()*r RETURN PROCEDURE qtj PARAMETERS s,r s=4/3*pi()*r3 RETURN,2020/7/16,105,过程举例2,* 方法1程序代码如下: CLEAR INPUT 请输入半径: TO radius mj=0 zc=0 tj=0 DO ymj WITH mj,radius IN circle &以IN子句调用过程 DO yzc WITH zc,radius IN circle DO qtj WITH tj,radius IN circle ?半径为+ALLTRIM(str(
15、radius,10)+的圆面积是:,mj ?半径为+ALLTRIM(str(radius,10)+的圆周长是:,zc ?半径为+ALLTRIM(str(radius,10)+的球体积是:,tj RETURN,2020/7/16,106,过程举例2,* 方法2程序代码如下: SET PROCEDURE TO circle &先将过程文件打开,需要时可 &直接调用其中包含的过程 CLEAR INPUT 请输入半径: TO radius mj=0 zc=0 tj=0 DO ymj WITH mj,radius &不再需要IN子句 DO yzc WITH zc,radius DO qtj WITH t
16、j,radius ?半径为+ALLTRIM(str(radius,10)+的圆面积是:,mj ?半径为+ALLTRIM(str(radius,10)+的圆周长是:,zc ?半径为+ALLTRIM(str(radius,10)+的球体积是:,tj RETURN,2020/7/16,107,6.3.4 变量作用域,在多模块程序中,根据变量发生作用的范围,可将变量分为: 公共变量 私有变量 本地变量,2020/7/16,108,公共变量,在任何模块中都能使用的变量称为公共变量,也称为全局变量。当某些变量需要在各个模块中都可能发挥作用的时候,要定义成公共变量。用下列格式定义变量为公共变量。 PUBLI
17、C 功能:将PUBLIC后指定的变量定义为公共变量。,2020/7/16,109,公共变量说明,(1)将指定的所有变量定义为公共变量,并赋初值为 .F.。 (2)在命令窗口里定义的变量都是公共变量。 (3)程序终止时,公共变量不会自动清除,需要用CLEAR ALL或者RELEASE ALL命令清除。,(4)可以用类似的格式将数组建立并声明为全局数组,如下列命令: PUBLIC ARRAY(,),(),2020/7/16,110,私有变量,程序中使用的内存变量,凡未经特殊说明的均属于私有变量,这些内存变量可以在本级程序及以下各级子程序中使用,其值可以在子程序中改变,返回主程序时保留改变后的值。
18、如果在某一级模块中使用的变量名称可能与上级模块使用的变量名称一样,而这些变量返回到上级模块时,又不想让子程序中变量值影响上级模块中同名变量的值,Visual FoxPro提供了屏蔽上级模块变量的方法,被屏蔽的变量名,当子程序结束返回到主程序时,不会影响主程序中同名变量的值。下述声明私有变量的命令就能起到屏蔽上级同名变量的作用。,2020/7/16,111,私有变量,格式: PRIVATE |ALL LIKE|EXCEPT 功能:将PRIVATE后的定义为私有变量。,2020/7/16,112,私有变量说明,(1) 声明为私有变量,只能在当前以及下级程序中有效,当本级程序结束返回上级程序时,私有
19、变量自动清除,主程序中同名变量恢复其原来的值。 (2)在程序模块调用时,PARAMETERS 语句中指定的变量自动声明为私有变量。 (3)使用PRIVATE 声明的私有变量没有赋初值,使用前必须为变量赋值。,2020/7/16,113,本地变量,本地变量既不能在上级模块中发挥作用,也不能在下级模块中发挥作用,只能在建立它的模块中发挥作用,本级模块结束,本地变量自动清除。下列命令将变量声明为本地变量。 LOCAL 功能:将LOCAL 后的指定的内存变量定义为本地变量。 说明:LOCAL将指定的变量声明为本地变量的同时,并赋初值为.F. 。注意,LOCAL不能简写为LOCA(Visual FoxP
20、ro认为LOCA与LOCATE具有同样的含义)。,2020/7/16,114,变量范围作用举例,请大家认真分析教材例 6-25 中给出变量的作用范围。,2020/7/16,115,在开发应用程序时,为了保证程序的正确性和合理性,需要对应用程序进行调试,以发现其中的错误并进行修改,直至达到设计要求,才能投入使用。本小节主要介绍: 程序中常见的错误 程序查错,6.4 程序调试,2020/7/16,116,程序中常见的错误,语法错误 包括命令字拼写错误、命令格式错误、使用了中文标点符号作为分界符、使用了没有定义的变量、数据类型不匹配、操作的文件不存在等。 溢出错误 包括计算结果超过Visual Fo
21、xPro所允许的最大值、文件太大、嵌套层数超过允许范围等。,2020/7/16,117,程序中常见的错误,逻辑错误 指程序设计的差错,如要计算圆的面积,在程序中却用了计算圆周长的公式等。 该种程序错误需要用典型数据进行测试才能发现与修改。,2020/7/16,118,程序查错,查错技术可分为两类:一类是静态检查,例如通过阅读程序寻找错误;另一类是动态检查,即通过运行程序来检查运行结果是否正确、是否符合要求。动态检查方法有: 使用出错信息检查程序错误 使用调试器检查程序错误 使用错误处理程序检查程序错误,2020/7/16,119,使用出错信息检查程序错误,在程序运行过程中,如果程序存在语法错误
22、或者溢出错误,系统会出现“程序错误”窗口,根据窗口的提示信息进行修改程序错误。,2020/7/16,120,使用调试器检查程序错误,调试器的作用 利用Visual FoxPro提供的“调试器”工具,通过调试设置、执行程序、修改程序等步骤可帮助用户调试修改程序。调试设置可为用户程序设置断点、设置监视表达式、设置显示的变量、设置显示的结果等,如果发现错误,可以当场切入程序修改。 调试器的启动 单击菜单“工具”“调试器”命令或在命令窗口里输入:DEBUG,2020/7/16,121,使用调试器检查程序错误,调试器介绍 调试器窗口打开后,通过在该窗口的窗口菜单中选定跟踪、监视、局部、调用堆栈或调试输出
23、命令,就可以打开相应的子窗口。 如图所示。,2020/7/16,122,使用调试器检查程序错误,调试器菜单栏,调试器工具栏,跟踪窗口:显示要打开的程序,以便调试和观察。,监视窗口。设置监视表达式。,局部窗口。显示程序、过程或者方法程序中的所有变量、数组、对象以及对象成员。,调用堆栈窗口。显示正在执行的过程、程序和方法程序的名称。,调试输出窗口。显示活动程序、过程或方法程序 。,2020/7/16,123,调试器“调试”菜单介绍,运行:开始执行在跟踪窗口中打开的程序。,取消:关闭程序,终止程序运行 。,定位修改:在程序暂停时,选定该命令后将会出现一个取消程序信息框,选定其中的“是”按钮,就会切换
24、到程序编辑器窗口,用户可修改程序。,跳出:从当前光标处跳到下一断点处或需要屏幕输入数据处 。,单步:逐行执行该程序代码,如果代码调用了函数、方法程序或者过程,那么这些函数、方法程序或者过程在后台运行。,单步跟踪:逐行执行代码。,运行到光标处:执行从当前行指示器到光标所在行之间的代码 。,调速:调整运行速度,即设置“延迟时间”。,2020/7/16,124,使用调试器检查程序错误,例 6-26 编写如下程序代码,保存文件名为:cx26。并在调试器打开进行调试操作。 CLEAR a=123 &赋值命令错误 b=lk”&分界符号错误 c=180180 d=PI()*52 ?c&结果为若干个*号,溢出错误 ?d RETURN,2020/7/16,125,使用调试器检查程序错误,操作步骤如下: a. 打开调试器。 b. 打开跟踪窗口、监视窗口、局部窗口。 c. 打开
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管道施工现场奖惩制度
- 书法课的奖罚制度
- 物流企业安全奖惩制度
- 警务人员激励奖惩制度
- 医院新农合工作奖惩制度
- 医生门诊奖惩制度范本大全
- 品牌督导奖惩制度汇编
- 关于物业员工奖惩制度
- 技术研发中心奖惩制度
- 物业岗位考核奖惩制度
- 聚氨酯地坪施工方案及工艺要求
- 常压储罐完整性管理系统:构建、应用与展望
- 电力线路巡检报告模板
- 劳务合同2026年合同协议
- 2025年高职(金融科技应用)金融科技基础专项测试试题及答案
- 理疗店应急预案(3篇)
- 2026年新疆生产建设兵团兴新职业技术学院单招职业技能测试题库及答案详解一套
- 鼾症科普宣传课件
- 义务教育《英语课程标准》(2025年修订版)原版核心框架+深度解读+测试题及答案
- 配电箱设备防护维护技术方案
- 2026年苏州工业职业技术学院单招综合素质考试题库附答案
评论
0/150
提交评论