循环结构 三。循环结构:前面我们学习的顺序结构和选择结构有一个共同点,即程序语句不能重复执行。而在实际应用中,常常需要多次重复执行某些语句。这样的需求适合于用循环语句来处理。在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.循环的初始部分。它是循环控制初值。本程序中循环控制初值是隐含的,因为打开文件后,记录指针指向首记录,所以操作是从首记录开始的。 |