您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第9-10讲第14章VFP程序设计基础
第14章VFP程序设计基础学习要点1、过程化程序设计和面向对象程序设计的基本概念及设计方法;2、过程化程序设计的语言基础,程序设计基本结构;11.1VFP6程序设计基本概念一、一个例子VFP6支持过程化程序设计和面向对象程序设计两种程序设计与开发的类型。下面是一个完整的VFP过程化程序,可以引出几个基本概念。*功能说明:求圆形的面积。*文件名:L501.PRGCLEARSETTALKOFFINPUT请输入圆的半径,半径=TORS=PI()*R*R?半径为+ALLTRIM(STR(R))+的圆,面积=,SSETTALKonRETURN1、从形式上看,VFP的程序是由若干有序的命令行组成,且满足下列规则:(1)一个命令行内只能写一条命令,命令行以回车键结束。(2)、一个命令行可以由若干个行,在行未用“;”作续行符。(3)为便于阅读,可以按一定的格式输入程序,即一般程序结构左对齐,而控制结构内的语句序列比控制结构的语句缩进若干格。2、从功能上看,程序可以分为三个部分:第一部分是程序的说明部分,在本例程序中是前面的二行,一般用于说明程序的功能、文件名等需要说明的有关信息。第二部分是进行数据处理的部分,在本例程序中是从第3行开始的7行。通常这部分程序常包括下列三个部分,依次为:环境设置、数据处理、环境恢复。第三部分是程序的控制返回部分,在本例中就是最后一条命令。它控制程序返回到调用该程序的调用处。二、过程化程序设计与面向对象程序设计过程化程序设计:它是采用结构化编程语句来编写的程序。这类方法的特点是容易把一个复杂的程序分解为若干个较小的过程,每个过程都可进行独立的调试。这类设计方法发展的总思想是从程序员角度考虑使程序设计更简单,而较少从使用角度去考虑。使用这类方法设计的程序流程完全由程序员控制,使用者只能做由程序员预先安排好的事情。面向对象程序设计:这类程序设计思想是面向对象,即设计的重要任务在于描述对象。程序是由事件驱动的,因而,在执行过程中,持续等待的是一个发生在对象上的事件。而发生什么事件则要看使用者的操作,如单击、双击鼠标等。至于下一步的程序流向,则要看驱动的是什么事件。这类程序设计的主要目的是从拥护方便与简化使用入手,由使用者控制程序流向,这在一定程序上增加了编程的难度。10.2程序设计基本操作一、常用环境设置1.setcenturyon|offon:年份为4为off:年份为2位2.Setdateto格式设置格式AMERICANmm/dd/yyANSIyy.mm.ddBRITISH/FRENCHdd/mm/yyGERMANdd.mm.yyITALIANdd-mm-yyJAPANyy/mm/ddTAIWANyy/mm/ddUSAmm-dd-yyMDYmm/dd/yyDMYdd/mm/yyYMDyy/mm/dd日期的默认设置是AMERICAN。3、setdefaulttopathnamesetdefaultto4、SETDELETED命令语法:SETDELETEDON|OFF说明:使用SETDELETED命令确定标有删除标记的记录是否可被其他命令访问。5、setexacton|off指定比较不同长度两个字符串时,VisualFoxPro使用的规则。ON:指定相等的表达式必须是每个字符都相匹配。OFF(默认值)指定必须是右端表达式结尾前的每个字符都相匹配,才是相等的表达式。说明SETEXACT设置值对于相等长度的字符串没有任何作用。例:比较EXACTOFFEXACTONab=abc不匹配匹配abc=ab匹配匹配6.SETSTATUS命令语法:SETSTATUSON|OFF说明:SETSTATUS命令可显示或移去VFP状态条。7.SETSYSMENU命令语法:SETSYSMENUON|OFF|TO[DEFAULT]说明:SETSYSMENU命令用于启动或关闭在程序执行过程中对VFP系统菜单的访问。8.settalkon|off决定VisualFoxPro是否显示命令结果三、程序文件中的专用命令(一)输入输出命令1交互式输入命令(1)字符接收语句格式:ACCEPT[提示信息]TO内存变量名功能:将从键盘上接收的字符串数据存入指定的内存变量中。提供此命令是为了向后兼容,在VFP中可以用文本框控制命令代替。参数描述:[提示信息]:指定提示信息字符串。[内存变量名]:指定存储字符数据的内存变量或数组元素。如果没有定义此内存变量,ACCEPT将自动创建。如果没有输入数据就按Enter键,内存变量或数组元素则为空字符串。【例11.1】试编程完成下述功能:从键盘随机输入某个表的文件名,要求打开并显示此表的内容。*L1101CLEARSETTALKOFFACCEPT请输入表文件名TOFileNameUSE&FileNameLISTUSERETURN(2)通用数据接收命令ACCEPT语句只能给字符型内存变量提供数据。如果用户想给其它类型的内存变量提供数据,可以使用下列命令:格式:INPUT[提示信息]TO内存变量名功能:用于接收从键盘上输入的表达式,并将计算结果存入指定的内存变量或数组元素中。包含此命令也是为了提供向后的兼容性。在VFP中,该命令也可以用文本框控制代替。INPUT语句与ACCEPT语句的区别是:ACCEPT命令只能接收字符串,而INPUT语句可以接收任意类型的VFP表达式;如果输入的是字符串,ACCEPT语句不要使用字符型定界符,而INPUT语句必须用定界符括起来。【例11.2】试编程完成下列功能。从键盘上随机输入一个正数,以此数为半径,求圆面积和球体积,并输出结果.*L1102.PRGCLEARSETTALKOFFINPUT半径=TORS=PI()*R*RV=4/3*PI()*R**3?圆面积=,S?球体积=,VsettalkonRETURN(3)输入一个字符语句格式:WAIT[提示信息][TO内存变量名]功能:暂停正在运行的程序,直到输入一个字符为止。WAIT语句主要用于下列两种情况。■暂停程序的运行,以便观察程序的运行情况,检查程序运行的中间结果。■根据实际情况输入某个字符,以控制程序的执行流程。比如,在某应用程序的“Y/N”选择中,常用此命令暂停程序的执行,等待用户回答“Y”或“N”,由于这时只需输入单个字符,也不用按回车键,操作简便,响应迅速。2、格式化输出命令格式:@行号,列号SAY达式功能:从指定的行、列号开始输出表达式的值。3.格式化输入命令格式:@行号,列号SAY达式Get变量名功能:在指定的行、列号开始输出表达式的值,并可修改GET子句后变量的值。GET子句必须与READ命令配合工作。说明:GET后面的变量必须先赋值。11.2程序控制结构1、顺序结构程序设计顺序结构程序设计是结构化程序设计的基础,即是按完成任务所需步骤的先后顺序逐条命令的编写。2、分支结构程序设计分支结构就是根据条件的计算结果执行不同的操作。VFP6中有两条命令实现条件分支:(1)条件分支格式:IF条件表达式语句序列1[ELSE语句序列2]ENDIF(2)多条件选择语句格式:DOCASECASE条件表达式1语句序列1[CASE条件表达式2语句序列2…CASE条件表达式N语句序列N][OTHERWISE语句序列N+1]ENDCASE【例11.3】运行一个程序,随机输出一条信息:CLEARAA=INT(RAND()*10)&&随机产生一个10以内的整数DOCASECASEAA=0?“这次产生的随机数是:0”CASEAA=1?“这次产生的随机数是:1”CASEAA=2?“这次产生的随机数是:2”CASEAA=3?“这次产生的随机数是:3”OTHERWISE?“这次产生的随机数是:大于3!”ENDCASE2、循环语句(1)基于条件的循环:DOWHILE命令DOWHILE条件表达式[语句序列][EXIT][LOOP]ENDDO【例11.4】计算连续自然数之和,并且显示和刚大于1000的最后一个自然数。STORE0TOAA,BBDOWHILEAA=1000BB=BB+1AA=AA+BBENDDO?BB例11.5逐条显示STUDENT表中男生的情况。(2)基于计数的循环:FOR命令FOR内存变量=初始值TO终值[STEP步长]语句序列[EXIT][LOOP]ENDFOR/NEXT[STEP步长]:是计数器递增或递减的步长。如果步长是负值,则计数器递减;如果省略STEP子句,计数器每次递增1。【例11.6】求1到100中偶数的和AA=0FORII=2TO100STEP2AA=AA+IIENDFOR?AA例11.7逐条显示STUDENT表中男生的情况。RECCOUNT()(3)基于表的循环命令SCAN[范围][FOR条件][WHILE条件][语句序列][LOOP][EXIT]ENDSCAN参数描述:[范围]:指定对当前表中记录扫描的范围。只有在范围之内的记录才有可能扫描到。SCAN命令的默认范围为ALL。[FOR条件]:只有条件表达式的计算结果为“真”的记录,才能对其执行命令。包含FOR子句可以筛选出不想扫描的记录。[WHILE条件]:指定一个逻辑表达式作为执行命令的条件,只要逻辑表达式计算为“真”,就对记录执行命令,直到遇到使表达式不为“真”的记录为止。例11.7逐条显示STUDENT表中男生的情况。USESTUDENTSCANFOR性别=”男”DISPWAITENDSCANUSE11.3函数和过程一、标准函数(P219)二、自定义函数用户自定义函数是除系统提供的函数外,用户自己定义的某些有特殊功能的函数,它能增强用户编程的灵活性和通用性。1、自定义函数的结构FUNCTION函数名PARAMETERS形式参数表语句序列……RETURN表达式2、自定义函数的调用格式:函数名(实际参数表)说明:自定义函数的调用方法与系统内部函数的调用方法相同。PARAMETERS形式参数表接收来自实际参数表的数据,其实参和形参的个数和及其数据类型必须相等和一致。自定义函数也可以放在过程文件中,其函数名就是过程名,把它作为一个过程调用,但返回的值没有意义。例11.8、编一个程序,用于输出一个三角形的面积。(P196)三、过程(子程序)一个复杂的程序可以划分成多个子程序。每个子程序可单独作为一个命令文件储存,多个子程序也可放在一个过程文件中储存。子程序或过程的编写和修改方式与一般的程序一样,不同的是过程的最后一个语句必须是返回语句(RETURN)四、过程文件及过程文件的打开专门用于储存过程的文件。1、建立过程文件:MODIFYCOMMAND过程文件名过程文件的格式要求每个过程文件的开头必须用下列语句:格式:PROCEDURE过程名PROCEDURE过程名1语句序列1RETURNPROCEDURE过程名2语句序列2RETURN……PROCEDURE过程名N语句序列NRETURN2、过程文件打开过程文件和表文件一样,都是在先打开后才能使用。在主程序中应先打开过程文件,将过程文件中的所有过程都调入SETPROCEDURETO过程文件名3、过程文件调用子程序或过程的调用也是用DO命令:DO过程名[IN过程文件名][WITH参数表]4、过程文件的关闭命令CLOSEPROCEDURE例11.9试编一个程序,能对student表进行维护、查询和打印输出。clearused:\dbf\studenttext********************************************************1、学生数据维护3、打印学生数据****2、按姓名查询学生4、退出********************************************************endtextxz=''dowhile.t.@8,10clear@8
本文标题:第9-10讲第14章VFP程序设计基础
链接地址:https://www.777doc.com/doc-2199657 .html