《循环结构 》PPT课件.ppt
第四节 循环结构(3),安阳一中 李永恒,教学目标,1、掌握do.loop语句的使用方法。2、完成活动四及体验活动,引言,前面学习的用fornext语句实现循环,循环的次数都是事先知道的,而在现实生活中有很多重复操作的次数大都不是事先就知道的,这种情况下就要用另外的语句来实现循环,这就是今天咱们要学习的do.loop语句.,学习指引DOLOOP语句,Do While 条件 语句块Loop,形式1:Do While/Until Loop,i=1s=1Do while i=50 s=s*i i=i+1Loop,格式 流程图 代码举例,Do Until 条件 语句块Loop,i=1s=1Do until i50 s=s*i i=i+1Loop,学习指引DOLOOP语句,Do 语句块Loop While 条件,形式2:Do Loop While/Until,i=1s=1Do s=s*i i=i+1Loop while i=50,格式 流程图 代码举例,Do 语句块Loop Until 条件,i=1s=1Do s=s*i i=i+1Loop until i50,学习指引DOLOOP语句,通过对DoLoop语句以上几种形式的比较,我们总结如下:在以上两种形式的比较中,我们发现while和until的区别仅仅是循环条件相反,通过修改循环条件,它们之间可以互相转化,所以在实际应用中,我们习惯上经常使用Do whileLoop 和DoLoop Until两种形式,即“当结构”和“直到结构”。使用“当结构”,即当满足循环条件才执行循环体;使用“直到结构”,即直到满足条件才退出循环,循环体至少执行一次,而“当结构”中,若不满足条件,可能循环体一次也不执行;使用DoLoop语句需要注意循环体中一定要有修改循环控制条件的语句,否则一旦进入循环体就无法结束循环,陷入死循环。,活动四 用DOLOOP语句实现循环结构,问题:小明的爸爸决定对某种电脑进行促销。促销方案为:买第一台电脑时需付全价6400元,买第二台时只需付全价的95%,依此类推,买后一台电脑的价格是前一台的95%,但是最低价不得低于3800元,如果低于3800元就按3800元的价格购买。有一位顾客需要为单位购置电脑,他计划购买电脑的费用是50000元,求该顾客最多能买几台电脑,需付多少钱。,1.问题分析。,本问题的解决思路是:一、每买一台电脑,需要计算这台电脑的价格,然后累加到总金额上,当总金额超过50000元时就停止循环。因此,本循环过程中的重复操作是计算电脑的单价及总金额。二、在计算电脑的单价时,还需要做一个判断:如果打折后的价格大于3800元,那么在前一次价格的基础上打折,折扣率为95%,否则价格即为3800元,不再打折,此后的折扣率可看作为100%。设电脑的价格为p,折扣率为m,购买电脑的台数为n,购买电脑的总金额为s。折扣率m的值需要根据前一台电脑的价格p来确定。如果p3800,那么m=_;否则_。根据促销方案,购买某台电脑的价格是在前一台的价格上再打折,可采用累乘的方式计算某台电脑的价格。计算公式为p=p*_。采用累加的方式,购买电脑总金额的计算公式为s=s+_。,2.算法设计,算法1令p=6400;令n=1;令m=0.95;s=p;如果s=50000,则执行第6步,否则执行第10步;p=p*m;如果p3800,则p=3800,m=1;s=s+p;n=n+1,转第5步执行;输出n和s;结束。,算法2令p=6400;令n=1;令m=0.95;s=p;如果s=50000,则执行第6步,否则执行第10步;p=p*m;如果p3800,则p=3800,m=1;s=s+p;n=n+1,转第5步执行;n=n-1;s=s-p;输出n和s;结束。,讨论:参照教材83页的问题,讨论这两种算法的正确性。,1)、两个算法求出的s是大于50000,还是小于等于50000?哪个算法的输出结果正确?为什么?2)、如果将算法1第5步中控制循环的条件s=50000改为s+p*m=50000,该算法的运行结果正确吗?为什么?3)、能否将算法1或算法2中的第6步和第7步互换位置?为什么?,完成流程图,开始,n=1,p=6400,m=0.95,s=p,s+p*m=50000,输出最多能购买电脑的台数n及总金额s,结束,否,是,完成流程图,3、实现应用程序,Private Sub Form_Click()Dim s As Single,m As Single,p As SingleDim n As Integern=1p=6400m=0.95s=pDo While s+p*m=50000 p=p*m If p 3800 Then p=3800 m=1 End If s=s+p n=n+1LoopPrint“最多可购买”;n;“台电脑,”;“需付;Format(s,#,#.00);元钱。“End Sub本程序中控制循环的表达式是什么?程序中通过哪些语句来改变该表达式的值?循环结束后s的值是否会大于50000?,本程序中,每次执行Do.while语句,首先判断条件s+p*m=50000,若条件成立,则执行后面的语句,遇到loop语句返到Do.while再次进行条件判断;若条件不成立,则跳转到loop语句后结束循环.,体验活动,若按照算法2编写程序,需要怎样修改以上代码?如果使用“直到结构”如何修改以上代码?,