第6章循环结构程序设计_第1页
第6章循环结构程序设计_第2页
第6章循环结构程序设计_第3页
第6章循环结构程序设计_第4页
第6章循环结构程序设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第第6章章 循环结构程序设计循环结构程序设计 程序设计中的循环结构(简称循环)是指在程序中,从某处开始有规律地程序设计中的循环结构(简称循环)是指在程序中,从某处开始有规律地反复执行某一操作块(或程序块)的现象。反复执行某一操作块(或程序块)的现象。 被重复执行的该操作块(或程序块)称为循环体,循环体的执行与否及次数被重复执行的该操作块(或程序块)称为循环体,循环体的执行与否及次数多少视循环类型与条件而定。多少视循环类型与条件而定。 无论何种类型的循环结构,必须确保循环体的重复执行能被终止(即非无限无论何种类型的循环结构,必须确保循环体的重复执行能被终止(即非无限循环)。循环)。6.1 循环

2、结构语句循环结构语句6.2 列表框与组合框控件列表框与组合框控件6.3 页框页框习题习题6 I=1I=1DO WHILE I100DO WHILE I100 I=I+1 I=I+1ENDDOENDDOFOR I=1 TO 100FOR I=1 TO 100ENDFOR|NEXTENDFOR|NEXT专用于数据表的循环专用于数据表的循环:SCANSCAN ENDSCANENDSCANGO TOPGO TOPDO WHILE .NOT.EOF()DO WHILE .NOT.EOF() SKIP SKIPENDDOENDDOVisual FoxPro中提供了中提供了“当型当型”、“步长型步长型”和和

3、“表扫描型表扫描型”3种循环语句种循环语句“当型当型”:当满足一定条件时执行循环体,当满足一定条件时执行循环体,循环次数预先可确定也可以不确定循环次数预先可确定也可以不确定:n“步长型步长型”:循环次数预循环次数预先确定好先确定好:DO WHILE .T.DO WHILE .T. EXIT EXITENDDOENDDO 6.1 循环结构语句循环结构语句6.1.1 当型循环命令当型循环命令DO WHILE 想要在某一条件满足时执行循环,可以使用当型循环(想要在某一条件满足时执行循环,可以使用当型循环(DO WHILE)结构。)结构。当型循环的语法格式为:当型循环的语法格式为:DO WHILE 条

4、件条件 命令列命令列 EXIT LOOP 命令列命令列ENDDO条件为条件为.T.时进入循环时进入循环条件为条件为.F.时退出循环时退出循环 EXIT退出循环退出循环 LOOP结束当前次的循环结束当前次的循环,返回到返回到DO语句语句 条件命令列命令列命令列假真EXIT真真假假LOOP假真结束 S=0S=0 P=1 P=1 DO WHILE P=10DO WHILE P=10 S=S+P S=S+P P=P+1 P=P+1 ENDDO ENDDO thisform.text1.value=s thisform.text1.value=s求: 1+2+10的值S=0+1=1P=1+1=2S=1+

5、2=3P=2+1=3S=1+2+3=6P=3+1=4S=1+2+3+10=55P=1+1+1+1=11 5!的值 T=1 T=1 N=1 N=1 DO WHILE N=5DO WHILE N=5 T=T T=T* *N N N=N+1 N=N+1 ENDDO ENDDO thisform.text1.value=t thisform.text1.value=t T=1*1=1N=1+1=2T=1*2=2N=2+1=3T=(1*2)*3=6N=3+1=4T=(1*2*3)*4=24N=4+1=5T=(1*2*3*4)*5=120N=5+1=6T=120 【例【例6-1】计算阶乘的程序】计算阶乘的

6、程序N=1*2*3*4*5*6*7 输入输入nt 1累乘器赋初值累乘器赋初值i 1计数器赋初值计数器赋初值当当 i = n当计数器的值不超过当计数器的值不超过n时时t t i累乘累乘i i + 1计数器增计数器增1输出输出t输出乘积输出乘积 【例【例6-2】输入两个正整数,求它们】输入两个正整数,求它们的最大公约数。的最大公约数。 分析:求最大公约数可以用分析:求最大公约数可以用“辗辗转相除法转相除法”,方法如下:,方法如下: 以大数以大数m作被除数,小数作被除数,小数n做除做除数,相除后余数为数,相除后余数为r。 若若r 0,则,则m n,n r,继续相除得到新的继续相除得到新的r。若仍有。

7、若仍有r 0,则重复此过程,直到则重复此过程,直到r = 0为止。为止。 最后的最后的n就是最大公约数。就是最大公约数。 输入输入m,n大数放入大数放入m,小数放入,小数放入n求求m / n的余数的余数当当 r 0m nn r求求m / n的余数的余数输出输出n 输出最大公约数输出最大公约数根据此分析画出流程图根据此分析画出流程图 【例6-3】输入一个正整数,利用输入一个正整数,利用“当型当型”循环判断是否素数。循环判断是否素数。素数素数:只有只有1与本身是因子与本身是因子,仅能被仅能被1与自己整除与自己整除判断大于判断大于2整数整数N是否为质数(素数)是否为质数(素数),只要判断只要判断N除

8、以除以2到到n-1(或到(或到SQRT(N))都不能整除即可)都不能整除即可 当 I = 输入输入nI 2,s 0 i = SQRT(n) and s = 0如果如果n 被被I整除整除真真s 1假假I I + 1如果如果 s = 0真真输出:输出:n是素数是素数假假输出:输出:n不是素数不是素数 例题例题lt6-3判断素数判断素数 6.1.2 步长型循环命令步长型循环命令FOR 若事先知道循环次数,则可以使用步长型循环若事先知道循环次数,则可以使用步长型循环(FORENDFOR)结构。其语法结构为:)结构。其语法结构为:FOR 内存变量内存变量=初值初值TO终值终值 STEP 步长值步长值 命

9、令列命令列 LOOP EXIT 命令列命令列ENDFOR | NEXT 【例【例6-4】利用】利用“步长型步长型”循环判断素数的程序。循环判断素数的程序。 只需修改命令按钮只需修改命令按钮Command1的的Click事件代事件代码:码:n = THISFORM.Text1.Values = 0*i = 2FOR i = 2 TO SQRT(n) IF n % i = 0 s = 1 EXIT ENDIFENDFOR 【例【例6-5】求】求1! + 2! + 3! + + 20!的值。的值。 分析:采用循环嵌套的方法,见流程图,如图分析:采用循环嵌套的方法,见流程图,如图6-8所示。所示。s

10、0累加器赋初值累加器赋初值n 从从 1 到到20外层循环条件外层循环条件t 1累乘器赋初值累乘器赋初值m 从从 1 到到 n内层循环条件内层循环条件t t * m累乘累乘s s + t累加累加输出输出s输出累加和输出累加和图6-8 流程图 S=0 S=0 T=1 T=1 N=1 N=1 DO WHILE N=5DO WHILE N=5 T=T T=T* *N N S=S+T S=S+T N=N+1 N=N+1 ENDDO ENDDO 求S=1!+2!+3!+5!的值T=1*1=1S=0+1=1N=1+1=2T=1*2=2S=1+(1*2)=3N=2+1=3T=(1*2)*3=6S=1+(1*2

11、)+(1*2*3)=9N=3+1=4T=(1*2*3)*4=24S=1+2!+3!+4!=33N=4+1=5最后一次循环最后一次循环:T=(1*2*3*4)*5=120S=1+2!+3!+4!+5!=153N=5+1=6S=153 转跳语句转跳语句(LOOP)(LOOP)n在在DO WHILEDO WHILEENDDOENDDO循环体内提供了一条短路语句,可循环体内提供了一条短路语句,可以起到转跳作用以起到转跳作用n语句格式:语句格式:n LOOPLOOPn语句功能:语句功能:n中断本次循环体的执行中断本次循环体的执行n跳回到跳回到DO WHILEDO WHILE的的开始开始处,重复条件的判断

12、处,重复条件的判断 例:求例:求0 0100100之间奇数之和之间奇数之和 X=0X=0 Y=0 Y=0 DO WHILEDO WHILE X100X100 N100 EXITEXIT ENDIFENDIF S=S+N S=S+N N=N+1 N=N+1ENDDOENDDOThisform.text1.value=sThisform.text1.value=sS N 123364105+N+15050101 多重循环中多重循环中LOOPLOOP和和EXITEXIT的作用域的作用域 n循环的嵌套循环的嵌套: :n如果在一个循环程序的循环体内又包含着另一些循如果在一个循环程序的循环体内又包含着另一

13、些循环,就构成了多层次环,就构成了多层次( (多重多重) )循环循环nLOOPLOOP和和EXITEXIT语句放在哪一个层次,它就只能在那个语句放在哪一个层次,它就只能在那个层次中起作用,层次中起作用,n这个层次就是它的作用域这个层次就是它的作用域 DO WHILE DO WHILE LOOP EXIT ENDDO LOOP EXITENDDO 6.2 列表框与组合框控件列表框与组合框控件列表框列表框显示一系列数据项,用户可以从中选择一项或多项显示一系列数据项,用户可以从中选择一项或多项 常用常用属性属性: ControlSoure:ControlSoure:捆绑的变量名,存选定的数据项。捆绑

14、的变量名,存选定的数据项。 BoundColum:BoundColum:多列时多列时ValueValue捆绑的列。捆绑的列。 Value: N:Value: N:所选择的项值所选择的项值;C:;C:显示内容值显示内容值 DisplayValue:DisplayValue:第一列显示内容值。第一列显示内容值。 RowSoure: 列表中数据值的源。数组、字段、表结构列表中数据值的源。数组、字段、表结构 RowScoureType:列表中数据值的源类型。列表中数据值的源类型。6-字段字段,5-数组数组,7文件。文件。 ColumnCount:ColumnCount:列数。列数。MultSelet:

15、 MultSelet: 是否多选。是否多选。 listIndex:listIndex:列表中选定数据项的索引值列表中选定数据项的索引值 list(i)list(i)列表框第列表框第i i行内容行内容;listcount:;listcount:行数。行数。方法事件:方法事件: AddItemAddItem(S): S): 在列表中增加项。在列表中增加项。Clear: Clear: 清楚各项。清楚各项。 RemoveItem(listIndex ): RemoveItem(listIndex ):删除一项。删除一项。Requery:Requery:更新列表。更新列表。 AddListItem(s,

16、 AddListItem(s,行行, ,列列) )多列时增加项。多列时增加项。 【例6-6】求从求从2000年到年到2100年之间的所有闰年。年之间的所有闰年。 分析:设分析:设n为年份数,为年份数,若若n同时满足如下两个条同时满足如下两个条件则件则n为闰年:为闰年: n能被能被4整除。整除。 n不能被不能被100整除,整除,或者或者n能被能被400整除。整除。n 从 2000 到 2100如果 n % 4 = 0真如果 n % 100 != 0 或者 n % 400 = 0真L 1假L 0假L 0如果L = 1真输出n 3. 在列表框中显示多列在列表框中显示多列 修改列表框的修改列表框的Co

17、lumnCount属属性、性、ColumnWidths属性可以在列属性可以在列表框中显示多列选项。表框中显示多列选项。【例【例6-9】简易数学用表。显示整】简易数学用表。显示整数数1100的平方、平方根、自然对的平方、平方根、自然对数和数和e指数,如图指数,如图6-16所示。所示。补补:VALUE :显示与显示与BoundColumn绑定的列的绑定的列的VALUE 值值DISPLAYVALUE:显示第一列数显示第一列数据据 6.2.2 使用组合框使用组合框(Style: 0-下拉组合框,下拉组合框,2-下拉列表框。下拉列表框。)常用属性常用属性: BoundColumn:BoundColumn

18、:列表框中与列表框中与ValueValue捆绑的列。捆绑的列。 RowScoureType:RowScoureType:列表源类型。列表源类型。6-6-字段字段,5-,5-数组数组,7,7文件文件 RowSoure: RowSoure: 列表内容来源。数组、字段、表结构列表内容来源。数组、字段、表结构 ControlSoure: ControlSoure:捆绑的变量名,存选定的数据项。捆绑的变量名,存选定的数据项。 Value: N: Value: N:所选择的项值所选择的项值;C:;C:显示内容值显示内容值 DisplayValue: DisplayValue:第一列显示内容值。第一列显示内

19、容值。 listIndex: listIndex:列表中选定数据项的索引值列表中选定数据项的索引值 ListCount: ListCount:列表的项数。列表的项数。 list(i) list(i)列表框第列表框第i i行内容行内容 Text: Text:还原文字输入区中所有文字还原文字输入区中所有文字方法事件:方法事件: AddItem(S): AddItem(S): 在列表中增加项数。在列表中增加项数。Clear: Clear: 清楚各项。清楚各项。 RemoveItem(listIndex ): RemoveItem(listIndex ):删除一项。删除一项。Requery:Reque

20、ry:更新列更新列表。表。 1. 下拉列表框下拉列表框(Style: 2-下拉列表框。下拉列表框。) 如果想节省表单上的空间,并且希望强调当前选定的项,如果想节省表单上的空间,并且希望强调当前选定的项,可以使用下拉列表框。可以使用下拉列表框。【例【例6-10】在文本框输入数据,按回车添加到列表框中,在列】在文本框输入数据,按回车添加到列表框中,在列表框中选定项目,表框中选定项目,单击鼠标右键可移去选定项单击鼠标右键可移去选定项,如图,如图6-17所示。所示。 2. 下拉组合框下拉组合框(文本框文本框+列表框。下拉式列表框。下拉式,可输入可输入,不能多选。不能多选。) (Style: 0-下拉组

21、合框下拉组合框) 下拉组合框能实现上述表单中的文本框和下拉列表框的组合下拉组合框能实现上述表单中的文本框和下拉列表框的组合功能。即允许用户既可以输入数据又可以从列表中选择数据。功能。即允许用户既可以输入数据又可以从列表中选择数据。【例【例6-11】在上例中使用下拉组合框来代替文本框和列表框,】在上例中使用下拉组合框来代替文本框和列表框,实现同样的功能:输入数据,按实现同样的功能:输入数据,按Enter键后可添加到列表键后可添加到列表中,在列表中选定项目,单击鼠标右键可移去选定项,如图中,在列表中选定项目,单击鼠标右键可移去选定项,如图6-18所示。所示。 【例【例6-12】“简易抽奖机简易抽奖

22、机”,在,在组合框中输入号码。按下组合框中输入号码。按下“开始开始”按钮后,组合框中将不停变换随按钮后,组合框中将不停变换随机得到的号码。单击机得到的号码。单击“停止停止”按按钮,号码停止变动,并得到中奖钮,号码停止变动,并得到中奖的号码,如图的号码,如图6-19。 6.3 页框页框当表单上对象特别多,放不下,怎么办?使用页框对象。当表单上对象特别多,放不下,怎么办?使用页框对象。页框:由若干个页框:由若干个“页页”容器组成,页内可放其他控件。表容器组成,页内可放其他控件。表单由单由“单页单页” 变为变为“多页多页”的书。的书。常用属性常用属性: PageCount:PageCount:页框内

23、页的个数。页框内页的个数。 ActivePage:ActivePage:页框内当前活动的页号页框内当前活动的页号。 Pages: Pages: 页名数组。页名数组。Pages(2)Pages(2)等价于页框内第二页对象。等价于页框内第二页对象。 Thisform. Thisform.页框名页框名. .页名页名. .容器容器. .对象对象. .属性属性| |方法方法 Thisform.Pageframe1.Pages(1).text1.Forcolor=. Thisform.Pageframe1.Pages(1).text1.Forcolor=.常用常用事件:事件:Pageframe1.Page

24、s(3).Pageframe1.Pages(3).Zorder:置page3页放在最前。 6.3.1 带选项卡的表单带选项卡的表单 使用页框和页面,可创建带选项卡使用页框和页面,可创建带选项卡的表单或对话框,如在的表单或对话框,如在“选项选项”对话对话框中所见那样。框中所见那样。【例【例6-13】在表单中设计一个带选项】在表单中设计一个带选项卡的页框架,其中有卡的页框架,其中有3个页面,分别个页面,分别放上一些不同的控件。放上一些不同的控件。 6.3.2 不带选项卡的页框架不带选项卡的页框架(TABS=.F.) 可以设计类似于可以设计类似于“向导向导”那样的,用选项组或按钮组来控那样的,用选项

25、组或按钮组来控制页面选择的表单。制页面选择的表单。【例【例6-14】将例】将例6-13中的页框架改为不带选项卡的形式,使中的页框架改为不带选项卡的形式,使用选项按钮组控制页面的选择。如图用选项按钮组控制页面的选择。如图6-23所示所示 【例【例6-15】在例】在例6-14中使用命令按钮组控制页面的选择。如图中使用命令按钮组控制页面的选择。如图6-24所示。所示。 习题习题6一、选择题 1. 在DO WHILEENDDO循环结构中,LOOP命令的作用是:A) 退出循环,返回程序开始处B) 转移到DO WHILE语句行,开始下一个判断和循环C) 终止循环,将控制转移到本循环结构的ENDDO后面的第一条语句继续执行D) 终止程序执行 2. 在下面的DO循环中,循环的总次数为:x = 10y = 15DO WHILE y = x y = y 1EN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论