2VFP第4部分(循环结构).ppt

上传人:sccc 文档编号:5358489 上传时间:2023-06-29 格式:PPT 页数:43 大小:651.51KB
返回 下载 相关 举报
2VFP第4部分(循环结构).ppt_第1页
第1页 / 共43页
2VFP第4部分(循环结构).ppt_第2页
第2页 / 共43页
2VFP第4部分(循环结构).ppt_第3页
第3页 / 共43页
2VFP第4部分(循环结构).ppt_第4页
第4页 / 共43页
2VFP第4部分(循环结构).ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《2VFP第4部分(循环结构).ppt》由会员分享,可在线阅读,更多相关《2VFP第4部分(循环结构).ppt(43页珍藏版)》请在三一办公上搜索。

1、Visual Foxpro 6.0,程序设计基础,重庆工商大学计算机学院计算机基础教研室,要点:1.算法的概念及特点 2.掌握程序3种基本结构的表示 3.掌握利用分支结构编程 4.掌握利用循环结构编程 5.常用控件,第三、四、五讲 程序设计(1),循环结构能够使某些语句或程序段重复执行若干次。如果某些语句或程序段需要在一个固定的位置上重复操作,使用循环是最好的选择。,3循环结构,常见的循环结构有:,条件循环do while,步长循环for,扫描循环scan,涉及数据表的循环,第6章介绍,1)条件循环(do while循环)格式:流程图:,条件,语句序列,Enddo之后的语句,N,Y,循环体,教

2、材P62,【例】计算1+2+3+100,第 1 步,计算 0+1;第 2 步,计算(0+1)+2;第 3 步,计算(0+1+2)+3;第 i 步,计算(0+1+i-1)+i;.第 100 步,计算(0+1+99)+100;,递归算法,前i-1次累加和,第i次累加项,三个“确定”循环三要素,算法:确定循环变量i并赋初值为1 定义s存放累加和,初值为0 确定循环条件 i=100s=s+i 确定循环变量的变化趋势i=i+1 输出结果s,递推公式,在条件循环中如何体现的?,s=1+2+3+100,基本方法:,属于“累加器”类型问题,(1)在进入累加前先给累加器赋初值 s=0(求和一般为0)(2)用循环

3、语句实现累加 循环控制变量赋初值:i=1 循环条件:i=100 循环变量的改变规律:i=i+1(3)循环体语句的设计 s=s+i(累加器当前值=累加器原值+循环当前值),“计算”按钮的click事件代码:s=0i=1do while i=100s=s+ii=i+1enddoThisform.text1.value=s,循环体,【修改例3-8】计算s=1+2+3+n,x:x=0 x=n x=x+1,S:s=0 S=s+x,“计算”命令按钮的“click”事件代码:n=thisform.text1.value s=0 x=1do while x=ns=s+xenddothisform.text2.

4、value=s,说明:循环结构从do while开始,到enddo结束,两者必须成对出现;在enddo后面可以书写注释。循环是否继续取决于条件的当前取值,一般情况下循环体中应含有改变条件取值的命令或语句,否则将造成死循环。循环结构能自身嵌套(多重循环),还能与选择结构的各种形式嵌套。,2)步长循环(forendfor计数循环)格式:,教材P62,计算1+2+3+100,s=0for i=1 to 100 s=s+iendforThisform.text1.value=s,step 1,(教材P60)【例3-9】设计如图所示表单,在文本框text1中输入N的值,求N!。,如:123.100,(1

5、)给累乘器赋初值 p=1(一般为1)(2)用循环语句实现累乘 循环变量赋初值:i=1 循环条件:i=thisform.text1.value 循环变量改变规律:i=i+1(3)循环体设计 p=p*i(累乘器当前值=累乘器原值*循环当前值),基本方法:,属于“累乘器”类型问题,“计算”命令按钮的“Click”事件代码:p=1for i=1 to thisform.text1.valuep=p*iendforthisform.text2.value=p,说明:步长可正可负,缺省为1。循环体中不应包含改变循环变量值的命令,否则循环次数将随之改变。如果循环可以通过计数来控制,则本循环比条件循环更为方便

6、。,当循环 步长循环 在文本框Text1中输入终值n在文本框Text2中输入步长k i=1 for i=1 to n step k do while i endfor|next i=i+k endddo,【练习1】求100以内的奇数和。,A=1+3+5+99,循环变量初值n=1,循环条件n100,循环变量的变化趋势n=n+2,请同学们自己写出流程图和程序,循环体累加语句:A=A+n,【练习2】求,循环变量初值x=1,循环条件xn,循环变量的变化趋势x=x+1,循环体累加语句:K=K+x2,请同学们自己写出流程图和程序,【练习3】,请同学们自己写出流程图和程序,s=0for i=1 to 100

7、s=s+(-1)(i+1)/iendforthisform.text1.value=s,方法1:,方法2:,s=0k=1for i=1 to 100s=s+k/ik=-kendforthisform.text1.value=s,命令按钮的“click”事件代码:s1=0s2=0for i=1 to 99 step 2s1=s1+1/iendforfor i=2 to 100 step 2s2=s2+1/iendforthisform.text1.value=s1-s2,方法3:,思考:计算e的近似值。其公式为:e1+1/1!1/2!1/3!1/N!,直到1/N!0.000001为止。,“计算”

8、命令按钮的“click”事件代码:s=1i=2p=1do while 1/p=0.000001s=s+1/pp=p*ii=i+1enddothisform.text1.value=s,阶乘,累加,【例】求所有的水仙花数。(所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。,编程方法:“枚举法”按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则抛弃它。对于所列举的值,既不能遗漏也不能重复。,查找范围:,三位数100999,任意一个三位数,判断这个三位数x是水仙花数的条件:X=x13+x23+x33,【练习4

9、】100以内能够被X整除的数之和。,【练习5】找出所有的四位水仙花数,【练习6】找出所有的三位回文数,开始,S=0,i=1,100=i and i=999,真,输出i,结束,假,i=i+1,取个位数a1和百位数a3,a1=a3,真,假,(教材P60-61)【例3-10】设计如图1所示表单。运行该表单,在文本框Text1中输入一串字符,单击“逆序显示”命令按钮后,逆序显示该字符串,如图2所示。,图1,图2,x=Av56:YijB8,8,B,j,i,Y,:,6,5,v,A,c=c+substr(x,i,1),确定变量:x:存任意字符串x=Av56:YijB8 i:存截取次数(1len(x)c:存逆

10、序字符串 c=c+substr(x,i,1),确定算法:用循环在原字符串中从右到左逐个截取字符,重新组装成逆序字符串,确定循环三要素:循环变量:i(i初值为len(x),终值为1)循环条件:i=1循环条件改变:i=i-1(从右到左截取),【例】输入一串ASCII字符,显示数字字符串。假设输入:Av56:YijB8 显示:568。,请同学们自己写出程序,从左到右逐个取出字符x,判断x是数字的条件:,Asc(x)asc(0)and Asc(x)asc(9),【例】输入一串ASCII字符,显示大写字母串。假设输入:Av56:YijB8 显示:AYB。输入一串ASCII字符,显示小写字母串。假设输入:

11、Av56:YijB8 显示:vij。,请同学们自己写出程序,【例】如图所示一程序界面。文本框TEXT1已经输入一串文字,单击“转换”命令按钮后,文本框的值将变为什么?,“转换”命令按钮的CLICK 事件代码:N=LEN(THISFORM.TEXT1.VALUE)Y=DO WHILE N0 X=SUBSTR(THISFORM.TEXT1.VALUE,N,1)IF ASC(X)=ASC(a)X=UPPER(X)ELSE X=LOWER(X)ENDIF Y=X+YN=N-1ENDDOTHISFORM.TEXT1.VALUE=Y,tHIS IS A cpu.,【练习7】输入一个正整数判断这个是几位数。

12、,Command1_click:x=thisform.text1.valueW=0&位数计数器If int(x)=x and x=0 do while x=1 x=int(x/10)w=w+1 enddo messagebox(你输入的是一个+alltrim(str(w)+位数)Else messagebox(请输入正整数.)endif,拓展,【练习8】将整数x中每一位上为奇数的数依次取出,并逆序构成一个新数返回。例如:程序运行时输入123456789,输出:b=97531。,Command1_click:x=thisform.text1.valuey=0 If int(x)=x and x=

13、0 do while x=1 x1=mod(x,10)&记录从后向前的每一位数 IF x1%2=1&判断每一位是否为奇数 y=y*10+x1&逆序组合新数 endif x=int(x/10)enddoElse messagebox(请输入正整数.)endif,【练习9】有一数列:1,1,2,3,5,8,13求出这个数列的前30项之和。(注意分子与分母的变化规律。),Command1_click:x=1a=1b=1W=a+b&和计数器do while x=28 c=a+b&计算第n项的值 w=w+c a=b&为计算第n+1项做准备 b=c x=x+1enddomessagebox(“前30项的和是:+alltrim(str(w),【练习10】有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13求出这个数列的前20项之和。(注意分子与分母的变化规律。),Command1_click:w=0&和计数器a=2&记录分子b=1&记录分母x=1do while x=20 w=w+a/b c=a a=b+a&形成下一项的分子 b=a&形成下一项的分母 x=x+1enddomessagebox(“前20项的和是:+alltrim(str(w),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号