《《VFP程序设计基础》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VFP程序设计基础》PPT课件.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VFP程序设计基础程序设计基础要要 点点 Visual FoxProVisual FoxPro的工作方式的工作方式 程序文件的建立与编辑程序文件的建立与编辑 程序的基本结构程序的基本结构 分支结构分支结构 循环结构循环结构Visual FoxProVisual FoxPro的工作方式的工作方式 Visual FoxProVisual FoxPro系统提供有三种工作方式:即系统提供有三种工作方式:即单命令方式、菜单方式及程序文件方式。单命令方式、菜单方式及程序文件方式。1.1.单命令方式单命令方式 2.2.菜单方式菜单方式3.3.程序文件方式程序文件方式 程序文件(简称程序)也叫做命令文件。运用
2、程序文件(简称程序)也叫做命令文件。运用程序文件方式进行数据库管理,是通过程序文件编辑程序文件方式进行数据库管理,是通过程序文件编辑工具,将对数据库资源进行操作管理的命令和对系统工具,将对数据库资源进行操作管理的命令和对系统环境进行设置的命令,集中在一个以(环境进行设置的命令,集中在一个以(.PRG.PRG)为扩展为扩展名的命令文件中,然后再通过菜单方式或命令方式运名的命令文件中,然后再通过菜单方式或命令方式运行该命令文件。所谓命令方式,即通过程序文件中的行该命令文件。所谓命令方式,即通过程序文件中的命令完成不同的操作。命令完成不同的操作。程序程序:是多条命令按一定规则组织成的一个有机是多条命
3、令按一定规则组织成的一个有机的序列的序列注释语句注释语句NOTENOTE *&注释整一行,注释整一行,NOTE后至少有一个空格后至少有一个空格可以注释在某条语句之后可以注释在某条语句之后对话开关语句对话开关语句【格式格式】SET TALK OFF|ONSET TALK OFF|ONclear&清屏清屏settalkoff&关闭对话显示关闭对话显示opendatastudent&打开数据库打开数据库usesc&打开打开SC表表(学号学号,课程号课程号,成绩成绩)listsumtoarraya&求和求和?总成绩:总成绩:,a&输出输出settalkon&开启对话显示开启对话显示closedata
4、VFPVFP源源程程序序是是用用VFPVFP命命令令或或程程序序中中专专用用语语句编写的文本文件,其扩展名是句编写的文本文件,其扩展名是PRGPRG。VFPVFP专用程序编辑器专用程序编辑器建立源程序文件建立源程序文件方方法法一一:“文文件件”菜菜单单项项“新新建建”选选择择“程序程序”“新建文件新建文件”。方法二:方法二:使用常用工具栏的使用常用工具栏的“新建新建”按钮。按钮。说明说明1 1:此方法可以此方法可以建立建立新程序文件,又新程序文件,又可可修改修改已有的程序文件。已有的程序文件。方法三方法三:在命令窗口中执行命令:在命令窗口中执行命令:Modify Command 说明说明2 2
5、:文件的扩展名可缺省,系统默认文件的扩展名可缺省,系统默认扩展名为扩展名为.PRG.PRG。方方法法四四:在在项项目目管管理理器器中中,进进入入“代代码码”选选项卡,选择项卡,选择“程序程序”,单击,单击“新建新建”。说明说明3 3:一个命令行中只能写一条命令,一个命令行中只能写一条命令,若一行写不下,需使用分行符若一行写不下,需使用分行符“;”。保存程序文件保存程序文件方法一:方法一:单击单击“文件文件”菜单项菜单项“保存保存”。方方法法二二:单单击击“常常用用”工工具具栏栏里里的的“保保存存”按钮。按钮。方法三:方法三:按按 Ctrl+WCtrl+W 。方方法法四四:关关闭闭程程序序编编辑
6、辑器器,系系统统提提示示是是否否保保存文件。存文件。方方法法一一:“文文件件”菜菜单单项项“打打开开”“文文件类型件类型”为为“程序程序”选择文件选择文件“确定确定”方方法法二二:单单击击“常常用用”工工具具栏栏里里的的“打打开开”按钮。按钮。方法三:方法三:在命令窗口中执行命令:在命令窗口中执行命令:Modify Command|?打开程序文件打开程序文件 在在VFPVFP中中,可可以以执执行行源源程程序序、编编译译程程序序、应用程序和可执行程序种程序文件。应用程序和可执行程序种程序文件。(1 1)源源程程序序(PRG)(PRG):源源程程序序是是文文本本文文件件,可可以以对对其其内内容容进
7、进行行修修改改。只只要要有有源源程程序序文文件件,就可以生成其他就可以生成其他3 3种程序文件。种程序文件。执执行行程程序序就就是是按按照照程程序序的的内内部部控控制制结结构构执行文件中的相关语句序列。执行文件中的相关语句序列。程序文件的类型程序文件的类型 (2 2)编编译译程程序序(FXP)(FXP):每每个个源源程程序序文文件件都都有有对对应应的的编编译译程程序序文文件件,执执行行编编译译程程序序比比执执行行源程序的速度快。源程序的速度快。(3 3)应应用用程程序序(APP)(APP):由由多多个个文文件件(包包括括程程序序、表表单单和和菜菜单单等等)连连接接成成一一个个应应用用程程序序文
8、文件。件。注意:注意:以上三以上三种文件都是在种文件都是在VFPVFP环境下运行。环境下运行。(4 4)可可执执行行程程序序(EXE)(EXE):将将多多个个文文件件(包包括括程程序序、表表单单和和菜菜单单等等)连连接接成成一一个个可可执执行行程程序文件序文件,此种文件可以此种文件可以脱离脱离VFPVFP环境运行。环境运行。编译程序编译程序 当当执执行行一一个个源源程程序序时时,系系统统自自动动将将其其编编译译为为编编译译程程序序(FXP)(FXP)。在在VFPVFP中中允允许许只只编编译译而而不执行程序。不执行程序。方法一:方法一:在程序编辑器中,单击在程序编辑器中,单击“程序程序”菜单项菜
9、单项“编译编译”。方方法法二二:单单击击“程程序序”菜菜单单项项“编编译译”选选择择“文文件件类类型型”为为“程程序序”选选择择程序文件程序文件“编译编译”编译方法为:编译方法为:执行程序执行程序 方方法法二二:“程程序序”菜菜单单“运运行行”选选择择“文文件件类类型型”为为“程程序序”选选择择或或输输入入程程序文件名序文件名“运行运行”。方法三方法三:在程序或命令窗口中执行:在程序或命令窗口中执行:Do 说明:说明:当源程序当源程序(PRG)(PRG)和编译程序和编译程序(FXP)(FXP)文件文件同时存在时,系统将执行距当前时间最近的同时存在时,系统将执行距当前时间最近的程序文件。程序文件
10、。方方法法一一:在在程程序序编编辑辑器器中中,“程程序序”菜菜单单“执行执行”或或“运行运行”常用工具常用工具输入字符串语句语句格式:语句格式:Accept To “字字符符表表达达式式”:作作为为执执行行到到此此语语句句时时的的提提示信息。若无此项,则不输出任何信息。示信息。若无此项,则不输出任何信息。内内存存变变量量:用用来来接接收收输输入入的的字字符符串串。若若不不输输入任何字符,则将入任何字符,则将空字符空字符赋值给内存变量。赋值给内存变量。例:例:Accept Accept“请输入学号请输入学号:”To XH To XH?”输入的学号是:输入的学号是:”+XH+XH 等待语句语句格式
11、:语句格式:Wait To To Window At Window At,NowaitNowait Clear|NoclearTimeoutClear|NoclearTimeout “字字符符表表达达式式”:提提示示信信息息。若若无无此此项项,则则输出任何信息。输出任何信息。To To 内内存存变变量量:用用来来接接收收输输入入的的字字符符。若若不不输输入任何字符,则将入任何字符,则将空字符空字符赋值给内存变量。赋值给内存变量。说说明明:允允许许输输入入任任何何类类型型的的表表达达式式。InputInput输输入字符串时必须加上定界符。入字符串时必须加上定界符。可以输入字符型、数值型、逻辑型、
12、可以输入字符型、数值型、逻辑型、日期型和日期时间型等类型数据,而日期型和日期时间型等类型数据,而且可以是常量、变量、函数或表达式且可以是常量、变量、函数或表达式等形式,按回车键结束输入,系统将等形式,按回车键结束输入,系统将输入的数据赋值给输入的数据赋值给。输入表达式语句 语句格式:语句格式:Input To 例:例:N=2N=2Input Input 请输入数据:请输入数据:To M To M?M?MACCEPT命命令令只只能能接接受受字字符符型型数数据据,不不需需定界符,输入完毕按回车键结束;定界符,输入完毕按回车键结束;WAIT命命令令只只能能输输入入单单个个字字符符,且且不不需需定定界
13、界符,输入完毕不需按回车键;符,输入完毕不需按回车键;INPUT命命令令可可接接受受数数值值型型、字字符符型型、逻逻辑辑型型、日日期期型型和和日日期期时时间间型型数数据据,数数据据形形式式可可以以是是常常量量、变变量量、函函数数和和表表达达式式,如如果果是是字字符符串串,需需用用定定界界符符,输输入入完完毕毕按按回回车车键结束。键结束。三条输入命令的异同三条输入命令的异同程序的基本结构程序的基本结构 1 1顺序结构顺序结构 顺序结构是在程序执行时,根据程序中顺序结构是在程序执行时,根据程序中语句的书写顺序依次执行的命令序列语句的书写顺序依次执行的命令序列。Visual FoxProVisual
14、 FoxPro系统中的大多数命令都可以作系统中的大多数命令都可以作为顺序结构中的语句。为顺序结构中的语句。2 2分支结构分支结构 分支结构是在程序执行时,根据不同的分支结构是在程序执行时,根据不同的条件,选择执行不同的程序语句,用来解决条件,选择执行不同的程序语句,用来解决有选择、有转移的诸多问题。有选择、有转移的诸多问题。3 3循环结构循环结构 循循环环结结构构则则能能够够使使某某些些语语句句或或程程序序段段重重复执行若干次。复执行若干次。4 4过程结构过程结构 在在许许多多应应用用程程序序中中,有有一一些些程程序序段段需需要要反反复复执执行行多多次次,这这些些程程序序段段不不在在一一个个固
15、固定定的的位位置置上上,而而是是分分散散在在程程序序的的许许多多位位置置上上重重复复执执行行,可可将将其其与与嵌嵌入入它它的的程程序序分分开开,形形成成独独立立的的程程序序序序列列,待待使使用用时时再再调调入入程程序序中中,以以实现不同位置上的重复操作。实现不同位置上的重复操作。【例】编写程序,在STUDENT数据库的STUD表中查找并显示任意一个学生的情况。OPEN DATABASE STUDENT OPEN DATABASE STUDENT USE STUDUSE STUDACCEPT ACCEPT 请输入学生的姓名请输入学生的姓名:TO XM:TO XMLOCA FOR LOCA FOR
16、 姓名姓名=XM=XM?学生学生+XM+XM+的基本情况如下的基本情况如下:?学号学号:+:+学号学号?姓别姓别:+:+性别性别?班级名班级名:+:+班级名班级名?地址地址:+:+地址地址?出生日期出生日期:+DTOC(:+DTOC(出生日期出生日期)CLOSE DATABASE CLOSE DATABASE【例例】写程序写程序P3.PRG:P3.PRG:从键盘输入两个任从键盘输入两个任意整数意整数,计算这两个数的和、差、积、商。计算这两个数的和、差、积、商。CLEARCLEARINPUT INPUT 请输入第一个数:请输入第一个数:TO A TO AINPUT INPUT 请输入第二个数:请
17、输入第二个数:TO B TO B?这两个数的和为:这两个数的和为:,A+B,A+B?这两个数的差为:这两个数的差为:,A-B,A-B?这两个数的积为:这两个数的积为:,A*B,A*B?这两个数的商为:这两个数的商为:,A/B,A/B【例例】从从键键盘盘输输入入两两个个任任意意正正数数,编编程程求求以以两两数数为为边边长长的的长长方方形形面面积积。程程序序文文件件名名为为PROG4.PRGSET TALK OFFCLEARINPUT 长方形一边的长为:长方形一边的长为:TO AINPUT 长方形另一边的长为:长方形另一边的长为:TO BS=A*B?长方形的面积为:长方形的面积为:,SSET TA
18、LK ONRETURN练习:CLEARCREATE TABLE 学生成绩(姓名 C(8),课程号 C(10),成绩 N(3)INSERT INTO 学生成绩 VALUES(张三,计算机,90)INSERT INTO 学生成绩 VALUES(李四,英语,80)SELECT*FROM 学生成绩 1 1 编编写写程程序序文文件件P1.PRGP1.PRG,运运行行程程序序,观观察察结结果。要求程序完成以下步骤:果。要求程序完成以下步骤:(1)(1)用用SQLSQL语语句句中中CREATE CREATE TABLETABLE创创建建一一个个学学生生成成绩绩表表,其其中中包包括括如如下下字字段段:姓姓名名
19、C C(8 8)、课课程名程名C C(1010)、)、成绩成绩N N(3 3)(2)(2)用用SQLSQL语语句句中中INSERT INSERT INTO INTO 添添加加如如下下数数据据 张三张三 计算机计算机 9090 李四李四 英语英语 8080 (3)(3)用用SELECTSELECT查询语句查询所有记录。查询语句查询所有记录。语句格式:语句格式:If Then Then 1 Endif开始开始语句语句序列序列结束结束条件条件?YN分支结构分支结构后面语句后面语句单分支单分支IfIf语句语句Y其其中中IF-ENDIFIF-ENDIF必必须须配对出现。配对出现。选择结构选择结构 例:例
20、:Input Input 请输入一个请输入一个N N:To N To NIf N0 If N0 N=-N N=-N EndifEndif?N?N的绝对值是:的绝对值是:,N,N双分支双分支IfIf语句语句 语句格式:语句格式:If ThenThen 1 ELSE Endif开始开始语句序列语句序列1结束结束条件条件?YN语句序列语句序列2分支结构分支结构后面语句后面语句例,求两个数中较小值:例,求两个数中较小值:Input X=To XInput X=To XInput Y=To YInput Y=To YIf XYIf X0)0 (X=0)1(X0If X0Y=1Y=1ElseElseIf
21、X=0If X=0Y=0Y=0ElseElseY=-1Y=-1EndifEndifEndifEndif?Y?Y控制程序是否继续执行控制程序是否继续执行 例例 6.86.8:?DATE()&?DATE()&输出系统日期输出系统日期CANCEL&CANCEL&结束本程序的执行结束本程序的执行?TIME()&?TIME()&此语句得不到执行此语句得不到执行(1 1)CancelCancel:结束当前程序的运行。结束当前程序的运行。控制程序是否继续执行控制程序是否继续执行 (2 2)SuspendSuspend:暂暂停停程程序序的的执执行行。暂暂停停期期间间可以在命令窗口中执行交互命令。可以在命令窗口
22、中执行交互命令。(3 3)ResumeResume:继继续续执执行行SuspendSuspend暂暂停停的的程程序,从序,从SuspendSuspend语句的下一条继续。语句的下一条继续。例例:X=1X=1SuspendSuspendY=2Y=2?X+Y?X+Y条件函数 函数格式:函数格式:Iif(,)2)说说明明:若若条条件件成成立立,则则表表达达式式1 1的的值值作作为为函函数值;否则,表达式数值;否则,表达式2 2的值作为函数值。的值作为函数值。例如:例如:Input Input 输入一个数输入一个数N N:To N To N M M=Iif(NIif(N0,-N,N)0,-N,N)?”
23、N N的绝对值是:的绝对值是:”,M,M开始开始语句语句序列序列 1结束结束条件条件1?YN语句序列语句序列 2条件条件2?YN语句序列语句序列 n条件条件n?YNOTHERWISE语句序列语句序列 n+1.多分支结构多分支结构语句格式:语句格式:Do CaseCase 1 1Case 2 2Case n n Otherwise n+1 Endcase说说明明1 1:执执行行时时,系系统统从从上上向向下下依依次次对对CaseCase后后面面的的条条件件进进行行判判断断,当当条条件件不不成成立立时时,就就判判断断下下一一个个CaseCase条条件件是是否否成成立立。一一旦旦某某个个CaseCas
24、e条条件件成成 立立,就就 执执 行行 该该 CaseCase与与 下下 一一 个个CaseCase(OtherwiseOtherwise或或EndcaseEndcase)之之间间的的语语句句序序列列,然后执行然后执行EndcaseEndcase后面的语句。后面的语句。说说明明2 2:若若所所有有条条件件都都不不成成立立,而而有有OtherwiseOtherwise项项,则则执执行行语语句句序序列列n+1n+1,然然后后执执行行EndcaseEndcase后后面面的的语语句句;若若所所有有条条件件都都不不成成立立,且且无无OtherwiseOtherwise项,则直接执行项,则直接执行Endc
25、aseEndcase后面的语句。后面的语句。Input Input 请输入一个数:请输入一个数:To X To XDo CaseDo CaseCase X0Case X0Y=1Y=1Case X=0Case X=0Y=0Y=0Otherwise Otherwise Y=-1Y=-1EndcaseEndcase?Y?Y1 (X0)0 (X=0)1(X0)Y=案例:案例:S=1+2+3+4+5+6S=1+2+3+4+5+6i=0S=s+isiS=S+ii=i+100010112123333646410510515615621循环结构程序设计循环结构程序设计 循循环环结结构构指指在在执执行行程程序序
26、过过程程中中,重重复复执执行行某某程序段。程序段。在在循循环环体体中中,可可以以利利用用Exit语语句句提提前前结结束束循循环,也可利用环,也可利用Loop语句提前结束本次循环。语句提前结束本次循环。重重复复执执行行的的程程序序段段称称为为循循环环体体,重重复复执执行行的的次数称为次数称为循环次数循环次数。Do While(当型当型)循环语句循环语句 语句格式:语句格式:Do While Enddo 开始开始语句序列语句序列 结束结束条件条件?YN循环前的语句循环前的语句循环体后的语句循环体后的语句语句序列语句序列 Y说说明明:Do Do WhileWhile与与EnddoEnddo必须必须成
27、对成对使用。使用。例,求前例,求前100100个自然数的和:个自然数的和:S=0 S=0 N=1 N=1 Do While N=100 Do While N=100 S=S+NS=S+NN=N+1N=N+1EnddoEnddo循环条件循环体S=1+2+3+4+S=1+2+3+4+100+100死循环死循环如如果果循循环环体体中中没没有有能能执执行行到到的的、使使条条件件趋趋于于不不成成立立的的语语句句、结结束束循循环环或或结结束束程程序序的的语语句句,将将永永远远执执行行不完循环体,即出现死循环。语句修改为:不完循环体,即出现死循环。语句修改为:Do While Do While LoopLo
28、op 2 ExitExit 3 EnddoEnddoDo While(当型)循环语句(2 2)ExitExit:一一旦旦执执行行到到ExitExit语语句句,就就结结束束整整个循环个循环。(1 1)LoopLoop:一一旦旦执执行行到到LoopLoop语语句句,就就提提前前结结束本次循环。束本次循环。例例,对对键键盘盘输输入入的的每每一一个个正正数数,输输出出其其算算术术平平方方根根;当当输输入入的的数数小小于于或或等等于于0 0时时,结结束束程程序。序。开始开始循环体前语句循环体前语句循环体条件循环体条件Y分支条件分支条件YLOOPN分支结构下面的语句分支结构下面的语句N循环体下面的语句循环
29、体下面的语句结束结束 无条件转向循环无条件转向循环 语句格式语句格式(以当型循环为例以当型循环为例)DO WHILE IF LOOP ENDIF ENDDO 例例:计算计算1100的奇数和。的奇数和。说明:说明:int(N):取整函数取整函数 此处用于判断此处用于判断i的奇偶性的奇偶性思考:利用思考:利用mod(N1,N2)如何如何 判断奇偶性?判断奇偶性?*Ex3.prgstore 0 to i,tdo while i100 i=i+1 if int(i/2)=i/2 loop endif t=t+ienddo?1100奇数和为:,t开始开始循环体前语句循环体前语句循环体条件循环体条件Y分支
30、条件分支条件NEXITY分支结构下面的语句分支结构下面的语句N循环体下面的语句循环体下面的语句结束结束 无条件跳出循环无条件跳出循环 语句格式语句格式(以当型循环为例以当型循环为例)DO WHILE IF EXIT ENDIF ENDDO For(步长型步长型)循环语句循环语句语句格式:语句格式:ForFor =ToTo StepStep EndforEndfor|NextNext 说明说明2 2:若步长缺省,默认值为若步长缺省,默认值为1 1。说明说明1 1:初初值、终值和步长应为数值型表达式值、终值和步长应为数值型表达式例例:求前求前100100个自然数的和个自然数的和;S=0For N=
31、1 To 100 S=S+NEndfor?1+2+3+98+99+100=,SScan(扫描)循环语句语句格式:语句格式:ScanScan ForFor 1WhileWhile 2 EndscanEndscan说明说明1 1:ScanScan和和EndscanEndscan必须成对使用。此循环语句用必须成对使用。此循环语句用于处理与数据表有关的循环问题,功能等效于:于处理与数据表有关的循环问题,功能等效于:LocateLocate ForForForForWhileWhileWhileWhile222Do WhileDo While Found()Found()ContinueContinue
32、EnddoEnddo结构嵌套结构嵌套为实现复杂的功能,为实现复杂的功能,VFPVFP允许相互嵌套。但不允许相互嵌套。但不允许交叉嵌套,即一个结构必须完整地包含允许交叉嵌套,即一个结构必须完整地包含在另一个结构中。在另一个结构中。例如:例如:For M=1 To 9For M=1 To 9For N=M To 9For N=M To 9?Space(2),Str(M,1),*,?Space(2),Str(M,1),*,?Str(N,1),=,?Str(N,1),=,Str(MStr(M*N,2)*N,2)EndforEndfor?EndforEndfor 外层循环外层循环内层循环内层循环CLEAR ALLCLEAR ALLCLEARCLEARa=1a=1DO WHILE a=9DO WHILE a=9b=1b=1?&用于换行输出用于换行输出DO WHILE b=aDO WHILE b=a?SPACE(2)+STR(a,1)+?SPACE(2)+STR(a,1)+STR(bSTR(b,1)+=+1)+=+STR(aSTR(a*b,2)*b,2)b=b+1b=b+1ENDDOENDDOa=a+1a=a+1ENDDOENDDORETURNRETURN