a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 97|回复: 1

[Visual FoxPro] 2011年度计算机等级考试二级VFP基础教程(25)

[复制链接]
发表于 2012-7-31 22:17:54 | 显示全部楼层 |阅读模式
 循环结构  三。循环结构:前面我们学习的顺序结构和选择结构有一个共同点,即程序语句不能重复执行。而在实际应用中,常常需要多次重复执行某些语句。这样的需求适合于用循环语句来处理。在vfp中,提供了3种循环语句:do while循环、for循环及scan循环。
  I2 v: v9 ^7 H/ w7 M* R7 v  1.while循环:
2 i( k, L- m/ l; K1 u7 P" r7 P  格式:
. k+ E5 o. ]3 c% o& h  do while 条件
: Y! I' A: J4 L8 ]4 L) h  语句序列& q! \) S: K  G
  [loop]) t+ }9 k3 y0 H# B( [4 c, x1 a
  [exit]2 ?' s0 ~  d5 p7 @& ?. v
  enddo
) R4 V% z: |3 i1 s$ h5 k  说明:
% x$ b2 R* B' W6 R  (1)."do while 条件"是循环说明语句,它标志循环的开始,并判断循环条件是否为真值;当条件为真值时,则执行语句序列;否则跳到enddo后面的语句继续执行。! ]1 y* M- o! B( B
  (2).do while和enddo之间的语句序列也被称作循环体,是需要多次重复执行的语句,由它完成规定的数据处理工作。
; o6 i: ]) ]- Z. z  (3).循环语句中的可选项exit,用于退出循环语句,可放在循环体语句的任意位置上。若在循环体中加上该可选项,当执行exit时,跳出循环体去执行 enddo后面的语句。通常,exit是在条件语句控制下,当条件得到满足时便跳出循环;否则永远不能执行exit后面的循环体语句。& m' j. I4 R8 n$ I  `
  (4).可选项loop,是循环短路语句,也可以放在循环体语句的任意位置上。当执行loop时,其后的循环体语句部分不予执行,直接返回到循环起始语句。loop也通常放在条件语句的控制下。
0 u0 h% z/ F2 M+ z  (5).enddo和do while必须成对出现。) Z' A4 r$ k% R( \* T
  例:将"职工档案"表中所有职称是"讲师"的工资加200元,副教授加150元,无职称的加100元。
8 }  X" m1 E$ A1 _6 n2 L0 \  首先,我们修改一下"职工档案"表的结构,为其增加一个"工资"字段:
7 F+ R4 o% ^" U& a  在命令窗口依次执行如下命令:) b5 e: R& L2 \' `# _% c
  use 职工档案) K7 `4 u, @* r& ^
  modify structure" U" Z) U* G2 _; \7 w
  弹出"表设计器"窗口,添加一个新字段:工资 N6.1,单击"确定",保存更改。- C. q' }3 \6 C% k* E6 b) a
  再执行browse命令,在弹出的browse窗口中为每条记录的"工资"填上值,) M2 t( }5 _. ~6 k  ^
  新建一个程序文件xiugai.prg,程序文件的内容如下:
( P! P# |  X9 S% l& E) m  clear
4 H4 H. d7 A, v1 K: l! g  use 职工档案
' }  `- [1 b- X. Q  do while .not.eof()
$ m1 I- H" y) N4 Q4 U  do case. W+ N( Y9 S4 v4 _- T& _7 _! t
  case 职称="讲师"
5 q+ o6 v2 R+ b3 T7 S) W  replace 工资 with 工资+200( N( g; s1 }/ ~& ]- H- Z9 o
  case 职称="副教授"
/ e, ]/ W5 B- x, x1 X! ]. H- J  k  replace 工资 with 工资+150
9 r# J2 v" @( D4 p9 ?1 Z6 p) {# k  case 职称="无"
- W/ L9 \6 L7 {; c' s* x  replace 工资 with 工资+100
& H# x# `5 k7 ~0 @  endcase
/ m1 ?# v& \+ E! J" m3 J  a  skip- r  s* k* V4 O8 {, q
  enddo& \1 s$ f) {3 L5 Z9 }; s6 c
  use
5 D" R: V2 q4 Z% X0 _- j  return
2 v# Q" U1 ~% P' _  程序分析:循环程序由以下4个主要部分构成:
/ a. {8 G. G8 V# Q2 p  A.循环的工作部分。它完成循环的主要工作,是循环体的主要部分。这里由do case---endcase组成。5 m  M  R0 m, t2 c  M
  B.循环的修改部分。它保证循环体在循环过程中,有关的量能按一定的规律变化。这里的循环修改部分是skip语句,用来实现依次操作文件的各条记录。
2 u) K: P3 m6 t4 b' T, g  C.循环的控制部分。它保证循环体语句按规定的循环次数正常执行。此例中的循环控制部分是。not.eof()逻辑表达式,它表示做完所有记录的操作。7 @7 o/ r; ?' \) D7 H5 w1 R. @0 v( n9 w+ A
  D.循环的初始部分。它是循环控制初值。本程序中循环控制初值是隐含的,因为打开文件后,记录指针指向首记录,所以操作是从首记录开始的。
回复

使用道具 举报

 楼主| 发表于 2012-7-31 22:17:55 | 显示全部楼层

2011年度计算机等级考试二级VFP基础教程(25)

2.for循环:在已知循环次数的情况下,使用for循环比较方便  格式:  L  R& j5 W: {' u& t4 R
  for 变量=初值 to 变量终值 [step]步长% ^7 s: F+ q& m  F; v: J1 m
  语句序列9 {  Q  {3 M% c% p8 m- e
  [exit]
3 M" ?4 {) \% I( j' c3 o1 N* l- p  [loop]
% W2 Z6 _' f9 C6 N! \! Y9 U/ b  endfor|next
4 a  C- ?) x7 Q' J% D  功能:' u$ V3 y$ X! V0 h1 N# G
  在循环控制变量的初值和终值的范围内执行循环语句,每执行一次循环,循环控制变量都要加上增量。当其值在规定范围内时就再次执行循环体语句序列,否则结束循环,执行循环终止语句下面的语句。跳出循环和循环短路语句exit和loop意义同前。
) d* G& F4 I( Z  C% O  具体执行步骤:" J6 R! ]1 H- e  Z" x( x+ i/ o3 ?
  (1).给变量赋初值;
- _- m) a( }2 U. y, C; v  (2).判断变量的值是否小于等于终值;
' k7 {$ g9 l; u, F% a  (3).若不是,则循环结束;
! ?: e) i: `' |: H  (4).若是,则执行语句序列;
8 P5 M* V* q3 f  (5).变量=变量+步长(若省略step,则步长=1);/ M, d" h' I! Q+ g# `6 M% M: A
  (6).转(2).
2 W, w: R% N7 O( T7 T  例:在屏幕上输出乘法口诀表
& c3 J+ p7 D. S' D" _/ E  程序文件内容如下:
$ o% B2 e; |# d' d9 e: H  ?"九九乘法表"
0 [; T9 ^7 G, {! h  ?
1 F, A( D9 H% F1 W  for i=1 to 9, J% B) Q7 L* W8 S' o: D
  for j=1 to i! [: S( v! }6 n8 z' Z/ f- B' w8 C
  ??alltrim(str(i))+"*"+alltrim(str(j))+"="+alltrim(str(i*j))+" "' O6 f! t) S: p( A8 I+ Q
  next
) U' ?. F/ a% Q& i  ?
& b6 a+ A: B( [+ l+ x  next# d) H7 }2 D1 _2 R9 J
  3.scan循环:
& Z  c1 M& U' T, t6 a7 Y$ f  格式:4 ?9 l+ `) c  n, u
  scan [范围][for 条件]& j0 R, o: P! ]6 W) m
  语句序列
+ M$ S) _0 u4 R% P/ z- o# R/ d  endscan
- u. b6 l3 K6 X: }, x  功能:: U/ g# ?8 F) ~% C& j( P
  对表中指定范围,满足条件的记录执行循环体语句,每执行一次循环,记录指针自动移动到下一条记录。操作表时,使用该语句功能强,效率高。" Y# C0 w* E- a$ D0 W  J: o
  例:使用scan语句编程,显示"职工档案"表中的女教师的姓名和职称。$ @3 g6 i& `) t
  use 职工档案5 {; u) K9 Y' W3 S. P
  scan for .not.性别, D/ u/ y  V; i8 r/ M8 Q
  display 姓名,性别
0 r3 e$ {# x, P" k  endscan# V7 c8 Z2 u* r' q9 ?/ T# K2 `
  use
0 ~; h3 \$ b2 a% }  return
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 13:47 , Processed in 1.008803 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表