计算机二级VFP考试讲义文档格式.docx
《计算机二级VFP考试讲义文档格式.docx》由会员分享,可在线阅读,更多相关《计算机二级VFP考试讲义文档格式.docx(73页珍藏版)》请在冰豆网上搜索。
说明:
提示信息是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