高中信息技术循环结构教案浙教版.doc

上传人:wux****ua 文档编号:8439465 上传时间:2020-03-29 格式:DOC 页数:11 大小:107.50KB
返回 下载 相关 举报
高中信息技术循环结构教案浙教版.doc_第1页
第1页 / 共11页
高中信息技术循环结构教案浙教版.doc_第2页
第2页 / 共11页
高中信息技术循环结构教案浙教版.doc_第3页
第3页 / 共11页
点击查看更多>>
资源描述
课题:循环结构教学时间: 授课班级:教学目标:学会用for next语句和doloop编写简单的程序,并会调试它教学重点、难点:1 For next 语句的用法2 Do-loop语句的用法3 循环语句的嵌套教学过程在用计算机处理问题时,除了分支问题外,还有不少是需要重复执行某一组操作的问题。这就要采用循环结构,VB中提供了两种语句实现循环结构,For-Next语句和Do-Loop语句。【例6-6-1】求s=1+2+3+100利用赋值语句可写出如下形式的代码:sum=0sum= sum+1sum= sum+2sum=sum+3sum=sum+100很显然,使用这种形式也能得到结果,但程序很冗长。观察上面的代码可以发现,这段代码实际上重复了同一个操作:sum=sum+I,只不过是每次相加的自然数不同而已。使用VB提供的循环语句可以很容易实现这种重复操作功能。具体算法如下:设sum=0;设i=1;若i=100则转,否则算法停止,最后sum中的数值即是自然数列前100项之和;图6-23开 始0sum1iib)的最大公约数的算法见例6-1-3,流程图见图6-3,程序代码如下:求最大公约数Private Sub cmdCalcu_Click() Dim a As Integer Dim b As Integer Dim r As Integer a = Val(txta.Text) b = Val(txtb.Text) r = a Mod b Do While r 0 a = b b = r r = a Mod b Loop txtDivisor.Text = Str(b)End SubPrivate Sub cmdEnd_Click() EndEnd Sub格式二:Do 循环体 Loop Until 条件APN入口出口这种循环的执行过程如图6-28所示,进入循环后,先执行一次循环体A,然后再检查条件是否成立,如果不成立,就执行循环体A,直到条件D成立,退出循环。这种循环结构称为直到型。Y 图6-28【例6-6-4】 如果我国人口以每年平均1.5%的速度增长,问多少年后我国人口达到或超过15亿,设现在人口为12.3亿。解决这个问题的思路是:设现在人口为p0=12.3亿,人口增长率r=1.5%=0.015,则一年后人口为p1=p0+p0r=p0(1+r),看它是否达到或超过15亿;如果未达到,再算二年后的人口p2=p1+p1r=p1(1+r);如果未达到,再计算三年后的人口,直到n年后的人口数达到或超过15亿。流程图见图6-29,程序代码如下:直到型循环Private Sub Form_Click() Dim p As Single图 6-29 Dim r As Single Dim n As Integer p = 1230000000# r = 0.015 n = 0 Do p= p * (1 + r) n = n + 1 Loop Until p = 1500000000# Print n; 年后, 人口=; pEnd Sub运行结果如下; 14年后 人口=1.51506E+09三、循环的嵌套在一个循环中又完整地包含另一个循环,称为循环的嵌套。前面介绍的几种类型的循环可以互相嵌套,例如可以在一个For-Next循环中包含另一个For-Next循环,也可以在一个Do-Loop循环中包含一个For-Next循环。结 束图6-30换 行j+1jYN开 始-3ii=31j确定每行起始位置j=2*(4-Abs(i)-1输出*i+1iYN【例6-6-5】设计一个程序,打印如下所示的图案。 * * * * * *为解决这个问题,可以采用如下的算法:使用双重For-Next循环,外循环确定行数和各行起始打印位置,内循环用来确定各行打印的个数。设外循环的循环变量为i,内循环的循环变量为j 。由于图案上下对称,上下两半对应行的起始位置和字符个数完全一致,所以i的取值也应对称:i=-3 To 3。设i=0行的起始打印位置为5,则第i行的起始打印位置为Tab(Abs(i)+5),第i行的字符的个数为2*(4-Abs(i)-1。流程图如图6-30所示,程序代码如下:打印菱形图案Private Sub Form_Click() Dim i As Integer, j As Integer For i = -3 To 3 Print Tab(Abs(i) + 5); 确定每行的起始位置 For j = 1 To 2 * (4 - Abs(i) - 1 Print *; Next j Print 换行 Next iEnd Sub【例6-6-6】求3到100之间的全部质数。YYYNNNNYn=100质数是除了1和它本身之外,不能被其它任何整数整除的大于1的自然数。要验证一个自然数n是否为质数,方法很多。我们采用的算法是:一个数n是否是质数,只需将n被2 间全部整数除即可,如果都除不尽,n就是质数。图6-31先计算出k= ,然后将n被i=2k除。Flag是个“标志变量”,初始时Flag=0,表示n未被任何一个整数整除,如果在某一次n被一个整数i整除,则Flag改变为1,表明该数不是质数。如果n不被任何一个i整除,则Flag始终保持为0。因此,在结束循环后根据Flag的值为0或1,来判断一个数是否为质数。求3到10之间的全部质数Private Sub Form_Click() Dim n As Integer, i As Integer Dim flag As Integer Dim k As Integer For n = 3 To 100 Step 2 k = Int(Sqr(n) i = 2 flag = 0 Do While i = k If n Mod i = 0 Then flag = 1 n能被某一个数整除 End If i = i + 1 Loop图6-31 If flag = 0 Then Print n Next nEnd Sub运行结果为: 3 5 7 11 13 17 19 23 29 3137 41 43 47 5359 61 67 71 7379 83 89 97 说明:由于偶数决不会是质数,不必对偶数进行测试,因此外循环的增量为2; 内循环中n Mod i=0中的Mod为取余运算,若n能被i整除,则余数为0;实践与探索请考察程序的内循环部分,如果n是一个质数,如n=11,则内循环结束时,标志变量flag的值仍为0;如果n不是一个质数,如n=63,则进行第二次循环时,n能被3整除,此时flag的值为1,已经可以判断出n不是质数,但程序中的内循环仍然要执行6次,程序的效率不高。请问该如何修改程序,当flag的值为1时直接结束循环。练 习 比较三种循环结构: For-Next、Do While-Loop、Do-Loop Until,指出各在什么情况下使用?Do While-Loop与Do-Loop Until 之间又有什么区别? 写出下列程序的执行结果。 Private Sub Form_Click() Dim x As Integer Dim n As Integer n = 0 For x = 3 To 11 Step 2 n = n + 1 Print x =; x Next x Print n=; n Print x=; xEnd Sub Private Sub Form _Click() Dim a As Integer Dim b As Integer Dim c As Integer a = 1: b = 1: c = 1 Do While a + b + c Sqr(y)End Sub Private Sub Form _Click() Dim k As Integer Dim t As Integer Dim s As Integer s = 0: t = 1 For k = 2 To 4 s = s + k t = t * k Next k Print s=; s, t=; tEnd Sub Private Sub Form _Click() Dim a As Integer Dim b As Integer Dim c As Integer Dim s As Integer Dim i As Integer a = 2: b = 1: s = 0 For i = 10 To 6 Step -1 s = s + a c = a + b a = b b = c Next i Print s=; sEnd Sub Private Sub Form _Click() Dim i As Integer Dim j As Integer Dim y As Integer Dim s As Integer s = 1: y = 1 For i = 2 To 4 For j = 1 To 2 y = y * j Next j s = s + y Next i Print s=; sEnd Sub Private Sub Form _Click() Dim i As Integer Dim j As Integer For i = 1 To 6 For j = 1 To i Print ; Next j Print Next iEnd Sub 编写计算下列各式的程序: P=n!(n!=n*(n-1)*(n-2)*(n-3)*1,n由键盘输入) S=1-1/2+1/3-1/4+1/6-1/6+1/99-1/100 S=1!+2!+3!+4!+10! 某工厂1997年总产值为200万元,若总产值以每年5%的速度增长,问多少年后总产值翻一番? 编写求下式中n最大值的程序,画出流程图。 12+22+32+n2=1000 编写程序打印下列图形:* * * * * * * * 设计一个界面如图6-32所示的程序,图中上排的两个文本框用于输入一个分数的分子分母,中排有一个结果框,用于显示计算结果,下排为“计算”和“退出”按钮。单击“计算”钮时,在中间框中立即显示出该分数的化简结果,单击“退出”钮时,结束程序。要求写出完成该程序所要绘制的控件及需要重新设置的属性,并编写程序。图6-32化简分数的算法如下: 求分子与分母的最大公约数; 将分子、分母分别用最大公约数相除; 用上步求出的两个数组成化简分数,送到结果框显示。例如:分子框输入126,分母框输入210,单击“计算”按钮后,化简分数框显示3/5。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 高中资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!