您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 计算机VFP 第九章 程序设计
第九章程序设计基础一、VF的工作方式二、程序的建立与运行三、程序中的交互语句及辅助语句四、程序的基本结构五、过程设计VF的工作方式VF的三种工作方式:命令方式、菜单方式、程序文件方式。程序文件(命令文件)方式:程序:就是根据所解决问题的需要,将能完成相应功能的命令或语句按照一定的逻辑关系组织起来的命令集合。程序文件的扩展名为.PRG。返回程序的建立与运行以命令方式建立、编辑程序文件格式:MODIFYCOMMAND程序文件名功能:建立或编辑修改程序文件。说明:扩展名默认为PRG。文件名为默认路径下已有的文件,则使用此命令表示修改指定的程序。文件名为默认路径下没有的文件,则使用此命令表示新建指定的程序。命令:MODICOMM?功能:从文件列表中选择要修改的程序。保存程序:1、用“文件”菜单中的”保存“命令。2、工具栏上的”保存“按钮。3、按关闭按钮。程序书写规则:程序中的每条命令都以回车结尾。一行只能写一条命令,若命令需分行写,应在一行尾加”;“号续行,然后回车。以菜单方式建立、编辑程序文件用“项目管理器”建立、编辑程序文件上一页下一页程序文件的调用以命令方式调用格式:DO程序文件名说明:程序运行中,遇到以下情况之一,将终止程序运行:执行到程序尾,自然结束,返回VF系统主窗口。执行了RETURN命令,终止程序执行,返回原调用处的下一语句继续执行。(用于过程中)执行了CANCEL命令,终止程序执行返回系统主窗口。执行了QUIT命令,终止程序执行,退出VF系统。以菜单方式调用程序文件上一页返回程序中的交互语句及辅助语句简单的格式化输入、输出命令格式化输入命令格式:语句1:@行,列[SAY表达式1]GET变量[DEFAULT表达式2]语句2:READ功能:语句1的功能是在屏幕指定位置显示表达式和变量的值。语句2的功能是重新编辑修改变量的值。说明:要输入编辑数据,语句1、2必须联用,可编辑类型:C、N、D、L型。SAY表达式1用于对GET变量作提示性说明。变量可为字段名变量,也可为内存变量,变量必须有初值,或用DEFAULT短语的表达式2指定初值.初值一旦指定,该变量的类型在编辑期间就不能改变,字符型变量的宽度与数值型变量的小数位数也无法改变。格式化输出命令格式:@行,列SAY表达式上一页下一页人机对话命令输入单字符命令—WAIT格式:WAIT[提示信息][TO内存变量]功能:暂停程序执行,等待用户键入一字符后继续。说明:输入的任何数据,均作为字符型数据处理。只能输入一个字符或直接回车(回车相当于输入空串)。提示信息一般用字符串说明,不选用则自动提示“按任一键继续…”。选用TO内存变量时,可将输入的字符保存在内存变量中,以便以后使用。例:若有表文件WJ1.DBF、WJ2.DBF、WJ3.DBF,如何实现只输入一个字符而能打开这些表。输入字符串命令—ACCEPT(可输入多个字符)格式:ACCEPT[提示信息]TO内存变量功能:暂停程序执行,等待用户输入一串字符后,按回车键程序继续运行。说明:输入的任何数据,均作为字符型数据处理。提示信息的用法与WAIT语句相同,不选用则不提示(与WAIT不同)。上一页下一页例1:根据输入的文件名,打开指定的表文件。例2:在RCDA表中按指定姓名(出生日期、工资)查询(LOCATE,SEEK)记录。输入多种类型数据命令—INPUT格式:INPUT[提示信息]TO内存变量功能:暂停程序执行,等待用户输入数据,回车后继续。说明:输入的数据类型可为C、N、D、L。输入字符型数据,必须加定界符;输入日期型,用{^yyyy-mm-dd}或用CTOD()函数转换。例1:在RCDA表中按指定姓名查询。例2:在RCDA表中按指定工资(生日)查找。小结:区别WAIT、ACCEPT、INPUT三条命令的不同。辅助命令CLEAR清屏命令NOTE|*[字符串]注释必须自成一行,对程序段作说明。&&[字符串]注释接在命令语句后对该语句作说明。上一页下一页TEXT文本内容ENDTEXT功能:原样输出TEXT与ENDTEXT之间的内容。上一页返回程序的基本结构VF系统的应用程序中,常见的控制结构有:顺序结构特点:按照语句书写的先后顺序依次执行,执行到程序尾退出。缺陷:1、一次只能操作一组数据;2、不能对数据进行判断。分支结构一、简单分支语句格式:IF条件语句序列ENDIF意义:略。说明:IF、ENDIF必须成对使用。条件可以是表达式,也可是函数,但结果必须为逻辑值。例1:在RCDA表中按姓名查询记录,找到则显示该记录,否则不显示(没找到则提示“无此姓名的记录!”)。例2:从键盘输入两个不同的自然数,输出其中最大的。上一页下一页二、选择分支语句格式:IF条件语句序列1ELSE语句序列2ENDIF意义:略。例1:P150。例2:修改前面的例2。三、多分支语句格式:DOCASECASE条件1命令序列1……CASE条件n命令序列n[OTHERWISE命令序列n+1]ENDCASE上一页下一页功能说明:略。注意:DOCASE与ENDCASE必须成对出现。DOCASE与CASE之间不能放其它语句。各条件不能互相包含,即不能让两个或两个以上的条件值为.T.,因为程序只能执行第一个值为.T.的条件所对应的语句序列。例1:P151。例2:从键盘上输入三个不同的自然数,输出其中最大的。四、分支语句的嵌套结构:略。例1:对DJPD表,根据学号查询,对查到的记录再根据平均分定等级,并填写等级字段,(85分以上为优,76~85为良,60~75为中,60分以下为差)若没找到则显示:“查无此人!”。例2:对成绩表,根据学号查询,对查到的记录再判断其民族,若为少数民族则总分+5,否则不加分,若没找到指定记录,则提示:“查无此人!”。注意:ELSE与ENDIF都与最近的IF语句匹配。各分支结构不能相互交叉。上一页下一页循环结构程序设计一、当型循环格式:DOWHILE条件语句序列1[LOOP]语句序列2[EXIT]语句序列3ENDDO意义:当条件为.T.时,重复执行DOWHILE与ENDDO之间的语句序列,直到条件为.F.时,退出循环继续执行ENDDO之后的语句。注意:DOWHILE…ENDDO语句本身不具有给循环变量赋初值的功能,因此应当在该语句之前给循环变量赋初值,并且在循环体中必须有修改循环条件的值的语句。LOOP、EXIT只能在循环中使用,而不能在循环外使用。LOOP作用:不再执行其后的语句序列,而进入下一次循环,即重新返回DOWHILE处判断条件的值。EXIT作用:强制退出循环,继续执行ENDDO之后的语句。上一页下一页几种常见的循环结构:1、对数据表记录进行操作的循环特点:循环条件一般用.NOT.EOF()。用SKIP命令修改循环条件。循环体中操作对象是数据表中的记录。例1:逐条显示RCDA表中性别为女的记录。(条件分别为.NOT.EOF()与.NOT.BOF()。)例2:在RCDA表中,按性别查找,依次对性别为女的工资加100元。例3:在成绩表中,统计解几成绩分别在85分以上,76至85分,小于76分的学生的人数。练习:在DJPD表中,按平均分对每人评定等级,并将评定结果填到等级字段中。(85分以上为优,76~85为良,60~75为中,60分以下为差)2、循环次数一定的循环特点:循环次数一定。上一页下一页循环条件多为关系表达式,其中含控制循环次数的循环变量。循环变量有初值和终值。循环体中有修改循环变量的语句,使循环变量增或减值,否则成为死循环。例1:求1到100之间所有整数之和。(两种方法:改变初值)例2:求1到100之间的奇数和。(三种方法)练习:求10!。3、随机循环特点:随机条件的值总是为.T.。(这样就不能自动退出循环—死循环)必要时,可使用EXIT、RETURN、CANCEL、QUIT强制退出循环)例:在RCDA表中,实现可连续按姓名查询。作业:用循环语句编程判断任意一个由键盘输入的整数是否为素数。二、“计数”型循环控制语句上一页下一页格式:FOR循环变量=变量初值TO终值[STEP变量步长]命令序列[LOOP][EXIT]ENDFOR|NEXT功能:循环变量首先被赋为变量初值,然后比较循环变量与终值来决定是否执行循环体内的命令语句。步长值为正数时,若循环变量值不大于终值,就执行循环体;步长为负数时,若循环变量不小于终值,就执行循环体。执行一遇到ENDFOR或NEXT,循环变量立即被加上步长值,然后重新与结束值比较。说明:如果无STEP短语,默认步长值为1。例:改写前面当型循环的例子。三、“指针”型循环控制语句格式:SCAN[范围][FOR条件表达式1][WHILE条件表达式2]命令序列[LOOP][EXIT]ENDSCAN功能:略。(P154)上一页下一页四、多重循环:即循环体中又包含另外一些循环。格式:略。例1:在RCDA表中,按性别查询,要求能逐条查到所有性别相同的记录并显示。例2:打印九九表。练习:输出3到100之间的所有素数。(输出格式:一行输出5个数,每个数间用5空格隔开。)小结:略。(P155)上一页返回过程与过程调用引入定义:我们将以过程说明语句开头,以返回命令结束,能完成一定功能,可以被其它程序反复调用的程序段叫做过程。过程的分类:1、以独立文件存在的过程,称为外部过程。2、若干个过程共存于一个过程文件的过程,称为内部过程。过程返回语句1、RETURN[TOMASTER]功能:返回调用程序原调用处的下一语句继续执行。TOMASTER的作用:用在过程嵌套中,直接返回最高层调用处,如不选,则逐级返回。2、RETRY功能:返回调用程序原调用语句,继续执行。外部过程的建立及调用:1、建立与建立一般程序相同。上一页下一页求5!+10!+20!SETTALKOFFS=0N=1T=1DOWHILEN=5T=T*NN=N+1ENDDOS=S+TN=1T=1DOWHILEN=10T=T*NN=N+1ENDDOS=S+TN=1T=1DOWHILEN=20T=T*NN=N+1ENDDOS=S+T?’5!+10!+20!=‘,SSETTALKON返回2、过程调用格式:DO过程名说明:可以将过程保存在单独的程序文件中,也可放在程序的结尾,但不能把可执行的主程序放在过程之后。例:改写引入程序。思考:求C=M!/(N!*(M-N)!)过程文件及使用1、过程文件的建立格式:MODICOMM文件名2、过程文件的组织形式PROCEDURE过程名1语句序列ENDPROC……PROCEDURE过程名N语句序列ENDPROC上一页下一页3、过程文件的调用步骤:①打开过程文件格式:SETPROCEDURETO文件名注意:同一时刻只允许打开一个过程文件。②调用过程文件中的过程格式:DO过程名功能:调用已打开的过程文件中的指定过程。③关闭过程文件格式1:SETPROCEDURETO格式2:CLOSEPROCEDURE功能:关闭打开的过程文件。过程的嵌套上一页下一页过程调用中的数据传递利用内存变量的属性传递数据全局变量(公共变量)公共变量是在VF系统的全部范围内均有效的内存变量。(包括命令窗口及程序的任何部分[主程序及其子程序中])定义格式:PUBLIC内存变量表功能:把内存变量表中指定的内存变量定义为全局变量。说明:1、全局变量在程序结束时不释放,只能使用清除内存变量的命令清除。(CLEARMEMORY,CLEARALL)2、定义的全局变量在赋值前,自动赋值为.F.。上一页下一页局部变量局部变量只在定义它的程序段有效,而在此程序段的上级程序段或
本文标题:计算机VFP 第九章 程序设计
链接地址:https://www.777doc.com/doc-3370873 .html