您好,欢迎访问三七文档
第5章程序设计基础第5章程序设计基础•5.1程序设计概述•5.2结构化程序设计•5.3面向对象程序设计基础5.1程序设计概述•例–计算100以内的奇数和S=1+3+5+……+99,100的阶乘P=1*2*3*……*100•#DEFINEN100&&设置循环终值常量•s=0&&累加器,初始化为0•***以下循环计算n以内的奇数和•FORi=1toNSTEP2•s=s+i•ENDFOR•?N,“以内的奇数和S=”,S–***以下循环计算N的阶乘•p=1&&累乘器,初始化为1•FORI=1TON•p=p*I•ENDFOR•?N,“的阶乘=”,p–程序设计•利用系统提供的设计工具,按照程序设计语言的规范描述解决问题的算法并进行程序编写的过程。•5.1.1结构化程序设计–主要思想:•自顶向下、逐步求精、模块化和限制使用转移语句–程序流程:•顺序、分支、循环–开发过程:•从“做什么”到“如何做”–优点:•系统结构性强、便于设计和理解–缺点:•维护困难•5.1.2面向对象的程序设计方法(OOP)–基本思想:•客观世界→对象(对象类)的实例–Oop的构成•对象–是数据及作用于这些数据之上的操作结合在一起所构成的独立实体的总和。•类–是一组具有相同数据结构和相同操作的对象的描述。–开发过程:•从“用什么做”到“要做什么”•表单、对象(“用什么做”)•事件过程(“要做什么”)–优点•简化程序设计,降低开发和维护的费用•提高程序代码的可重用性•OOP的三个重要特性–封装性•表单属性–继承性•类与类之间的继承–多态性•方法传递参数的不同实现不同操作5.2结构化程序设计•5.2.1概述•一、程序–程序•是一组完成指定任务的命令序列集合。–组成•说明部分、初始化部分、任务执行部分(主体)、环境恢复部分、程序退出指令构成。–算法•即实现程序任务的方法。–流程图•通过指定的图形表达符号描述程序的执行方法和过程。–VFP提供了三种工作方式:•菜单方式•命令方式•程序文件方式–对于较为复杂的数据调用和处理过程必须用编程方式,利用预置的程序解决问题。•二、进入程序编辑–“新建”→“程序”;–项目管理器→“代码”→“程序”→“新建”;–命令方式:Modifycommand程序文件名–此外,通过各种VFP设计器的代码设计工具也可进行程序代码的编制•三、运行和调用程序–命令方式:DO程序文件名;–在主菜单或项目管理器下,“程序”→“运行”→输入程序文件名→–快捷键•四、程序调试–当遇到下列情况之一,程序终止运行返回到调用环境:–文件的末尾返回到调用行的下一行;–RETURN返回到调用行的下一行;–RETRY返回到调用行,再次调用;–中断语句:CANCEL•中断当前程序的运行,并返回到命令窗口。通常与条件语句配合使用。–挂起语句:SUSPEND•暂停当前程序的执行,并返回到系统命令窗口。–恢复执行语句:RESUME•恢复被SUSPEND挂起的程序,使之从暂停的位置继续执行–QUIT•返回到操作系统(结束程序,退出VFP);“程序”→“取消”•五、注释–1.程序注释:•NOTE[注释]或*[注释]–2.语句注释:•&&[注释]•六、基本输出语句–1.换行输出语句:?[表达式列表]•分别计算表达式列表的值,并将结果输出在主窗口的当前光标下一行。各表达式以“,”号分隔。–2.同行输出语句:??[表达式列表]•分别计算表达式列表的值,并自主窗口当前光标所在行输出结果。各表达式以“,”号分隔。–3.定位输出语句:@行,列SAY表达式•在行,列指定位置输出表达式的值。•5.2.2程序结构–分类•顺序结构•分支结构•循环结构•过程/函数调用•例1:–Usejs–Appendblank–Edit–Use•一、分支结构–单分支•IFexpL•Commands1•ENDIF––双分支•IFexpL•Commands1•[ELSE•Command2]•ENDIF–多分枝•DOCASE•CASEexpL1•Commands1•[CASEexpL2•Commands2•……•CASEexpLn•Commandsn]•[otherwise•Commandsn+1]•ENDCASE•二、循环结构•1.条件循环–DOWHILE条件表达式–命令行序列–ENDDO–当条件表达式为“真”时,执行命令行序列;否则,结束循环并执行ENDDO后面的命令–E.g.•DOWHILE.T.…ENDDO记录指针由EXIT或LOOP控制。•DOWHILE.NOT.EOF()/.NOT.BOF()记录指针由SKIP控制。•2.计数循环•FOR循环变量=初值TO终值[STEP步长]•命令行序列•ENDFOR/NEXT–当循环变量不大于终值时,循环执行命令行序列,并以步长累计实际循环次数(循环变量值)。–循环变量无需事先定义;初值、终值和步长均为数值表达式,可为正、负或小数;步长值缺省为1。•3.指针循环•SCAN[范围][FOR条件表达式1]•[WHILE条件表达式2]•命令行序列•ENDSCAN–在指定纪录范围内,用数据记录指针控制循环次数(对纪录逐个扫描,直至最后一条纪录,即EOF()为真)。–SCAN循环与DOWHILE循环的区别。•注意:–1.DOWHILE和ENDDO、FOR和ENDFOR、SCAN和ENDSCAN必须配对使用;–2.循环语句可以嵌套;–3.循环变量应是数值型变量;–4.EXIT(跳出循环)、LOOP(回到循环开始处)可用于循环过程控制•三、过程与用户自定义函数•(一)主程序和子程序–一个完整的程序可能由若干个程序文件构成,把每个程序看成是整个操作的一个环节,也是一个相对独立的部分,并根据调用关系的主次,分为主程序和子程序。–子程序调用语句•DO子程序名[with参数列表•返回语句RETURN[TOMASTER]•☆TOMASTER返回到最高级调用者•嵌套的DO调用层数为128层。•(二)过程–是可重复调用具有独立功能的程序段(模块)。可以是程序的一部分,也可以作为独立的程序文件。–过程可以放在程序中任何位置,但必须在主调用程序(语句)之后。–过程必须由过程语句引出,其调用命令与子程序相同,只是应以过程名调用。–过程文件是将多个过程集中在一个程序文件中而形成的程序文件,可一次性打开调入多个过程,从而提高执行效率。–建立过程文件与建立程序的方法相同,文件扩展名也是.prg,但其具有特殊的文件结构。–过程结构:•PROCEDURE过程名[PARAMETERS参数列表]命令组•RETURN[eExpression]•ENDPROC•–举例:•PROCEDUREgc1•PARAMETERSx,yz=x+y•RETURNz•ENDPROC–.打开、关闭过程语句•SETPROCEDURETO[过程文件名]•CLOSEPROCEURE•(三)自定义函数–函数:•FUNCTION函数名•[PARAMETERS参数列表]命令组•RETURN[eExpression]•ENDFUNC•20120423•(四)RETURN:–返回语句,即返回过程或函数的调用处。–(1)语句格式:•RETURN[eExpression]–(2)语句功能:•返回表达式的值给调用程序,并将执行目标定位到调用程序中调用命令的下一语句•用RETURN语句返回一个值给调用程序;•省略RETURN,其缺省的返回值为真(.T.)•函数的返回值可以直接打印在活动窗口中,也可•以用一个变量接收下来–举例:P58•(五)调用:–调用过程语句:•DO过程名[WITH(参数)]•?函数名(参数)–语句功能:•执行以〈过程名〉(或函数名)为名的过程(函数)。即执行已有的过程或函数。•提示:–若函数或过程集中保存在某程序文件中,则应使用如下命令来访问–SETPROCEDURETO程序名•注意:p59查找顺序–(2)若是一个UDF独立的保存为一个程序文件:•则可省去由PROCEDURE/FUNCTION命令定义的过程/函数名,该程序文件名即可作为过程(函数)名–(3)向过程或函数传递参数•使过程和函数可以接受参数•定义时第一个可执行语句必须为PARAMETERS语句•最多可传递27个参数–调用时使用参数•例:DOMyudfWITH...•?Myudf(...)•示例–S=0–Fori=1to5–s=s+fjc(i)–Endfor–?s–Funcfjc–Parax–P=1–Forn=1tox–P=p*x–Endfor–Retup–endfunc–过程和函数可以接受参数:常量、变量、数组、表达式等–参数传递的两种方式•按引用传递方式(过程默认方式)–将地址传送给UDF–SETUDFPARMSTOREFERENCE•按值传递方式(函数默认方式)–将值直接传送给UDF–SETUDFPARMSTOVALUE•例子:p60–强制设定以值传递方式或引用传递方式–用括号括起一个变量,则设定按值传递;在一个变量前加@符号,可以设定以引用传递方式传递–默认情况下,变量以引用传递方式向过程传递,以值传递方式向一个UDF传递prg1(star)…Dogc1……?gc2()……Dogc1……(end)gc1(过程)gc2(函数)保存在主程序之后集中保存在一个程序里(prg2)过程文件gc1gc2gc3…………独立保存在一个程序里gc1(过程)gc2(函数)gc3(函数)……–过程是为完成某个操作过程而编写的代码,–函数则用来计算并返回一个值。在VFP中,这二者区别并不大。5.3面向对象的程序设计方法结构化程序设计方法•本质:功能设计,自顶而下,功能分解,从外部功能上模拟客观世界•优点:结构清晰,便于设计和理解•过程:做什么──如何做例:如何完成装修房屋的工作?电买电线、开关──完成布线水买水管、洁具、瓷砖──安装水管、铺瓷砖、安装洁具木买木材──做家具──买地板──铺地板漆买油漆──漆家具、漆地板•每一个工序,都必须了解细节,比如买什么样的材料,做家具时,要把板子做成多大,哪一块木板和哪一块木板要钉再一起,结果房主变成了各工种的全才。•程序员:按顺序做所有的事面向对象的程序设计•本质:类和对象的综合,自底向上,从内部结构上模拟客观世界•优点:简化程序设计,提高程序代码的重用性•过程:用什么做──要做什么»(类、对象)(具体去解决某一个任务)例:如何完成装修房屋的工作?用什么做?电工、水工、瓦匠、木工、漆匠(类)需要找到某个电工、水工、瓦匠、木工、漆匠(对象)要做什么?用户自己决定,要达到什么效果•只要从类中生成对象,告诉对象要做的事,房主不必操心各工种的顺序,由各对象自己去协调;不必关心细节,使用什么牌子的洁具、什么品种的油漆。•程序员:使用定义好的类,达到什么效果,不用管发生了什么事,如何处理!5.3.1类和对象•一、类(CLASS)•1.概念–定义了对象特征以及对象外观和行为的模板,刻划了一组具有共同特性的对象。–对象(OBJECT):是类的一个实例,包括了数据和过程(操作)•比较:–类是静态的概念,对象是动态的概念–类是抽象的,具有固定的特征;对象是具体的,不同的对象具有不同的特征和行为•2.类的分类P151–最小属性集•1)控件:是一个可以以图形化的方式显示出来并能与用户进行交互的对象。•2)容器:可看成是一种特殊的控件,它能包容其他的控件或容器。•3)层次:对象的层次关系指的是包容与被包容的关系。•类的层次关系指的是继承与被继承的关系•3.类的特点–继承性–多态性–封装性•二、对象–1、概述•对象是面向对象式系统中运行时刻的基本成份,它是属性与行为(即数据与操作)以及与其他对象的接口的封装体。•每个对象都有属性,以及与之相关的事件和方法,通过它们来处理对象。•可以新建属性和方法。•事件集固定的,不能新建事件。P151•2.对象的属性•概念–对象的特征及某一方面的行为(状态)汽车
本文标题:第5章程序设计
链接地址:https://www.777doc.com/doc-599446 .html