




已阅读5页,还剩132页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,第7章VisualBasic基本控制结构,开始学习,.,本章要点:,.,算法及算法的表示(补充),算法概述什么是算法:广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。狭义地讲:算法是解决一个问题采取的方法和步骤的描述。下面通过两个简单的例子加以说明:,例4.1输入三个数,然后输出其中最大的数。将三个数依次输入到变量、B、C中,设变量MAX存放最大数。其算法如下:,.,例4.2输入10个数,打印输出其中最大的数。算法设计如下:(1)输入1个数,存入变量A中,将记录数据个数的变量N赋值为1,即N=1(2)将A存入表示最大值的变量Max中,即Max=A(3)再输入一个值给A,如果AMax则Max=A,否则Max不变(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,CIFAB则AMax否则BMaxIFCMax则CMaxPrintMaxEnd(算法结束),.,二、用传统流程图表示算法,处理框,起止框,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,.,PrivateSubForm_Click()Dima%,max%,i%a=Val(InputBox(A=?)printa;max=aFori=2To10a=Val(InputBox(A=?)printa;IfamaxThenmax=aNextiPrintMax=;maxEndSub,最后需要说明的是:上面介绍的算法表示是给人看的,即是为帮助程序开发人员阅读、编写程序而设计的一种辅助工具,程序则必须符一计算机语言的语法规则。下面是例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=30i=i+1str=“Goodmorning,”Text1.Text=str2;3print4,5,6,print7;8;9;print11,12endsub,4.1顺序结构,例4-3演示,.,4.1顺序结构,3.注释语句,说明:Rem与注释内容之间至少要有一个空格。注释语句是非执行语句,仅对程序的有关内容起注释作用。任何字符(包括汉字)都可以放在注释行中作为注释内容。如果在其他语句行后面使用Rem关键字,必需用冒号与语句隔开若用英文单引号“”,则在其他语句行后面不必加冒号(:)。例如:ConstPI=3.1415925符号常量PIS=PI*r*r:Rem计算圆的面积,为了提高程序的可读性,通常在程序的适当位置加上必要的注释。VB中的注释语句的前缀是一个撇号或保留字Rem,格式为:|Rem,.,7.1顺序结构,4.程序举例,例4-4:从键盘输入任意三个整数,输出它们的和与平均值。,.,4.程序举例,Privatesubform_click()Dimaasinteger,basinteger,CasintegerDimsumasinteger,aveassinglea=val(inputbox(“a=?”)b=val(inputbox(“b=?”)c=val(inputbox(“c=?”)printa,b,cSum=a+b+cave=sum/3Print“sum=”;sumPrint“ave=“;aveEndsub,例4-4演示,.,例4-5:设2007年我国工业产值为100个计算单位,若按平均年增长率为8%计算,试求出2017年的工业产值将达到多少个计算单位。,.,Privatesubcommand1_click()Dimp1asinteger,nasintegerDimPassingle,rassinglep1=100n=2017-2007r=0.08p=p1*(1+r)nPrint“2017年的工业产值将达到:”;PEndsub,例4-5演示,.,例4-6:试编写一程序,使其具有接收用户输入的两个整数,并将两整数互换其值的功能,.,Privatesubform_click()Dimaasinteger,basinteger,tempasintegera=val(inputbox(“a=?”)b=val(inputbox(“b=?”)print“互换前,a和b分别为:”;a;btemp=a:a=b;b=tempprint“互换后,a和b分别为:”;a;bEndsub,例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语句,格式:IfThenEndIf或IfThen,False,True,If,语句块,EndIf,条件表达式,例4-7:输入2个数a,b,输出a与b之比。,.,1.If语句,Privatesubform_click()Dimaassingle,bassinglea=val(inputbox(“pleaseentera”)b=val(inputbox(“pleaseenterb”)ifb0thenPrint“a与b之比值为”;a/bendifEndsub,例4-7演示,.,1.If语句,例4-8:从键盘任意输入一个英文字母,若是英文大写字母就输出相应的小写字母,否则输出原字符,.,1.If语句,Privatesubform_click()Dimchasstringch=inputbox(“请输入一个英文字母”)ifch=“A”andchbthent=a:a=b:b=tifacthent=a:a=c:c=tifbcthent=b:b=c:c=tPrint“排序后a,b,c的值分别为”;a;b;cEndsub,例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语句,格式:IfThenELSEEndIf,例4-10:输入2个不等数a,b,输出其中较小者,双分支选择结构执行过程,.,1.If语句,Privatesubform_click()Dimaasinteger,basintegera=val(inputbox(“pleaseentera”)b=val(inputbox(“pleaseenterb”)ifabthenmax=aelsemax=bendififmax=90thenPrint优秀ElseIfx=80ThenPrint良好ElseIfx=70ThenPrint中等ElseIfx=60ThenPrint及格ElsePrint不及格EndIfEndsub,例4-13演示,.,1.If语句,例4-14:编写一程序,能将大写字母方式输入的一个字符转换为小写字母,小写字母的字符转换成大写字母,其它非字母字符不改变。,.,1.If语句,Privatesubform_click()Dimchasstringch=inputbox(“请输入一个字符”)print“输入的原始字符为”;chIfch=“A”andch=“a”andch=“z”Thench=Ucase(ch)Elsech=chEndIfprint“输出字符为”;chEndsub,例4-14演示,.,1.If语句,例4-15:从键盘输入一位作者的稿酬,根据此稿酬计算出应缴纳的税金和扣除税金后作者实际得到的稿酬。计算税金的方法是:800元以内(含800,下同)免税,4000元以内除800元以外的部分按14%上税,4000以上按80%的14%上税。,.,1.If语句,Privatesubform_click()Dimmassingle,taxassingle,wageassinglem=Val(inputbox(“请输入稿酬”)Ifm=800thentax=0ElseIfm0theny=1elsey=0endifelsey=-1endifprint“x=”;x,“y=“;yEndsub,例4-18演示,.,思考题:,编写一程序,从键盘任意输入一个整数,输出它的符号情况。若该整数为正数,输出正号“+”,若为负数,输出负号“-”;若为零,输出数字0。,.,7.3循环结构,1.DoLoop循环,DOWhile|UntilLoop语句,格式:DoWhile|Until条件循环体ExitDoLoop,说明:当指定的循环条件为真或直到指定的循环结束条件变为真之前重复执行循环体;进入循环体时,如果循环条件不成立或者循环结束条件成立,就不会执行循环体;关键字While用于指明条件为真时就执行循环体中的语句,Until刚好相反;当省略了While|Until条件字句,表示无条件循环。ExitDo语句表示当遇到该语句时,退出循环。,.,1.DoLoop循环,False,While,True,循环体,条件表达式,开始,结束,True,Until,False,循环体,条件表达式,开始,结束,DOWhile|UntilLoop语句流程图,例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为18m(18)n(12)第一次R=6m(12)n(6)第二次R=0,最大公约数为6,.,1.DoLoop循环,例4-19:求两个正整数m和n的最大公约数,Privatesubform_click()dimmasinteger,nasinteger,tasintegerm=inputbox(“m=?”)n=inputbox(“n=?”):printm;”和”;n;ifm0m=n:n=rr=mmodnloopprint“最大公约数为:”nEndsub,例4-19演示,.,1.DoLoop循环,例4-19(1):求两个正整数m和n的最大公约数,Privatesubform_click()dimmasinteger,nasinteger,tasintegerm=inputbox(“m=?”)n=inputbox(“n=?”):printm;”和”;n;ifmnthent=m:m=n:n=tr=mmodndountilr=0m=n:n=rr=mmodnloopprint“最大公约数为:”nEndsub,例4-19(1)演示,.,7.3循环结构,1.DoLoop循环,DOLoopWhile|Until语句,格式:DoExitDo循环体LoopWhile|Until,说明:这种形式又称为后判断条件形式的DoLoop语句,它与先判断条件形式的区别是首先执行循环体,然后测试循环条件或循环终止条件,决定是否继续循环。所以,这种结构的语句至少执行一次循环体。,.,1.DoLoop循环,DOLoopWhile|Until语句流程图,False,While,True,循环体,条件表达式,开始,结束,True,Until,False,循环体,条件表达式,开始,结束,例4-20:计算s=1+2+3+,当n等于什么的时候,s超过10000?,.,说明:(1)当使用While构成循环时,当条件为“真”则反复执行循环体,当条件为“假”,则退出循环。(2)当使用Until构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时,则退出循环。,(3)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。(4)语句ExitDo的作用是退出它所在的循环结构,它只能用在DO/Loop结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。,.,1.DoLoop循环,例4-20:计算s=1+2+3+,当n等于什么的时候,s超过10000?,分析:S=1+2+3+4+5+.+n0第一次s=s+1第二次s=s+2第三次s=s+3通式:s=s+n(n=1、2、3、4.)0n=n+1重复执行的语句有:s=s+nn=n=1重复的条件s1peach=(peach+1)*2day=day-1loopprint“小猴第一天共摘了”;peach;”个桃子“Endsub,例4-22演示,.,作业题1、某商店销售一批录音机,第一天售出的台数比总数的一半少3台,第二天售出的台数又恰好为第一天剩余的总数的一半少3台,以后每天均如此,10天以后,商店里还剩下7台,问这批录音机共有多少台?2、有一球从80m的塔上落下,每次落地后又跳回原高度的一半,这样重复多少次后其经过的距离达到160m,.,1.DoLoop循环,练习题:1、编一程序求出满足不等式1+23+33+.+n3=10000的最大n值2、求满足不等式1+32+52+.+n2终值?,开始,结束,循环变量初值,循环变量循环变量+步长,这里是当步长大于0时的情况。如果步长小于0,这里应该是判断循环变量终值,.,循环次数,例:ForI=2To13Step3PrintI,NextIPrint“I=“,I,循环执行次数输出I的值分别为:25811出了循环输出为:I=14,2.ForNext循环流程图,.,例4-23:编程计算:S=1+2+3+100,Privatesubcommand1_clickDimS%,I%S=0累加前变量S为0ForI=1to100S=S+INextIPrintS=,SEndsub,当N=m-1thenprintm;”是素数“Elseprintm;”不是素数“EndifEndsub,例4-24(1)演示,.,2.ForNext循环,例4-25:有一数列,第一项为0,第二项为1,以后每一项都是最近前两项之和,编程序打印出此数列的前30项。,分析:第一项a(0)第二项b(1)第一次求第三项c(a+b)第二次求第四项,前两项还是用a(1)和b(1)表示,则有c(a+b)a0b1c=a+b1第一次a1b1c=a+b2a1b2c=a+b3abc=a+b,反复执行的:c=a+ba=bb=c次数28,.,Privatesubcommand1_click()Dima则可知除数i为1m-1中的每个整数;若m能被i整除,则i为m的一个因子,将i加到s中,算出所以的因子之和S之后,判断s和m是否相等,.,Privatesubcommand1_click()Dimm%,s%,i%m=InputBox(m=?)s=0Printm;的因子有:;Fori=1Tom-1IfmModi=0Thens=s+i:Printi;NextiPrintPrintm;的因子之和为:;sIfs=mThenPrintm;是完数ElsePrintm;不是完数EndIfEndsub,例4-26演示,.,2.ForNext循环,例4-27:找出1100之间的全部同构数。“同构数”是这样一种数:它出现在它的平方数的右端。例如5的平方是25,5是25右端的数,所以5就是同构数。25也是同构数。,分析:要找的数n的范围为1100;给出一个n,即可算出其平方m;当n为一位数时,若mMOD10=n,则可知n为同构数当n为二位数时,若mMOD100=n,则可知n为同构数,.,Privatesubcommand1_click()dimn%,m%print“1100间的同构数有“forn=1to100m=n*nif(mmod10=normmod100=n)thenprintn;endifnextnEndsub,例4-27演示,.,2.ForNext循环,例4-28:编一程序打印如下乘法表:1*1=11*2=21*3=31*9=9,.,Privatesubcommand1_click()dimn%,m%,s%m=1forn=1to9s=m*nprintm;“*”;n;“=”;snextnEndsub,例4-28演示,.,2.ForNext循环,例4-29:某工厂生产某种车床,一月份生产3台,以后每个月的产量均为上一个月的产量去一台再翻一番,那么全年共生产多少台?,分析:每月产量用p表示,全年产量用s表示,月份用m表示,则可知每月产量计算公式为(p-1)*2,.,Privatesubcommand1_click()dimp%,s“*”;n;“=”;s,nextnprintnextmEndsub,例4-30演示,思考:若只要打印出左下角部分呢?1*1=12*1=22*2=43*1=33*2=63*3=9.9*1=99*2=18.9*9=81,.,3.循环的嵌套,例4-31:编程找1000之内的所有完数。,.,Privatesubcommand1_click()dimn%,m%,s%print“1000以内的完数有:”form=2to1000s=0forn=1tom-1ifmmodn=0thens=s+nnextnifs=mthenprintm;nextmEndsub,例4-31演示,.,3.循环的嵌套,例4-32:输出3100之间的所有素数,.,Privatesubform_click()dimm%,n%,flagprint“3100之间的素数有:”form=3to100flag=1forn=2tom-1ifmmodn=0thenflag=0:exitfornextnifflag=1thenprintm;nextmEndsub,例4-32演示,.,3.循环的嵌套,启发题:1、编一程序打印出100200之间的所有素数。2、计算100以内的所有素数之和。3、显示素数之各刚超过1000的所有素数。4、求从3开始共20个素数的程序。,.,3.循环的嵌套,例4-33:已知5=m=20,1K1Then如果N1为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学历类自考专业(电子商务)电子商务概论-电子商务安全导论参考题库含答案解析(5卷)
- 2025年学历类自考专业(电子商务)互联网数据库-网络营销与策划参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)法理学-国际私法参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)房地产法-民法学参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)国际法-金融法参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)刑法学-法律文书写作参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)公司法-保险法参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)-合同法参考题库含答案解析(5卷)
- 2025年工厂产品订单买卖合同范本
- 2025年学历类自考专业(国贸)外贸英语写作-国际贸易参考题库含答案解析(5卷)
- 煤矿调度员管理课件
- 2025年贵州省行政执法人员考试题库及答案
- 湖北省砂石经营管理办法
- 脊髓梗死护理课件
- 洞穴探险活动方案
- 线长考试题库及答案
- 初中生叛逆期心理健康教育课堂
- 专项施工方案台账
- 传奇游戏活动方案
- 猪场工作应聘简历
- 2025年计算机图形学课程考试题及答案
评论
0/150
提交评论