资源描述
VB程序设计,第四章VisualBasic语言程序结构,第四章VisualBasic语言程序结构,本章知识点:顺序结构、选择结构和循环结构,常用算法的应用等。,第四章VisualBasic语言程序结构,4.1顺序结构程序设计4.2选择结构程序设计4.3循环结构程序设计4.4常用算法举例,第四章VisualBasic语言程序结构,4.1顺序结构程序设计4.1.1赋值语句赋值语句一般形式如下:变量名=表达式对象.属性=表达式功能:完成表达式的计算,将计算结果赋值给等号左侧的变量或对象的属性。例如:x=1把1赋给变量xText1.text=hello!把字符串hello!赋给文本框Text1的text属性,第四章VisualBasic语言程序结构,4.1顺序结构程序设计4.1.2数据输入用户主要通过三种方式实现数据输入:使用文本框控件,使用系统提供的InputBox函数,使用磁盘数据文件。本节主要介绍InputBox函数。函数格式如下:变量名$=InputBox(提示信息,对话框标题,缺省值)功能:弹出输入对话框,供用户输入一个数据。其中:提示信息:是一个字符串表达式,最大长度不超过1024个字符,要来提示用户输入相关内容,可使用chr(13)+chr(10)实现换行。对话框标题:是字符串表达式,可省略,默认为应用程序名。缺省值:是显示在对话框输入区的默认值。,例如,Dimx%x=Val(InputBox(请输入一个数,输入框,100)在屏幕上显示如图4.2所示的对话框:,图4.2InputBox对话框,第四章VisualBasic语言程序结构,4.1顺序结构程序设计4.1.3数据输出1)Print方法Print方法的一般格式如下:对象名.PrintSpc(n)|Tab(n),|;例如:PrintFormat(1234.5,00000.00)PrintFormat(3.14159,#.#)PrintFormat(3.14159,#%)PrintFormat(3.14159,$(#.#)PrintFormat(12345.6,#.#E+)PrintFormat(0.123,#.#e-)PrintFormat(date,mm-dd-yy)PrintFormat(date,yy年mm月dd),图43例4.2执行结果,2.MsgBox函数和MsgBox方法函数形式:变量%=MsgBox(提示信息,对话框类型,标题)(1)“标题”和“提示信息”与InputBox函数中对应的参数相同;(2)对话框类型由“按钮图标+缺省按钮+模式”4项组成,是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式如表4.1所示。,表4.1,例如:i=Msgbox(“注意:你输入的数据不正确”,2+48+0+0,“错误提示”),结果如图4.4所示。,第四章VisualBasic语言程序结构,4.2选择结构程序设计4.2.1IF语句1)IfThen语句(单分支结构)IfThen语句块EndIf或:IfThen,图4.5选择结构流程图,例4.4设密码。用IF语句来判定输入密码的正确性。PrivateSubCommand1_Click()DimaAsString,bAsStringa=111111b=InputBox(请输入密码:,密码对话框)Ifa=bThenMsgBox(密码正确)EndIfEndSub,2)IfThenElse语句(双分支结构)格式1:IfThenElseEndIf格式2:IfThenElse,例4.5计算下列分段函数的值分析:对于此分段函数,由于包含X=0和X=0Theny=(1-x)2Elsey=x2-1EndIfPrinty=;yEndSub,3)IfThenElseIf语句(多分支结构)使用形式:IfThenElseIfThenElse语句块n+1EndIf,例4.6输入一学生成绩,评定其等级。方法是:90100分为“优秀”,8089分为“良好”,7079分为“中等”,6069分为“及格”,60分以下以为“不合格”。PrivateSubForm_Click()DimxAsIntegerx=Val(InputBox(请输入成绩:)Ifx=90ThenPrint优秀ElseIfx=80ThenPrint良好ElseIfx=70ThenPrint中等ElseIfx=60ThenPrint及格ElsePrint不及格EndIfEndSub,第四章VisualBasic语言程序结构,4.2选择结构程序设计4.2.2SelectCase语句SelectCase条件表达式Case表达式列表1语句块1Case表达式列表2语句块2CaseElse语句块n+1EndSelect说明:与是同类型的,为下面3种形式之一:(1)一组枚举表达式(用逗号分隔):例如,2,4,6,8。(2)表达式1To表达式2:例如,60to100。(3)Is关系运算符表达式:例如,Is=0,x,-x)y是x的绝对值。,第四章VisualBasic语言程序结构,4.2选择结构程序设计4.2.4条件函数2)Choose函数语法格式:Choose(,.,)功能:根据的值来确定返回值列表中某个值。的值为1,返回,如果的值为2,返回,以此类推。例如:x=Val(InputBox(请输入1-6之间整数)PrintChoose(x,red,yellow,blue,green,black,white)用数字表示颜色。,第四章VisualBasic语言程序结构,4.3循环结构程序设计4.3.1Doloop循环1)形式1:(当型循环)DoWhile|Until语句块ExitDo语句块Loop2)形式2:(直到循环)Do语句块ExitDo语句块LoopWhile|Until,例4.8用辗转相除法求两个自然数的最大公约数(gcd)和最小公倍数(lcm)。PrivateSubForm_Click()Dimn%,m%,nm%,r%m=Val(InputBox(m=)n=Val(InputBox(n=)nm=n*mIfm0)m=nn=rr=mModnLoopPrint最大公约数=,nPrint最小公倍数=,nm/nEndSub,用DoUntilLoop循环来实现例4.8,程序代码如下:PrivateSubForm_Click()Dimn%,m%,nm%,r%m=Val(InputBox(m=)n=Val(InputBox(n=)nm=n*mIfm0时,初值终值;步长=0时,死循环,循环次数计算公式为:Exitfor:退出循环,执行next后的下一条语句,例4.9编程计算:S=1+2+3+100PrivateSubForm_Click()DimS%,I%S=0累加前变量S为0ForI=1To100S=S+INextIPrintS=;Format(S,0000)EndSub,第四章VisualBasic语言程序结构,4.3循环结构程序设计4.3.3WhileWend循环使用格式如下:WhileWend说明:该语句的功能与DoWhileLoop实现的循环完全相同。,例4.11从键盘输入一些字符数据,对输入的字符数据进行计数。当输入的字符为“#”,停止计数并输出结果。分析:因为输入次数不定,故不使用for循环。代码如下:PrivateSubForm_click()DimcAsString,nAsIntegern=0c=InputBox(输入字符:)WhileNot(c=#)n=n+1c=InputBox(输入字符:)WendPrint字符数是:;n;个EndSub,第四章VisualBasic语言程序结构,4.3循环结构程序设计4.3.4ForEachNext循环语法格式:ForEach成员In数组语句块ExitForNext成员具体使用将在“数组”章节讲解,第四章VisualBasic语言程序结构,4.3循环结构程序设计4.3.5循环嵌套多重循环结构如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。,例4.12打印九九乘法表。程序代码如下:PrivateSubForm_Click()Dimi%,j%,jj$Fori=1To9Forj=1To9jj=iNextjPicture1.PrintNextiEndSub,例4.13使用循环语句在窗体上输出有*组成的简单图形PrivateSubForm_Click()DimnAsInteger,i%,j%Cls清屏n=Val(Text1.Text)输入组成图形的行数Fori=1TonPrintTab(20);Forj=1ToiPrint*;NextjPrintNextiEndSub,图4.14例4.13运行结果,第四章VisualBasic语言程序结构,4.3循环结构程序设计4.3.6循环的退出语句格式:ExitFor强制退出ForNext循环ExitDo强制退出DoLoop循环例4.15用ForNext循环结构计算1100之和,当和大于等于2000时终止循环,并输出实际循环的次数。,PrivateSubCommand1_Click()Dims%,i%s=0累加前变量S为0Fori=1To100s=s+iIfs=2000ThenExitForNextiLabel2.Caption=sLabel4.Caption=iEndSub,图4.16例4.15运行结果,第四章VisualBasic语言程序结构,4.3循环结构程序设计4.3.7几种循环语句比较,第四章VisualBasic语言程序结构,4.4常用算法举例4.4.1找最大值、最小值例4.17随机产生10个100-200之间整数,求最大值。程序运行结果如图4.17所示。分析:先产生一个随机数假设这一个数是最大数(变量取名max),然后再产生一个随机数,与max比较,大者存入max,反复(循环)操作产生随机数、比较,这样比较完每个数后,max中就放的是最大数了。,PrivateSubForm_Click()DimIAsInteger,xAsInteger,maxAsIntegerRandomize初始化随机数的种子数x=Int(Rnd*100+100)max=xForI=2To10Printx;x=Int(Rnd*100+100)IfxmaxThenmax=xNextIPrintPrintmax=;maxEndSub,第四章VisualBasic语言程序结构,4.4常用算法举例4.4.2素数问题例4.18求200以内的素数。分析:判定某个数是否素数,然后是对于找某范围内的数据的判定,用2重循环来实现:内循环是判定某数是否素数,外循环一次列举该范围内的每个数。判定素数方法是:利用素数定义,从2到n-1之间整数一次去除n,如果都不能整除,n是素数,反之,有一个除尽,n就不是素数。,PrivateSubForm_Click()Dimi%,j%,n%Form1.Caption=求200以内的素数Print2,2是特例输出n=1记素数的个数Fori=3To200Step2Forj=2Toi-1IfiModj=0ThenExitForEndIfNextjIfj=iThen这个条件表示i一次也没被除尽,是素数Printi,n=n+1IfnMod5=0ThenPrintEndIfNextiEndSub,第四章VisualBasic语言程序结构,4.4常用算法举例4.4.3穷举法穷举方法的实现主要依赖于以下两个基本要点:搜寻可能值的范围如何确定。被搜寻可能值的判定方法。,例4.19“百鸡百钱”问题。“鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一;百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”编写程序,给出结果。分析:设x、y、z分别表示鸡翁、鸡母、鸡雏的数目,根据题意,100钱最多买鸡翁20只、买鸡母33只,鸡雏数为100-鸡翁数-鸡母数,搜寻值得判定式为:5*x+3*y+(z/3)=100。,程序代码如下:PrivateSubform_Click()Dimx,y,zAsIntegerForx=1To20Fory=1To33z=100-x-yIf5*x+3*y+(z/3)=100ThenPrint公鸡,母鸡,小鸡的数目分别为:Printx,y,zEndIfNextyNextxEndSub,第四章VisualBasic语言程序结构,4.4常用算法举例4.4.4迭代法一个不断地由变量的旧值按照一定的规律推出变量的新值的过程,迭代亦称为递推。迭代一般与三个因素有关,它们是:初始值,迭代公式,迭代结束条件(迭代次数)。例4.21求菲波拉契(Fibonacci)数列。已知一对小兔出生一个月后变成一对成兔,两个月后这对成兔就会生出一对小兔,三个月后这对成兔将生出第二对小兔,而第一对小兔又长大变成一对成兔,即一月成熟,二月生育,如此类推。请编程求解一对小兔经n月后将繁衍成多少对兔子?,分析:设f1、f2和f3表示相邻的3个裴波那契数据项,根据题意有f1、f2的初始值为1,即迭代的初始条件为:f1=f2=1;迭代的公式为:f3=f1+f2。程序代码如下:PrivateSubForm_Click()Dimf1,f2,f3,i,nAsIntegerf1=1:f2=1n=Text1.TextFori=3Tonf3=f1+f2f1=f2f2=f3图4.22例4.22运行结果NextiPrintPrintTab(5);经过f3aFormat(x,#.#)EndSub,本章结束,谢谢!,
展开阅读全文