版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章程序设计基础5.1 程序设计概述 5.2 结构化程序设计5.3面向对象的程序设计基础5.1 程序设计概述 程序是为了完成某一具体任务而编写的一系列指令。VFP程序由一系列代码组成,代码可以包括以命令形式出现的指令、函数或VFP可以理解的任何操作。 程序设计是利用系统所提供的设计工具,按照程序设计语言的规范编写程序的过程。一、创建、修改和运行程序创建程序文件 VFP程序是包含一系列命令文本文件。可以使用菜单命令“文件”“新建”,或“常用”工具栏中的“新建”按钮,或利用项目管理器新建,或用命令来创建。格式:MODIFY COMMAND FileName|?其中: FileName为所要创建的
2、程序文件名,扩展名默认为.prg。5.2 结构化程序设计修改程序文件 对于已存在的程序文件,可以使用菜单命令“文件”“打开”,或“常用”工具栏中的“打开”按钮,或利用项目管理器修改,或用命令来修改。格式:MODIFY COMMAND FileName|?其中: FileName为所要修改的程序文件名,扩展名默认为.prg。运行程序当程序文件处于VFP编辑窗口时,单击“常用”工具栏上的“!”在“项目管理器”窗口中选择程序文件,然后单击 “运行”按钮在命令窗口中使用DO命令格式:DO ProgramName WITH ParameterList其中: WITH子句用于指定程序运行的参数注意:一旦程
3、序运行,系统会自动对程序文件(.prg)进行编译,生成“伪编译”程序(.fxp)。执行程序时,系统实质上是执行.fxp文件。二、程序结构 程序结构是指根据不同的情况和条件,控制程序去执行相应操作的语句序列。顺序结构 所谓顺序结构就是按照顺序依次执行程序中的命令。分支结构 分支结构是根据条件的测试结果执行不同的操作。循环结构 分支结构就是使得一组语句重复执行若干次。AB条件?ABTFA条件?FT分支结构格式:IF lExpression THEN Commands1 ELSE Commands2 ENDIF功能:当条件表达式lExpression的值为.T.时,执行命令组Commands1,然后
4、执行ENDIF后面的语句;否则,执行命令组Commands2,然后执行ENDIF后面的语句。如缺省ELSE子句,则当表达式值为.F.时,直接执行ENDIF后面的语句。说明:IF和ENDIF必须配对出现;该语是“二分支结构”,即最多只能判断两种情况,若要判断多种情况,可通过IFELSEENDIF语句的嵌套来实现。格式:DO CASE CASE lExpression1 Commands1 CASE lExpression2 Commands2 OTHERWISE Commands ENDCASE功能:首先从第一个CASE开始,判断其后的条件表达式的值是否为.T. ,当遇到第一个结果为.T.的CA
5、SE表达式时,就执行其后的命令组,然后直接执行ENDCASE后面的语句。如所有表达式均为.F.时,则执行OTHERWISE后面的语句。说明:在DO CASE与第一个CASE之间不能有任何语句;DO CASE必须与ENDCASE配对;当有多个表达式值为.T.时,只执行第一个为.T.的后面的命令组。此命令为“多分支结构”循环结构格式:FOR Var=nInitialValue TO nFinalValue STEP nIncrement Commands LOOP EXIT ENDFOR|NEXT其中:Var为循环变量;nInitialValue为循环变量初值; nFinalValue为循环终值;
6、nIncrement为循环变量的步长,缺省时为1;Commands为多次执行的循环体。循环体中的LOOP语句用于将控制直接返回给FOR,即忽略此后的循环体语句而重新循环;EXIT语句将控制传递给ENDFOR后的第一条语句,即“跳出”循环。LOOP和EXIT均可置于循环体中的任意位置。执行过程:将初值赋给循环变量,并确定循环终值和步长。终值和步长一经确定,不能更改。判断循环变量是否超出终值,若超出终值,则结束循环,执行ENDFOR后的第一条语句,否则,执行循环体。计算循环变量的值:循环变量=循环变量+步长转到第二步执行。注意:所谓循环变量是否超出终值,分两种情况: 当步长0时,若循环变量终值,此
7、时即循环变量超出终值。当步长0时,若循环变量终值,则此时循环变量超出终值。格式:DO WHILE lExpression Commands LOOP EXIT ENDDO功能:当条件表达式lExpression的值为真(.T.)时,则反复执行循环体Commands。注意:循环体中的处理必须对条件表达式的值有所影响,或在循环体中有EXIT语句且在循环过程中被执行,否则会造成“死循环”。格式:SCAN Scope FOR lExpression Commands LOOP EXIT ENDSCAN说明:此命令仅用于处理表的记录。若对表中所有记录执行某一操作,可以使用该语句。随着记录指针的移动,SC
8、AN循环对每条记录执行相同的命令组Commands。结构的嵌套 三种控制结构可以相互嵌套。所谓嵌套就是在一种程序结构中包含任何的程序结构。当使用到嵌套时,不能出现结构的交叉。三、过程与用户自定义函数 用户可以将经常执行的具有某种功能的一段代码独立出来,创建一个过程或用户自定义函数(User Defined Function,简称UDF)。过程与自定义函数的定义过程定义的基本语法格式:PROCEDURE ProcedureNameCommandsRETURE eExpression ENDPROC函数定义的基本语法格式: FUNCTION FunctionName Commands RETURE
9、 eExpression ENDFUNC 为了使过程或自定义函数具有一定的灵活性,可以向过程或自定义函数传递一些参数,使得过程可以根据不同的参数进行处理,自定义函数可以根据接受到的不同参数返回不同的值。要使一个过程或自定义函数能够接受参数,必须在PROCEDURE或FUNCTION命令后面的第一个可执行语句之前使用PARAMETERS语句进行参数定义。语法格式:PARAMETERS ParameterList其中: ParameterList为参数列表。如有多个参数,各参数间以逗号分隔,且参数最多可有27个。 在过程或自定义函数的定义中,RETURN语句用于指定过程或自定义函数的返回值。缺省时
10、,返回值为真(.T.)。 用户创建的过程或自定义函数可以存储在数据库的存储过程中,或以一个程序文件保存一个或多个过程或自定义函数,或位于一个程序的最后。如果过程或自定义函数存在于单独的程序文件中,该程序文件称为过程文件。过程与自定义函数的调用格式:DO ProcedureName IN ProgramName WITH ParameterList其中:IN子句用于指定过程或自定义函数所在的过程文件,WITH子句用于指定传递给过程或自定义函数的参数。参数的个数及数据类型必须与过程或自定义函数中所定义的参数的个数及数据类型一致。 如果调用某过程文件中的过程或自定义函数,也可在调用之前通过SET P
11、ROCEDURE TO命令打开该过程文件。格式:SET PROCEDURE TO Procs.prg其中:Procs.prg为要打开的过程文件名,缺省则关闭过程文件。参数传递的两种方式格式:SET UDFPARAMS TO REFERENCE | VALUE功能:设置参数传递方式,REFERENCE为引用传递(过程或自定义函数中修改了参数的值,基变化可返回给主程序);VALUE为按值传递(过程或自定义函数中参数值改变不影响主程序中的参数值)。5.3 面向对象的程序设计基础 面向对象的程序设计(Object-Oriented Programming,简称OPP)一、类和对象概述 类(Class)
12、是面向对象程序设计中的核心。人们将具有相同的结构、操作,并遵守相同规则的对象聚合在一起,这组对象称为类。类包含了对象的程序设计和数据抽象,是一个具有相同行为的对象的抽象。 对象(Object)是基于某种类所创建的实例,包括了数据和过程。对象属性(Property):定义对象的特征或某一方面的行为。事件(Event):是由对象识别的一个动作,可以编写相应的代码对此动作进行响应。方法(Method):是对象能够执行的一个操作。在VFP中,方法是与对象相关联的过程(完成某种操作的处理代码),通常也称为方法程序,它紧密地和对象连接在一起。事件可以具有与之相关联的方法程序,也可以独立于事件而单独存在,它
13、在系统中被显式地调用。二、基类基类(Base Class)是VFP系统提供的内部定义的类,可用作其他用户自定义类的基础。子类(Subclass)是以其他类定义为起点,为某一种对象所建立的新类。子类可继承任何父类所做的修改。用户自定义类(User-defined Class)与VFP基类相似,但由用户定义,并且可用来派生子类。基类可分为:容器类与控件类容器类(Container Classes)是包容其他类的基类。控件类(Control Classes)是可以包含在容器类中的基类。类的特点:继承性(Inheritance):说明了子类延用父类特征的能力。如果父类特征发生改变,则子类将继承这些新特
14、性。多态性(Polymorphism):指一些关联的类包含同名的方法程序,但方法程序的内容可以不同。封装性(Encapsulation):说明包含和隐藏对象信息,如内部数据结构和代码的能力。封装使操作对象的内部复杂性与应用程序的其他部分隔离开来。抽象性(Abstraction):指提取一个类或对象与众不同的特征,而不对该类或对象的所有信息进行处理。三、 处理对象1、引用对象绝对引用如:FormSet1.Form1 Formset1.Form1.Pageframe1.Page1.Column1.Text1相对引用ActiveForm当前活动表单ActivePage当前活动表单中的活动页面Acti
15、veControl当前活动表单中具有焦点的控件PARENT该对象的直接容器THIS该对象THISFORM包含该对象的表单THISFORMSET包含该对象的表单集VFP中相对引用对象时所用的关键字2、设置对象属性引用对象.属性=值例:FormSet1.Form1.Text1.Value=DATE( ) FormSet1.Form1.Text1.ForeColor=RGB(0,0,0) FormSet1.Form1.Text1.BackColor=RGB(192,192,192) FormSet1.Form1.Text1.FontName=“黑体” 此外,还可利用WITHENDWITH语句简化对同
16、一对象的多个属性的设置。如:WITH FormSet1.Form1.Text1 .Value=DATE( ) .ForeColor=RGB(0,0,0) .BackColor=RGB(192,192,192) .FontName=“黑体” ENDWITH3、调用对象的方法程序如果对象已经创建,便可以在应用程序的任何地方调用这个对象的方法程序。调用方法程序的语法如下:引用对象.方法程序如:FormSet1.Form1.Show FormSet1.Form1.Text2.SetFocus4、对象对事件的响应 当对象的某个事件发生时,该事件的处理程序代码将被执行。如果事件没有与之相关联的处理程序,则
17、当事件发生时不会发生任何操作。 用户不能用其他的程序设计方法产生其他事件,但可以调用与这些事件相关的过程。四、 事 件1、核心事件事 件事件被激发后的动作Load表单或表单集被加载到内存中Unload从内存中释放表单或表单集Init创建对象Destroy从内存中释放对象Click用户使用主鼠标按钮单击对象DblClick用户使用主鼠标按钮双击对象RightClick用户使用辅鼠标按钮单击对象GotFocus对象接收焦点,由用户动作引起LostFocus对象失去焦点,由用户动作引起KeyPress用户按下或释放键MouseDown当鼠标指针停在一个对象上时,用户按下鼠标按钮MouseMove用户在对象上移动鼠标MouseUp当鼠标指针停在一个对象上时,用户释放鼠标按钮InteractiveChange以交互方式改变对象值ProgrammaticChange以编程方式改变对象值2、容器层次与类层次中的事件3、事件激发的顺序教材P156表5-7Visual FoxPro中的事件顺序4、常用事件鼠标事件Click、RightCl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 谈谈网络学习的利与弊议论文类作文6篇
- 2025年金融科技创新在数字货币支付中的应用与实践研究报告及未来发展趋势预测
- 2025年农业行业农业数字化发展战略研究报告及未来发展趋势预测
- 2025年物联网医疗行业医疗设备与远程监护技术研究报告及未来发展趋势预测
- 员工培训计划制定工具新员工与在职员工培训需求分析
- 2025年软件开发行业物联网应用软件创新研究报告及未来发展趋势预测
- 2025年冬季运动行业智能穿戴与数字运动体验研究报告及未来发展趋势预测
- 护理用药安全管理题库及答案解析
- 九江叉车安全员考试题库及答案解析
- 龙子湖区安全员b证考试题库及答案解析
- 2024年竞聘宁夏宁旅酒店集团有限公司招聘笔试参考题库含答案解析
- 2024年度医院泌尿外科医师述职报告课件
- Unit+2+A+life's+work+Starting+out+ Understanding+ideas+课件-【知识精讲精研】高中英语外研版(2019)选择性必修第三册
- 学校流感防控宣传知识讲座
- 《中医与营养》课件
- 支气管镜检查并发症预防及处理
- 天然气管线泄漏事故模拟计算
- 冠心病合并糖尿病护理课件
- 未被列入失信行为记录名单承诺书
- 深圳市建筑行业劳动合同范本
- 水下无线通信的类型及应用
评论
0/150
提交评论