VFP程序设计基础Word下载.docx

上传人:b****1 文档编号:4461941 上传时间:2023-05-03 格式:DOCX 页数:24 大小:22.69KB
下载 相关 举报
VFP程序设计基础Word下载.docx_第1页
第1页 / 共24页
VFP程序设计基础Word下载.docx_第2页
第2页 / 共24页
VFP程序设计基础Word下载.docx_第3页
第3页 / 共24页
VFP程序设计基础Word下载.docx_第4页
第4页 / 共24页
VFP程序设计基础Word下载.docx_第5页
第5页 / 共24页
VFP程序设计基础Word下载.docx_第6页
第6页 / 共24页
VFP程序设计基础Word下载.docx_第7页
第7页 / 共24页
VFP程序设计基础Word下载.docx_第8页
第8页 / 共24页
VFP程序设计基础Word下载.docx_第9页
第9页 / 共24页
VFP程序设计基础Word下载.docx_第10页
第10页 / 共24页
VFP程序设计基础Word下载.docx_第11页
第11页 / 共24页
VFP程序设计基础Word下载.docx_第12页
第12页 / 共24页
VFP程序设计基础Word下载.docx_第13页
第13页 / 共24页
VFP程序设计基础Word下载.docx_第14页
第14页 / 共24页
VFP程序设计基础Word下载.docx_第15页
第15页 / 共24页
VFP程序设计基础Word下载.docx_第16页
第16页 / 共24页
VFP程序设计基础Word下载.docx_第17页
第17页 / 共24页
VFP程序设计基础Word下载.docx_第18页
第18页 / 共24页
VFP程序设计基础Word下载.docx_第19页
第19页 / 共24页
VFP程序设计基础Word下载.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VFP程序设计基础Word下载.docx

《VFP程序设计基础Word下载.docx》由会员分享,可在线阅读,更多相关《VFP程序设计基础Word下载.docx(24页珍藏版)》请在冰点文库上搜索。

VFP程序设计基础Word下载.docx

(包括自然变量)

LOCAL

作用域(可见性)

从定义处起有效

从定义处起及下级子程序

只在定义块中可见

传递方向

双向(向上、向下)

单向(由主到子程序)

不传递

生存期

整个应用系统

(VFP环境中)

从定义处起及下级子程序中

随定义块执行结束而释放

特殊作用

用于参数传递或结果传递

屏蔽上级程序中的同名变量

说明

子程序中定义的全局变量,返回主程序时可见

子程序中定义的自然变量,返回主程序时不可见

只在本块中可见,上下级中均不可见

2)利用DO<

WITH<

参数表达式列表>

传递参数

传递参数命令格式:

DO<

接收参数命令格式:

PARAMETER<

变量列表>

参数传递与接收的规则:

(1)接收参数的命令必须出现在被调用程序(子程序)中的第一行;

(2)当WITH<

中是简单内存变量列表时,称为传址或引用。

这时,主调程序中的内存变量被隐含起来,其值随PARAMETER中对应变量的值的变化而变化;

(3)当WITH<

中是内存变量表达式列表或当个内存变量用圆括号括起来(即为明表达式)时,称为传值。

这时,主调程序中的内存变量不被隐含,其值也不随PARAMETER中对应变量的值的变化而变化;

(4)对过程而言,传址或传值不受SETUDFPARAMSTOVALUE/CONFERENCE的影响。

因为它是针对自定义函数的。

8、自定义函数

1)定义

自定义函数可以是一个独立的命令文件(.PRG),也可以放在一个过程文件中。

2)建立

FUNCTION<

自定义函数名>

[PARAMETER<

形式参数列表>

[语句序列]

ENDFUNC

与过程不同的是必须用RETURN<

返回一个值。

3)自定义函数的调用与参数传递

调用形式:

自定义函数名([〈参数表达式列表〉])

参数传送:

既可以用传值方式,也可以用引用方式。

具体规则如下:

(1)如果变量在〈参数表达式列表〉中是以表达式的形式出现,那么是传值方式;

(2)如果变量在〈参数表达式列表〉中是以单变量的形式出现,那么取决于

SETUDFPARAMSTOVALUE/CONFERENCE的设置(缺省为传值方式);

(3)无论SETUDFPARAMSTO可以在单变量前冠以@,以强制传址。

如:

S(@A,B,C)

二、要点与难点

1、INPUT、ACCEPT与WAIT这三个与输入有关的命令有何不同?

INPUT命令可接受数值型、字符型、日期型等数据类型的输入,在输入时应根据数据类型加相应的定界符。

ACCEPT命令只能接受字符串的输入,在输入时不必加定界符。

WAIT命令只能接受单字符的输入,常用于表示程序是否继续、是否中断或是否结束的语句。

2、RETURN、RETRY、CANCEL和QUIT这四个命令有何不同?

RETURN命令:

指的是返回到调用行的下一行。

RETRY命令:

返回到调用行本身,可实现程序的重复调用。

CANCEL命令:

中断、异常结束。

并返回到系统命令窗口。

QUIT命令:

返回到操作系统。

3、SCATTER[FIELDS<

字段名列表>

]TO<

数组名>

4、GATHERFROM<

5、常见的环境设置语句:

SETDEFAULTTO<

文件路径>

将<

设置为系统缺省的路径。

SETCONSOLEON/OFF:

激活或废止从程序中向VFP主窗口或活动的用户自定义窗口的输出。

SETDELETEON/OFF:

决定是否忽略表中已做过删除标记的记录。

SETEXACTON/OFF:

决定字符串比较运算符“=”两边内容是否必须完全匹配,缺省是不必完全匹配。

SETTALKOFF/ON:

关闭或打开系统交互对话显示方式。

缺省为打开显示。

SETFILTERTO<

条件>

指定访问当前表中记录时必须满足的条件。

6、FORI=XTOYSCAN

语句系列与语句系列有何不同?

ENDFORENDSCAN

前者主要处理普通内存变量循环有关的程序;

后者主要处理表中满足条件的记录循环有关的程序。

7、内存变量的属性有那几种?

它们间有何不同?

参见上表。

8、利用DO<

传递参数与自定义函数中的参数传送有何不同。

前者传递参数是在主程序与子程序之间进行调用和传递,可分为传值和引用两种方式:

引用:

WITH后的<

是内存变量列表时,每个内存变量的值传给PARAMETERS中对应变量,调用程序中的变量被隐藏。

当被调用的程序中形参的值发生改变时,调用程序中的变量也跟着发生相应的变化。

传值:

是内存变量表达式或用括号将单个变量括起来时,每个内存变量表达式的值传给PARAMETERS中对应变量,调用程序中的变量不被隐藏。

当被调用的程序中形参的值发生改变时,调用程序中的变量不会跟着发生相应的变化。

后者是在函数内部实行变量间的参数传送,也有传值和引用两种方式。

它调用方式为:

自定义函数名([<

])

若<

中以表达式出现,则是以传值方式传送;

中以内存变量的形式出现,则缺省采用传值方式,若要采用引用方式,需在参数变量前加@。

9、程序设计中常用的函数有:

(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()、RECNO()、

(6)IIF(条件表达式,满足条件时所取的值、不满足条件时所取的值)

(7)测试函数:

FOUND()测试是否找到相应的记录。

10、程序设计的常用算法:

总原则:

变量必须采用“先定义后使用”的原则,程序语句必须有输入和输出语句;

函数采用有“先入口后出口”的原则。

条件或循环语句必须配套使用,即IF…ENDIF、FOR…ENDFOR。

1、累加:

通常采用下列步骤

(1)S=<

初值>

(2)<

循环开始>

此时需定义一个循环变量,一般采用I或J,同时大多采用FOR……ENDFOR语句来完成。

(3)S=S+A

(4)<

循环结束>

(5)<

输出累加合计值>

2、累乘:

(1)T=<

(2)<

(3)T=T*A

(4)<

(5)<

输出累乘积值>

3、字符串的粘合:

(1)S=””或S=SPACE(0)

(3)S=S+A或S=A+S

前者采用字符串的顺序粘合,后者采用字符串的倒序粘合。

输出字符串S>

4、自定义函数:

(1)PARAMETER<

形参数列表>

(2)程序语句

(3)RETURN<

参数>

<

省略表示不带参数返回。

三、程序阅读题。

阅读下列程序,写出运行结果。

1、SETTALKOFF

M=3

DOWHILEM<

10

N=2

DOWHILEN<

M

IFINT(M/N)=M/N

EXIT

ENDIF

N=N+1

ENDDO

IFN=M

?

ENDIF

M=M+1

ENDDO

SETTALKON

2、设N、P的输入值分别为6,3。

注:

字符”A”的ASCII码为65。

SETTALKOFF

CLEAR

INPUT"

N="

TON

P="

TOP

FORI=1TON

?

SPACE(NI+1)

IFI<

=P

FORJ=1TO2*I1

?

?

CHR(ASC("

A"

)+J1)

ENDFOR

ELSE

FORJ=1TO(2*I1)(IP)

ENDFOR

3、注:

C="

一二三四五六七八九十"

B="

ABCD"

R=0

L=LEN(B)

FORI=1TOL

W=SUBSTR(B,I,1)

D=ASC(W)+R-65

S="

"

IFD<

S=SUBSTR(C,2*D+1,2)

ELSE

S=SUBSTR(C,2*MOD(D,10)+1,2)

ENDIF

W+"

----->

+S

R=R+11

4、设M的值分别为:

12345,205354,105075,123450

S=0

DOWHILE.T.

CLEAR

INPUT"

M="

TOM

N=M

DOWHILE.T.

R=N-INT(N/10)*10

IFR=0

S=S+1

N=INT(N/10)

IFN=0

IFS>

1

EXIT

S

5、SETTALKOFF

A="

ABCDEFGHIJKLMNOPQRSTUVWXYZ"

B=LEN(A)

X="

X-"

Y="

Y-"

I=1

DOWHILEI<

=B

J=I

X=X+SUBSTR(A,I,1)

IFI/2=INT(I/2)

Y=Y+SUBSTR(A,I,1)

I=I+1

LOOP

I=I+J

X

Y

6、设M的值为:

=M

IFZS(I)

IFI*2<

STR(I*2,5)

ELSE

I=I+1

+STR(S,3)

****ZS.PRG****

PARAX

J=2

DOWHILEJ<

IFINT(X/J)=X/J

EXIT

ENDIF

J=J+1

ENDDO

IFJ=X

RETURN.T.

RETURN.F.

7、设N,M的值分别为6,8。

X=MAX(N,M)

FORI=XTOM*N

IFMOD(I,M)=0ANDMOD(I,N)=0

Y1=I

Y1="

+ALLTRIM(STR(Y1,19))+"

Y2="

+ALLTRIM(STR(M*N/Y1,19))

8、N值为4,字符”A”的ASCII码为65。

FORJ=1TO2*I1

ENDFOR

FORP=N-1TO1STEP1

SPACE(N-P+1)

FORK=1TO2*P1

)+K1)

9、设A的值为:

ABCDEF

ACCEPT"

TOA

L=LEN(A)

P=SPACE(0)

L

P=P+SUBSTR(A,LI,2)

I=I+2

A+"

------>

+P

四、程序填空:

四、程序填空

说明:

阅读下列程序说明和程序,将程序代码缺少的内容填入中。

1、已知某系统的口令PASSWORD(存在内存变量文件PASS.MEM中)含多个非空格字符,判断口令是否正确只需比较其长度及第3个到第6个字符是否完全相等,允许操作者录入三次(口令录入时要求关屏),如果口令正确正常返回,否则给出提示信息。

RESTORE

(1)

L=

(2)

TIME=1

DOWHILETIME<

=3

MPASS=SPACE(L)

ACCEPT“请输入口令:

(3)

ACCEPTTOMPASS

SETCONSOLEON

IF(4)

TIME=TIME+1

IF(5)

”口令错误!

你无权使用本系统!

”欢迎进入本系统!

2、完成下列删除表文件的程序:

ACCEPT”请输入要删除的表文件名(扩展名略):

”TOFILENAME

FILENAME=TRIM(LTRIM(FILENAME))+”.DBF”

(1)

ACCEPT“该文件不存在!

继续吗?

(Y/N)”TOYN

IF

(2)=”N”

(3)

LIST

WAIT“是这个文件吗?

IFLOWER(YN)=”y”

USE

(4)

WAIT”继续吗?

IFLOWER(Y/N)=”n”

USE

EXIT

ENDIF

(5)

3、给定程序的功能是:

根据输入的数据,判断给定的数是否偶数,可以循环输入。

YN="

Y"

DOWHILEUPPER(YN)="

(1)"

请输入自然数:

IF

(2)

"

不是偶数!

是偶数!

WAIT“是否还要输入其他自然数”TOYN

再见!

RETURN

4、给定程序的功能是:

根据输入的数据,计算不大于该数的奇数累加和。

请输入两位以内的正整数:

STORE0TOX,Y

Z="

0"

DOWHILE

(1)

X=X+1

IF

(2)

LOOP

Z=Z+"

+"

+STR(X,2)

Y=Y+X

Z="

+STR(Y,4)

WAIT"

继续计算?

(Y/N)"

TO(3)

5、求表达式(M!

+N!

)/(MN)!

的值(注:

M>

N,计算结果输出宽度10位,小数2位)。

*****MN.PRG*****

SET

(1)

INPUT“M=”TOM

INPUT“N=”TON

STORE0TOSM,SN

DOJC2WITHM,SM&

计算M!

DOJC2WITHN,SN&

计算N!

DOMC2WITH

(2)

“表达式结果为S=”+(3)

SETPROCTO

PROCJC2

PARAX,Y

T=1

=X

T=T*I

(4)

PROCMC2

(5)

T=T*Y

X=T

6、下面程序可以形成一个主对角线上元素为1,其它元素为0的6*6方阵。

SETTLAKOFF

(1)

FORI=1TO6

FORJ=1TO6

A(I,J)=0

(3)

7、下列程序完成一个自定义函数,其功能为:

对任意一个正数值型数据(该数可有小数若干位,整数部分不超过12位)自动进行小数部分四舍五入取2位,并将其转换为中文大写金额,如10230.4567转换后为壹万零千贰佰叁拾零元肆角陆分。

*****ZH.PRG*****

Y=

(2)

Y=Y100

(3)

DOWHILEY>

P=MOD(Y,10)

D=S1(P)+S2(I)+D

Y=(4)

RETURND

PROCS1

PARAA

C1=”零壹贰叁肆伍陆柒捌玖”

RETURNSUBSTR(C1,2A+1,2)

PROCS2

PARAB

C2=”分角元拾佰仟亿拾佰仟”

RETURN(6)

8、给定程序的功能是:

在表STD.DBF中,按姓名查询记录。

USESTD

DOWHILEANS

ACCEPT"

请输入姓名:

TOXM

(2)

IF.NOT.FOUND()

查无此人!

CLEAR

学号:

学号

姓名:

姓名

数学成绩:

数学

英语成绩:

英语

政治成绩:

政治

总分:

总分

是否继续查询(Y/N)"

TOJX

IF(3)

ANS=.F.

USE

9、下面程序完成输出下列图形:

1

222

33333

4444444

555555555

33333

1

N=5

P=2*N1

FORI=1TOP

IF

(1)

SPAC(NI+1)

FORJ=1TO

(2)

STR(I,1)

ENDFOR

FORK=1TO2*(2*NI)1

STR(4)

10、下面程序完成从键盘输入20个数,去掉20个数中的最大值和最小值,然后求平均值。

N=1

DOWHILEN<

=20

INPUT"

TOB

S=

(2)

IFMAX<

B

MAX=B

IFMIN>

N=N+1

AVERAGE="

+(4)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2