资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第7章,FoxPro,程序设计初步,第7章,FoxPro,程序设计,Visual FoxPro,的工作方式,程序文件的建立与编辑,程序的基本结构,分支结构,循环结构,过程,Visual FoxPro,的工作方式,Visual FoxPro,系统提供有三种工作方式:即,单命令方式,、,菜单方式,及,程序文件方式,。,1.单命令方式,所谓单命令方式,即在,Command,窗口输入一条命令,完成一个操作的工作方式。,2.菜单方式,所谓菜单方式,即通过打开不同的菜单选择并完成不同的操作。,3.程序文件方式,程序文件(简称程序)也叫做命令文件。,将,对数据库资源进行操作管理的命令和对系统环境进行设置的命令,集中在一个,以(.,PRG),为扩展名的命令文件,中,然后再通过菜单方式或命令方式运行该命令文件。所谓命令方式,即通过程序文件中的命令完成不同的操作。,7.1.1 程序的概念,有关此,Visual FoxPro,程序的几点说明:,1注释语句,【格式1】,NOTE,【格式2】*,【格式3】&,【功能】增强程序文件的易读性或放弃中语句的执行,2对话开关语句,【格式】,SET TALK OFF|ON,【,功能】关闭或打开命令执行时的对话开关,3命令的分行,Visual FoxPro,程序是命令行的序列,每个命令都以回车键结束,一行只能写一条命令;若一条命令太长,一行写不下,也可分行书写,并在分行处加上续行符“;”,再按回车键。,7.1.2,程序文件的建立、修改与执行,1,建立或修改程序文件,可用两种方式调用,系统内置的文本编辑器建立或修改程序文件,:,命令方式,MODIFY COMMAND 程序文件名,或,MODIFY FILE 程序文件名,菜单方式,打开“文件”菜单,选择“新建”;在“新建”窗口,选择“程序”,再选择“新建文件”,2保存程序,程序输入、编辑完毕,单击【文件】|【保存】菜单项,或按,Ctrl+W,复合键,在“另存为”对话框中指定程序文件的存放位置和文件名,并单击“保存”按钮保存程序文件并退出文本编辑器。程序文件的,默认扩展名是.,PRG,。,3执行程序,程序文件建立后,可以用多种方式、多次执行它。下面是两种常用的方式。,(,1,)菜单方式,单击【程序】|【运行】菜单项,打开“运行”对话框;,从文件列表框中选择要运行的程序文件,并单击“运行”命令按钮,启动运行该程序文件,(,2,)命令方式,【格式】,DO,【功能】执行指定、下的程序文件,注:执行程序文件时,将依次执行文件中的命令,直到所有命令执行完毕,或者执行到以下命令:,CANCAL:,终止程序运行,清除所有的私有变量,返回命令窗口;,RETURN:,结束程序执行,返回调用它的上级程序,若无上级程序则返回命令窗口;,QUIT:,结束程序执行并退出,Visual FoxPro,系统,返回操作系统,7.1.3 简单的输入输出命令,1,ACCEPT,命令,【格式】,ACCEPT ,TO ,【功能】在程序执行过程中,将用户交互式输入的内容作为字符串赋值给指定内存变量。,该命令只接受字符型数据,输入的字符串不需要加定界符,2,INPUT,命令,【格式】,INPUT ,TO ,【功能】在程序执行过程中,将用户交互式输入的内容赋值给指定内存变量,可以输入字符型、数值型、逻辑型、日期型和日期时间型等类型数据,而且可以是常量、变量、函数或表达式等形式,,按回车键结束输入,系统将输入的数据赋值给。,【例】编程从键盘输入某数据库的文件名,要求打开该数据库并显示其内容。程序文件名为,PROG2.PRG。,MODI COMMAND PROG2,SET TALK OFF,CLEAR,ACCEPT “,请输入数据库名:,”,TO AAA,OPEN DATABASE&AAA,ACCEPT ,请输入表名,TO BBB,USE&BBB,LIST,USE,SET TALK ON,RETURN(p1.,prg,),【例】从键盘输入两个任意正数,编程求以两数为边长的长方形面积。程序文件名为,PROG4.PRG,SET TALK OFF,CLEAR,INPUT “,长方形一边的长为:,”,TO A,INPUT “,长方形另一边的长为:,”,TO B,S=A*B,?“,长方形的面积为:,”,S,SET TALK ON,RETURN,(p2.,prg,),3,WAIT,命令,【格式】,WAIT,TO,WINDOW AT,NOWAIT CLEAR|NOCLEAR TIMEOUT,【功能】显示提示信息,暂停程序执行,直到用户按任意键或单击鼠标时继续执行程序。,若选择可选项,TO,将输入的单个字符作为字符型数据赋给指定的;若用户是按,Enter,键或单击鼠标,的值为空串。,若省略所有可选项,屏幕显示“键入任意键继续”默认提示信息,【例】在,STUDENT,数据库的,STUD,表中显示任意一个系学生的情况。程序文件名为,PROG6.PRG,SET TALK OFF,CLEAR,OPEN DATABASE STUDENT,USE STUD,WAIT “,请输入待查学生的系号(,13,):,”,TO N,IF VAL(N)3,WAIT“,输入无效,结束程序运行!,”,WINDOW TIMEOUT 5,RETURN,ELSE,STORE “0”+N TO AAA,LIST FOR,系别号,=,AAA,ENDIF,CLOSE DATABASE,SET TALK ON,RETURN,4三条输入命令的异同,ACCEPT,命令只能接受字符型数据,不需定界符,输入完毕按回车键结束;,WAIT,命令只能输入单个字符,且不需定界符,输入完毕不需按回车键;,INPUT,命令可接受数值型、字符型、逻辑型、日期型和日期时间型数据,数据形式可以是常量、变量、函数和表达式,如果是字符串,需用定界符,输入完毕按回车键结束。,程序的基本结构,Visual FoxPro,系统提供的命令丰富,且功能强大,把这些命令和程序设计语句有效地组织在一起,就形成了实现某一特定功能的程序。,Visual FoxPro,系统的程序有两个特点:一是程序控制流模式(面向过程),由顺序、分支、循环三种基本结构构成。二是,面向对象,可视化的结构程序模块,在每个模块的内部也是由程序控制流组成。常见的控制结构如下:,1顺序结构,2分支结构,3循环结构,4过程(函数)结构,分支结构,1,单向分支,【格式1】,IF,条件表达式,命令行序列1,ELSE,命令行序列2,ENDIF,语句功能:,该语句首先计算条件表达式的值,当条件表达式的值为真时,执行命令行序列1;否则,执行命令行序列2。,【例】编写一密码校验程序(假设密码为,ABC)。,程序文件名为,P3.PRG。,SET TALK OFF,CLEAR,ACCEPT “,请输入您的密码:,”,TO AAA,IF AAA=”ABC”,CLEAR,?”,欢迎使用本系统!,”,ELSE,?”,密码错误!,”,WAIT,QUIT,ENDIF,SET TALK ON(p3.,prg,),【例】编写一查询学生基本情况的程序,,P4.PRG。,set talk off,open database,jsjdjks,use t_,bmb,clear,accept,请输入学生的准考证号:,to,zzz,locate for,zkzh,=,zzz,if.not.,eof,(),?,姓名:+,xm,?,性别:+,IIF(,xb,男,女),?出生日期:+,DTOC(,csrq,1),else,?,查无此人!,endif,close database,return,3,多向分支,多向分支语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行。,语句格式:,DO CASE,CASE,条件表达式1,命令行序列1,CASE,条件表达式2,命令行序列2,CASE,条件表达式,N,命令行序列,N,OTHERWISE,命令行序列,N+1,ENDCASE,【例】假设收入(,P),与税率(,R),的关系如下表,编程求税金。程序文件名为,P5.PRG。,0 P,800,R=,0.05 800,P,2000,0.08 2000,P,5000,0.1 P5000,SET TALK OFF,CLEAR,INPUT “,请输入收入:,”,TO P,DO CASE,CASE P800,R=0,CASE P2000,R=0.05,CASE P5000,R=0.08,OTHERWISE,R=0.1,ENDCASE,TAX=P*R,?”,税金为:,”,TAX,SET TALK ON,RETURN,(p5.,prg,),4,使用分支语句应注意的几点,(1),IF,ENDIF,和,DO CASE,ENDCASE,必须配对使用,,DO CASE,与第一个,CASE,条件表达式之间不应有任何命令。,(2)条件表达式可以是各种表达式或函数的组合,其值必须是逻辑值。,(3)命令行序列可以由一个或多个命令组成,可以是条件控制语句组成的嵌套结构。,(4),DO CASE ENDCASE,命令,每次最多只能执行一个命令行序列。在多个,CASE,项的条件表达式值为真时,只执行第一个条件表达式值为真的命令行序列,然后执行,ENDCASE,的后面的第一条命令。,循环结构,1,DO WHILE,循环语句,【格式1】,DO WHILE ,ENDDO,一个循环结构一般应具备如下的条件:,(1)循环的初始条件:一般为给循环控制变量赋初值;,(2)循环头:循环语句的起始,设置、判断循环条件;,(3)循环尾:循环语句的结尾;,(4)循环体:位于循环头和循环尾之间、循环控制重复执行的语句序列,【格式2】,DO WHILE ,LOOP,EXIT,ENDDO,LOOP,语句:强行返回到循环开始语句。,EXIT,语句:强行跳出循环,接着执行,ENDDO,后的语句,【例】编程求123100之和。程序文件名为,P6.PRG。,SET TALK OFF,CLEAR,S=0,I=1,DO WHILE I=90,的所有记录。程序文件名为,P7.PRG。(p71.,prg,),SET TALK OFF,CLEAR,OPEN DATABASE,jsjdjks,USE t_,cjb,DO WHILE.NOT.EOF(),IF,bscj,=90,DISPLAY,ENDIF,SKIP,ENDDO,CLOSE DATABASE,SET TALK ON,RETURN,SET TALK OFF,CLEAR,OPEN DATABASE,jsjdjks,USE t_,cjb,LOCATE FOR,bscj,=90,DO WHILE.NOT.EOF(),DISPLAY,WAIT,CONTINUE,ENDDO,CLOSE DATABASE,SET TALK ON,RETURN,【例】编程显示,STUDENT,数据库,的,STUD,表,中除“李宁”以外的所有记录。,SET TALK OFF,CLEAR,OPEN DATABASE STUDENT,USE STUD,DO WHILE.NOT.EOF(),IF,姓名=”李宁”,SKIP,LOOP,ENDIF,DISPLAY,SKIP,ENDDO,CLOSE DATABASE,SET TALK ON,RETURN,2,FOR,循环语句,【格式】,FOR=,TO ,STEP,ENDFOR|NEXT,使用,FOR,循环语句的有关说明:,省略,STEP,则步长为默认值1;,初值、终值和步长都可以是数值表达式,但这些表达式仅在循环语句开始执行时计算一次。循环语句执行过程中,初值、终值和步长是不会改变的,并由此确定循环的次数;,可以在循环体内改变循环变量的值,但会改变循环执行次数;,EXIT,和,LOOP,命令可以出现在循环体内。执行,LOOP,命令时,结束本次循环,循环变量增加一个步长值,返回,FOR,循环头判断循环条件是否成立。执行,E
展开阅读全文