第7章VB控制结构

上传人:猪** 文档编号:243713541 上传时间:2024-09-29 格式:PPT 页数:137 大小:1.47MB
返回 下载 相关 举报
第7章VB控制结构_第1页
第1页 / 共137页
第7章VB控制结构_第2页
第2页 / 共137页
第7章VB控制结构_第3页
第3页 / 共137页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,7,章,Visual Basic,基本控制结构,开始学习,本章要点:,学习,Visual Basic,的理由,Visual Basic,的发展史,程序设计的方法,Visual Basic 6.0,的集成开发环境,顺序结构程序设计方法,选择结构程序设计方法和种类,循环结构程序设计理念,算法及算法的表示,(,补充),算法概述,什么是算法:,广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。,狭义地讲:算法是解决一个问题采取的方法和步骤的描述。,下面通过两个简单的例子加以说明:,例,4.1,输入三个数,然后输出其中最大的数。,将三个数依次输入到变量、,B,、,C,中,设变量,MAX,存放最大数。其算法如下:,例,4.,2,输入,10,个数,打印输出其中最大的数。,算法设计如下:,(,1,)输入,1,个数,存入变量,A,中,将记录数据个数的变量,N,赋值为,1,,即,N=1,(,2,)将,A,存入表示最大值的变量,Max,中,即,Max=A,(,3,),再输入一个值给,A,,,如果,A,Max,则,Max=A,否则,M,ax,不变,(,4,)让记录数据个数的变量增加,1,,即,N=N+1,(,5,),判断,N,是否小于,10,,若成立则转到第(,3,)步执行,否则转到第(,6,)步。,(,6,)打印输出,max,1),输入,A,、,B,、,C,。,2) A,与,B,中大的一个放入,MAX,中。,3),把,C,与,MAX,中大的一个放入,MAX,中。,4),输出,MAX,,,MAX,即为最大数。,算法的特性,有穷性,确定性,有,0,个或多个输入,有一个或多个输出,有效性,算法的表示,一、自然语言与伪代码表示算法,自然语言:就是指人们日常使用的语言,可以是汉语、英语或其它语言。,伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。,例如:例,4.1,可用如下的伪代码表示,Begin,(,算法开始),输入,A,,,B,,,C,IF AB,则,A,Max,否则,B,Max,IF CMax,则,C,Max,Print Max,End (,算法结束,),二、,用,传统,流程图表示算法,处理框,起止框,I/O,框,判断框,流程线,连接点,1,、传统流程图中的基本符号,2,、三种基本结构的传统表示,(,1,)顺序结构,条件,语句,1,语句,2,Y,N,语句,1,语句,2,(,2,)选择结构,条件,( a ),条件,语句组,(,3,)循环结构,a),当型,循环,b),直到循环,Y,N,Y,N,( b ),语句组,三种基本结构的特点:,(,1,)只有一个入口,(,2,)只有一个出口,(,3,)不存在死语句,(,4,)不存在死循环,例: 例,4.2,输入,10,个数,打印输出其中的最大的数的流程图,从,10,个数中选出最大的数的流程图,NMax,Max =A,输入,A,开始,再输入给,A,N=N+1,打印,Max,结束,Y,N,N,Y,3,、 用,NS,流程图表示算法,将,全部算法写在一个矩形框内,在矩形内还可包含其它从属于它的框,三种,基本结构的,NS,图表示:,语句,A,语句,B,语句,A,语句,B,条件,Y,N,(,1,)顺序结构,(,2,)选择结构,语句组,(,3,)循环结构,a),当型,循环,b),直到循环,当条件成立,语句组,直到当条件成立,例: 画出从,10,个数中选出最大的数的,NS,流程图,( a ),( b ),传统流程图,NMax,Max =A,输入,A,开始,再输入给,A,N=N+1,打印,Max,结束,Y,N,N,Y,输入,A,当,N=Max,Y,N,Private Sub Form_Click(),Dim a%, max%, i%,a=,Val(InputBox(A,=?),print a;,max = a,For i = 2 To 10,a =,Val(InputBox(A,=?),print a;,If a max Then max = a,Next i,Print Max=; max,End Sub,最后需要说明的是:上面介绍的算法表示是给人看的,即是为帮助程序开发人员阅读、编写程序而设计的一种辅助工具,程序则必须符一计算机语言的语法规则。,下面是,例,4.2,的计算机 程序,即为用计算机语言表示算法:,例,4-2,演示,顺序结构的流程图,7.1,顺序结构,顺序结构只有一个入口和一个出口,计算机按照先后顺序依次执行程序中的各条语句。,语句1,语句2,语句,n,作用,形式,含义,1.,赋值语句,7.1,顺序结构,c.,含义:,首先计算赋值号右边表达式的值,然后将此值赋给赋值号左边的标,识符代表的变量或控件属性,作为它的当前值。该值一直保存到下,一次再对它赋值为止。,b.,形式:, = ,或, . = ,a.,作用:,是把一个表达式的值赋给一个变量或控件的一个属性。,7.1,顺序结构,1.,赋值语句,说明:,1.,执行过程:先求表达式的值,然后将值赋值给左边的变量。,2.,右边表达式可以是变量、常量、函数调用等特殊的表达式。,3.,不要将“”理解为数学上的等号:,A=A+1,是表示将,A,单元的值加后以放回到,A,单,执行过程如右图,4,赋值符号“,=”,左边一定,只能,是变量名或对象的属性引用,不能是常量、符号常量、表达式。,下面的赋值语句都是错的:,5=X ,左边是常量。,Abs(X)=20 ,左边是函数调用,即是表达式。,5.,赋值符号“,=”,两边的数据类型一般要求应一致。,如:,Var1 = 30,i = i + 1,str,= “Good morning,”,Text1.Text =,str,& “teacher!”,Text2.Text =,Str(Total,),7.1,顺序结构,1.,赋值语句,把数值常量,30,赋给变量,Var1,把变量,i,原来的值加上,1,,再赋给变量,i,把字符串常量赋给字符串变量,把串表达式的值赋给控件,Text1,的,Text,属性,把数值变量,Total,的值转换为字符串,赋给,Text2,的,Text,属性,4.1,顺序结构,2. 数据的输出,Print,方法,Print,是输出数据、文本的一个重要方法,可以将数据输出到窗体、立即窗口、图片框和打印机上,其格式如下:,.,Print ,,,|,;,,,|,;,4.1,顺序结构,2. 数据的输出,Print,方法,可以是窗体、立即窗口、图片框、打印机。如果省略,“,对象名,”,,则在当前窗体上输出。,可以是数值或字符串表达式。如果缺省表达式列表,则输出一个空行。,当输出多个表达式时,各表达式用分隔符(逗号、分号或空格)隔开。若用,逗号,分隔,则按标准格式显示数据项,以14个字符位置为单位把输出行分成若干个区段(又称为制表位),每区段输出一个表达式的值,逗号后面的表达式在下一个区段输出。如果表达式之间用,分号或空格,作分隔符,则按紧凑格式输出。,一般情况下,每执行一次,Print,方法要自动换行,也就是说,后面执行,Print,时将在新的一行显示信息。为了仍在同一行上显示,可以在末尾加上逗号或分号。,例,4-3,:,private sub,form_click,(),print 1,2,3,print 1;2;3,print 4,5,6,print 7;8;9;,print 11,12,end sub,4.1,顺序结构,例,4-3,演示,4.1,顺序结构,3.,注释语句,说明:,Rem,与注释内容之间至少要有一个空格。,注释语句是非执行语句,仅对程序的有关内容起注释作用。,任何字符(包括汉字)都可以放在注释行中作为注释内容。,如果在其他语句行后面使用,Rem,关键字,必需用冒号与语句隔开,若用英文单引号“,”,,则在其他语句行后面不必加冒号,(,:,),。,例如:,Const PI=3.1415925 ,符号常量,PI,S=PI*r*r :,Rem,计算圆的面积,为了提高程序的可读性,通常在程序的适当位置加上必要的注释。,VB,中的注释语句的前缀是一个撇号或保留字,Rem,,,格式为:, |,Rem,7.1,顺序结构,4.,程序举例,例,4-4,:从键盘输入任意三个整数,输出它们的和与平均值。,4.,程序举例,Private sub,form_click,(),Dim a as,integer,b,as,integer,C,as integer,Dim sum as integer ,ave,as single,a=,val(inputbox(“a,=?”),b=,val(inputbox(“b,=?”),c=,val(inputbox(“c,=?”),print,a,b,c,Sum=,a+b+c,ave,=sum/3,Print “sum=”;sum,Print “,ave,=“;,ave,End sub,例,4-4,演示,例,4-5,:设,2007,年我国工业产值为,100,个计算单位,若按平均年增长率为,8%,计算,试求出,2017,年的工业产值将达到多少个计算单位。,Private sub command1_click(),Dim p1 as,integer,n,as integer,Dim P as single ,r as single,p1=100,n=2017-2007,r=0.08,p=p1*(1+r)n,Print “2017,年的工业产值将达到:”,;P,End sub,例,4-5,演示,例,4-6:,试编写一程序,使其具有接收用户输入的两个整数,并将两整数互换其值的功能,Private sub,form_click,(),Dim a as,integer,b,as,integer,temp,as integer,a=,val(inputbox(“a,=?”),b=,val(inputbox(“b,=?”),print “,互换前,,a,和,b,分别为:”;,a;b,temp=,a:a,=,b;b,=temp,print “,互换后,,a,和,b,分别为:”;,a;b,End sub,例,4-6,演示,作业题,1,、已知三角形的两边,a,和,b,及其夹角,d,求第三边,C,的长度。,2,、把华氏温度值转换为摄氏温度值公式为,c=5/9(f-32),,其中,c,是摄氏温度,,f,是华氏温度,求当,f=32,、,68,、,100,时的,C,值。,3,、有甲乙丙三人上街买糖果,三人都买好后,甲对乙、丙说,我可以按你们现有的糖果数再送给你们每人一份;乙也按甲、丙现有的糖果数,送给甲、丙各一份糖果;丙也如此送了甲、乙各一份。互相赠送之后,每人恰好各有,64,颗糖果,问甲、乙、丙原来各买了多少糖果。,单条件,if,语句的流,程图,7.2,选择结构,1.,If,语句,单分支条件,if,语句,格式:,If ,Then,End If,或,If ,Then ,False,True,If,语句块,End If,条件表达式,例,4-7,:,输入,2,个数,a , b,,,输出,a,与,b,之比。,1.,If,语句,Private sub,form_click,(),Dim a as single ,b as single,a=,val(inputbox(“please,enter a”),b=,val(inputbox(“please,enter b”),if b0 then,Print “a,与,b,之比值为”,;a/b,end if,End sub,例,4-7,演示,1.,If,语句,例,4-8,:从键盘任意输入一个英文字母,若是英文大写字母就输出相应的小写字母,否则输出原字符,1.,If,语句,Private sub,form_click,(),Dim,ch,as string,ch,=,inputbox,(“,请输入一个英文字母”,),if,ch,=“A” and,ch,b then t=,a:a,=,b:b,=t,if ac then t=,a:a,=,c:c,=t,if bc then t=,b:b,=,c:c,=t,Print “,排序后,a,b,c,的值分别为”,;,a;b;c,End sub,例,4-9,演示,1.,If,语句,思考题:,1,、从键盘任意输入两个整数,a,、,b,和一个字符,若该字符为“,Y”,,则交换,a,与,b,的值,然后输出,否则直接输出,a,与,b,的值。,2,、任意输入四个整数,a,b,c,d,,要求按从大到小的顺序输出,a,b,c,d,的值,7.2,选择结构,1.,If,语句,双分支条件,if,语句,格式:,If ,Then,ELSE,End If,例,4-10,:,输入,2,个不等数,a , b,,,输出其中较小者,双分支选择结构执行过程,1.,If,语句,Private sub,form_click,(),Dim a as integer ,b as integer,a=,val(inputbox(“please,enter a”),b=,val(inputbox(“please,enter b”),if ab then,max=a,else,max=b,end if,if maxc then max=c,Print a,;,b,;,c,;“三数中最大的为”,;max,End sub,例,4-11,演示,1.,If,语句,例,4-12,:输入一个年份,判断该年的二月份是否是,29,天。,1.,If,语句,Private sub,form_click,(),Dim Y as integer,Y=,val(inputbox,(“,请输入一个年份”,),if y mod 4=0 and y mod 1000 or y mod 400=0 then,Print Y,;“年的二月份是,29,天”,ELSE,Print Y,;“年的二月份不是,29,天”,end if,End sub,例,4-12,演示,1.,If,语句,练习题:,1,、从键盘任意输入一个整数,判断该数是否为偶数。,2,、长途汽车托运行李规定,从甲到乙,按规定托运行李不超过,20,公斤时,每公斤收费,1.2,元,如超过,20,公斤,超过部分按每公斤,0.8,元计算,编写计算运费的程序。,7.2,选择结构,1.,If,语句,多分支(块结构)条件语句,格式:,If ,Then,ElseIf,Then,ElseIf,Then,Else,End If,1.,If,语句,多分支(块结构)条件语句,执行过程,例,4-13,:,根据用户输入的成绩,评定学生的成绩等级。,1.,If,语句,Private sub,form_click,(),Dim X as single,X=,val(inputbox,(“,请输入一个学生成绩”,),If x=90 then,Print ,优秀,ElseIf,x=80 Then,Print ,良好,ElseIf,x=70 Then,Print ,中等,ElseIf,x=60 Then,Print ,及格,Else,Print ,不及格,End If,End sub,例,4-13,演示,1.,If,语句,例,4-14,:编写一程序,能将大写字母方式输入的一个字符转换为小写字母,小写字母的字符转换成大写字母,其它非字母字符不改变。,1.,If,语句,Private sub,form_click,(),Dim,ch,as string,ch,=,inputbox,(“,请输入一个字符,”),print “,输入的原始字符为”;,ch,If,ch,=“A” and,ch,=“a” and,ch,=“z” Then,ch,=,Ucase(ch,),Else,ch,=,ch,End If,print “,输出字符为”;,ch,End sub,例,4-14,演示,1.,If,语句,例,4-15:,从键盘输入一位作者的稿酬,根据此稿酬计算出应缴纳的税金和扣除税金后作者实际得到的稿酬。计算税金的方法是:,800,元以内(含,800,,下同)免税,,4000,元以内除,800,元以外的部分按,14%,上税,,4000,以上按,80%,的,14%,上税。,1.,If,语句,Private sub,form_click,(),Dim m as,single,tax,as,single,wage,as single,m=,Val(inputbox,(“,请输入稿酬,”),If m=800 then,tax=0,ElseIf,m=4000 Then,tax=(m-800)*0.14,Else,tax=m*0.8*014,End If,wage=m-tax,print “,稿酬为,:”;m, “,税收为,:”;tax,“,实际酬金为”,;wage,End sub,例,4-15,演示,作业题,1,、输入一个不多于,5,位的整数,要求能显示出该整数是几位数,并能按数字的逆序输出各位数字。,2,、计算机用光盘,每片零售价,8,元,买,100,片以上(含,100,,下同)可打,95,折,,200,片以上可打,90,折,,300,片以上可打,85,折,,400,片以上可打,80,折,,500,片以上可打,75,折,输入购买的光盘数,编写程序,显示总货款。,3,、让计算机随机产生出两个,199,之间的正整数,接着从键盘上输入一个加、减、乘或除运算符,根据此运算符对两个随机数进行相应运算并显示出结果。,产生(,a,b,)之间的随机整数的表达式为:,int(rnd,*(b-a+1)+a),7.2,选择结构,2.,Select,语句,格式:,Select Case ,Case , ,Case , ,Case , , Case Else, ,End Select,Select Case,语句(情况语句),形式:,Select Case,变量或表达式,Case,表达式列表,1,语句块,1,Case,表达式列表,2,语句块,2,Case Else,语句块,n+1,End Select,:与,同类型的下面四种形式之一:,表达式,A +5,一组枚举表达式,(,用逗号分隔,),2, 4, 6, 8,表达式,1 To,表达式,2,60 to 100,Is,关系运算符表达式,Is 60,数值型或字符串表达式,2.,Select,语句流程图,True,False,False,True,False,True,语句块,n+1,语句块2,条件表达式1,条件表达式2,条件表达式,n,语句块1,语句块,n,End Select,2.,Select,语句,说明:,“,测试表达式,”,可以是数值表达式或字符串表达式(通常为变量),不能是关系表达式或逻辑表达式,也不能出现多个变量。,每个语句块由一行或多行,VB,语句组成。,“,条件表达式,”,中的表达式必须与,“,测试表达式,”,的类型相同。,“,条件表达式,”,称为域值,可以是下列形式之一:, , ,To ,Is ,2.,Select,语句,例,4-16,:,根据用户输入的成绩,评定学生的成绩等级。,2.,Select,语句,Private sub,form_click,(),Dim X as integer,X=,val(inputbox,(“,请输入一个学生成绩”,),print “,成绩为,”;X,”,等级为,”;,Select Case x,Case 90 to 100,Print ,优秀,Case 80 to 89,Print ,良好,Case 70 to 79,Print ,中等,Case 60 to 69,Print ,及格,Case Else,Print ,不及格,End Select,End sub,例,4-16,演示,2.,Select,语句,例,4-17,:编写一程序,输入年号和月份数,即可输出该月的天数。,2.,Select,语句,Private sub,form_click,(),Dim Y as,integer,m,as,integer,d,as integer,Y=,inputbox,(“,请输入一个年份,”),m=,inputbox,(“,请输入一个月份,”),Select Case m,Case 1,3,5,7,8,10,12,d=31,Case 4,6,9,11,d=30,Case 2,if (y mod 4=0 and y mod 1000 or y mod 400=0) then,d=29,Else : d=28,end if,End Select,print y; “,年 ”;,m; “,月”;“有”,;d; “,天”,End sub,例,4-17,演示,2.,Select,语句,思考题:,1,、编写程序,当输入一个,06,之间的整数时,输出相应的用中英文表示的星期几,如输入,0,,则显示“,Sunday,星期日”等。,2,、计算机用光盘,每片零售价,8,元,买,100,片以上(含,100,,下同)可打,95,折,,200,片以上可打,90,折,,300,片以上可打,85,折,,400,片以上可打,80,折,,500,片以上可打,75,折,输入购买的光盘数,编写程序,显示总货款。,选择结构的嵌套(补充),在,IF,语句的,Then,分支和,Else,分支中可以完整地嵌套另一,IF,语句或,Select Case,语句,同样,Select Case,语句每一个,Case,分支中都可嵌套另一,IF,语句或另一,Select Case,语句。下面是两种正确的嵌套形式:,(,1,),IF Then,.,if Then,Else,.,End If,.,Else,.,IF Then,.,Else,.,End If,.,End IF,(,2,),IF Then,.,Select Case ,Case ,IF Then,Else,.,End If,Case.,.,End Select,.,End IF,注意:,只要在一个分支内嵌套,不出现交叉,满足结构规则,其嵌套的形式将有很多种,嵌套层次也可以任意多。,对于多层,IF,嵌套结构中,要特别注意,IF,与,Else,的配对关系,一个,Else,必须与,IF,配结,配对的原则是:在写含有多层嵌套的程序时,建议使用缩进对齐方式,这样容易阅读和维护。,例,4-18,:设函数,1 x0,试编程输入一个,X,值,输出,Y,值。,Private sub,form_click,(),Dim Y as,integer,X,as single,X=,inputbox(“x,=?”),if x=0 then,if x0 then,y=1,else,y=0,end if,else,y=-1,end if,print “x=”;x, “y=“;y,End sub,例,4-18,演示,思考题:,编写一程序,从键盘任意输入一个整数,输出它的符号情况。若该整数为正数,输出正号“,+”,,若为负数,输出负号“,-”,;若为零,输出数字,0,。,7.3,循环结构,1.,DoLoop,循环,DO,While|Until,Loop,语句,格式:,Do While | Until,条件 , 循环体 ,Exit Do ,Loop,说明:,当指定的循环条件为,真,或直到指定的循环结束条件变为,真,之前重复执行循环体;,进入循环体时,如果循环条件不成立或者循环结束条件成立,就不会执行循环体;,关键字,While,用于指明条件为真时就执行循环体中的语句,,Until,刚好相反;,当省略了,While|Until,条件字句,表示无条件循环。,Exit Do,语句表示当遇到该语句时,退出循环。,1.,DoLoop,循环,False,While,True,循环体,条件表达式,开始,结束,True,Until,False,循环体,条件表达式,开始,结束,DO,While|Until,Loop,语句流程图,例,4-19,:,求两个正整数,m,和,n,的最大公约数,1.,DoLoop,循环,例,4-19,:,求两个正整数,m,和,n,的最大公约数,思路:,(,1,)将大数,m,做为被除数,小数,n,做为除数,得到两数相除的余数,R,(,2,)若,R,等于,0,;则,n,为最大公约数,若,R,不等于,0,;则将除数作为被除数,余数,R,作为新的除数,再一次得到新的余数,重得上述过程,1.,DoLoop,循环,例,4-19,:,求两个正整数,m,和,n,的最大公约数,例如:,m,为,12,n,为,18,m (18 ) n(12),第一次,R=6,m (12) n(6),第二次,R=0,,最大公约数为,6,1.,DoLoop,循环,例,4-19,:,求两个正整数,m,和,n,的最大公约数,Private sub,form_click,(),dim m as,integer,n,as,integer,t,as integer,m=,inputbox(“m,=?”),n=,inputbox(“n,=?”):print m;”,和”,;n,;,if mn then t=,m:m,=,n:n,=t,r=m mod n,do while r0,m=,n:n,=r,r=m mod n,loop,print “,最大公约数为,:” n,End sub,例,4-19,演示,1.,DoLoop,循环,例,4-19,(,1,):,求两个正整数,m,和,n,的最大公约数,Private sub,form_click,(),dim m as,integer,n,as,integer,t,as integer,m=,inputbox(“m,=?”),n=,inputbox(“n,=?”) :print m;”,和”,;n,;,if mn then t=,m:m,=,n:n,=t,r=m mod n,do until r=0,m=,n:n,=r,r=m mod n,loop,print “,最大公约数为,:” n,End sub,例,4-19(1),演示,7.3,循环结构,1.,DoLoop,循环,DO,Loop,While|Until,语句,格式:,Do, Exit Do ,循环体 ,Loop While | Until ,说明:,这种形式又称为后判断条件形式的,Do,Loop,语句,它与先判断,条件形式的区别是首先执行循环体,然后测试循环条件或循环终止,条件,决定是否继续循环。所以,这种结构的语句至少执行一次循,环体。,1.,DoLoop,循环,DO,Loop,While|Until,语句流程图,False,While,True,循环体,条件表达式,开始,结束,True,Until,False,循环体,条件表达式,开始,结束,例,4-20,:,计算,s=1+2+3,+,,当,n,等于什么的时候,,s,超过10000?,说明:,(,1,)当使用,While,构成循环时,当条件为“真” 则反复执行循环体,当条件为“假”,则退出循环。,(,2,)当使用,Until ,构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时, 则退出循环。,(,3,)在循环体内一般应有一个专门用来改变条件表达式中 变量的语句,以使随着循环的执行,条件趋于不成立 (或成立),最后达到退出循环。,(,4,)语句,Exit Do,的作用是退出它所在的循环结构,它只能 用在,DO/Loop,结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。,1.,DoLoop,循环,例,4-20,:,计算,s=1+2+3,+,,当,n,等于什么的时候,,s,超过10000?,分析:,S=1+2+3+4+5+.+n,0,第一次,s=s+1,第二次,s=s+2,第三次,s=s+3,通式:,s=,s+n,(n=1,、,2,、,3,、,4.),0,n=n+1,重复执行的语句有:,s=,s+n,n=n=1,重复的条件,s=10000,1.,DoLoop,循环,例,4-20,:,计算,s=1+2+3,+,,当,n,等于什么的时候,,s,超过10000?,Private sub command1_click(),Dim n as integer ,s as integer,n=0:s=0,Do,n=n+1:s=,s+n,Loop while s1,Private sub command1_click(),dim,peach%,day,%,peach=1:day=5,do while day1,peach=(peach+1)*2,day=day-1,loop,print “,小猴第一天共摘了,”;peach;,”个桃子“,End sub,例,4-22,演示,作业题,1,、某商店销售一批录音机,第一天售出的台数比总数的一半少,3,台,第二天售出的台数又恰好为第一天剩余的总数的一半少,3,台,以后每天均如此,,10,天以后,商店里还剩下,7,台,问这批录音机共有多少台?,2,、有一球从,80m,的塔上落下,每次落地后又跳回原高度的一半,这样重复多少次后其经过的距离达到,160m,1.,DoLoop,循环,练习题:,1,、编一程序求出满足不等式,1+2,3,+3,3,+.+n,3,=10000,的最大,n,值,2,、求满足不等式,1+3,2,+5,2,+.+n,2,1000,的最大,n,值。,3,、将从键盘输入的一个正整数逆序输出各位数字。,4,、任给一个自然数,n,,问,n,中含有多少个,2,的因子。,7.3,循环结构,2.,ForNext,循环,格式:,For =,To ,Step,步长,循环体,Exit For,Next ,循环变量,例如:,For x=1 to 50 Step 1,sum =,sum,+ x,Next x,2.,ForNext,循环,0,初值,终值,=1,时,可省略,终值,=0,死循环,步长,For,循环语句,(,一般用于循环次数已知,),2.,ForNext,循环流程图,True,False,循环体,循环变量终值?,开始,结束,循环变量,初值,循环变量,循环变量+步长,这里是当步长大于0时的情况。如果步长小于0,这里应该是判断,循环变量终值,循环次数,例,: For I=2 To 13 Step 3,Print I ,Next I,Print “I=“, I,循环执行次数,输出,I,的值分别为,:,2 5 8 11,出了循环输出为,: I=14,2.,ForNext,循环流程图,例,4-23,:,编程计算:,S=1+2+3+100,Private sub command1_click,Dim S%, I%,S=0 ,累加前变量,S,为,0,For I=1 to 100,S=S+I,Next I,Print S=,S,End sub,当,N=m-1 then,print m;”,是素数“,Else,print m;”,不是素数“,End if,End sub,例,4-24(1),演示,2.,ForNext,循环,例,4-25:,有一数列,第一项为,0,第二项为,1,,以后每一项都是最近前两项之和,编程序打印出此数列的前,30,项。,分析:第一项,a(0),第二项,b(1),第一次求第三项,c(a+b,),第二次求第四项,前两项还是用,a,(,1,)和,b,(,1,)表示,则有,c(a+b,),a,0,b,1,c=,a+b,1,第一次,a 1 b 1 c=,a+b,2,a 1 b 2 c=,a+b,3,a b c=,a+b,反复执行的:,c=,a+b,a=b,b=c,次数,28,Private sub command1_click(),Dim a&, b&, c&, i%,a = 0: b = 1,Print a, b,For i = 1 To 28,c = a + b: Print c,a = b: b = c,If (i + 2) Mod 4 = 0 Then Print,Next I,End sub,例,4-25,演示,2.,ForNext,循环,例,4-26,:从键盘任意输入一个正整数,m,,判断其是否为完数。(一个数如果恰好等于它的因子之和,这个数就称为完数。例如,,6,的因子为,1,2,3,而这三个因子之和恰好等于,6,,所以,6,为完数),分析:,被除数为,m;,则可知除数,i,为,1m-1,中的每个整数,;,若,m,能被,i,整除,则,i,为,m,的一个因子,将,i,加到,s,中,算出所以的因子之和,S,之后,判断,s,和,m,是否相等,Private sub command1_click(),Dim m%, s%, i%,m =,InputBox(m,=?),s = 0,Print m; ,的因子有:,;,For i = 1 To m - 1,If m Mod i = 0 Then s = s + i:,Print i;,Next i,Print,Print m; ,的因子之和为:,; s,If s = m Then,Print m; ,是完数,Else,Print m; ,不是完数,End,IfEnd,sub,例,4-26,演示,2.,ForNext,循环,例,4-27,:找出,1100,之间的全部同构数。“同构数”是这样一种数:它出现在它的平方数的右端。例如,5,的平方是,25,,,5,是,25,右端的数,所以,5,就是同构数。,25,也是同构数。,分析:要找的数,n,的范围为,1100,;给出一个,n,即可算出其平方,m,;,当,n,为一位数时,若,m MOD10=n,,则可知,n,为同构数,当,n,为二位数时,若,m MOD100=n,,则可知,n,为同构数,Private sub command1_click(),dim,n%,m,%,print “1100,间的同构数有“,for n=1 to 100,m=n*n,if (m mod 10=n or m mod 100=n) then,print n,;,end if,next n,End sub,例,4-27,演示,2.,ForNext,循环,例,4-28,:编一程序打印如下乘法表:,1*1=1,1*2=2,1*3=3,1*9=9,Private sub command1_click(),dim,n%,m%,s,%,m=1,for n=1 to 9,s=m*n,print m; “*”;n; “=”;s,next n,End sub,例,4-28,演示,2.,ForNext,循环,例,4-29:,某工厂生产某种车床,一月份生产,3,台,以后每个月的产量均为上一个月的产量去一台再翻一番,那么全年共生产多少台?,分析:,每月产量用,p,表示,全年产量用,s,表示,月份用,m,表示,则可知每月产量计算公式为,(p-1)*2,Private sub command1_click(),dim,p%,s&,m,%,p=3:s=3,for m=2 to 12,p=(p-1)*2,s=,s+p,next m,print s,End sub,例,4-29,演示,作业题:,1,、输出,100200,之间不能被,3,整除的数。,2,、计算,2/1,3/2,5/3,8/5,13/8,21/13.,的前,20,项之和。,3,、将从,2000,年到,3000,年之间的闰年年号显示出来。,4,、把个位数为,3,且能被,3,整除的四位数显示出来。,5,、有一个两位数,m,若交换,m,的十位数字及个位数字,所得的新两位数,n,比,m,大,45,,求,m.,7.3,循环结构,3. 循环的嵌套,在一个循环中又完整地包含另一个循环,对于循环的嵌套,要注意以下事项:,(,1,)内循环变量与外循环变量不能同名;,(,2,)外循环必须完全包含内循环,不能交叉;,(,3,)不能从循环体外转向循环体内,也不能从外循环转向内循环,反之则可以。,3. 循环的嵌套,错误形式,正确形式,For i =1 To 100,For j=1 To 200,Next j,Next i,For i =1 To 100,Next i,For j =1 To 100,Next j,For i =1 To 100,For j=1 To 200,Next i,Next j,For i =1 To 100,For i=1 To 200,Next i,Next i,3. 循环的嵌套,例,4-30:,打印出如下乘法,Private sub,form_click,(),dim,n%,m%,s,%,for m=1 to 9,for n=1 to 9,s=m*n,print m; “*”; n;“=”;s,next n,print,next m,End sub,例,4-30,演示,思考:,若只要打印出左下角部分呢?,1*1=1,2*1=2 2*2=4,3*1=3 3*2=6 3*3=9,.,.,.,9*1=9 9*2=18.9*9=81,3. 循环的嵌套,例,4-31:,编程找,1000,之内的所有完数。,Private sub command1_click(),dim,n%,m%,s,%,print “1000,以内的完数有:”,for m=2 to 1000,s=0,for n=1 to m-1,if m mod n=0 then s=,s+n,next n,if s=m then print m,;,next m,End sub,例,4-31,演示,3. 循环的嵌套,例,4-32,:输出,3100,之间的所有素数,Private sub,form_click,(),dim,m%,n%,flag,print “3100,之间的素数有
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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