您好,欢迎访问三七文档
1本节课我们将通过实例来加强对For循环语句的使用。例1:求Fibonacci数列的前30个数。这个数列有如下特点:前两个数为1,从第三个数开始,其值是前两个数的和,即:F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)程序如下:PrivateSubCommand1_Click()DimiAsIntegerDimf1AsLong,f2AsLong,fnAsLongf1=1f2=1Printf1,Printf2,Fori=3To30'f1,f2已知,从第三个数开始计算fn=f1+f2f1=f2f2=fn'更改f1,f2的值Printfn,IfiMod4=0ThenPrint'打印4个数后换行打印NextEndSub例2:利用随机数函数模拟投币,方法是:每次随机产生一个0或1的整数,相当于一次投币,1代表正面,0代表反面1、设计界面在窗体上添加三个标签、三个文本框和一个命令按钮。初始界面如图7-3所示。图7-3-1初始界面图7-3-2设置属性后的界面2、设置属性表7-3属性设置对象属性属性值Label1Caption投币总次数Label2Caption正面次数Label3Caption反面次数Text1TextText2TextText3TextCommand1Caption开始窗体中各个控件的属性设置按照表7-3进行设置,属性设置后的界面如图7-3-3所示。23、程序代码PrivateSubCommand1_Click()Randomizen=CInt(Text1.Text)n1=0n2=0Fori=1Tonr=Int(Rnd*2)Ifr=1Thenn1=n1+1Elsen2=n2+1EndIfNextText2.Text=n1Text3.Text=n2EndSub4、程序说明在窗体上有三个文本框,名称分别是Text1、Text2、Text3,分别用于显示用户输入投币总次数、出现正面的次数和出现反面的次数。随机产生0或1的整数的表达式为:Int(Rnd*2)。5、运行程序运行程序,在文本框Text1中输入总次数,然后单击“开始”按钮,按照输入的次数模拟投币,分别统计出现正面、反面的次数,并显示结果。运行界面如上图所示。例3:小猴吃桃:有一堆桃,小猴当天吃了一半多一个。第二天吃了剩下的桃子的一半多一个。以后每天都是吃剩下的桃子的一半多一个。到第10天小猴要吃时只剩下一个了。问原来那堆桃有多少个?程序代码如下:PrivateSubForm_Click()Dimn%,i%n=1Fori=9to1step-1n=(n+1)*2NextiPrint“peachsofthefirstdayare:”;n(二)复习根据步长型循环语句FOR…NEXT的格式和功能填空1、在FOR-NEXT循环语句中,对于循环变量要指定它的________、_________及步长,但步长在增量为1时,可以省略。2、“NEXTI”意思是___________________.3、在NEXT语句中,_____________可以省略,但如果出现,要与FOR语句中的____________一致。4、终止FOR-NEXT循环语句的条件是_______________。5、计算循环次数的公式是__________________________(三)新课讲授本节课我们将通过实例来学习对For双重循环语句的使用。一、引入:在屏幕上输出如下右图所示内容3该程序实现一行5个*,一共4行。用循环语句实现fori=1to4print*****next其中对于print*****我们也可以循环进行输出fori=1to5print*next将两者相结合Fori=1To4Forj=1To5Print*;NextjPrintNexti即可得到完整代码二、循环嵌套也称为多重循环,即在一个循环结构中包含另外一个循环,这种结构可以实现很多复杂的算法。语法:fori=初值to终值forj=初值to终值循环体nextjnexti其中i为外循环控件变量,j为内循环控制变量,这两个变量不可用同一个变量名双重循环的次数是:内循环次数×外循环次数三:图形专题简单文本图形的程序设计(用for和for双重循环嵌套语句)输出一个文本图形需要考虑4点:(1)图形有几行(一般由外循环控制)(2)每行首字符位置(一般由tab()函数控制)tab(n)函数:输出时表达式定位于第n列(3)每行由几个字符(一般由内循环控制)(4)用什么字符组成图形下面举例说明:1、打印如下图形***************图1*********PrivateSubForm_click()‘图1Dimi%,j%Fori=1To5Forj=1ToiPrint*;NextjPrintNextiEndSubPrivateSubForm_click()‘图2Dimi%,j%Fori=5To1Step-1Forj=1ToiPrint*;NextjPrintNextiEndSub4******图2***************图3***************图42、打印如下等腰三角形,如图5示*************************3、打印如下菱形,如下图6示*************4、若将“*”改为数字,如图7示:112123123412345提示:打印数值类型数据,数字前有个符号位,数字后面有一个空格。今天我们来介绍循环控制语句的第二种――当循环控制结构。(三)新课讲授循环分为两大类:一类是循环次数已知,一类是循环次数未知的情况。前者我们可以用for...next语句实现,但对于后者呢?我们可以使用while当型循环。事先不能确定需要执行多少次循环,只有当条件满足时才结束循环,称为“当型循环”。PrivateSubForm_click()‘图3Dimi%,j%Fori=1To5PrintTab(6-i);Forj=1ToiPrint*;NextjPrintNextiEndSubPrivateSubForm_click()‘图4Dimi%,j%Fori=5To1Step-1PrintTab(6-i);Forj=1ToiPrint*;NextjPrintNextiEndSubFori=1To5‘图5PrintTab(6-i);Forj=1To2*i-1Print*;NextjPrintNextiFori=1To5‘图7PrintTab(6*3-i*3);Forj=1ToiPrintj;NextjPrintNextiFori=-2To2‘图6PrintTab(Abs(i)+1);Forj=Abs(i)-2To2-Abs(i)Print*;NextjPrintNexti5While循环结构用While…Wend语句来实现,语句格式如下:While条件表达式[语句块]Wend语句说明:(1)“条件表达式”可以是关系表达式、逻辑表达式或数值表达式。如果是数值表达式,值为0被作为False,非零值则为True。(2)语句的执行过程是:先计算条件表达式的值,若为True,则执行循环中的语句块,遇到Wend语句时返回While语句继续判断条件表达式的值,若仍为真,则继续执行语句块,重复上述过程直到条件表达式的值为False,则退出循环结构,执行Wend语句的后续语句。循环环执行过程如图7-4。(3)如果条件一开始就不成立,则语句块一次也不会被执行。图7-4例如,求1到100的和。(用FOR循环)PrivateSubCommand1_Click()DimiAsInteger,sumAsIntegersum=0‘给变量sum赋初值0Fori=1To100sum=sum+i‘累加NextiPrintsumEndSub也可用While循环语句改写上例,程序代码如下:PrivateSubCommand1_Click()DimiAsInteger,sumAsIntegersum=0:i=1Whilei=100sum=sum+ii=i+1WendPrintsumEndSub下面举例说明:例1:我国有13亿人口,以年平均增长率0.5%计算,多少年后我国人口就会增长到15亿。程序代码如下:PrivateSubForm_Click()Dimp!,n%表达式语句块FT6p=13n=0Whilep15p=p*1.005n=n+1WendPrintn;”年后人口将达到:”;p;”亿”EndSubDo循环结构的形式较灵活,可分为以下几种:(1)先判断条件的Do…Loop循环格式一:DoWhile条件表达式[语句块]Loop语句执行过程:先计算条件表达式的值,若为True,则执行语句块中的语句;若为False则退出循环结构。循环环执行过程如图7-5-1。格式二:DoUntil条件表达式[语句块]Loop语句执行过程和格式一基本相同,唯一不同的是,它在条件表达式为False时重复执行语句块,直到条件为True时退出循环结构。循环环执行过程如图7-5-2。图7-5-1图7-5-2例1:用Do…Loop循环结构实现求和sum=1+2+3+…+100。编写程序代码。解法一:采用当型循环DoWhile…LoopPrivateSubCommand1_Click()DimiAsInteger,sumAsIntegeri=1'计数器初值置为1sum=0'累加器初值置为0DoWhilei=100'当型循环sum=sum+ii=i+1'每次循环变量加1LoopLabel2.Caption=Str(sum)EndSub解法二:采用直到型循环DoUntil…LoopPrivateSubCommand1_Click()表达式语句块TF表达式语句块TF7DimiAsInteger,sumAsIntegeri=1'计数器初值置为1sum=0'累加器初值置为0DoUntili100sum=sum+ii=i+1LoopLabel2.Caption=Str(sum)EndSub例2:将10000元存入银行,按3.25%的利率,试问多长时间就会连本带利翻一番。程序代码如下:PrivateSubForm_Click()Dimyear%,money!,original!,interest!original=10000money=originalInterest=3.25/100DoWhilemoney2*originalyear=year+1money=money+interest*money’累计每过一年的连本带利的金额LoopPrint“In”;year;”years,you’llhave”;moneyEndSub请同学们使用格式二改写上述程序。(2)后判断条件的Do…Loop循环格式三:Do[语句块]LoopWhile条件表达式语句执行过程:首先执行语句块中语句,然后计算条件表达式,如果条件表达式值为True,则继续执行语句块,否则退出循环结构。循环体至少执行一次。循环环执行过程如图7-5-3。格式四:Do[语句块]LoopUntil条件表达式格式四的执行过程和格式三基本一样,也是先执行后判断。唯一不同的是,它在条件表达式值为假时重复执行语句块,直到条件表达式值为真时退出循环结构。循环环执行过程如图7-5-4。图7-5-3图7-5-4例3:用辗转相除法求两正整数m,n的最大公约数。语句块表达式TF语句块表达式FT8求最大公约数的算法如下:(1)对于已知两数m,n,使得mn;(2)m除以n得余数r;(3)令m←n,n←r;(4)若r≠0,转到(2)继续执行,直到r=0求得最大公约数为m,循环结束。程序代码如下:PrivateSubForm_Click()Dimm%,n%m=InputBox(输入m)n=InputBox(输入n)IfmnThen’若m小于n,则交换两数,使得mnt=m:m=n:n=tEndIfm1=m:n1=nDor=mModn:m=n:n=rLoopwhile(r0)Printm1;,;n1;的最大公约数为
本文标题:第7章部分教案二
链接地址:https://www.777doc.com/doc-2198692 .html