Discuz!NT
欢迎 游客 , 注册 | 登录 | 会员 | 界面 | 简洁版本 | 在线 | 帮助
商都网教育宝典宝库

发表新主题 回复该主题
本主题被查看934次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第   上一主题   下一主题
标题: VFP顺序结构和选择结构
-[尕硴]
超级版主
UID: 71
来自:
精华: 130
积分: 14003
帖子: 12909
注册: 2007-10-22 17:59:00
状态: 离线
威望: 444.00
金钱: 3355.00 元
只看楼主 2007-11-01 16:01
VFP顺序结构和选择结构
vfp支持3种基本程序控制构造:顺序结构,选择结构和循环结构 
    一.顺序结构:我们将依次执行程序中的语句的程序结构称为顺序结构,这是最简单的1种程序结构 
例:顺序结构例程 
程序文件内容: 
set talk off 
clear 
input "请输入圆的半径:" to r 
s=3.1415926*r*r 
"圆的面积是:",s 
return 
说明:执行程序时,屏幕上显示提示信息:请输入圆的半径.当用户键入半径并按回车时,vfp计算出圆的面积并显示在屏幕上. 

    二.选择结构:实际应用中,常需要先判断后处理,根据不同情况做不同的处理.选择结构就是对指定的条件进行判断,如果条件成立,则执行指定的语句序列.在vfp中,选择结构包括if语句和do case语句. 
1.if语句: 
格式: 
if 条件 
语句序列1 
[else] 
[语句序列2] 
endif 
说明: 
(1).格式中的条件,多为条件表达式或逻辑表达式,结果为逻辑真或逻辑假 
(2).执行该语句时,首先对条件进行判断,如果是逻辑真,则执行语句序列1,然后转到endif后的第1条语句继续执行;否则执行语句序列2,然后转到endif后的第1条语句继续执行. 
(3).需判断的条件比较多时,可以使用if语句嵌套. 
(4)endif必须与if成对出现 

例:设计1个查询程序,希望当待人不存在时有信息提示. 
程序文件内容: 
clear 
accept "请输入待查人姓名" to xm 
locate for 姓名=xm 
if .not.eof() 
display 
else 
messagebox("查无此人") 
endif 
use 
return 
说明:程序执行时,执行locate命令时,记录指针从表的首记录一直找到最后1条记录都未发现该姓名记录时,记录指针才最后停在文件尾,此时eof()为真值;相反,若eof()取假值,则表示记录指针停在待查人的记录上.即当 
.not.eof()为真时,记录指针停在待查人的记录上,查到的指定的记录.也可用found()来代替程序中的.not.eof() 
2.do case语句: 
虽然使用嵌套if语句可以解决多条件的选择判断问题,但当条件比较多时,嵌套层数也会增多,程序结构也就会变复杂.为解决多条件的选择判断问题,vfp提供了结构简单,使用方便的do case语句. 
格式: 
do case 
case 条件1 
语句序列1 
case 条件2 
语句序列2 
…… 
otherwise 
语句序列n 
endcase 

说明: 
(1).从第1个case进行判断,若条件i成立,则执行语句序列i,然后跳到endcase后的第1条语句继续执行;若加上otherwise选项,则在所有的case条件均不满足时,执行其后的语句序列n 
(2).endcase必须与do case成对出现. 
例:设计1个程序,使用do case语句在"职工档案"表中按编号或姓名查询 

程序文件内容: 
clear 
use 职工档案 
wait "请选择按姓名或按编号查询(X/B)" to xz 
do case 
case xz$"Xx" &&此条件为真,说明选择了X,即按姓名查询 
accept "请输入待查人姓名:" to xm 
locate for 姓名=xm 
caxe xz$"Bb" 
accept "请输入待查编号:" to bh 
locate for 编号=bh 
otherwise 
wait "查询选择错误!按任意键退出!" wind 
endcase 
display 
use 
return
#1  
发表新主题 回复该主题
本主题被查看934次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第







现在的时间是 2008-09-06 01:12:33

版权所有 商都网教育宝典
         Powered by Discuz!NT 1.0.6666    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.032 seconds