VisualFoxPro程序设计基础.ppt_第1页
VisualFoxPro程序设计基础.ppt_第2页
VisualFoxPro程序设计基础.ppt_第3页
VisualFoxPro程序设计基础.ppt_第4页
VisualFoxPro程序设计基础.ppt_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Visual FoxPro程序设计基础,本章主要内容,1 程序文件的建立与执行 2 顺序结构 3 选择结构 4循环结构 5 过程与过程文件,1 程序的基本概念 程序 是能够完成一定任务的命令的有序集合。 程序文件(命令文件) 存放程序的文本文件。(.PRG),建立程序文件的优点: (1)运行程序文件,会自动执行程序文件中的各条命令 (2)程序文件中的命令可以长期保存,并且可以多次运行,1 程序文件的建立与执行,程序文件建立方法: 1)利用菜单:文件|新建|程序 2)利用命令:MODIFY COMMAND ,程序文件执行方法: 1)菜单方式:程序|运行 2)利用命令:DO ,别忘了保存CTRL+

2、W,2 程序文件的建立与执行,程序设计基础,VFP的工作方式: 1)交互式工作方式是直接在命令窗口中执行命令或用菜单及工具栏按钮执行命令。 2)自动化工作方式是用编写的程序或用各种生成器生成程序文件再执行。,程序文件的建立和修改,1)用界面方式建立和修改程序 2)用命令方式建立和修改程序 格式:MODIFY COMMAND |? 功能:打开程序编辑器,用于建立或修改程序文件,程序文件的执行,1)用界面方式执行程序文件 2)用命令方式执行程序文件 格式:DO 功能:执行指定的程序,程序的书写规则,一个程序是由若干行组成,每行由回车键结束 1)命令行:一个命令可以写在一行也可以分多行书写,分行书写

3、时应该在行尾加续行符“;” 2)命令的注释:注释符有&,*,NOTE 三种 格式1: & 格式2: * 格式3: NOTE 功能:程序注释 说明:格式1为行尾注释,即可写在命令行的尾部。 格式2与格式3为行首注释,即以*和NOTE开始的行都为注释,四种命令的功能: CANCEL:终止程序的执行,清除所有的私有变量,返回到命令窗口; DO:调用执行另一个程序; RETURN:结束程序,返回到调用它的上级程序继续运行,若无上级程序则返回到命令窗口; QUIT:结束程序的执行,并退出Visual FoxPro系统,返回到操作系统。,调试命令与辅助命令,SET TALK命令 格式:SET TALK O

4、N|OFF 功能:设置是否显示命令在执行过程中的状态信息,ON为显示信息(默认值),OFF为不显示信息。 若选ON,则显示相应的信息。 若选OFF,则无信息。,简单的输入输出命令 INPUT ACCEPT WAIT,1)简单的输入输出命令(INPUT) 格式: input “提示信息” to 功能: 显示提示信息,等待用户从键盘输入数据,并将输入值存入内存变量中,用户可以输入任何合法的表达式。,(1)用户从键盘输入的数据可是各种类型的常量、变量或者表达式,但不能不输入内容而直接按回车键; (2)可省略,否则要加字符串定界符; (3)从键盘输入各种类型数据时,需要加相应的定界符; (4)此命令根

5、据用户需要既可以输入到命令窗口中执行,也可以编写在程序中。,注 意,2)简单的输入输出命令( ACCEPT ) 格式: accept “提示信息” to 功能: 显示提示信息,等待用户从键盘输入字符串,并将该字符串存入内存变量中,(1)ACCEPT命令只接收字符串,输入字符串时,不需要加定界符; (2)可省略,否则要加字符串定界符; (3)可以不输入内容而直接按回车,系统会把空串赋给指定的; (4)此命令根据用户需要既可以输入到命令窗口中执行,也可以编写在程序中。,注 意,3)简单的输入输出命令( WAIT ) 格式: WAIT “提示信息” TO WINDOW AT, TIMEOUT 功能:

6、 显示提示信息,暂停程序的执行,直到用户按任意键或单击鼠标时,程序继续运行,简单的输入输出命令( WAIT ),(1)WAIT命令只接收单个字符,输入字符时,不需要加定界符,系统将输入的字符赋值给;若用户是按回车键或者单击鼠标左键,系统将空串赋值给; (2)若省略,则显示默认的提示信息“按任意键继续”;否则要加字符串定界符; (3)通常,显示在Visual FoxPro主窗口或当前用户自定义窗口中,如果指定了WINDOW子句,则在主窗口的右上角会出现一个WAIT提示窗口,用来显示提示信息,也可以用AT短语指定窗口的显示位置; (4)若选用NOWAIT短语,系统将不等待用户按键,继续向下执行程序

7、; (5)TIMEOUT子句用来设定等待的时间,以秒数为单位。超过此时间系统将不再等待用户按键,自动往下执行程序。,注 意,INPUT、ACCEPT和WAIT的区别 input:可接受各种类型数据 accept:只接受字符串 wait:只接受单个字符,按命令在程序中出现的先后次序执行。,6.2 顺序结构,在程序执行时,根据不同的条件,选择执行不同的程序语句执行。,条件语句,分支语句,选 择 结 构,单向条件语句,双向条件语句,6.3 选择结构,1单向条件语句,语句格式: IF条件表达式 语句序列 ENDIF,关闭或打开状态信息,1单向条件语句,Eg1:求圆的面积 (半径0),2双向条件语句,语

8、句功能: 该语句首先计算条件表达式的值,当条件表达式的值为真时,执行语句序列1中的命令;否则,执行语句序列2中的命令;执行完语句序列1或语句序列2后都将执行ENDIF后面的第一条命令。,Eg2:求圆的面积 (半径0),2双向条件语句,2双向条件语句,Eg3:编写密码 校验程序,设密 码为“ABC”,根据多个条件表达式的值,选择一个执行 。,语句格式: DO CASE CASE条件表达式1 CASE条件表达式2 CASE条件表达式N OTHERWISE ENDCASE,Eg4:求分段函数 0 (x5) F(x)= 2x2-x (-1=x1) x (1=x5),1)IF ENDIF和DO CASE

9、 ENDCASE 必须成对使用。 2)条件表达式可以是各种表达式或函数的组合,其值必须是逻辑值。 3)语句序列可以由一条或多条命令组成。 4)DO CASE ENDCASE 命令,每次最多只能执行一个语句序列。在多个CASE项的条件表达式值为真时,只执行第一个条 件表达式值为真的语句序列,然后执行 ENDCASE的后面的第一条命令。,注 意,有一部分程序被反复地执行。,循 环 结 构,当型循环:do while enddo 计数循环:for endfor 数据库扫描:scan endscan,不知道循环次数,己知循环次数,处理表中数据,6.4循环结构,(1)不带有LOOP和EXIT语句的当型循

10、环,循环结构(当型循环),i=1=100 s=s+i=0+1=1 i=1+1=2,i=2=100 s=s+i=1+2=3 i=2+1=3,i=3=100 s=s+i=3+3=6 i=3+1=4,i=101=100 .F.,i=100 s=s+i=s+100 i=100+1=101,逐条输出1982年出生的学生记录,(2)带有LOOP和EXIT语句的当型循环,LOOP语句:强行返回到循环开始语句。 EXIT语句:强行跳出循环,接着执行ENDDO后的语句,编写程序,显示“学生”表中的前8个记录的学生姓名,若有空记录,则不显示信息,例 对 100个任意数求和,正数求和,负数不求和,当输入0.001时

11、停止输入,sum=0 n=1 do while n=100 input x: to x n=n+1 if x0 loop endif if x=0.001 exit endif sum=sum+x enddo ?“sum=, sum return,p7,FOR 循环 格式: FOR = TO STEP ENDFOR | EXIT 功能:先把初值赋给循环变量,再判断循环条件是否成立。若不成立就结束循环,执行循环后面的命令,若条件成立,就执行循环体,循环再执行一此,循环变量自动增加一个步长。再判断循环变量是否成立,以判断是否执行循环体。,2、FOR 循环 说明: 1)循环变量为内存变量,初值,终值

12、,步长为数值表达式。 2)当步长为0时循环变量无增量,将死循环,步长默认值为1。 3)在循环体内可以改变循环变量,但这会改变循环次数。 4)在循环体内可以包括,LOOP和EXIT。当遇到LOOP时,本次循环结束,循环变量增加一个步长值,进入下一次循环,当遇到EXIT时,结束循环,执行下面的命令。,FOR - ENDFOR语句,10.2 程序结构- 循环结构,i=1=100 s=s+i=0+1=1 i=1+1=2,i=2=100 s=s+i=s+2 i=2+1=3,i=100=100 s=s+i=s+100 i=100+1=101,i=101=100 .F.,i的值是: A、7 2 B、6 1

13、C、8 3 D、7 4,SCAN ENDSCAN语句,编写程序,输出1980年以后(包含1980年)出生的男同学的姓名、出生日期和专业,编写程序,统计学生表中的男、女同学人数。,4、循环的嵌套:在循环命令的循环体中包含了其他循环。循环嵌套就是指多重循环,例 输出乘法表: clear for i=1 to 9 for j=1 to i ?str(j, 2)+*+str(i, 1)+=+str(i*j, 2) endfor ? endfor return,p10,多模块程序结构,多模块程序结构是将一个大的程序划分为一个主调程序和几个被调程序。将主调程序称为主程序模块,被调程序称为子程序模块。由于子

14、程序模块可以多次被调用又可以相互调用,提高代码的重用率,也便于软件修改与维护。VFP实现子程序模块有三种方式:子程序、过程、自定义函数。 三者主要区别:子程序无返回值,而过程和自定义函数有返回值。,子程序、过程、自定义函数,一、子程序 1)定义: 子程序是一个程序文件,它与主程序的主要区别: 主程序只能调用其他程序而不能被其他程序调用, 子程序既能被主程序调用也能被其他子程序调用。,子程序、过程、自定义函数,2)格式: PARAMETERS RETURN 3)说明:PARAMETERS 中的形参用于接收DO命令发送的实参值。当返回调用程序时把这些形参值回送给相应的实参变量。多个形参之间用逗号隔

15、开。,4)调用 格式:DO WITH 功能:调用由文件名指定的程序。 说明: (1)实参表中实参是传给子程序的,实参可为常量,变量,表达式。若实参个数少于形参个数,多余的形参值取逻辑假。若实参个数多于形参个数,系统提示错误信息。 (2)实参为常量或一般表达式时,系统将其值传给对应形参变量,称为值传递。若实参为变量,此时形参与实参实际上是同一个变量,称为地址传递或引用传递。,5)调用过程。,主程序 子程序 DO 子程序 RETURN,例 用主程序与子程序方式求长方形的面积,请用传参数和不传参数两种方式,不传参数 clear do CZ1 return * CZ1.prg x=0 y=0 s=0

16、input 输入长: to x Input 输入宽:“ to y s=x*y ?s=, s return,传参数 x=0 y=0 s=0 input 输入长: to x input 输入宽: to y do CZ2 with x, y, s ?s=, s return * CZ2.prg parameters a, b, c c=a*b return,p12,p13,二、过程,1)概念: 过程和子程序的作用基本是一样的,调用关系也相同, 主要区别:过程可以和主程序存在同一个文件中,也可以一个或多个过程存在一个文件中,而一个文件只能有一个子程序,多个子程序要存在多个文件中。子程序可直接调用,而过

17、程如果与主调程序存在一个文件中,可直接调用,如果未与主调程序存在一个文件中,必须通过打开过程文件才可以调用。使用完再将过程文件关闭。子程序无返回值,过程有返回值。,1.过程文件的建立 过程的定义,PROCEDURE RETURN ENDPROC,PROCEDURE命令表示一个过程的开始,并为过程命名。 ENDPROC表示一个过程的结束,过程也可以以RETURN语句终止。 RETURN语句表示将控制返回到调用程序中调用命令的下一语句,并返回表达式的值,若RETURN命令不带,则返回逻辑真.T.。,6.5 过程与过程文件,3)过程文件的打开 格式:SET PROCEDURE TO ADDITIVE

18、 功能:打开由过程文件名列表指定的过程文件,过程名列表是用逗号分隔的过程文件名。 说明: (1)无任何选项将关闭所有打开的过程文件。 (2)选ADDITIVE,在新打开过程文件时并不关闭原来打开的过程文件。,4)关闭过程文件 格式1:RELEASE PROCEDURE 格式2:CLOSE PROCEDURE 功能:格式1用于关闭过程文件列表中过程文件, 格式2用于关闭所有过程文件,5过程文件的调用 或 例:有如下程序,此程序的运行结果。 X=0 DO P1 ?X PROCEDURE P1&过程文件P1 X=1 RETURN ENDPROC 该程序运行的结果为:1,DO WITH ,(),功能:

19、 格式1调用由指定的过程。,格式2不用传递参数直接调用,例求 长方形面积。用主程序与过程在一个文件做,再用主程序与过程不在一个文件做。再用调用格式2做,主程序与过程在一个文件中 x=0 y=0 s=0 input 输入x:“ to x input 输入y: to y do p1 with x, y, s ?s=, s return procedure p1 PARAMETERS a, b, c c=a*b return,主程序与过程不在一个文件中 set procedure to f1 x=0 y=0 s=0 input 输入x:“ to x input 输入y: to y do p1 wit

20、h x, y, s ?s=, s close procedure Return *f1.prg procedure p1 parameters a, b, c c=a*b return input 输入x: To x input 输入y: To y s=x*y return s,调用格式2 x=0 y=0 s=0 s=p1() ? s=,s return procedure p1 input 输入x:“ to x input 输入y:“ to y s=x*y return s,主程序与过程在一个文件中 x=0 y=0 s=0 input 输入x:“ to x input 输入y: to y d

21、o p1 with x, y, s ?s=, s return procedure p1 PARAMETERS a, b, c c=a*b return,主程序与过程不在一个文件中 set procedure to f1 x=0 y=0 s=0 input 输入x:“ to x input 输入y: to y do p1 with x, y, s ?s=, s close procedure Return,*f1.prg procedure p1 parameters a, b, c c=a*b return input 输入x: To x input 输入y: To y s=x*y retu

22、rn s,调用格式2 x=0 y=0 s=0 s=p1() ? s=,s return,procedure p1 input 输入x:“ to x input 输入y:“ to y s=x*y return s,.过程调用中的参数传递 发送参数(即调用过程) 主程序调用子程序或过程时,在主程序中使用发送参数语句传递参数。 格式为:,格式1:DO | WITH 格式2:| (),接收参数 在子程序、过程或自定义函数中使用接收参数语句接收参数。 格式为: 对参数传递的说明如下: (1)PARAMETERS|LPARAMETERS必须是被调用程序的第一条语句; (2)PARAMETERS定义的形参变

23、量是私有变量;LPARAMETERS定义的形参变量是局部变量; (3)实参可以是常量、变量和一般形式表达式,调用模块程序时,把实参传递给对应的形参;形参数目大于等于实参数目,多余的形参取.F.。,格式1:PARAMETERS 格式2:LPARAMETERS ,参数传递方式,按值传递,形参变量值的改变不会影响实参变量的值,即新值不返回;,当形参变量的值改变时,实参变量值也随之改变,即新值返回。,按地址传递(也称按引用传递),采用格式1调用模块程序时,如果实参是常量或一般形式的表达式,则按值传递;如果实参是变量,这时传递的是变量的地址,即按地址传递。 采用格式2调用模块程序时,默认情况下是按值方式

24、传递参数。如果实参是变量,可以通过SET UDFPARMS命令重新设置参数的传递方式。 格式为: SET UDFPARMS TO VALUE|REFERENCE TO VALUE:按值传递。 TO REFERENCE:按地址传递。 此命令不能改变用DOWITH格式调用过程时的参数传递方式。 如果将实参用括号括住,则实参变成一般形式的表达式,这时强制参数传递以按值传递方式进行。,例 传递数组的应用,clear dimension a(5) for i=1 to 5 a(i)=i endfor s=0 do p1 with a, s for i=1 to 5 ?a(i), space(2) endfor ?s=, s return,proceudre p1 parameters b, s for i=1 to 5 b(i)=2*b(i) s=s+b(i) endfor return,过程名,形参,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论