计算机二级VFP考试讲义文档格式.docx

上传人:b****6 文档编号:20918971 上传时间:2023-01-26 格式:DOCX 页数:73 大小:74.97KB
下载 相关 举报
计算机二级VFP考试讲义文档格式.docx_第1页
第1页 / 共73页
计算机二级VFP考试讲义文档格式.docx_第2页
第2页 / 共73页
计算机二级VFP考试讲义文档格式.docx_第3页
第3页 / 共73页
计算机二级VFP考试讲义文档格式.docx_第4页
第4页 / 共73页
计算机二级VFP考试讲义文档格式.docx_第5页
第5页 / 共73页
点击查看更多>>
下载资源
资源描述

计算机二级VFP考试讲义文档格式.docx

《计算机二级VFP考试讲义文档格式.docx》由会员分享,可在线阅读,更多相关《计算机二级VFP考试讲义文档格式.docx(73页珍藏版)》请在冰豆网上搜索。

计算机二级VFP考试讲义文档格式.docx

说明:

提示信息是C型,它会在屏幕上原样输出.

Input和accept在编写程序时语句都一样,只是执行程序(do)时,输入的东西不同

下面请看程序实例:

输入a、b、c的值,对2ax+b=c求x的值。

Clear

Input“现在计算2ax+b=c,请输入a的值:

”toa

Input“请输入b的值:

”tob

Input“请输入c的值:

”toc

x=(c-b)/(2*a)

’x的值为:

’,x

return

 

settalkoff

accept“请输入文件名:

”tof1

use&

f1

input“输入要查询的成绩:

”tocj

listfor入学成绩>

cj

完成查询功能:

在学生.dbf中查找某个同学信息。

indexon姓名toxm

accept“请输入要查询人的姓名:

”toname

seekname

iffound()

disp

else

’对不起,没有找到此人’

endif

return

请思考:

如果换成input,输入的时候该怎么输入?

例5:

删除学生.dbf中的指定记录:

list

input“请输入您想删除的记录号:

”tox

delerecox

wait“你想彻底删除这条记录吗?

(y/n)”toask

ifask=’Y’orask=’y’

pack

注意区分交互方式和程序方式:

有的命令可以在两种状态下执行(例如:

刚才的输入命令),但有些命令只能在程序方式下执行(例如:

循环语句)

(5)定位输入命令:

格式:

@行,列say<

提示信息>

get<

READ

说明:

内存变量必须先赋初值才能使用。

输入的值类型应该与初值类型相同。

如果没有read则表示只显示内容,不输入值。

eg:

appendblank

@5,10say“学号”get学号

@7,10say“姓名”get姓名

@9,10say“入学成绩”get入学成绩

read

store0tocj

@5,10say“请输入学生成绩”getcj

2.输出命令:

(1)非格式输出命令:

和?

(2)格式输出命令

@<

行,列>

say<

表达式>

行和列都可以是表达式,常常可以使用函数ROW()和COL()

ROW()表示返回当前行的行号COL()表示返回当前列的列号

(3)TEXT语句:

原样输出

TEXT

…………………..

ENDTEXT

看下面的例题:

例6:

循环输入值

dimexh(10)

store0toxh

@10,10say'

请输入数字:

getxh

(1)

i=2

dowhilei<

=10

@row()+1,10say'

getxh(i)

i=i+1

listmemolikexh

3.其它常用命令

1、清屏:

CLEAR

2、CANCEL、QUIT和RETURN

QUIT:

退出程序运行并且退出VisualFoxpro.

CANCEL:

退出程序运行,回到VFP命令状态.

RETURN:

返回上级程序调用点,如果是主程序就表示退出程序

主程序可缺省此命令返回(结束),即默认使用了return

注意:

上述命令执行完后都会自动clearmemory.

但是如果有数据库和表打开不会自动关闭,所以使用数据库和表后在程序结束时我们常常需要加命令:

closeall

3、注释命令NOTE、*和&

&

注释的含义:

程序员对程序语句功能的说明,执行程序的时候不执行注释中的内容,注释只起到一个对语句说明的目的。

一般复杂程序中应有30%以上的注释。

4、系统设置命令:

set…on/off或者是set…to

第3章程序设计

(二)

三种基本结构

顺序、分支、循环

一、分支语句:

1、IF语句

单向选择:

IF条件双向选择:

IF条件

执行语句执行语句

ENDIFELSE

执行语句

ENDIF

例1:

用户输入数据表文件名,判断它存在否,如果存在则打开数据表文件并显示表中的全部记录。

accept'

请输入数据表文件名:

toheng&

想想可不可以用input

iffile(heng+'

.dbf'

)&

了解file()的使用方法

heng&

想想这儿为什么要用&

代换

list

?

sorry,文件不存在.'

closeall&

关闭所有打开的表,如果不涉及多工作区,可以只使用use

IF语句的嵌套:

例2:

将用户输入的小写英文字母转化成大写

ACCEPT“请输入1个字母:

”TOSTR1

IFSTR1>

=’a’ANDSTR1<

=’z’

STR1=UPPER(STR1)

SPACE(40)+STR1

ELSE

IFSTR1>

=’A’ANDSTR1<

=’Z’

ELSE

“你输入的不是英文字母”

二、多向选择:

(多路选择)

DOCASE

CASE<

条件表达式1>

<

命令序列1>

CASE<

条件表达式2>

命令序列2>

……

OTHERWISE//其它情况

<

命令序列>

ENDCASE

OTHERWISE可以没有.

例3:

邮局负责邮购小物品规则如下:

50公里及以内收取额外金额5元,50-100公里收取10元,100-200公里收取20元,200-500公里收取40元,其余一律收取50元。

INPUT“请输入您想邮购物品的路程(公里数):

”TOX

DOCASE

CASEX<

=50

Y=5

CASEX>

50ANDX<

=100

Y=10

100ANDX<

=200

Y=20

200ANDX<

=500

Y=40

OTHERWISE

Y=50

’您需要付款:

’,Y,’元人民币’

三、循环语句:

1、DOWHILE条件

语句序列

LOOP&

提前结束本次循环

语句序列

EXIT&

退出循环体

ENDDO

要退出循环,需要条件为假的时候(条件=.F.时)

执行过程:

例4

n=1

sum1=0

dowhilen<

sum1=sum1+n

n=n+1

”1+2+3+…..100的和为:

”,str(sum1,4)

例5

i=1

=5

space(6-i)

"

*******"

cancel

2、计数循环:

FOR循环变量=初值TO终值[STEP步长]

退出循环

ENDFOR/NEXT

求1~100的和

SUM=0

FORI=1TO100

SUM=SUM+I

ENDFOR

’1~100的总和为:

’,SUM

使用DOWHILE实现:

I=1

DOWHILEI<

101

I=I+1

ENDDO

3、指针循环:

SCAN范围FOR/WHILE条件

ENDSCAN

首先判断EOF()的值,为真则结束循环;

否则结合FOR/WHILE子句执行循环体部份,记录指针移到指定范围和条件内的下一条记录,重新判断EOF()的值,直到为真则结束循环.

另外:

若语句中有QUIT、RETURN、CANCEL等命令也可以退出

例如:

DOWHILE.T.DOWHILE.T.

IFY>

0IFY>

EXITQUIT

ENDIFENDIF

ENDDOENDDO

如果Y>

0,则退出本循环如果Y>

0,则退出程序,退出VF

DOWHILE.T.DOWHILE.T.

RETURNCANCEL

0,则退出程序返回上层如果Y>

0,则退出程序,回到VF中

例7:

三种方法实现显示出全部的男生。

使用DOWHILE循环:

CLOSEALL

USE学生

DOWHILENOTEOF()

IF性别=’男’

DISP

ENDIF

SKIP

使用FOR循环:

COUNTTOX

GOTOP

FORI=1TOX

IF性别=’男’

DISP

SKIP

使用SCAN循环:

SCANFOR性别=’男’

例8(LOOP语句的使用方法:

提前结束本次循环)

USE学生

DISP

WAIT‘你想修改本记录吗?

(Y/N):

’TOX

IFX=’N’ORX=‘n’

LOOP

EDIT

程序执行到WAIT语句后,如果用户输入的是’N’或’n’,那么就LOOP

(也就跳过本次循环,不执行后面的EDIT)

例9:

通过键盘输入三角形的边长,若边长正确,立即在屏幕上显示三角形的面积,若边长不正确,重新输入边长,若输入的边长中任意一边为0则程序立即结束。

”现在计算三角型的面积,如果想退出程序请输入0。

DOWHILE.T.

INPUT“请输入边长a:

”TOA

INPUT“请输入边长b:

”TOB

INPUT“请输入边长c:

”TOC

IFA=0ORB=0ORC=0

’结束’

RETURN

IFA+B<

=CORA+C<

=BORB+C<

=A

’错误的三角型,请重新输入!

LOOP

S=(A+B+C)/2

AREA=SQRT(S*(S-A)*(S-B)*(S-C))

’该三角型的面积是:

’,area

例10:

有下列表:

book(书名C(20),作者C(8),出版日期D,内容简介M)编写程序:

查询关于foxpro的图书.

USEBOOK

LOCATEFOR‘foxpro’$书名

IF!

FOUND()

’没有关于foxpro的图书’

DOWHILE!

EOF()

CLEAR

书名,作者,出版日期

内容介绍

WAIT“是否继续查找?

(Y/N)”TOM

IFM$’nN’

EXIT

CONTINUE

”全部显示完成”

例题11:

fork=1to10

ifk%2=0

loop

endif

”OK”

endfor

请问显示了多少个OK?

例题12:

在学生表里查询所有入校总分在570以上的人.

SCANFOR入校总分>

570

例13:

用户可以循环输入并查找入校总分,直到输入的是负数就退出.

INPUT“请输入你要查找的入校总分,输入负数则退出:

DOWHILEX>

=0

SCANFOR入校总分=X

INPUT“请输入你要查找的入校总分:

实验:

循环插入新记录,并输入数据。

答案见210.41.166.233中省等级考试辅导资料:

VF程序部分。

例14:

现有表STUDENT.DBF和学生成绩.DBF,编写程序,对两张表建立关联,用户可以循环查询:

输入某个同学的姓名后,该程序能够修改关于他所选课程的分数.(此题仅理解)

其中STUDENT.DBF信息如下:

(学号C(6),姓名C(8),性别C

(2),出生日期D,高考成绩N(6,1))

学生成绩.DBF信息如下:

(学号C(6),课程号C(3),分数N

(2))

思路:

先建立好关联,因为STUDENT对学生成绩是一对多的关系,所有最好将STUDENT做子表,就不用SETSKIPTO命令了.然后通过STUDENT中的姓名获得学号,再在表学生成绩.dbf中进行查找和课程分数的修改.

SELE2

USESTUDENT

INDEXON学号TAGXH

SELE1

USE学生成绩

SETRELATO学号INTOB&

建立关联,学生成绩作为父表

ACCEPT“请输入你想查询的人姓名”TONAME

SELE2

LOCATEFOR姓名=NAME&

先在表STUDENT中查找姓名

IFFOUND()

NUM=学号&

获得姓名对应的学号

SELE1&

转换到表学生成绩中

LOCATEFOR学号=NUM&

根据刚才姓名对应的学

学生成绩中循环找,因为一个学生可能有几个课程成绩

DOWHILENOTEOF()

@4,8SAY学号

@4,20SAYB.姓名

@4,34SAY课程号

@6,10SAY‘分数’GET分数

READ

CONTINUE

ENDDO

’SORRY,NOFIND.’

WAIT“你想继续查询修改数据吗?

(Y/N):

”TOASK

IFASK=’n’ORASK=’N’

LIST学号,B.姓名,课程号,分数

CLOSEALL

CANCEL

编写程序,对于学生.dbf能够在程序末尾循环插入新记录

(要求:

必须使用@行,列say...get..输入数据)

APPEBLANK

@5,20SAY'

学号'

GET学号

@5,40SAY'

姓名'

GET姓名

@7,20SAY'

性别'

GET性别

@7,30SAY'

出生年月'

GET出生年月

@9,20SAY'

入校总分'

GET入校总分

READ

WAIT'

你想继续插入新记录吗?

(Y/N):

'

TOX

IFX='

N'

ORX='

n'

LIST

编写程序,该程序能够顺序修改表学生.DBF中的所有数据。

(要求:

必须使用@行,列say...get..进行数据修改)

ifeof()

exit

你想继续修改记录吗?

例4.39打印九九表

forI=1to9

str(I,2)

forj=1to9

fork=1toj

str(j*k,2)

endfor

For循环

引入:

双重循环(数组)arr(3,4)

用二维数组输入数据:

dimearr(3,4)

forI=1to3

forj=1to4

inputtoarr(i,j)

dispmemorylikea*

eg1:

******

4行6列

行forI=1to4

列forj=1to6

”*”

endfor

eg2:

*

**f

***

****

行:

forI=1to4

endfor

列:

forj=1toI

eg3

forI=1to3

1.显示空格2.显示*3换行

规律:

行数+空格=行的总数

space(3-i)

forj=1to2*I-1

eg4:

打印九九表

123456789

*************************************

1)1

2)24

3)369

4)481216

5)510152025

6)61218243036

1.行:

9

2每行:

行数)空格

行数i*列数j

换行

编程:

外循环forI=1to9

内循环?

str(I,1)+”)”+”“

forj=1toI

str(I*j,2)+””

表头:

fori=1to9

+str(i,2)+"

"

程序三(第十一周PPT)

一、重点掌握:

1、 

什么是子程序

2、普通变量、全局变量和局部变量

3、什么是过程和函数(procedure\function)

4、过程和函数的建立和使用方法

看看下例:

实验九程序设计

(一)

实验性质:

验证性实验

目的:

掌握程序文件的建立、编辑和运行。

掌握格式输入输出命令,学习编写顺序和分支程序。

内容:

***************相关内容回忆*********************

1、格式化输入输出命令

格式一:

@行,列say提示信息

格式二:

@行,列say提示信息get变量

……

格式三:

@行,列say提示信息get变量default常量

say后面的提示信息可以是表达式

①GET后的变量可以是内存变量或当前打开的数据文件中的字段变量,若是内存变量,应在执行该命令前对内存变量赋值,否则就必须使用default参数赋初值。

②输入的值类型应该与初值类型相同。

③READ命令与GET命令必须配合使用。

多个GET命令可以只用一个READ命令配合。

编写程序完成在学生.DBF中追加记录

CLEAR

USE学生

APPENDBLANK

@5,20SAY“学号”GET学号

@5,40SAY“姓名”GET姓名

@7,20SAY“性别”GET性别

@7,40SAY“出生年月”GET出生年月

@9,20SAY“入校总分”GET入校总分

@9,40SAY“三好生”GET三好生

READ

LIST

CLOSEALL

RETURN

2、输出命令

1)?

/?

2)TEXT语句:

text

hellow

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

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1