vb控制结构_多重循环课件

vb控制结构_多重循环课件

ID:1497441

大小:327.00 KB

页数:27页

时间:2017-11-12

上传者:U-2462
vb控制结构_多重循环课件_第1页
vb控制结构_多重循环课件_第2页
vb控制结构_多重循环课件_第3页
vb控制结构_多重循环课件_第4页
vb控制结构_多重循环课件_第5页
资源描述:

《vb控制结构_多重循环课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

提要多重循环常用算法重点多重循环常用算法第4章VisualBasic语言基础51 4.7.5多重循环——循环嵌套ForI=1to5Step1……NextIForJ=1to3Step1……NextJ一个循环结构的循环体内包含了另一个循环结构.嵌套一层称为二重循环多重循环中遇ExitFor(Do),只跳出当前一层循环.2 讨论多重循环内、外循环的循环变量不可同名.内、外循环不可交叉(外循环完全包含内循环).执行次数当外循环执行一次,内循环全部执行.内循环执行总次数=外循环次数×内循环次数ForI=1to5Step1……NextIForJ=1to3Step1……NextJForI=1to5Step1……NextIForI=1to3Step1……NextI错误正确ForI=1to5Step1……NextJForJ=1to3Step1……NextI3 Fori=1to6step1Print"*"NextiFori=1to6step1Print"*";Nexti问题1:要求利用循环结构在一列打印6个“*”问题2:要求利用循环结构在一行打印6个“*”,如何修改?归纳:分隔符“;”——使多个内容一个个紧跟着打印输出4 Fork=1To3NextkFori=1to6Print"*";NextiPrint问题3:打印3行,每行6个“*”,如何解决?Fori=1To6Step1Print"*";NextIPrintFori=1To6Step1Print"*";NextiPrintFori=1To6Step1Print"*";Nexti循环嵌套结构结论单层循环:控制一行上的所有列,采用“紧凑”方式输出;双层循环:内循环控制一行上的所有列,外循环控制所有行.5 ForI=1To9ForJ=1To9NextIEndSubForJ=1To9PrintJ;"x";1;"=";1*J;NextJ示例:打印九九乘法表.PrintJ;"x";1;"=";1*J;PrintJ;"x";I;"=";I*J;Print输出一行所有列之后能换行6 ForI=1To9ForJ=1To9PrintJ;"x";I;"=";I*J;NextJPrintNextI思考:打印上三角或下三角程序如何改动?PrintTab(12*(J-1));J;"x";I;"=";I*J;说明:Tab(n)函数——后项内容在第n个字符位上输出I7 课后任务:打印金字塔__(选做)PrivateSubForm_Click()Fori=0To8PrintTab(27-3*i);Forj=1ToiPrintj;NextjForj=i+1To1Step-1Printj;NextjPrintNextiEndSub8 课堂思考素数是一个大于2且只能被1和本身整除的整数.判别一个数n是否为素数的方法:对于n从i=2,3,…,n-1判别n能否被i整除,只要有一个能整除,n不是素数,否则n是素数。算法1:素数——不能被2∽n-1的其中一个整数整除优化算法1:素数——不能被2∽n/2的其中一个整数整除优化算法2:素数——不能被2∽Sqr(n)的其中一个整数整除问题:判断一个数n是否为素数9 判断一个数n是否为素数?Fori=2ton-1ifnmodi=0thenExitFor'被整除NextiExitFor退出当前循环Ifi>n-1thenPrintn;“是素数”ElsePrintn;“是非素数”EndifInt(sqr(n))10 Forn=101To300Step2Nextn要求:输出100∽300之间的所有素数.Fori=2ToInt(Sqr(n))IfnModi=0ThenExitForNextiIfi>Int(Sqr(n))Printn;“是素数”课后任务111 1.最大、最小值——课本P12(打擂台)若干数求最大值,一般先假设第一个数为最大值初值;然后将剩余的每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较.(求最小值:方法相同)Dimx%,Max%x=Int(Rnd*101+100)Max=xFori=2To5x=Int(Rnd*101+100)Ifx>MaxThenMax=xNextiPrint"最大值=";Max问题:随机产生5个100~200之间的整数,求最大值.4.8常用算法若求最小值和平均值?12 计算1∽100的3或7的倍数的和计算3∽10的乘积思考:若把变量S的初值语句放置在循环体内的首行位置,程序运行时会产生什么情况?S=?2.累加、连乘、计数__课本P12S=0ForI=1To100IfIMod3=0OrIMod7=0ThenS=S+Ik=k+1EndIfNextIPrintS,kS=1ForI=3To10S=S*INextIPrintS计数器累加器连乘器S=0IfIMod3=0OrIMod7=0ThenS=S+Ik=k+1EndIf13 分析:每一项和每次累加之和都是变化量因此,需要两个变量用T表示每一项的值:T=T+1用S表示累加之和:S=S+T循环终止条件:循环次数>n初始化:S=0回顾:计算s=1+2+3+…+nPrivatesubForm_Click()DimI%,S%,T%,n%'T为每一项n=val(Inputbox(“n=”))S=0ForI=1TonT=T+1S=S+TNextIPrint“S=”;SEndSubT=IS=S+Is=1×2×3×4×…×nS=n!S=1ForI=1TonS=S*INextI由此可见累加问题:公式S=S+T;初值S=0连乘问题:公式S=S*T;初值S=114 例:计算s=1×1/2×1/3×…×1/n分析:T表示每一项:T=1/nS表示连乘的值:S=S*T初始化:S=1思考:能否交换两者次序即:先连乘,后产生新一项?而令初值T=第一项S=T=S*T1nS=T=S*TBAB=1:A=n课堂思考S=T=S*T1nT可理解为通式15 课后任务2__(实验)要求:计算∏的近似值,∏的计算公式为:S=T=S*T观察当n=10时,p=?;当n=50时,p=?;当n=100时,p=?;当n=10000时,p=比较精确.可见该公式收敛较慢.(2*n)^2/((2*n-1)*(2*n+1))B=(2*n)^2:A=(2*n-1)*(2*n+1)BA从第二项开始才有规律可循思考:初值S=?T=?16 PrivateSubForm_Click()DimS#,T#,i&,n%n=Val(InputBox("n="))T=2:S=1'初值Fori=1TonS=S*T'S为连乘T=(2*i)^2/((2*i-1)*(2*i+1))'t为每一项NextiPrintSEndSub17 例:用公式求圆周率的近似值,直到最后一项t的绝对值小于10-4为止.分析:循环的结束:最后一项T的绝对值小于10-4为止;各项逐项相加(累加):S=S+T某一项T=B/A:B=-B,A=A+2S=T=S+TBAB=-B:A=A+2DoWhileAbs(T)>=0.0001LoopA=1:B=1:T=???:S=???课堂思考18 例:求自然对数e的近似值,要求直到最后一项t的值小于0.00001,近似公式为:分析:循环结束:根据最后一项T<0.00001来控制各项逐项相加(累加):S=S+T某一项T=B/A:B=1A=I!(A=A*I:I=I+1)S=T=S+T1AA=A*I:I=I+1思考:初值T=?:s=?从第二项开始才有规律可循19 PrivateSubForm_Click()Dimi%,n&,T!,S!S=0:A=1i=1:T=1'i计数器、t第i项的值DoWhileT>=0.00001S=S+T'累加Print"第"&i&"项的值为"&TA=A*i:i=i+1'连乘T=1/ALoopPrint"计算了";i;"项的和是";SEndSub20 累加/连乘算法__小结累加初值:S=0,T=第一项通用公式:S=S+T:…:T=B/A连乘初值:S=1,T=第一项通用公式:S=S*T:…:T=B/A说明:T=B/A中的A或B均可为常量或变量表达式若A=1,则T=B若B=1,则T=1/A21 设小鸡x只、公鸡y只、母鸡z只,列出方程:x+y+z=1000.5x+2y+3z=100可见,三个未知数,两个方程,此题有若干个解。可穷举X、Y、Z的每一种取值,符合就是其中一种方案3.穷举法——课本P12:列举各种可能情况,找出符合要求的PrivateSubForm_click()Forx=1To100Fory=1To100Forz=1To100Ifx*0.5+y*2+z*3=100Andx+y+z=100ThenPrintx,y,zEndIfNextzNextyNextxEndSub问题:100元买100只鸡,小鸡每只0.5元,公鸡每只2元,母鸡每只3元,可买公、母、小鸡各多少只?22 课外思考勾股定理中3个数的关系是:a2+b2=c2。编写程序,输出20以内满足上述关系的整数组合,例如3,4,5就是一个整数组合。c:弦5a:勾3b:股423 4.递推法(课本P11)猴子吃桃子问题:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子第一天共摘了几个桃子?DimdayAsInteger,xAsInteger,yAsIntegerx=1Forday=9To1Step-1y=(x+1)*2‘前一天的桃子数是第2天桃子数加1的2倍x=yNextdayPrintx分析:此问题属于“倒推”问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子……设第n天的桃子为x,第n-1天的桃子为y,前一天的桃子数为:y=(x+1)×224 1.多重循环的内外循环之间的联系2.常用算法:累加、最值、穷举、素数等本节小结25 循环控制结构常见错误1.不循环或死循环的问题主要是循环的条件、初值、终值、步长的设置有问题2.循环结构中缺少配对的结束语句For缺少配对的Next3.循环嵌套时,内外循环交叉4.累加、连乘时,存放累加、连乘的变量赋初值问题26 课后任务3课后习题P56一.选择题P61二.填空题P66三.编程题(34)实验四P21实验案例一P22三.实验内容(3)27

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭