




已阅读5页,还剩83页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章VB程序设计概述,4.1结构化程序设计,4.2顺序结构,4.4循环结构,4.3选择结构,4.5综合应用程序举例,4.1结构化程序设计,程序设计方法经历了手工编程、结构化程序设计方法和面向对象的程序设计方法几个阶段。VB作为一种面向对象的程序设计语言,既继承了结构化程序设计的优点,又采用了面向对象、事件驱动的编程机制。就整个工程来说,它是由许多面向对象的事件过程组成的,程序运行过程中通过触发事件,驱动执行相应的事件过程来实现程序员的意图。,4.1.1算法及其表示,算法是解决问题的方法和步骤。要用计算机来解决一个实际问题,编程时,首先要设计解决这个问题的算法(方法和步骤)。例将两个变量x和y的值进行交换,设x=10,y=20。分析:变量是存储单元的代名词,存储器可以反复地“读”,“写”,如果直接交换,即x=y:y=x,则x原来的值被覆盖其结果x和y的值都是20。在此可借助一个中间变量t作为一个临时的“容器”。算法为:步骤1:将x的值暂存在t中;步骤2:将y的值存入x中;步骤3:将t的值存入y中。,算法的几种表示方法:自然语言、伪代码、PAD图、流程图、N-S结构流程图等等。流程图也称为框图,它是用一些几何图形、流向线和文字说明来表示各种类型的操作。常用的几种图符如图所示。,4.1.1算法及其表示,开始,开始,4.1.2结构化程序设计,结构化程序设计基本思想之一:任何程序都可以采用顺序、选择、循环三种基本结构来构造。这三种结构可以任意组合、嵌套,构造各种复杂的程序。基本结构只有一个入口和一个出口。1、顺序结构:程序流程按照一个方向进行,依次执行各语句。2、选择结构:程序流程出现一个或多个分支,按一定的条件选择其中之一执行,也叫分支结构。中间可以有两条或多条分支。,4.1.2结构化程序设计,3、循环结构:程序流程按一定的条件重复多次执行一段程序(循环体)。循环结构按退出循环的条件可分为当型(While)循环结构和直到型(Until)循环结构。有效的循环只允许有限次的重复。当型循环:条件成立时执行循环体,条件不成立时退出循环;直到型循环:条件不成立时执行循环体,条件成立时退出循环。,4.1.2结构化程序设计,三种基本结构有如下共同特点:只有一个入口,一个出口。无死语句,所谓“死语句”是指始终执行不到的语句。无死循环,即循环次数是有限的。,4.2顺序结构,顺序结构是一种最简单的算法结构,也是程序设计中最简单、最常用得基本结构。其特点是:算法的每一个操作按照各自出现的先后顺序从上到下线性执行。用程序处理实际问题时,常常需要用户输入数据或要求程序输出数据。下面介绍几个语句,并由它们组成顺序结构。这些语句包括赋值语句、输入输出语句等。,4.2.1赋值语句,格式:目标操作符源操作符功能:把源操作符的值赋给目标操作符。源操作符:变量、表达式、常量及带有属性的对象目标操作符:变量和带有属性的对象=:赋值号例:Data15Text1.text=Str(Data)x=x+2S$=“Welcome”,注意:(1)赋值语句兼有计算和赋值双重功能;(2)“”是赋值号,与数学上的等号意义不同;(3)“目标操作符”和“源操作符”的数据类型通常要求一致,但VB提供的对某些数据类型的自动转换机制,可强制变量转换为适当的数据类型。,赋值兼容与数据溢出,4.2.4注释、暂停与程序结束,格式:注释内容或Rem注释内容(1)注释语句是非执行语句。(2)任何字符均可放在注释语句中作为注释内容。示例:ThisisateststatementRem计算圆的周长a=3:b=4:c=5a,b,c为三角形的边,注释语句,暂停语句,格式:Stop说明:(1)可放置在过程中的任何地方,相当于在程序代码中设置断点,类似于执行“运行”菜单中的“中断”命令。(2)执行Stop语句时,系统将自动打开“立即窗口”,方便程序员调试跟踪程序。(3)程序调试结束后,生成可执行文件之前,应删除代码中的所有Stop语句。,结束语句,格式:End功能:通常用来结束一个程序的执行。在不同环境下的其他用途:EndSub:结束一个Sub过程;EndFunction:结束一个Function过程;EndIf:结束一个If语句块;EndType:结束记录类型的定义;EndSelect:结束情况语句。,4.2.2数据输入,InputBox函数,格式:Inputbox$(prompt,title,default,xpos,ypos,helpfile,context)参数说明:(1)xpos:指定对话框的左边与屏幕左边的距离;(2)ypos:指定对话框的上边与屏幕上边的距离;(3)helpfile:字符串表达式,识别帮助文件,用该文件为对话框提供上下文相关的帮助;(4)context:数值表达式,由帮助文件的作者指定给某个帮助主题的帮助上下文编号,它与Helpfile参数必须同时提供或省略;,Inputbox$(prompt,title,default)(1)prompt:对话框中的提示消息字符串表达式;(2)title:对话框标题栏中的字符串表达式;(3)default:文本框中的字符串表达式,在无其它输入时作为缺省值;若省略default,则文本框为空。,标题,提示字符串,用户输入区默认值,【例】设计一个程序,由用户输入一个华氏温度F,程序可将其转换为摄氏温度C。转换公式为C5/9*(F32),PrivateSubCommand1_Click()EndSub,PrivateSubCommand2_Click()EndEndSub,DimFAsLong,CAsLongFVal(InputBox(请输入华氏温度,例4-1)C5/9*(F-32)Text1.TextFText2.TextC,华氏摄氏温度互换,4.2.3数据输出,Print方法,格式:对象名.Print表达式表说明:(1)“对象名”可以是窗体、立即窗口、图片框、打印机等的名称(Name属性),若省略对象名在当前窗体上输出;(2)“表达式表”是一个或多个表达式,可为数值表达式(求出表达式的值然后输出)或字符串(原样输出)。如若省略,则输出一空行;(3)多个表达式之间可以用以下分隔符隔开:“,”:标准输出格式,每14列作为一个输出区段“;“:紧凑格式输出(4)当输出数值数据时,数值的前面有一个符号位,后面有一个空格,而字符串前后都没有空格。,与Print方法有关的函数,Tab(n)功能:与Print方法一起使用,在参数n指定的位置输出其后的表达式的值。说明:(1)n是数值表达式,值为整数,若省略,则将输出点移动到下一个输出区(每个输出区占14列)的起点;(2)若n小于1,则tab将输出位置移动到第1列;(3)一个print方法中使用多个Tab函数时,每个Tab函数对应一个输出项,各项之间用分号隔开。如:PrintTab(10);“Good”;tab(26);”Morning”,Spc(n)功能:与Print方法一起使用,使光标从当前位置跳过n个空格,对输出进行定位。,注意:(1)Tab函数中的n:相对于屏幕最左端第1列而言的列号;(2)Spc函数中的n:相对于前一输出项的最后1个字符所在列而言跳过的空格数。,Tab函数与Spc函数的比较,Format$(数值表达式,格式字符串)功能:使数值表达式的值按“格式字符串”制定的某种格式输出。(1)数值格式化输出:见P61表42(2)日期和时间格式化输出:见P61表43,例PrintFormat(12345.6,“#,#.#”)输出:12,345.6,例PrintFormat(Now,“yyyy年m月dd日hh:mm”)输出:2007年4月12日,MsgBox函数和MsgBox语句,标题,提示字符串,由Type指定的按钮数目、形式和图标,MsgBox函数的返回值是17的整数(或相应的符号常量),分别对应7种命令按钮(见P63表45)。函数功能是,根据接收到的用户响应信息,决定程序下一步进行的操作。,MsgBox(msg,type,title)参数说明:(1)msg:对话框提示消息字符串;(2)type:整数值或字符常量,用来控制在对话框内显示的按钮、图标的种类及数量;(见P63表44)(3)title:对话框的标题字符串。,由MsgBox函数或MsgBox语句所显示的对话框有一个共同特点:在出现对话框后,用户必须作出选择,否则不能执行其他任何操作。,Msgbox,4.3选择结构,特点:根据给定的条件是否满足,来决定下一步所要执行的操作。,【例】如果星期天天晴,我们就去浏阳河边烧烤;否则,我们就在教室自习。,三种形式:单行结构、块结构、多分支结构(情况语句),4.3.1单行结构条件语句,【例】如果星期天天晴,我们就去浏阳河边烧烤;否则,我们就在教室自习。,格式:IfThenElse其中,“条件”通常是关系表达式或逻辑表达式;“语句1”和“语句2”可以是简单句或复合句;Else子句为可选项。,功能:无ELSE选项条件取值为“真”,执行语句(序列)1;条件取值为“假”,语句(序列)1就不执行。有ELSE选项条件取值为“真”,执行语句1;条件取值为“假”,执行语句2。,注意:(1)格式中的If、Then、Else是关键字,并且一定要配对使用;(2)条件一定要是一个逻辑表达式,也就是说条件的结果一定要是真值或假值;(3)语句是条件判断之后需要执行的命令,它可以是一条命令,也可以是一组命令。,【例】试编一个程序,要求输入任意两个数,然后把它们按照从大到小的顺序输出。,交换a、b的值,【例】判断一个学生的成绩是否及格。PrivateSubCommand1_Click()Ifval(Text1.text)60ThenText2=及格ElseText2=不及格Endsub,简单的选择结构可以使用IIf()函数实现。格式:IIf(条件,True部分,False部分)功能:当“条件”为真时,函数返回值为True部分的值当“条件”为假时,函数返回值为False部分的值,说明:(1)条件是逻辑表达式或关系表达式;(2)True部分和False部分是表达式,它们的返回值必须与结果变量类型一致。,Ifx1Theny1Elsey1/x,IIF函数使用,4.3.2块结构条件语句,命令格式:IfThenElseIfThenElseEndIf,功能:若“条件1”成立,执行“语句块1”;否则若“条件2”成立,执行“语句块2”;若上述条件均不成立,执行“语句块n”。,注意:(1)嵌套使用(单行或块嵌套)时,If命令不得交叉;(2)遵循就近配对原则。,【例】输入系数a,b和c,求二次方程ax2+bx+c=0的实根。,开始,PrivateSubCommand1_Click()EndSub,Dima!,b!,c!,d!,x1!,x2!,x!aVal(InputBox(“请输入系数a:)bVal(InputBox(“请输入系数b:)cVal(InputBox(“请输入系数c:)db*b4*a*cIfd0Thenx1(b+Sqr(d)/(2*a)x2(bSqr(d)/(2*a)Printx1;x1,x2;x2ElseIfd0Thenxb/(2*a)Printx;xElsePrint此方程无实根EndIfEndIf,程序代码:,语句块1,语句块2,语句块3,例编程求符号函数sgn(x)的值。程序代码如下:PrivateSubCommand1_Click()x=Val(Text1.Text)Ifx0ThenText2.Text=1ElseIfx=0ThenText2.Text=0ElseText2.Text=-1EndIfEndSub用户界面,单行形式If语句与多行形式的If语句的区别。前者适用于简单的二叉分支的情况,后者适用于多分支的情况。前者可以改写为后者的形式。前者必须写在一行中;后者必须写成多行,并且在关键字“Then”后面必须回车。后者必须是If开头,EndIf结束,两者必须成对出现。但是,前者没有EndIf。后者中“ElseIf”是一个关键字,不能写成“ElseIf”。在多行形式的If语句中,代码的排版推荐使用缩进方式,这样不仅有利于阅读程序,也有利于发现错、排除错误。,4.3.3情况语句,SelectCaseCaseCaseCaseElseEndSelect,功能:根据“测试表达式”的值,从多个语句块中选择符合条件的一个语句块执行。(最多只选择执行其中一个命令序列),“表达式表列”的形式:(1),测试表达式的值与其中之一相同,就执行该Case子句中的语句块;例Case2,4,6,8,10(2)To当测试表达式的值落在表达式1和表达式2之间(含自身),则执行该Case子句中的语句块;(表达式1当测试表达式的值满足“关系表达式”指定条件时,执行该Case子句中的语句块。,PrivateSubCommand1_Click()SelectCaseVal(Text1.Text)CaseIs0Text2.text=不合理的成绩“CaseIs5000ThenExitForNextjNexti,(6)For循环中的“循环体”是可选项,当该项默认时,执行“空循环”,在实际运用中可实现暂停操作。当循环结束时,暂停也相应结束。,在某特定条件得到满足的情况下,按规定的次数重复执行一个语句(序列)。,For循环实现的程序功能:,4.4.2While循环结构,功能:当给定条件为True时,执行循环体。说明:(1)先测试“条件”,再决定是否执行循环;(2)循环体中应含有对“条件”的修改操作,使循环体能正常结束;否则,会构成死循环;(3)循环可嵌套,不许交叉,每个Wend和最近的While相匹配。,开始,格式:While条件循环体Wend,【例】小红今年12岁,她父亲比她大30岁,编程计算出她父亲在几年后比她年龄大一倍,那时父女的年龄各为多少?,DimageAsIntegerage12Whileage*2age+30ageage+1WendPrint“经过”;age12;_“年,小红父女的年龄分别是:”;_age+30;和;age,PrivateSubCommand1_Click()EndSub,4.4.3Do循环结构程序设计,格式1:DoWhile|UntilExitDoLoop,格式2:DoExitDoLoopWhile|Until,PrivateSubCommand1_Click()EndSub,【例】编写程序,对任意输入的正整数n(n=3)判断其是否为素数。,Dimn%,i%,k%n=Val(InputBox(“请输入一个正整数(3):”)i=2k=Int(n/2)DoWhileikThenPrintn;“是素数!”ElsePrintn;“不是素数!,k=int(sqr(n),【例】输入两个正整数,求它们的最大公约数。,辗转相除法:用两数中的大数除以小数,并将所除得到的余数作为下一次的除数再除上一次的除数;如此往复,直至余数为0,则最后一次的除数就是最大公约数。,Dimm%,n%,r%,t%mVal(InputBox(“请输入第一个整数:”)nVal(InputBox(“请输入第二个整数:”)Ifm=100ThenGoToEndingGoToStartEnding:Print“s=”;sEndSub,该程序是通过GoTo语句完成循环的,其中Start与Ending是两个标号,本程序实现的是求1+2+3+100的值。由于GoTo语句易破坏程序的结构,因此一般不提倡使用。,4.5综合应用程序举例,本节主要考虑常用算法程序设计,因此所有的程序均只在Form或Command控件的单击事件中编写,而不考虑介面设计与属性设置。一般步骤如下:第一步:分析问题确定要使用的数据(输入、输出),确定相关变量。确定算法,从有限步的输入中获取输出。确定操作顺序,以便在有限步内解决问题。第二步:画出程序的基本轮廓对一个简单的程序来说,可列出程序顺序执行的动作。第三步:实现程序根据实际情况可以适当简化或调整以上步骤。,【例1】给定一个两位的正整数,请找到另一个两位数的正整数,使这两个数之和等于它们各自的对调数之和。,分析知,程序中应作的处理有:(1)对输入的两位数X,找到相关的另一个两位数Y;(2)对X、Y分别求它们的“对调数”(将其个位数同十位数字对调所生成的新数,如28和82);(3)计算两个表达式的值:XY和XfYf;(4)判定两式的值是否相等,如相等,则输出X和Y。,显然,某数X的对调数Xf的求法是:Xf(Xmod10)10(X10),PrivateSubCommand1_Click()EndSub,DimX,Y,Xf,YfAsIntegerDoXVal(InputBox(“请输入一个2位正整数:”)LoopWhile(X99)Xf(Xmod10)*10(X10)ForY=10To99Yf(Ymod10)*10(Y10)IfXYXfYfThenPrintX;”+”;Y;”;_Xf;”+”;Yf;”;XYEndIfNextY,【例2】求200,900内同时满足以下两个条件的十进制数的个数:(1)其个位数字与十位数字之和除以10所得的余数是百位数字;(2)该数是素数。,PrivateSubForm_Click()number=0Fori=200To900g=iMod10截取个位数字s=(iMod100)10截取十位数字b=i100截取百位数字If(b=(g+s)Mod10)Then判断满足第一个条件flag=TrueForj=2Toi1判断满足第二
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中电建(云浮)新材料有限公司招聘1人年薪20万50万笔试题库历年考点版附带答案详解
- 2025年文化娱乐行业数字化转型与IP价值挖掘研究报告
- 2025年航空航天行业无人机市场应用前景研究报告
- 2025年口腔颌面外科手术风险评估与处理模拟考试答案及解析
- 2025年燃料电池行业燃料电池技术应用前景展望报告
- 2025年出行服务行业出行需求与交通服务研究报告
- 2025年建筑行业绿色建筑设计与可持续建筑发展研究报告
- 2025年环保产业行业环保技术应用案例研究报告
- 2025年化妆护肤行业绿色无害美妆产业发展策略研究报告
- 2025年环保产业行业绿色技术与可持续发展研究报告
- 2024版2025秋贵州黔教版综合实践活动五年级上册全册教案教学设计
- 骨科术后并发肺栓塞护理
- 转作风重实干课件
- 甲状腺课件类型
- 2025年融媒体中心招聘考试笔试试题(60题)含答案
- 单招备考科学方案
- 2025年秋新人教版数学三年级上册全册教学课件
- 社区工作者网格员考试题库及答案
- 快乐主义伦理学课件
- 医美咨询培训课件
- 《工程勘察设计收费标准》(2002年修订本)
评论
0/150
提交评论