




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章VisualFoxPro程序设计基础,本章学习目标,通过本章学习,读者应该掌握以下内容1、程序与程序文件2、程序的基本结构3、模块化程序设计4、程序调试,7.1.1程序的概念在VisualFoxPro中,将完成某项任务所需执行的命令序列以文件的形式存储在磁盘上,这种文件称为命令文件或程序文件,程序文件在执行时必须从磁盘调入内存才能执行。7.1.2程序文件的建立和执行1建立和修改程序文件VisualFoxPro程序文件,是一个以(.PRG)为扩展名的文本文件。,7.1程序与程序文件,在VisualFoxPro系统环境下,建立和编辑程序文件有多种方法,在此主要介绍命令方式和菜单方式。(1)命令方式:MODIFYCOMMAND(2)菜单方式2执行程序文件执行程序文件就是依次执行程序文件中的每条命令或语句。程序文件的执行有命令和菜单两种方式。(1)命令方式:DO(2)菜单方式在VisualFoxPro系统环境下,选择“程序”菜单中的“运行”命令选项,在显示的对话框中确定或输入的要执行的程序文件名。,7.1.3程序中常用的命令1交互式输入输出命令(1)INPUT命令INPUTTO(2)字符串输入命令ACCEPTTO(3)单字符输入命令:WAITTOWINDOWAT,NOWAITCLEAR/NOCLEARTIMEOUT(4)文本输出命令TEXTENDTEXT,2其他程序运行命令(1)清屏命令CLEAR(2)返回命令RETURN(3)终止程序执行命令CANCEL(4)退出系统命令QUIT(5)注释命令NOTE*&,3环境设置命令(1)关闭对话命令SETTALKONOFF(2)设置跟踪命令SETECHOONOFF(3)设置打印命令SETPRINTERONOFF(4)设置定向输出命令SETDEVICETOSCREENTOPRINTERTOFILE(5)设置精确比较命令SETEXACTONOFF(6)设置保护状态命令SETSAFETYONOFF(7)设置删除记录标志命令SETDELETEDONOFF(8)设置屏幕状态命令SETCONSOLEONOFF(9)设置缺省目录命令SETDEFAULTTO,4程序中常用的命令综合应用【例7-4】编写程序P3.PRG,其程序功能是查找指定日期以后出生的学生。【7-5】编写程序P4.PRG,其程序功能:用户输入待查询学生的姓名,显示该学生基本情况。【例7-6】WAIT命令使用示例,7.2程序的基本结构,在VisualFoxPro中,结构化程序设计主要依靠系统提供的结构化语句构成,程序的基本结构有三种:顺序结构、分支结构和循环结构。每一种基本结构可以包含一个或多个语句。顺序结构是指程序按照语句排列的先后顺序逐条的执行。它是程序中最简单、最常用的基本结构。VisualFoxPro中,大多数命令都可以作为顺序结构中的语句来实现编程。,7.2.1分支结构单向分支单向分支,即根据用户设置的条件表达式的值,决定某一操作是否执行。【命令】IFENDIF【例7-7】编写程序P6.PRG,其程序功能是找出任意两个数中最大值。,(2)双向分支双向分支,即根据用户设置的条件表达式的值,选择两个操作中的一个来执行。【语句】IFELSEENDIF【例7-8】编写程序P7.PRG,其程序功能是:请用户输入待查询学生的姓名,显示该学生基本情况。,(3)多向分支多向分支,即根据多个条件表达式的值,选择多个操作中的一个来执行。【语句】DOCASECASECASECASE,OTHERWISEENDCASE,【例7-9】编写程序P8.PRG,其程序功能计算分段函数值:,7.2.2循环结构1.DOWHILEENDDO语句【语句】DOWHILELOOPEXITENDDO【例7-10】编写程序P9.PRG,其程序功能是统计学生表中入校总分在510分以上的学生人数。,【例711】编写程序P10.PRG,其程序功能是计算S=1+2+3+100。该程序要使用循环结构,解题的思路归纳为两点:引进变量S和I。S用来保存累加的结果,初值为0;I既作为被累加的数据,也作为控制循环条件是否成立的变量,初值为1。重复执行命令S=S+I和I=I+1,直至I的值超过100。每一次执行,s的值增加I,I的值增加1。,2FORENDFOR语句根据用户设置的循环变量的初值、终值和步长,决定循环体内语句执行次数。该语句通常用于实现循环次数已知情况下的循环结构。【语句】FOR=TOSTEPLOOPEXITENDFOR|NEXT,【7-12】编写程序P11.PRG,其程序功能是找出100999之间的所有“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身(如153=13+53+33)。解此题的关键是要知道如何分离出一个三位数中的各位数字。这里给出两种方法,其中I代表三位数,a、b和c分别代表该三位数在百位、十位和个位上的三个数字。,3SCANENDSCAN语句该循环语句一般用于处理表中记录。它是根据用户设置的当前记录指针,对一组记录进行循环操作。【语句】SCANFORWHILEENDSCAN【例7-13】编写程序P12.PRG,其程序功能是用指针循环统计学生表中入校总分在510分以上的学生人数。,4多重循环多重循环是指在一个循环语句内又包含另一个循环语句,多重循环也称为循环嵌套。下面以条件循环为例,进行说明。【语句】DOWHILEDOWHILEENDDOENDDO【例714】编写程序P13.PRG,其程序功能是使用多重循环打印一个九九乘法口诀表。,7.2.3编程实例【例7-15】编写程序P14.PRG,其程序功能是计算:T=1!+2!+10!。【例7-16】先在学生表中添加一个字段:平均成绩N(6,2)。然后根据选课表统计每个学生成绩的平均成绩,并写入新添加的字段里。【例7-17】输出3100之间的所有素数。【例7-18】编制一个查询学生情况的程序。要求根据给定的学号找出并显示学生的姓名及各门功课的成绩。【例7-19】求出任意一个二维数组中某个元素,此元素在所在行上最大,在所在列上最小。注意可能不止一个,也可能没有。对于各种情况都应该输出有关信息。,7.3模块化程序设计,应用程序一般都是多模块程序,包含多个程序模块。模块是一个相对独立的程序段,它可以被其他模块所调用,也可以去调用其他的模块。通常,把被其他模块调用的模块称为过程或子程序,把调用其他模块而没有被其他模块调用的模块称为主程序。将一个应用程序划分成一个个功能相对简单、单一的模块程序,不仅便于程序的开发,也利于程序的阅读和维护。,7.3.1过程及过程调用1过程及过程调用建立过程的方法与般程序的方法相同,所不同的是在每个过程中要有一个返回语句。【返回语句】RETURNTOTOMASTER【调用命令】DO或()【例720】编写程序P14.PRG,其功能是计算S=X!+Y!+Z!,2过程文件过程(或称子程序)是作为一个文件独立地存储在磁盘上,为提高系统的运行效率,可以把多个过程写入到个过程文件中。一个过程文件由多个过程组成,过程文件的扩展名仍然是.PRG。(1)建立过程文件【命令】MODIFYCOMMAND,过程文件的基本书写格式:PROCEDUREFUNCTIONRETURNENDPROCENDFUNCPROCEDUREFUNCTIONRETURNENDPROCENDFUNCPROCEDUREFUNCTIONRETURNENDPROCENDFUNC,(2)打开过程文件【命令】SETPROCEDURETO,ADDITIVE(3)执行过程文件中的过程【命令】DO或()(4)关闭过程文件【命令】CLOSEPROCEDURE或SETPROCEDURETO,【例7-21】下面是一个模块定义和调用的程序示例。涉及三个文件:程序文件f1.prg,其中的代码为主程序,另外包含一个过程p1;程序文件f2.prg作为子程序被主程序调用;过程文件f3.prg包含两个过程p2和p3。【例722】编写程序P15.PRG,其程序功能是求3-100之间的所有素数。,7.3.2变量的作用域和参数调用1变量的作用域在程序设计中,特别是模块程序中,往往会用到许多内存变量,这些内存变量有的在整个程序运行过程中起作用,而有的内存变量只在某些程序模块中起作用,内存变量的这些作用范围称为内存变量的作用域。内存变量的作用域根据作用范围可分为公共变量、私有变量和局部变量。,(1)公共变量公共变量是指在程序的任何嵌套中及在程序执行期间始终有效的变量。程序执行完毕,它们不会在内存自动释放。公共变量的定义如下:【命令】PUBLIC(2)私有变量在程序中直接使用(没有通过PUBLIC和LOCAL命令事先声明)而由系统自动隐含建立的变量都是私有变量。私有变量的作用域是建立它的模块及其下属的各层模块。一旦建立它的模块程序运行结束,这些私有变量将自动清除。,(3)局部变量局部变量只能在建立它的模块中使用,不能在上层或下层模块中使用。当建立它的模块程序运行结束时,局部变量自动释放。局部变量用LOCAL命令建立:【命令】LOCAL【例7-23】公共变量、私有变量、局部变量及其作用域示例。,(4)PRIVATE命令的语法格式为:PRIVATEPRIVATEALLLIKE|EXCEPT【例7-24】变量的隐藏示例。【例7-25】LOCAL和PRIVATE命令的比较示例。,7.3.3过程的带参调用1带参调用【命令】DOWITH或()接受参数【命令】PARAMETERS|LPARAMETERS【例7-26】按值传递和按引用传递示例。【例7-27】传递整个数组示例。【例7-28】编写程序P17.PRG,其程序功能是用带参调用方法计算梯形的面积。,7.4程序调试,7.4.1调试器环境调用调试器的方法一般有两种:选择“工具”菜单中的“调试器”命令。在命令窗口输入DEBUG命令。系统打开“调试器”窗口,进入调试器环境。在“调试器”窗口中可选择地打开5个子窗口:跟踪、监视、局部、调用堆栈和调试输出。要打开子窗口,可选择“调试器”窗口“窗口”菜单中的相应命令;要关闭子窗口,只需要单击窗口右上方的“关闭”按钮。,下面是各子窗口的作用和使用特点。1跟踪窗口用于显示正在调试执行的程序文件。要打开一个需要调试的程序,可从“调试器”窗口的“文件”菜单中选择“打开”命令,然后在打开的对话框中选定所需的程序文件。被选中的程序文件将显示在跟踪窗口里,以便调试和观察。,跟踪窗口左端的灰色区域会显示某些符号,常见的符号及其意义如下所示:指向调试中正在执行的代码行。:断点。可以在某些代码行处设置断点,当程序执行到该代码行时,中断程序执行。可以控制跟踪窗口中的代码是否显示行号,方法是:在VisualFoxPro系统“选项”对话框的“调试”选项卡中选择“跟踪”单选按钮,然后设置“显示行号”复选框。,2监视窗口用于监视指定表达式在程序调试执行过程中的取值变化情况。要设置一个监视表达式,可单击窗口中的“监视”文本框,然后输入表达式的内容,按回车键后表达式便添入文本框下放的列表框中。当程序调试执行时,列表框内将显示所有监视表达式的名称、当前值及类型。双击列表框中的某个监视表达式就可对它进行编辑;右键单击列表框中的某个监视表达式,然后在弹出的快捷菜单选择“删除监视”可删除一个监视表达式。在监视窗口中可以设置表达式类型的断点。,3局部窗口用于显示模块程序(程序、过程和方法程序)中的内存变量(简单变量、数组、对象),显示它们的名称、当前取值和类型。可以从“位置”下拉列表框中选择指定一个模块程序,下方的列表框内将显示在该模块程序内有效(可视)的内存变量的当前情况。单击局部窗口,然后在弹出的快捷菜单中选择“公共”、“局部”、“常用”或“对象”等命令,可以控制在列表框内显示的变量种类。,4调用堆栈窗口用于显示当前处于执行状态的程序、过程和方法程序。若正在执行的程序是一个子程序,那么主程序和子程序的名称都会显示在该窗口中。模块程序名称的左侧往往会显示一些符号,常见的符号及其意义如下所示:调用顺序序号:序号小的模块程序处于上层,是调用程序;序号大的模块程序处于下层,是被调用程序,序号最大的模块程序也就是当前正在执行的模块程序。当前行指示器():指向当前正在执行的行所在的模块程序。从快捷菜单中选择“原位置”和“当前过程”命令可以控制上述两个符号是否显示。,5调试输出窗口可以在模块程序中安置一些DEBUGOUT命令:DEBUGOUT当模块程序调试执行到此命令时,会计算出表达式的值,并将计算结果送入调试输出窗口。若要把调试输出窗口的内容保存到一个文本文件里,可以选择“调试器”窗口“文件”菜单中的“另存输出”命令,或选择快捷菜单中“另存为”命令。要清除该窗口中的内容,可选择快捷菜单中的“清除”命令。,7.4.2设置断点可以设置以下4种类型的断点:类型1:在定位处中断:可以指定一代码行,当程序调试执行到该代码时中断程序运行。类型2:如果表达式值为真则在定位处中断:指定一代码行以及一个表达式,当程序调试执行到该行代码时如果表达式的值为真,就中断程序运行。类型3:当表达式值为真时中断:可以指定一个表达式,在程序调试执行过程中,当该表达式值变成逻辑真.T.时中断程序运行。类型4:当表达式值改变时中断:指定一个表达式,在程序调试执行过程中,当该表达式值改变时中断程序运行。,7.4.3调试菜单“调试”菜单包含执行程序、选择执行方式、终止程序执行、修改程序以及调整程序执行速度等命令。下面是各命令的具体功能:运行:执行在跟踪窗口中打开的程序。如果在跟踪窗口里还没有打开程序,那么选择该命令将会打开“运行”对话框。当用户从对话框中指定一个程序后,调试器随即执行此程序,并中断于程序的第一条可执行代码上。继续执行:当程序执行被中断时,该命令出现在菜单中。选择该命令可使程序在中断处继续往下执行。取消:终止程序的调试执行,并关闭程序。定位修改:终止程序的调试执行,然后在文本编辑窗口打开调试程序。,跳出:以连续方式而非单步方式继续执行被调用模块程序中的代码,然后在调用程序的调用语句的下一行处中断。单步:单步执行下一行代码。如果下一行代码用了过程或者方法程序,那么该过程或者方法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国家级科研基地高性能水泥砖材料供应合同
- 椭圆几何题型分类与综合训练
- 2025年中秋庆典活动场地租赁及配套服务合同
- 2025年税务师考试税收筹划与税收筹划案例科目模拟试卷
- 2025年商业空间装修及品牌家具租赁合同
- 2025年权威解析全国英语等级考试(PETS)一级试卷
- 2025年城市道路交通事故快速理赔服务合同
- 2025年人力资源管理师(初级)考试真题模拟卷:实操技能提升指南
- 2025年钳工(初级)考试试卷:理论知识与实操技能综合测评
- 2025年度特色主题餐厅租赁与文化创新发展项目合同
- DB14∕T 1822-2019 旅游景区安全评估规范
- GB/T 44670-2024殡仪馆职工安全防护通用要求
- DB34T 3709-2020 高速公路改扩建施工安全作业规程
- THXCY 001-2024 草种质资源调查与收集技术规程
- 部编版(2024版)七年级历史上册第1课《远古时期的人类活动》精美课件
- 2024年云南省昆明市官渡区、呈贡区小学六年级第二学期小升初数学试卷含解析
- 双向情感障碍患者个案护理查房
- 《睡眠质量下降人群治未病干预方案》
- 知识题库-人社劳动知识竞赛测试题及答案(十二)
- 中华民族共同体概论课件第十一讲中华一家与中华民族格局底定(清前中期)课件
- GB/T 25849-2024移动式升降工作平台设计、计算、安全要求和试验方法
评论
0/150
提交评论