第5章程序设计基础程序设计就是将电脑能识别的命令按一定的规则组合在一起,编成一个程序文件,当程序文件执行时,电脑能一次执行一组命令。在VFP6.0中提供了面向过程的程序设计方法和面向对象的程序设计方法。在结构化的程序设计中,程序的结构一般有三种:顺序结构,分支结构和循环结构。程序举例:*VFP程序示例,用于计算圆的面积。SETTALKOFF&&关闭人机对话CLEAR&&清屏INPUT[请输入圆的半径:]TORS=PI()*R*R&&函数PI()返回圆周率?’面积S=’,S&&显示计算结果SETTALKON&&打开人机对话5.1.1程序文件的建立,修改和运行1.程序文件的建立和修改三种方式建立文件:命令方式:MODIFYCOMMAND[文件名]功能:打开一个编辑窗口,用于建立和修改程序文件。说明:(1)文件名缺省,默认名字程序1,程序2……文件名不缺省,如果文件存在,打开该文件的编辑窗口,修改。如果文件不存在,打开编辑窗口,录入内容。(2)保存。例用命令方式建立程序文件。文件名是PROG1.PRG,程序为求圆面积的程序,然后保存到当前位置。菜单方式:文件→新建→程序→新建文件→出现程序编辑窗口→录入程序内容→录入完毕,存盘退出。项目管理器方式:打开项目管理器→全部→代码→新建→出现程序编辑窗口→录入程序内容→录入完毕,存盘退出。编辑程序文件,注意以下几点:(1)命令行的序列,每条命令以回车键结尾,一行写一条命令,需分行时要加续行符“;”。(2)编辑过程中可以使用编辑菜单,提高编辑速度。(3)编辑完毕,注意保存。2.程序文件的运行三种方式运行文件:命令方式:DO程序文件名例:在命令窗口中敲入:DOPROG1(可以不加扩展名)(如果执行的时查询文件11,QOR的话:DO11.QPR)执行时:对程序文件进行编译,产生一个编译文件:PROG1.FXP然后执行编译过的文件。菜单方式:程序→运行项目管理器:先选中→运行3.程序文件的注释为了增加可读性,为程序加注释:*注释内容放在一行的开始NOTE注释内容放在一行的开始&&注释内容放在语句的后面不执行任何操作,只作注释标记。VFP考试中常见的要求是建立一个和数学问题相关的程序或建立一个和表操作相关的操作。例程1建立一个程序PROG2,输出半径为10的圆的面积和三边长为12,23,21的三角形面积。分析:这是一个典型的数学问题,圆面积的计算公式为:2rs三角形面积的计算公式为:S=))()((ctbtatt程序:settalkoff&&关闭人机对话clear&&清屏r=10a=21b=23c=21s1=PI()*r*r&&函数PI()返回圆周率t=(a+b+c)/2s2=sqrt(t*(t-a)*(t-b)*(t-c))?”半径为10的圆的面积为”,S1?”三边长分别为12,23,21的三角形面积为”,S2settalkon例程2建立一个程序PROG3,已知表ex1中包含10条记录,每条记录只有一个数值型字段num,请在表的最后添加一条记录,计算前十条记录num字段的和的平方。分析:完成和表相关的操作问题时,一定要关心这样的三个问题,第一个问题是:既然是和表相关的操作,那么肯定要使用表中的数据或是修改表中的数据,那么我们在程序的一开始一定要打开表,在程序的结束一定要关闭表;第二个问题要考虑题目的要求是修改表中原有的记录的值,还是新添加一条记录。如果是后者,程序中一定要有appendblank语句。第三个问题是在表中如果要修改某条记录的某一字段值(或是为该项赋值),千万不能直接使用赋值语句,而应使用replace语句。(因为我们要修改的是字段变量)关于本题,我们还要考虑,最后让我们计算的是前10条记录的和的平方,我们应先计算前10条记录的和,然后算其平方,并将算出的结果赋值给新添加的记录。程序:settalkoffclearuseex1sumnumtoaa=a**2appendblankreplacenumwithausesettalkon5.1.2程序中常用的简单语句(命令)一、赋值语句格式:一:store数据to变量名STORE2TOX,Y多个变量赋同一值STORE‘计算机水平考试’TOZ二:变量名=表达式A=.T.只能给一个变量赋一值W={^2003/12/31}DT={^2004/08/0102:59:05PM}?A,W,DT这两种方式适合对内存变量赋值。三:replace字段变量名with表达式这种方式适合对字段变量赋值二、输入语句格式一:输入单个字符的语句WAIT[提示信息][TO内存变量][WINDOWS[AT行,列]][NOWAIT][CLEAR|NOCLEAR][TIMEOUT秒]注意:1.程序执行到此语句时会暂停,等待用户按任意键继续。2.如果有“TO内存变量”子句,用户按的那个字符会存储到相应的变量内,无论用户按是键上的字符键还是数字键,最终的那个数据会以字符形式存放在内存变量内。3.其它参数是可选的,具体意义如下:windows:可控制用户提示信息的窗口clear/noclear:信息窗口是否保留在主窗口上;timeout:正常情况,wait语句执行时,程序中断,必须等用户输入一个字符后程序才能继续,如果有timeout子句,则可控制程序中断的最长时间(秒为单位),一但超过此时间,程序会自动继续执行。例:WAIT‘请输入’TOXTIMEOUT5WAIT‘请输入’TOXWINDOWSAT12,30TIMEOUT5?X格式二:输入字符串语句accept[提示信息]to内存变量注意:1.此语句与Wait不同之处在于,wait语句最多只能接受一个字符的输入,只要用户按键盘一下,无论你按的是什么键,程序都会继续向下执行。而Accept语句可接受一串字符的输入,用户在输入字符时,必须以回车键结束,不按回车键,程序一直会处于中断状态。2.用户无论输入的是何种数据,电脑都会被用户输入的看成字符串,即使用户输入6578,电脑会将其看成字符串“6578”,而不会看成数值。不可计算。例1:accept输入图书总编号ton?n?type('n')例2编制程序查询数据表“学生信息.dbf”中姓名为’李梅’的记录,姓名由键盘输入。*PROG4.PRGSETTALKOFFCLEARUse学生信息ACCEPT“请输入姓名:”TOxmLocatefor姓名=xmDisplayuseSETTALKONRETURN格式三:输入任意型数据语句input[提示信息]to内存变量注:此语句与前两条语句最大的不同之处在于,前两条语句用户输入的任何数据都会被看成字符型的。而此语句可接受任何型数据的输入。字符型数据的输入:一定要在数据两边加上定界符,单引号,双引号或方括号;数值型数据的输入:直接输入完全由数字构成的数据。逻辑型数据的输入:可直接输入.t.和.f.日期时间型数据的输入:最好使用严格日期格式,也可通过ctod()或ctot()函数(非特殊情况尽量不用)。例1:input“请输入:”tob例2:Jg=7800accept“输入价格:”toa输入jg+200,看a的值input“输入价格:”tob输入jg+200看b的值三、输出语句格式一:?/??注意:?语句会在光标下一行起始位置开始输入;??语句会以当前光标所在位置开始输入。格式二:文本输出语句(不能在命令窗口用此命令,只能在程序中用)text文本内容endtext将文本内容原样输出。例:*PROG5.PRGsettalkoffcleartext1.录入数据2.删除数据3.修改数据4.查询请选择1-4ENDTEXTWAIT‘按任意键继续……’WINDOWTIMEOUT5RETURN格式三:@行,列say提示信息get变量名用于定位输出相应的变量值,此命令与前述命令最大的不同在于可控制语句在何处显示GET变量的值,如果由READ语句激活GET变量,就可以对GET变量进行编辑。例如:M=’中国人’CLEAR@3,15SAY‘我是一个’GETMREAD格式四:messagebox(信息内容,对话框类型,对话框标题)变量名=messagebox(信息内容,对话框类型,对话框标题)功能:第一个格式仅显示一个自定义的对话框第二个格式除了格式一的功能,还将函数的返回值送到内存变量中,以便根据返回值决定程序的执行情况.例如:其中:信息内容:代表对话框中显示的提示信息,最长1024个字符。换行用chr(10),回车用chr(13)回车加换行chr(13)+chr(10)对话框类型:三个值相加得到的一个整型值,用于控制对话框的样式(几个按钮,提示图标等)参考书P52对话框标题:用于控制标题栏上的显示内容。例:messagebox('你确定退出吗?',305,'退出窗口')messagebox('你真的真的真的真的确定'+CHR(13)+CHR(10)+'要退出吗?',305,'退出窗口')b=messagebox('你确定退出吗?',305,'退出窗口')如果选择了按钮确定,b的值是多少?题目:用MESSAGEBOX函数制作这样一个窗口:答案:messagebox('你要把更改保存吗?',35,'保存提示')