版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章 程序设计基础与面向对象程序设计方法教学内容 程序的建立、三种结构的程序设计、过程的使用;面向对象程序设计的类、对象、属性、事件与方法。教学目标 掌握面向过程和面向对象程序设计的基本方法。重 点 顺序、分支、循环结构的程序;对象、属性、事件与方法。难 点 循环及分支结构程序设计;理解面向对象程序设计思想。一、程序设计基础5.1 程序及程序文件的建立与运行n 基本概念n 程序是为了完成某一具体任务而编写的一系列指令。n 程序设计是利用系统所提供的设计工具,按照程序语言的规范,编写程序的过程。n VFP包含了过程化程序设计与面向对象程序设计n 程序的优点n 程序自动执行多条命令n 程序可被修
2、改并重新运行,且可多次运行n 一个程序可调用其他程序程序流的控制n 顺序(顺序结构由语句行组成,执行时语句顺序执行)n 分支(根据逻辑表达式的值执行不同的操作)n 循环(使得一组语句组重复执行若干次)n 子程序创建程序n 创建:n “新建”按钮n MODIFY COMMAND <程序文件名>n 修改:n “打开”/“修改”按钮n MODIFY COMMAND <程序文件名>n 运行:n “运行”按钮n DO <程序文件名> 5.1 顺序例1:Use jsAppend blankEditUse例2:交换两个变量的值5.2 条件分支n IFELSEENDIFIf
3、 条件表达式 命令组1ELSE 命令组2ENDIF例1:若变量nWaterTemp(水温度)的值小于100,则不执行任何操作。 IF nWaterTemp>=100 lBoiling=.T. && 水已沸 ENDIF例2:根据变量X的正负符号情况决定变量Y的值为1或-1: IF X>0 Y=1 ELSE Y=-1 ENDIFn IF嵌套结构不清晰,变化无穷(分段函数,show)n DO CASEENDCASEDO CASE CASE <条件表达式1> <命令组1> CASE <条件表达式2 > <命令组2 > . CA
4、SE <条件表达式n> <命令组n > OTHERWISE <其他命令组 > ENDCASE5.3 循环n SCANENDSCANn FORENDFORn DO WHILEENDDOSCANENDSCAN 语句使用场合:对表中所有记录执行某一记录语句格式 SCAN NOOPTIMIZE<范围>FOR<条件> WHILE<条件> <语句组> ENDSCAN例:根据一元二次方程的系数a,b,c,判断方程根的情况Delta=b*b-4*a*cDO CASE CASE delta>0 ?“方程有两个不等的实数根:
5、” ?(-b+sqrt(delta)/(2*a) ? (-b-sqrt(delta)/(2*a) CASE delta=0 ?“方程有两个相等的实数根:” ? b/(2*a) CASE delta<0 ?“方程有两个复根:” real_part=-b/(2*a) img_part=sqrt(-delta)/(2*a) ?alltrim(str(real_part)+”+”+alltrim(str(img_part)+”I” ?alltrim(str(real_part)+”-”+alltrim(str(img_part)+”I”ENDCASEn 示例n 扫描JS 表中全部记录,逢记录号为
6、双号的,显示其工号和姓名: USE JSSCAN FOR RECNO()%2=0?JS.GH , JS.XMENDSCANFORENDFOR语句使用场合:已知循环次数语句格式FOR <循环变量>=<初值> TO <终值> STEP <步长> <语句组>ENDFOR / NEXT循环变量即计数器执行过程n 示例n 计算100以内的奇数和S=1+3+5+99,100的阶乘P=1*2*3*100 #DEFINE N 100 && 设置循环终值常量 s=0 && 累加器,初始化为0 * 以下循环计算n以内的奇数
7、和 FOR i = 1 to N STEP 2 s = s + i ENDFOR ? N , “ 以内的奇数和S=” ,S *以下循环计算N的阶乘 p=1 && 累乘器,初始化为1 FOR I =1 TO N p = p * I ENDFOR ? N, “的阶乘=”, pDO WHILEENDDO语句n 使用场合:循环次数未知n 语句格式 DO WHILE <条件> <语句组> ENDDO循环结构中的LOOP命令和EXIT命令LOOP命令(短路语句)(与表有关)例,求1100之间非3的倍数的所有奇数之和S=0 FOR I=1 TO 100 STEP 2I
8、F MOD(I,3)=0LOOPENDIFS=S+IENDFOR例,随机产生一个要求在7080之间的数x=0do while .t. x=rand()*100 if x>70 and x<80 exit endif enddo5.4 子程序调用:DO 命令主程序(菜单程序)嵌套的DO调用层数为128层5.5 结构的嵌套示例1(累加)n 计算 S=1+2+99 S=0 FOR K=1 TO 99 STEP 1 S=S+K ENDFORn 计算 S= 1*1+3*3+5*5+.+25*25S=0FOR K=1 TO 25 STEP 2 S=S+K*KENDFOR示例2(累乘)n 计算
9、P= 3*5*7*9*11*.*25P=1FOR K=3 TO 25 STEP 2 P=P*KENDFOR示例3(累加+累乘)n 计算 S=1!+2!+3!+20!S=0FOR I=1 TO 20 P=1FOR J=1 TO IP=P*JNEXT JS=S+PNEXT I(可以用单循环)方法二: S=0P=1FOR I=1 TO 20 P=P*IS=S+PNEXT I示例4(随机数的产生之一)n 产生50个随机数。DIMENSION A(50), B(5,10)FOR I=1 TO 50A(I)=RAND()ENDFORFOR I=1 TO 5FOR J=1 TO 10B(I,J)=RAND(
10、)NEXT JNEXT I示例5(随机数的产生之二)n 产生10个(10-50)之间的随机整数。DIMENSION X(10)FOR I=1 TO 10N=5; 赋初值DO WHILE N<10 .OR. N>50N=INT(RAND()*100)ENDDO X(I)=NENDFOR 示例6(排序)n 将数组A(10)中的10个元素按升序进行排序。(降序如何处理?)FOR I=1 TO 10FOR J=I+1 TO 10IF A(I) > A(J); 比较T=A(I)A(I)=A(J)A(J)=TENDIFENDFORENDFOR示例7(数组函数与FOR 配合使用)n 创建名
11、为 gaMyArray 的数组,数组中放置表customer 的字段信息,然后显示字段名。CLOSE DATABASESOPEN DATABASE (HOME( ) + ; samplesdatatestdata)USE Customer && 打开表CustomergnFieldcount = AFIELDS(gaMyArray)&&创建一个数组FOR nCount = 1 TO gnFieldcount ? gaMyArray(nCount,1)ENDFOR&& 显示所有字段名二、面向对象的程序设计方法n 通过对类、子类和对象等的设计来体现,
12、类是面向对象程序设计技术的核心。n 优点; 以对象为中心的问题求解方法简化程序设计,更接近现实世界,可降低开发和维护的费用; 提高程序代码的可重用性; 可以和各种模型自然的融合1、基本概念n 对象:现实世界中的事物均可抽象为对象,对象是构成程序的基本单位和运行实体。n 类: 定义了对象特征以及对象外观和行为的模板,它刻划了一组具有共同特性的对象。n 属性:对象的特征。 n 方法:对象能够执行的一个操作,是和对象相联系的过程。n 事件:由对象识别的一个动作。2、类n 基类: 系统本身提供的内部定义的类称为基类,可用于自定义类的基础。n 子类: 以其他类的定义为起点,为某一对象建立的新类。新类将继
13、承任何对父类所做的修改。n 用户自定义类: 与基类相似,由用户自己定义,可用于派生子类n 类库: 存储类的文件,每一个以可视方式设计的类都存储在一个类库中。类库文件的扩展名为 .VCX .VCT。类的特征:n 封装性(encapsulation)隐藏类中对象的内部数据或操作细节,只看到外表信息。n 继承性(inheritance)任何类都可以从其它已有的类中派生,新类保持了父类中的行为和属性,但增加了新的功能。n 多态性(polymorphism)相同的操作可作用于多种类型的对象上,并获得不同的结果。n 抽象性(abstraction)提取一个类或对象与众不同的特征,而不对该类或对象的所有信息
14、进行处理。类的分类:§ 容器类(Container classes)是包容其他类的基类容器可以包含其它对象容器可以作为所包含的对象的父对象允许访问包含的对象n 控件类(Control classes)是可以包含在容器类中的基类控件对象可以包含在容器中不能作为其它对象的父对象n 基于类的不同类型,VFP的对象可分为容器对象和控件对象选项按钮选项按钮组命令按钮命令按钮组页面页框表格列表格页框、任意控件、容器、自定义对象表单表单、工具栏表单集任意控件、容器和自定义对象页面标头以及除表单、表单集、工具栏、计时器和其它列以外的任意对象表格列任意控件、页框、容器工具栏任意控件容器能包含的对象容器
15、类3、对象n 对象:是类的一个实例,包括了数据和过程。具有所在类所定义的全部属性和方法。n VFP有两种对象:容器对象和控件对象。n 对象的引用 引用对象时,对象与对象之间、对象与属性之间需用分隔符 . 进行分隔。(1) 绝对引用 从容器的最高层引用对象,给出对象的绝对地址。如:(2) 相对引用 在容器层次中相对于某个容器层次的引用。 如:thisform .text1.value选项按钮选项按钮组命令按钮命令按钮组页面页框表格列表格页框、任意控件、容器、自定义对象表单表单、工具栏表单集任意控件、容器和自定义对象页面标头以及除表单、表单集、工具栏、计时器和其它列以外的任意对象表格列任意控件、页
16、框、容器工具栏任意控件容器能包含的对象容器类OOP方法:114、属性l 每个对象都有属性,可以对对象设置属性 属性可以在设计时设置也可在运行时设置,但也有一些属性是只读的。l 设计时修改属性在“属性”窗口中进行l 程序代码中,用以下语法进行设置 <引用对象> . <属性> = 值例:黑灰“黑体”5、事件和方法程序n 事件(Event):是由对象识别的一个动作,可编写相应的代码,对动作进行响应。对象的事件集合是固定的,用户不能创建新的事件例:click, dblclick, keypressn 方法程序(Method):是对象能够执行的一个操作,是与对象相关联的过程,方法
17、可由用户自己创建例:releasen 调用语法<引用对象>.<方法程序> 注:有返回值的方法程序以圆括号结尾当鼠标指针停在一个对象上时,用户释放鼠标按钮 Mouseup用户在对象上移动鼠标 Mousemove当鼠标指针停在一个对象上时,用户按下鼠标按钮 Mousedown用户按下或释放键 Keypress对象失去焦点,由用户动作引起Lostfocus对象接收焦点,由用户动作引起Gotfocus用户使用辅鼠标按钮单击对象 Rightclick用户使用主鼠标按钮双击对象 Dblclick用户使用主鼠标按钮单击对象 Click从内存中释放对象 Destroy创建对象Init从内存中释放表单或表单集 Unload表单或表单集被加载到内存中 Load事件被激发后的动作常用事件结束一个VFP6.0实例,返回到创建它的应用程序。Object.QuitQuit从内存中释放表单或表单集Object.ReleaseRelease重画表单或控件,并刷新所有值Object.RefreshRefresh把Visible属性设置为 .T.,显示并激活一个表单或表单集,并确定表单的显示模式Object.ShowShow通过把Visible属性设置为 .F.,来隐藏表单、表单集或工具栏Object.Hid
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《商务沟通技巧》课件
- 《交通设施》课件
- (部编版八年级《政治》下册课件)第2课时-依法行使权利
- (部编版八年级《政治》课件)第1课时-认识总体国家安全观
- hse体系管理培训讲座课件
- 大型学校教学楼长螺旋施工合同
- 建筑幕墙工程施工合同及安全协议
- 2022-2023学年部编版语文九年级下册第3课《短诗五首》同步练习
- 证券业务员招聘合同模板
- 建材物料管理办法
- 算三世秘本公开:《达摩一掌经》
- 《英语语音》考试试卷及答案(共6页)
- 火电厂专用英汉对照
- 中药材生产管理质量管理文件目录
- 主斜井台阶施工安全技术措施
- (最新)专家服务基层工作培训会领导讲话(精)
- 专业英语四级听力模拟题
- 公立医院DSA设备的综合效益分析
- 人教版八年级上册生物实验教案报告单
- 乡镇殡葬整治工作开展情况汇报
- MSDS(T-09)快干水2x3
评论
0/150
提交评论