vfp程序设计结构.ppt
复习:,程序与程序文件程序的概念程序的建立、修改、删除、运行方法交互式输入命令1:,命令格式:INPUT TO内存变量,INPUT“请输入第一个数A:”TO AINPUT“请输入第二个数B:”TO S=A+BN=S/2?”两个数的平均数是:”,NRETURN&结束当前程序的运行,例:任意输入两个数,求这两个数的平均数。,交互式输入命令2:,ACCEPT命令(字符串输入命令),ACCEPT TO,例:编写程序,程序功能是用户指定“图书编号”后,显示该门课程的基本信息。,USE 图书信息 CLEARACCEPT 请输入待查图书的图书编号:TO tsSelect 图书编号,图书名称,作者 from 图书信息 where 图书编号=tsUSE RETURN,二、基本命令 1清屏命令【命令】CLEAR【功能】清除屏幕上的内容。2返回命令【命令】RETURN【功能】结束当前程序的运行。,3终止程序执行命令【命令】CANCEL【功能】终止程序执行并关闭所有打开的文件,返回到系统的命令窗口。4退出系统命令【命令】QUIT【功能】终止程序运行,退出Visual FoxPro系统。,5注释命令【命令】NOTE*&【功能】用于在程序中加入说明,以注明程序的名称、功能或其他备忘标记。【说明】注释命令为非执行语句。其中前两个命令格式作为独立的一行语句,第三条命令放在某一个语句右边。,*wait语句举例CLEARWAIT“请输入一个字符:”TO ACJ=“刚输入的字符是:”+AWAIT&暂停程序执行,按任意键继续执行?CJRETURN,1)关闭对话命令 SET TALK ONOFF【功能】控制非输出性的执行结果是否在屏幕上显示或打印出来。【说明】系统默认值为ON。,8.2 程序设计常用命令,6环境设置命令,2)设置精确比较命令 SET EXACT ONOFF【功能】在进行字符比较时是否需要精确比较。【说明】在命令格式中选择ON表示需要精确比较,选择OFF表示不需要精确比较,系统默认值为OFF。,8.3程序的基本结构,在Visual FoxPro中,结构化程序设计主要依靠系统提供的结构化语句构成,程序的基本结构有三种:顺序结构分支结构循环结构,顺序结构是指程序按照语句排列的先后顺序逐条 的执行。,8.3程序的基本结构,例8.4查找并显示“学生”表中某个学生的学号、性别、出生日期、民族。SET TALK OFFUSE 学生INPUT“请输入要查找的学生的姓名:”TO NALOCATE FOR 姓名=NADISPLAY 学号,性别,出生日期,民族USESET TALK ONRETURN,二、选择结构 选择结构也叫分支结构,是在执行程序时,按照一定的条件选择不同的语句,用来解决选择、转移的问题。选择结构的基本形式有三种。,8.3程序的基本结构,单向分支【命令】IF ENDIF【功能】当条件表达式的值为真时,执行,否则执行ENDIF后面的命令。【说明】是关系表达式或逻辑表达式,IF和ENDIF必须成对使用。可以由一条语句或多条语句构成。,例8.5查找并显示“学生”表中某个学生的学号、性别、出生日期、民族。如果该学生存在,执行输出操作;如果不在,就不执行输出操作。SET TALK OFFUSE 学生INPUT“请输入要查找的学生的姓名:”TO NALOCATE FOR 姓名=NAIF FOUND()DISPLAY 学号,性别,出生日期,民族ENDIFUSESET TALK ONRETURN,双向分支【语句】IF ELSE ENDIF【功能】执行该命令时,首先判断的值,若为真,则执行,然后执行ENDIF后的命令;若为假,则执行,然后执行ENDIF后的命令。【说明】IFELSEENDIF语句必须成对使用。和中可以嵌套IF命令。,input“x=”to xif x0y=x+1*xelsey=x+2*xendif?”y=”,y,多向分支【语句】DO CASE CASE CASE CASE,OTHERWISE ENDCASE,【说明】DO CASE和第一个CASE子句之间不能插入任何命令。不管有几个CASE条件成立,只有最先成立的那个CASE条件的对应命令序列被执行。如果所有CASE条件都不成立,且没有OTHERWISE子句,则直接跳出本结构。DO CASE和ENDCASE必须成对出现,DO CASE是本结构的入口,ENDCASE是本结构的出口。,INPUT 请输入数字 TO XDO CASECASE X 0F=2*X-1CASE X3F=3*X+5CASE X5F=X+1CASE X10F=5*X-3OOTHERWISEF=8*X+2ENDCASE?F(X)=,F,三、循环结构循环结构也称为重复结构,是指程序在执行的过程中,其中的某段代码被重复执行若干次。被重复执行的代码段,通常称之为循环体。Visual FoxPro支持循环结构的语句包括:DO WHILEENDDO、FORENDFOR和SCANENDSCAN语句。,8.3程序的基本结构,1、DO WHILEENDDO语句【语句】DO WHILE LOOP EXIT ENDDO【功能】执行该语句时,先判断DO WHILE处的循环条件是否成立,如果条件为真,则执行DO WHILE与ENDDO之间的命令序列(循环体)。当执行到ENDDO时,返回到DO WHILE,再次判断循环条件是否为真,以确定是否再次执行循环体。若条件为假,则结束该循环语句,执行ENDDO后面的语句。,【说明】对循环语句进行以下说明:DO WHILE和ENDDO子句要配对使用。DO WHILE是循环语句的入口;ENDDO是循环语句的出口;中间,是重复执行的循环体。LOOP和EXIT只能在循环语句中使用,其中LOOP是转到循环的入口语句;EXIT是强行退出循环的语句。循环结构允许嵌套,这种嵌套不仅限于循环结构自身的嵌套,而且还可以是和选择结构的相互嵌套。,计算S=1+2+3+100。S=0I=1DO WHILE I=100S=S+II=I+1ENDDO?S=,S,2、FORENDFOR语句 根据用户设置的循环变量的初值、终值和步长,决定循环体内语句执行次数。该语句通常用于实现循环次数已知情况下的循环结构。【语句】FOR=TO STEP LOOP EXIT ENDFOR|NEXT,【功能】执行该语句时,首先将初值赋给循环变量,然后判断循环条件是否成立(若步长为正值,循环条件为;若步长为负值,循环条件为=)。若循环条件成立,则执行循环体,然后循环变量增加一个步长值,并再次判断循环条件是否成立,以确定是否再执行循环体。若循环条件不成立,则结束该循环语句,执行ENDFOR后面的语句。,【说明】对循环语句进行以下说明:步长值省略时,系统默认步长值为1。步长值不能为0,否则造成死循环。在循环体内不要随便改变循环变量的值,否则会引起循环次数发生改变。LOOP和EXIT命令的功能和用法与条件循环中该命令的用法相同。,计算S=1+2+3+100。,s=0for i=1 to 100 s=s+iendfor?s,3、SCANENDSCAN语句 该循环语句一般用于处理表中记录。它是根据用户设置的当前记录指针,对一组记录进行循环操作。【语句】SCAN FOR WHILE ENDSCAN,【功能】执行该语句时,记录指针自动、依次地在当前表的指定范围内满足条件的记录上移动,对每一条记录执行循环体内的命令。【说明】对循环语句进行以下说明:的默认值是ALL。LOOP 和EXIT命令同样可以出现在该循环语句的循环体内。,【例】编写程序,其程序功能是用指针循环统计学生表中高考成绩在450分以上的学生人数。OPEN DATABASE 学生管理USE 学生 NU=0 SCAN FOR 高考成绩450 NU=NU+1 ENDSCAN?高考成绩在450分以上的人数:,NU,4多重循环 多重循环是指在一个循环语句内又包含另一个循环语句,多重循环也称为循环嵌套。下面以条件循环为例,进行说明。【语句】DO WHILE DO WHILE ENDDO ENDDO,计算:T=1!+2!+10!。T=0FOR N=1 TO 10 P=1 FOR I=1 TO N P=P*I ENDFOR T=T+PENDFOR?T=,TRETURN,