VFP程序设计基础_第1页
VFP程序设计基础_第2页
VFP程序设计基础_第3页
VFP程序设计基础_第4页
VFP程序设计基础_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 程序设计基础一、知识点:1、VFP命令的两种执行方式:交互方式和程序方式。2、程序与程序文件1)程序:完成某项指定的任务而须执行的命令序列。2)程序文件:以文件的形式存储在磁盘上的命令序列。3、结构化程序设计的三种基本结构.1) 顺序结构:简单的输入语句(如INPUT、ACCEPT、WAIT)。赋值语句(=、STORE、REPLACE、SCATER、GATHER)。简单的输出语句(?、?)。辅助语句(CLEAR、SUSPEND、CONTINUE、CANCEL、NOTE | *、&)。环境设置语句(如:、SET TALK ON/OFF 等)2) 选择结构(IFENDIF、IFELSEEN

2、DIF、DO CASEENDCASE)3) 循环结构(DO WHILEloopexitENDDO、SCANENDSCAN、FORENDFOR)4、多种结构嵌套的原则:只能包含,不能交叉。5、子程序:相对与主程序而言的一个独立的程序文件,其建立方法与建立程序文件的法相同。子程序的调用与返回:调用:DOWITH返回:RETURNTO MASTER6、过程与过程文件1) 过程:以PROCEDURE开头,以ENDPROC结尾的子程序段。2) 过程文件:由若干个过程或自定义函数组成,以文件形式保存在外存的.prg文件;使用时要打开该文件,然后选择其中的过程或函数调用,不用时要关闭。3) 过程文件的打开:

3、SET PROCEDURE TO 4) 过程文件的关闭:SET PROCEDURE TO 或 CLOSE PROCEDURE7、参数的传递及作用域1) 利用内存变量的属性传递参数内存变量的属性小结 类型特点PUBLICPRIVATE(包括自然变量)LOCAL作用域(可见性)从定义处起有效从定义处起及下级子程序只在定义块中可见传递方向双向(向上、向下)单向(由主到子程序)不传递生存期整个应用系统(VFP环境中)从定义处起及下级子程序中随定义块执行结束而释放特殊作用用于参数传递或结果传递屏蔽上级程序中的同名变量屏蔽上级程序中的同名变量说明子程序中定义的全局变量,返回主程序时可见子程序中定义的自然变

4、量,返回主程序时不可见只在本块中可见,上下级中均不可见2) 利用DO WITH 传递参数传递参数命令格式:DO WITH 接收参数命令格式:PARAMETER参数传递与接收的规则:(1) 接收参数的命令必须出现在被调用程序(子程序)中的第一行;(2) 当WITH 中是简单内存变量列表时,称为传址或引用。这时,主调程序中的内存变量被隐含起来,其值随PARAMETER中对应变量的值的变化而变化;(3) 当WITH 中是内存变量表达式列表或当个内存变量用圆括号括起来(即为明表达式)时,称为传值。这时,主调程序中的内存变量不被隐含,其值也不随PARAMETER中对应变量的值的变化而变化;(4) 对过程

5、而言,传址或传值不受 SET UDFPARAMS TO VALUE/CONFERENCE 的影响。因为它是针对自定义函数的。8、自定义函数1)定义自定义函数可以是一个独立的命令文件(.PRG),也可以放在一个过程文件中。2)建立FUNCTION PARAMETER语句序列ENDFUNC与过程不同的是必须用RETURN 返回一个值。3) 自定义函数的调用与参数传递调用形式:自定义函数名(参数表达式列表)参数传送:既可以用传值方式,也可以用引用方式。具体规则如下:(1)如果变量在参数表达式列表中是以表达式的形式出现,那么是传值方式;(2)如果变量在参数表达式列表中是以单变量的形式出现,那么取决于S

6、ET UDFPARAMS TO VALUE/CONFERENCE 的设置(缺省为传值方式); (3)无论SET UDFPARAMS TO 可以在单变量前冠以,以强制传址。如:S(A,B,C)二、要点与难点1、 INPUT、ACCEPT与WAIT这三个与输入有关的命令有何不同?INPUT命令可接受数值型、字符型、日期型等数据类型的输入,在输入时应根据数据类型加相应的定界符。ACCEPT命令只能接受字符串的输入,在输入时不必加定界符。WAIT命令只能接受单字符的输入,常用于表示程序是否继续、是否中断或是否结束的语句。2、 RETURN、RETRY、CANCEL和QUIT这四个命令有何不同?RETU

7、RN命令:指的是返回到调用行的下一行。RETRY命令:返回到调用行本身,可实现程序的重复调用。CANCEL命令:中断、异常结束。并返回到系统命令窗口。QUIT命令:返回到操作系统。3、 SCATTER FIELDS TO 4、 GATHER FROM 5、 常见的环境设置语句:SET DEFAULT TO :将设置为系统缺省的路径。SET CONSOLE ON/OFF:激活或废止从程序中向VFP主窗口或活动的用户自定义窗口的输出。SET DELETE ON/OFF:决定是否忽略表中已做过删除标记的记录。SET EXACT ON/OFF:决定字符串比较运算符“=”两边内容是否必须完全匹配,缺省是

8、不必完全匹配。SET TALK OFF/ON:关闭或打开系统交互对话显示方式。缺省为打开显示。SET FILTER TO :指定访问当前表中记录时必须满足的条件。6、 FOR I=X TO Y SCAN语句系列 与 语句系列 有何不同?ENDFOR ENDSCAN前者主要处理普通内存变量循环有关的程序;后者主要处理表中满足条件的记录循环有关的程序。7、 内存变量的属性有那几种?它们间有何不同?参见上表。8、 利用DO WITH 传递参数与自定义函数中的参数传送有何不同。前者传递参数是在主程序与子程序之间进行调用和传递,可分为传值和引用两种方式:引用:WITH后的是内存变量列表时,每个内存变量的

9、值传给PARAMETERS中对应变量,调用程序中的变量被隐藏。当被调用的程序中形参的值发生改变时,调用程序中的变量也跟着发生相应的变化。传值:WITH后的是内存变量表达式或用括号将单个变量括起来时,每个内存变量表达式的值传给PARAMETERS中对应变量,调用程序中的变量不被隐藏。当被调用的程序中形参的值发生改变时,调用程序中的变量不会跟着发生相应的变化。后者是在函数内部实行变量间的参数传送,也有传值和引用两种方式。它调用方式为:自定义函数名 ()若中以表达式出现,则是以传值方式传送;若中以内存变量的形式出现,则缺省采用传值方式,若要采用引用方式,需在参数变量前加。9、 程序设计中常用的函数有

10、:(1) 数值函数 INT(X/Y)、MOD(X,Y)、X%Y、X-INT(X/Y)*Y(2)字符串函数SUBSTR(S,N1,N2)、LEN(S)(3)日期与时间函数: DATE()、DTOC(D)、YEAR(D)、MONTH(D)、DAY(D)、DOW(D)、CDOW(D)。(4)转换函数 UPPER(C)、LOWER(C)、CTOD(S)、DTOC(D)、ASC(C)、CHR(N)、STR(N,N1,N2)、VAL(S)(5)数据库函数: FCOUNT()字段个数函数、FIELD()字段名函数、BOF()、EOF()、DELETED()、RECCOUNT()、RECSIZE()、RECN

11、O()、(6)IIF(条件表达式,满足条件时所取的值、不满足条件时所取的值)(7)测试函数:FOUND()测试是否找到相应的记录。10、程序设计的常用算法: 总原则:变量必须采用“先定义后使用”的原则,程序语句必须有输入和输出语句;函数采用有“先入口后出口”的原则。条件或循环语句必须配套使用,即IFENDIF、FORENDFOR。1、 累加:通常采用下列步骤(1) S=(2) :此时需定义一个循环变量,一般采用I或J,同时大多采用FORENDFOR语句来完成。(3) S=S+A(4) (5) 2、累乘:通常采用下列步骤(1)T=(2):此时需定义一个循环变量,一般采用I或J,同时大多采用FOR

12、ENDFOR语句来完成。(3)T=T*A(4)(5) 3、字符串的粘合:通常采用下列步骤(1)S=”或S=SPACE(0)(2):此时需定义一个循环变量,一般采用I或J,同时大多采用FORENDFOR语句来完成。(3)S=S+A 或S=A+S 前者采用字符串的顺序粘合,后者采用字符串的倒序粘合。(4)(5)4、自定义函数:通常采用下列步骤(1)PARAMETER (2)程序语句(3)RETURN :省略表示不带参数返回。三、程序阅读题。阅读下列程序,写出运行结果。1、 SET TALK OFFM=3DO WHILE M10N=2DO WHILE NMIF INT(M/N)=M/NEXITEND

13、IFN=N+1ENDDOIF N=M?MENDIFM=M+1ENDDOSET TALK ON2、 设N、P的输入值分别为6,3。注:字符”A”的ASCII码为65。SET TALK OFFCLEARINPUT N= TO NINPUT P= TO PFOR I=1 TO N?SPACE(N-I+1)IF I=PFOR J=1 TO 2*I-1?CHR(ASC(A)+J-1)ENDFORELSEFOR J=1 TO (2*I-1)-(I-P)?CHR(ASC(A)+J-1)ENDFORENDIFENDFORSET TALK ON3、 注:字符”A”的ASCII码为65。SET TALK OFFC

14、LEARC=一二三四五六七八九十B=ABCDR=0L=LEN(B)FOR I=1 TO LW=SUBSTR(B,I,1)D=ASC(W)+R-65S=IF D+SR=R+11ENDFORSET TALK ON4、 设M的值分别为:12345,SET TALK OFFS=0DO WHILE .T.CLEARINPUT M= TO MN=MDO WHILE .T.R=N-INT(N/10)*10IF R=0S=S+1ENDIFN=INT(N/10)IF N=0EXITENDIFENDDOIF S1EXITENDIFENDDO?SSET TALK ON5、 SET TALK OFFA=ABCDEFG

15、HIJKLMNOPQRSTUVWXYZB=LEN(A)X=X-Y=Y-I=1DO WHILE I=BJ=IX=X+SUBSTR(A,I,1)IF I/2=INT(I/2)Y=Y+SUBSTR(A,I,1)I=I+1LOOPENDIFI=I+JENDDO?X?Y6、 设M的值为:10SET TALK ONCLEARINPUT M= TO MI=1S=0?DO WHILE I=MIF ZS(I)IF I*2=M? STR(I*2,5)S=S+1ELSEEXITENDIFENDIFI=I+1ENDDO?S=+STR(S,3)SET TALK ON*ZS.PRG*PARA XJ=2DO WHILE J

16、XIF INT(X/J)=X/JEXITENDIFJ=J+1ENDDOIF J=XRETURN .T.ELSERETURN .F.ENDIF7、 设N,M的值分别为6,8。SET TALK OFFCLEARINPUT N= TO NINPUT M= TO MX=MAX(N,M)FOR I=X TO M*NIF MOD(I,M)=0 AND MOD(I,N)=0Y1=IEXITENDIFENDFOR?Y1=+ALLTRIM(STR(Y1,19)+,Y2=+ALLTRIM(STR(M*N/Y1,19)SET TALK ON8、N值为4,字符”A”的ASCII码为65。SET TALK OFFCLE

17、ARINPUT N= TO NFOR I=1 TO N?SPACE(N-I+1)FOR J=1 TO 2*I-1?CHR(ASC(A)+J-1)ENDFORENDFORFOR P=N-1 TO 1 STEP -1?SPACE(N-P+1)FOR K=1 TO 2*P-1?CHR(ASC(A)+K-1) ENDFORENDFORSET TALK ON9、 设A的值为:ABCDEFSET TALK OFFCLEARACCEPT A= TO AL=LEN(A)P=SPACE(0)I=1DO WHILE I+PSET TALK ON四、程序填空:四、程序填空说明:阅读下列程序说明和程序,将程序代码缺少

18、的内容填入 中。1、 已知某系统的口令PASSWORD(存在内存变量文件PASS.MEM中)含多个非空格字符,判断口令是否正确只需比较其长度及第3个到第6个字符是否完全相等,允许操作者录入三次(口令录入时要求关屏),如果口令正确正常返回,否则给出提示信息。SET TALK OFFCLEARRESTORE (1) L= (2) TIME=1DO WHILE TIMEN,计算结果输出宽度10位,小数2位)。*MN.PRG*SET TALK OFFCLEARSET (1) INPUT “M=” TO MINPUT “N=” TO NSTORE 0 TO SM,SNDO JC2 WITH M,SM&计算M!DO JC2 WITH N,SN&计算N!DO MC2 WITH (2) ? “表达式结果为S=”+ (3) SET PROC TOSET TALK ONPROC JC2PARA X,YI=1T=1DO WHILE I=XT=T*II=I+1ENDDO (4) RETURNPROC MC2 (5) I=1T=1DO WHILE I0P=MOD(Y,10)D=S1(P)+S2(I)+DI=I+1Y= (4) ENDDO (5) RETURN DPROC S1PARA AC1=”零壹贰叁肆伍陆柒捌玖”RETURN SUBSTR(C1,2*A+1,2)PROC S2PARA

温馨提示

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

评论

0/150

提交评论