Visual FoxPro第6章 程序设计基

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第6章程序设计基础6.1程序与程序文件交互工作方式,要求用户必须比较熟悉数据库知识,了解数据组织结构,如果要同时对数据表格多次进行某些操作,就必须反复拟行相关命令,这些命令不被保存,当退出VisualFoxPro系统环镜或计算机断电后,就荡然无存了,对于使用大量数据的最终用户来说,直接使用交互方式管理数据是不现实的。因此,要建立真正的管理信息系统必须编制程序。6.1.1程序的建立与编辑创建程序:(1)在“文件”菜单中选择“新建”命令(或工具栏中“新建”按钮),然后在“新建”对话框中选择“程序”单选按钮,再单击“新建文件”按钮。(2)命令窗口中,键入命令:MODIFYCOMMAND[文件名[扩展名]]保存程序(1)从“文件”菜单中选取“保存”命令(2)按“CTRL+W”组合键。编辑程序(1)在“文件”菜单中选择“打开”命令(2)命令窗口中:MODIFYCOMMAND程序文件名程序的书写规则(1)注释语句格式:①NOTE注释内容②*注释内容③&&注释内容对话开关语句格式:SETTALKOFF|ON输出语句格式:?[表达式列表]格式:??[表达式列表]命令的分行每个命令都以回车键结束,一行只能写一条命令;若一条命令太长,并在分行处加上续行符“;”。6.1.2程序文件的运行单击“程序”菜单中的“运行”命令,在打开的运行对话框中找到要执行的程序文件,单击“运行”按钮。单击常用工具栏上的“运行”按钮。在命令窗口中键入命令:DO程序文件名程序文件名前可以使用路径,否则指系统默认目录。若运行的是.PRG程序则扩展名可以省略。若运行其他的程序则扩展名不能省;6.1.3基本输入与输出语句1.ACCEPT命令格式:ACCEPT[提示信息]TO内存变量INPUT命令格式:INPUT[提示信息]TO内存变量WAIT命令格式:WAIT[提示信息][TO内存变量][WINDOW[AT行,列]][NOWAIT][CLEAR|NOCLEAR][TIMEOUT数值表达式]三条输入命令的异同ACCEPT命令只能接受字符型数据,不需定界符,输入完毕按回车键结束;WAIT命令只能输入单个字符,且不需定界符,输入完毕不需按回车键;INPUT命令可接受数值型、字符型、逻辑型、日期型和日期时间型数据6.2程序的基本结构求解的基本逻辑:VFP程序多数用于数据处理,解决问题的基本逻辑是:输入数据→处理数据→输出数据。程序的通用性:程序的通用性指程序对多种场合的适应性,通用性好的程序的应用范围较广。6.2.1顺序结构顺序结构是在程序执行时,根据程序中语句的书写顺序依次执行的命令序列。例题:将学生表中学号为20050008,其姓名一栏由万华改为万强。CLEARSETTALKOFFOPENDATABASE学生学籍USE学生ACCEPT“请输入要修改记录的学号:”toxhLOCATEFOR学号=xhREPLACE姓名WITH“万强”USECLOSEDATABASESETTALKONRETURN6.2.2选择结构单向选择单向选择语句,即根据用户设置的条件表达式的值,决定某一操作是否执行。(1)语句格式:IF〈条件表达式〉〈语句序列〉ENDIF(2)单向条件转向语句的流程图条件式达式真语句序列假ENDIF之后语句双向选择双向选择语句,即根据用户设置的条件表达式的值,选择两个操作中的一个来执行。(1)语句格式:IF〈条件表达式〉〈语句序列1〉ELSE〈语句序列2〉ENDIF(2)双向条件转向语句的流程图如图多向选择多向选择语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行。(1)语句格式:DOCASECASE〈条件表达式1〉命令行序列1CASE〈条件表达式2命令行序列2……CASE〈条件表达式N命令行序列N〉[OTHERWISE命令行序列N+1]ENDCASE真条件式2语句序列1ENDCASE后面语句条件式n-1Otherwise条件式1真语句序列2真语句序列n-1有语句序列n无IIF()判断选择函数VFP中有一个函数,它能够先进行条件判断,然后决定返回其值。它的使用效果比分支语句更快捷。格式:IIF(<条件表达式>,<表达式1>,<表达式2>使用分支语句应注意的几点①IF……ENDIF和DOCASE……ENDCASE必须配对使用,DOCASE与第一个CASE〈条件表达式〉之间不应有任何命令。②条件表达式可以是各种表达式或函数的组合,其值必须是逻辑值。③命令行序列可以由一个或多个命令组成,可以是条件控制语句组成的嵌套结构。6.2.3循环结构1.DOWHILE循环语句格式:DOWHILE条件表达式语句序列ENDDOENDDO后面的语句条件表达式式真循环体假【例6-9】编程求2+4+6+……+100之和。SETTALKOFFCLEARS=0I=2DOWHILEI=100S=S+II=I+2ENDDO?“2+4+6+……+100=”,SSETTALKONRETURN【例6-11】显示学生表中在1985年以后出生的学生记录。SETTALKOFFCLEAROPENDATABASE学生学籍USE学生DOWHILE.NOT.EOF()IF出生日期=CTOD(“1985-01-01”)DISPLAYENDIFSKIPENDDOUSECLOSEDATABASERETURN【例6-12】将前N个自然数中的完全平方数进行累加,当累加之和超过100时停止累加。要求程序显示每次的累加和。SETTALKOFFCLEARSTORE0TOI,MDOWHILE.T.IFM100EXITELSEM=M+I^2ENDIF?”完全平方数累加和:”+STR(M,6)I=I+1ENDDOSETTALKON2.FOR循环语句语句格式:FOR循环变量=初值TO终值[STEP步长]循环体ENDFOR|NEXT使用FOR循环语句的有关说明:(1)省略STEP步长,则〈步长〉为默认值1;(2)〈初值〉、〈终值〉和〈步长〉都可以是数值表达式,但这些表达式仅在循环语句开始执行时计算一次。循环语句执行过程中,初值、终值和步长是不会改变的,并由此确定循环的次数;(3)可以在循环体内改变循环变量的值,但会改变循环执行次数;(4)EXIT和LOOP命令可以出现在循环体内【例6-13】求1000之内所有偶数之和。SETTALKOFFCLEARS=0FORI=0TO1000STEP2S=S+INEXT?“1000之内所有偶数之和为”,SSETTALKONRETURN【例6-14】从键盘输入10个数,编程找出其中的最大值和最小值。SETTALKOFFCLEARINPUT“请从键盘输入一个数:”TOASTOREATOMAX,MINFORI=2TO10INPUT“请从键盘输入一个数:”TOAIFMAXAMAX=AENDIFIFMINAMIN=AENDIFENDFOR?“最大值为:”,MAX?“最小值为:”,MINSETTALKONRETURN3.“指针”型循环控制语句(1)语句格式:SCAN[范围][FOR条件表达式1][WHILE条件表达式2]命令行序列ENDSCAN(2)语句功能:该语句在指定的范围内,用数据记录指针来控制循环次数。执行语句时,首先判断函数EOF()的值,若其值为“真”,则结束循环,否则,结合〈条件表达式1〉或〈条件表达式2〉,执行〈命令行序列〉,记录指针移到指定的范围和条件内的下一条记录,重新判断函数EOF()的值,直到函数EOF()的值为真时结束循环。【例6-17】显示“学生”表中入学成绩在600分以上的学生名单。SETTALKOFFCLEAROPENDATABASE学生学籍USE学生SCANFOR入学成绩600DISPLAY学号,姓名,入学成绩ENDSCANUSECLOSEDATABASESETTALKONRETURN6.3多模块程序6.3.1主程序与子程序这些可独立存在并可整体调用的命令语句组合称为子程序。一个应用程序通常都是由一个主程序和若干个子程序组成。子程序的建立方法与程序文件的建立方法相同,扩展名为.PRG。调用子程序语句,即执行已有的子程序语句格式:DO〈文件名〉WITH参数表语句功能:执行以〈文件名〉为名的子程序。子程序返回语句,即返回子程序的调用处。语句格式:RETURN[TOMASTER|TO〈表达式〉语句功能:将控制返回到调用程序中调用命令的下一语句【例6-18】输入一个半径R值,求出圆的面积。*****MAIN.PRG********主程序*****YMJ=0INPUT“请输入圆的半径”TOBJDOZGCWITHBJ,YMJ?“圆的面积=”,YMJRETURN***子程序***ZGC.PRG***PARAMETERSR,SS=PI()*R*RRETURN6.3.2过程与过程文件过程文件把一个子程序作为一个“过程”放入过程文件中。一个过程文件中可以包含一个或多个“过程”,一旦打开过程文件,主程序便可以随心所欲地调用其中的若干“过程。1.过程文件的建立VisualFoxPro为了识别过程文件或者程序文件中的不同过程,规定过程文件或者程序文件中的过程必需用PROCEDURE语句说明。其格式为:PROCEDURE过程名命令序列[RETURN[表达式]]2.过程文件的调用调用过程文件之前必须要打开过程文件。调用结束后要关闭过程文件。过程文件的打开:SETPROCEDURETO过程文件名过程文件的关闭:SETPROCEDURETO或CLOSEPROCEDURE【例6-19】用过程编写一个求和与乘积的程序。SETTALKOFFS=1P=1DOBB?”S=”,SSETTALKONRETURNPROCEDUREBBM=3N=5S=M+NP=S*N?”P=”,PENDPROCEDURE6.3.3参数传递程序之间的参数传递可以通过两种途径进行:一是通过带参数的程序调用来实现,二是通过内存变量来实现。传递参数命令格式:DO文件名WITH参数表达式列表接收参数命令格式:PARAMETERS变量列表【例6-20】用带参数的过程计算圆面积。SETTALKOFFMJ=0INPUT“请输入半径”TOBJDOSUB1WITHBJ,YMJ?“圆的面积=”,YMJRETURNPROCEDURESUB1PARAMETERSR,SS=PI()*R*RENDPROC6.3.4自定义函数用户自己创建的函数称为自定义函数。自定义函数和过程一样,可以以独立的程序文件形式单独存储在磁盘上,也可以放在过程文件或直接放在程序文件中自定义函数具有如下语法结构:FUNCTION函数名PARAMETER参数表函数体命令序列RETURN表达式【例6-21】计算圆面积SETTALKOFFCLEARINPUT“请输入圆的半径:”TOR?“圆的面积为:”,AREA®SETTALKONFUNCTIONAREAPARAMETERXRETURN(3.1416*X**2)6.4程序调试程序调试工具的操作步骤如下:在主菜单下,打开“工具”菜单,选择“调试器”,进入“调试器”窗口。在“调试器”窗口,打开“工具”菜单,在选择“断点”,进入“断点”对话框。在“调试器”窗口,打开“窗口”菜单,选择“监视”,进入“监视”对话框,可以监视程序执行时的内存变量、表达式、记录指针或监控变量的值。在“调试器”窗口,选择“跟踪”,进入“跟踪”对话框,可以监视程序的运行过程。

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功