第九章程序二Word文档下载推荐.docx
- 文档编号:22165258
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:15
- 大小:18.61KB
第九章程序二Word文档下载推荐.docx
《第九章程序二Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第九章程序二Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
closeall&
关闭所有打开的表,如果不涉及多工作区,可以只使用use
IF语句的嵌套:
例2:
将用户输入的小写英文字母转化成大写
CLEAR
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
enddo
”1+2+3+…..100的和为:
”,str(sum1,4)
cancel
例5
i=1
dowhilei<
=5
space(6-i)
"
*******"
i=i+1
cancel
2、计数循环:
FOR循环变量=初值TO终值[STEP步长]
退出循环
ENDFOR/NEXT
例6:
求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打印九九表(嵌套循环)
settalkoff
forI=1to9
str(I,2)
forj=1to9
fork=1toj
str(j*k,2)
endfor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九 章程