Visual Basic语言作为结构化程序设计语言,提供了三种控制流来控制程序的流程:顺序,条件分支和循环. 第三章 流程控制语句 第三章 流程控制语句 程序中的语句依照其在程序中的位置自上而下地执行,叫做语句的顺序执行. 3-1 顺序结构程序设计 3-1-1. 数据输入数据输入的方法有很多种.比如键盘、鼠标、磁盘文件、网络端口、声卡及其它输入设备.最常用的是用键盘和鼠标.1.使用InputBox()函数格式:InputBox(提示[,标题][,默认值][,x座标][,y座标][,帮助文件][,主题]) 该函数返回用户的输入,为字符型的函数. 可以指定一个提示信息,在进行输入时向使用者提示输入数据的性质.也可以指定输入框的标题和指定其显示位置,还可以设置一个缺省值.功能: 打开一个对话框,等待用户键入内容.当用户单击"确定"按钮或按回车键时,函数返回输入的值,单击取消按钮时,返回空字符串. InputBox(提示[,标题][,默认值][,x座标][,y座标][,帮助文件][,主题])说明: ① "prompt(提示)":字符串表达式,必选项.在对话框中作为提示信息,可以是字符或汉字,最大长度大约为1024个字符,由所用字符的宽度决定.如果提示信息包含多行,则必须在每行末用回车符(VbCR)、换行符(VbLF)或回车换行符的组合(VbNewLine或VbCRLF)来分隔. ② "title(标题)":可选项.显示在对话框标题栏中的字符串表达式.如果省略title,则把应用程序名放在标题栏中. ③ "default(默认值)":可选项,显示文本框中的字符串表达式.当在输入对话框中无输入内容时,该缺省值作为输入的内容.如果省略default,则文本框为空. ④ "xpos,ypos(X坐标位置,Y坐标位置)":可选项,数值表达式.xpos用来指定对话框的左边与屏幕左边的水平距离,ypos用来指定对话框的上边与屏幕上边的垂直距离.如果省略该项,则对话框在水平方向居中,在垂直方向距下边大约三分之一的位置. ⑤ "HelpFile,Context (帮助文件,主题)": 可选项,必须成对出现.HelpFile是一个字符串表达式,指定帮助文件的名字,Context是数值表达式,用于标识由帮助文件中指定给某个帮助主题的上下文编号. 注意:函数中的各项参数次序必须一一对应,除了"prompt"一项不能省略外,其余各项均为可选项,如果要省略某些参数,则必须加入相应的逗号分隔符,如果某个可选项是最后一个指定项,随后的分隔符皆要省略.例:uName = InputBox("你叫什么?","输入姓名","无名氏")右图即为上述语句的执行结果. 举例: 在InputBox函数的输入框中输入学校名称,按"确定"按钮,窗体显示输入值,按"取消"按钮,返回空字符. 2.使用文本框(TextBox)控件 该控件可以让用户输入或者编辑一个字符串,它的Text属性包括了控件内的文本.例:uAge = Val(TxtAge.Text) 注:TxtAge是一个文本框控件的名字,Val是将字符串转为数值的函数. 格式:[Let] 变量名/对象属性名 = 表达式功能:将赋值号右边表达式的值赋给赋值号左边的变量或对象属性.举例: Form1.width = 300 Form1.caption = "输入框"Temp = 20说明: ① Let 是赋值语句的关键字,是一个可选项,通常省略. ② 当表达式为数值型且与变量的精度不相同时,强制转换成左边变量的精度.例如: iA% = 4.7 ˊiA是整型变量,iA中的结果是4. ③ 当表达式是数字字符串,左边变量是数值类型时,自动转换成数值类型再赋值;但当表达式有非数字字符或空串时,则出错.例如; n%="123" 'n中的结果是123,与n%=Val("123')效果相同 n%="1a23" '出现"类型不匹配"的错误 ④ 赋值语句中的"="与关系运算符中的"="的作用截然不同.(TO BE CONTINUNED) 3-1-2 赋值语句 例如: A=7=9 其中, 第一个"="是赋值运算符,第二个"="是关系运算符.A的结果是False 赋值语句a=b和b=a是两个含义完全不同的赋值语句;而在关系表达式中a=b和b=a是两种等价的表示方式. 赋值号左边只能是变量或者数组元素,不能是表达式、常量.如下面的赋值语句是错误的:sin(x)=x+y '左边是函数(也是表达式)5=sqr(s)+a+b '左边是常量 x+y=a+b '左边是表达式 ⑤ 不能在同一语句中给多个变量赋值.例如:a=b=c=1 我们的本意是给a、b、c赋初值1,书写上没有错误.但VB编译时,将右边两个"="作为关系运算符处理,先进行b=c的的比较,结果为true(-1);接着进行True=1的比较,结果为False(0);最后将False给a. ⑥ 当逻辑型赋值给数值型时,True转换为-1,False转换为0;反之,当数值型赋给逻辑型时,非0转换为True,0转换为False. ⑦ 任何非字符类型的值赋给字符变量时,系统自动转换为字符类型. 举例:将A和B单元的内容互换. 使用TextBox控件输出 TextBox控件既可用于输入也可以用于输出,且输出的数据还可以进一步编辑后做为输入(也可以设置只读属性,这样就不能编辑了). 使用的方法是给TextBox控件的Text属性赋值. 例:Text1.Text="可以进行输出"2. 使用Print方法进行输出格式:[对象.]Print [表达式表]功能:在指定对象上显示数据.说明: ①对象:可以是窗体(Form)、图片框(Picture)、打印机(Printer)或者调试窗口(Debug),如果不指定,则认为是Me(代表当前窗体). ②表达式表:可选项.可以是一个或多个任意表达式.当有多个表达式时,其间要用分隔符隔开.当省略表达式和分隔符时,输出一空行. ③分隔符:","代表随后的输入自下一个制表位(每14列一个)开始,";"代表连续输出.行中的分号和空格同义.④输出的时候可以作用Tab(n)和Spc(n)函数来进行绝对和相对定位. 3-1-3 数据输出 Spc(n)函数:可选.用来在输出中插入若干个空白字符,这里,n 为要插入的空白字符数.Tab(n)函数:可选.用来将插入点定位在绝对列号上,这里,n 为列号.使用无参数的 Tab() 将插入点定位在下一个制表位的起始位置.如果指定的位置已经超过本行的最大宽度,则输出到下一行的相应位置. Print输出的位置是由对象CurrentX和CurrentY属性决定的,缺省时打印在对象的左上角0,0处. (Debug对象不能指定位置) 例: 用Print语句输出各种格式的数据. 3. 使用Label控件显示文本 标签控件可用于输出固定(无须进行编辑的)文本,方法是给Label控件的Caption属性赋值.例:Label1.Caption = "这是一个标价签"注:如果不用进行编辑应该用标签控件而不用文本框.(为什么?) 4. 使用Format函数格式化输出格式:Format$(表达式 [,格式字符串] )功能:对数值、日期、时间、字符等类型数据按指定格式进行编排,产生需要的输出字符串.说明:"表达式"是要格式化的数值、日期和字符串类型表达式."格式字符串"有三类:数值格式、日期格式和字符串格式.格式字符串一定要用引号括起来.格式串的指定可以采用预定义格式和自定义格式.预定义格式(仅限于数值和时间/日期型)提供了常见的输出格式,例如:Currency、Fixed、Standard、Percent 、Scientific、Long Date、Short Time、 Yes/No等.自定义格式提供了非常强大的编排能力(例如可以对数值型指定4种不同的格式分别用于正数、负数、0和空值) ,用户可以随心所欲的指定输出格式.有关此函数的详尽说明参阅MSDN.下面仅对常用的格式进行举例说明. ① 数值格式化 Format(8315.4, "00000.00")08315.40Format(8315.4,8315.4Format(8315.4, "##,##0.00")8,315.40Format(315.4,"$##0.00")$315.40② 日期和时间格式化 Format(Now, "m/d/yyyy")2/22/2004Format(Now, "ddd, mm dd, yy")Sun, 02 22, 04Format(Now, "d-mmm")22-FebFormat(Now, "mmmm-yy")February-04Format(Now, "hh:mm AM/PM")04:18 PM③ 字符串的格式化Format("to be or not to be",">")TO BE OR NOT TO BE 5. 用MsgBox函数显示提示信息格式:变量% = MsgBox (提示 [,按钮] [,标题])或者:MsgBox (提示 [,按钮] [,标题])说明:第一种是函数的使用方法,能取得返回值,知道用户点击了哪个按钮,第二种方法只是显示消息, MsgBox函数返回值的定义 确定取消终止重试忽略是否 1234567 vbOkvbCancelvbAboutvbRetryvbIgnorevbYesvbNo 被单击的按钮 返回值 内部常数 功能:打开一个消息框,等待用户选择一个按钮.MsgBox函数返回所选按钮对应的整数值,其数值的含义见右表. 举例:利用InputBox和MsgBox函数设计一个文件名输入对话框和提示对话框. 应用模式系统模式 04096 VbApplicationModaleVbSystemModal 模式 第1个按钮为默认第2个按钮为默认第3个按钮为默认 0256512 VbDefaultButton1VbDefaultButton2VbDefaultButton3 默认按钮 关键信息图标,红色STOP标志询问信息图标 ?警告信息图标 !信息图标 I 16324864 VbCriticalVbQuestionVbExclamationVbInformation 图标类型 只显示确定按钮显示"确定"、"取消"按钮显示"终止"、"重试"、"忽略"按钮显示"是"、 "否" 、 "取消"按钮显示"是"、 "否" 显示"重试"、 "取消"按钮 012345 VbOkOnlyVbOkCancelVbAboutRetryIgnoreVbYesNoCancelVbYesNoVbRetyCancel 按钮 数目 描述按钮值 内部常数 分组 MsgBox函数"按钮"设置值 ⑴ 银行存款的本利计算 公式:P'=P(1+R)n 其中P为本息,P为本金,R为年利率,N为存款年限. (2)已知三边求三角面积 公式: 其中A、B、C为三边长度,S为三边长度和的一半. (3) 计算地球大气的总重量. 已知地球平均半径 = 6371.001 公里,表面压强为1013.250毫巴. 球的表面积公式为S=4πR.地球大气圈气体的总质量约为5.136*1021克,相当于地球总质量的百万分之0.86. 3-1-4.顺序结构程序举例 附加内容:CHR(),ASC(),VAL(),STR()函数的简要说明. 此页已删除 Stop语句格式:Stop功能:暂时停止语句执行.说明:① Stop语句可以放在程序的任何地方,它的作用相当于在程序代码中设置的断点.② Stop语句只是暂停程序的执行,不会关闭任何文件或清除变量.但当VB程序以编译后的可执行文件(.ExE)运行时,该功能失去.③ 执行Stop语句,程序暂停执行,若要继续运行,则可用鼠标单击运行按钮. 此页已删除 End语句格式:End功能:在过程中关闭代码执行、关闭以Open语句打开的文件并清除变量,停止执行程序.说明:① End语句可以放在过程中的任何位置.② End语句在执行时会重新设置所有模块级变量和所有模块的静态局部变量.如果不想改变这些变量的值,应将End语句改为Stop语句,此时在保留这些变量值的基础上可以恢复执行.③ End语句提供的是一种强迫中止程序的方法.VB程序正常结束应该卸载所有的窗体,只要没有其他程序引用该程序公共类模块创建的对象并无代码执行,程序将立即关闭. Visual Basic 选择结构的实现: * If…Then 语句(单分支结构) * If…Then…Else 语句(双分支结构) * Select Case 语句(多分支结构) 3-2 选择结构程序设计 1. If…Then语句(单分支结构) 格式1:If〈表达式〉Then 语句 格式2:If〈表达式〉Then 语句块 End If T F 语句(块) 表达式 图3-6 单分支结构 功能:当表达式的值为"真"时,则执行Then后面的语句或语句块;否则不执行任何操作.格式1称为行IF,格式2称为块IF. 说明:① 表达式都是逻辑表达式.数值表达式和关系表达式被视为逻辑表达式的特例.当表达式为数值表达式时,VB 将这个值解释为 True 或False:一个为零的数值为 False,而任何非零数值都被看作 True.语句块可以是一条或多条语句.如果使用格式1的简单形式表示,则只能是一条语句;或用冒号隔开的多条语句,但这些语句必须书写在一行上.下面两个例子是等价的:If anyDate < Now Then anyDate = Now 和If anyDate < Now Then anyDate = Now End If ③ If...Then 的单行格式不用 End If 语句. 举例: 求一元二次方程的两个实根 2.If…Then …Else 语句 2.If…Then …Else 语句结构(双分支结构) 格式1: If < 表达式 > Then < 语句块1> Else < 语句块2> End If格式2: If < 表达式 > Then < 语句1> Else < 语句2> F T 语句(块)1 语句(块)2 表达式 图3-8 双分支结构 用单分支语句实现一条单分支语句:y = cos(x)-x^3+3*x if x<>0 then y=sin(x)+sqr(x*x+1) 注意:采用此法,当X不为0时有无效计算. 说明:块结构的条件语句可以嵌套,即把一个If … Then … Else 块放在另一个If … Then … Else 块内.嵌套必须完全嵌套,也就是内层条件语句必须完全包含在外层条件语句之中. 功能:当表达式的值为非0(True)时,执行Then后面的语句块1,否则执行Else后面的语句块2. 例如:计算分段函数 Y= x≠0 x=0 例: 求一元二次方程的两个实根和两个虚根. (2) 用双分支语句实现 if x<>0 then y=sin(x)+sqr(x*x+1)else y=cos(x)-x^3+3*xend if 两条单分支语句:if x<>0 then y=sin(x)+sqr(x*x+1)if x=0 then y=cos(x)-x^3+3*x 例:用单分支结构和双分支结构求分段函数的值. 作业 实验三 顺序结构程序设计实例1,2,3,52. 实验三 顺序结构程序设计实验题(1)3. 实验四 选择结构程序设计实例2,3 第三次上机 66页1,4,5,9 3.If…Then…Else If 语句 3.If…Then …Else If 语句(多分支结构)结构 语句格式:If 〈表达式1 〉Then 〈语句块1〉 ElseIf 〈表达式2〉Then 〈语句块2〉Else 〈语句块 n+1 End If F T T T …… 表达式1 表达式2 表达式nn 语句块11 语句块2 语句块nn 语句块n+11 F… 图3-9 多分支结构 说明:① 不管有几个分支,程序执行了一个分支后,其余分支不再执行.② ElseIf子句的数量没有限制,可以根据需要使用任意多个ElseIf子句.③ 语句中的ElseIf子句和Else子句都是可选项,如果省略这些子句,则成为单分支结构.④ If...Then...ElseIf 只是 If...Then...Else 的一个特例. 例li3-9-1 求一元二次方程ax2+bx+c=0的根. 4 . If 语句的嵌套 4 . If 语句的嵌套 If 语句的嵌套是指if或else语句后面的语句块中又包含if语句.语句形式为: If <表达式1> then if < 表达式11> then…endif ……endif 例如,已知X、Y、Z三个数,比较他们的大小并排序,使得X>Y>Z. If x< y then t=x;x=y;y=t 'x与y交换,使x>yEndifIf y
z if x<表达式>.如:Case Is>=80 当有多个Case子句的取值范围和测试表达式的值域相符时,只执行符合要求的第一个Case子句后的语句块. Select Case语句只对单个表达式求值,并根据求值结果执行不同的语句块;而If … Then … Else语句可以对不同的表达式求值,然后执行不同的操作.这是两者的主要区别. 例: 使用case语句改变窗体标题. 例:根据年龄使用case语句选择看什么等级的电影. 三数排大小. 有ABC三数,按顺序输出,方法是先比较其中两个,然后再和另外一个比较.从小到大和从大到小排列的比较方法不相同.所得税计算.依收高低,计算不同的纳税值,注意公式的超出部分的计算. 6.选择结构程序设计举例 3-3 循环结构程序设计 3-3 循环结构程序设计 循环是在指定的条件下多次重复执行一组语句,这可通过循环结构来实现.循环分当型和直到型. VB中提供了两种类型的循环语句:一种是计数循环语句;另一种是条件循环语句.Visual Basic 支持的循环结构有: For...Next Do…Loop这里只介绍前两种 While…Wend For Each.Next 说明:For...Next 循环用于事先知道次数的循环.Do…Loop 循环用于事先不知道循环次数的循环结构.While…Wend 是为了和以前版本的BASIC兼容.For Each …Next 循环用于不知道循环次数的集合对象. 1. For …Next循环 1. For …Next循环 循环体 循环变量增加步长 循环变量获得初值 T F 变量超过终值 图3-13 For循环的执行过程注意:教材中的T和F有误! 格式:For 循环变量 = 初值 To 终值 [Step 步长] <循环体>Next [循环变量] 说明:① 格式中的参数说明: 循环变量必须为数值型. 循环的初值、终值和步长都是数值表达式.其中,增量参数可正可负.如果没有设置step,则增量默认为1.增量为负时初值应该小于终值,否则不执行循环. Next是循环终端语句,标识循环范围. ② For循环的执行过程:首先把初值赋给循环变量,接着检查循环变量的值是否超过终值,如果超过就不执行循环体,跳出循环,执行Next后面的语句;否则执行一次循环体,然后把循环变量增加步长,再赋给循环变量,重复上述过程. ③ 当初值等于终值时,不管步长是正数还是负数,都执行一次循环体.④ 循环次数由初值、终值和步长决定,计算公式为: 循环次数=INT((终值 – 初值)/步长+1) ⑤程序进入For循环后,是否跳离循环的判断条件是依据循环变量的值做决定的.如果在循环中任意改变循环变量的值,会导致循环异常(见下页的例子). 例: 求1+2+3……+100. 例: 找出所有小于50的正整数中等于7的倍数的数. 例: 步长小于0的例子.用"*"输出一个倒三角形. 例1:for I=1 to 3 print "第" & I & "次运行"I=5 next print I运行结果:第1次执行 6 例2:for I=1 to 3 print "第" & I & "次运行"I=1 next print I运行结果:第1次执行 第2次执行 第2次执行 …… 私自修改循环控制变量导致的异常情况(不够次数或者无限(死)循环) 2. Do...Loop循环 当型循环格式:Do [{While | Until} 条件] 〈循环体〉Loop 说明:① While和Until只能取其一.While和Until使用相反的条件.② Do和Loop应成对出现.③ 循环体中要有更改条件的语句,以避免出现死循环.④ 当型循环可以一次也不执行循环体.⑤ 直到型循环至少要执行一次循环体.特别注意:如果While和Until都省略,则应该在循环体中用EXIT DO语句退出循环.循环内可有多处存在EXIT DO语句. 举例: 求1到100的平方和,使用不同的循环形式. 2. Do...Loop循环 直到型循环格式:Do 〈循环体〉Loop [{While | Until} 条件] 3. 循环的强制退出 3. 循环的强制退出 除了For 语句以计数值来判断循环是否结束之外,也可以用"Exit For"语句强制结束循环的执行.通常"Exit For"语句和If、Select Case语句配合使用,代表在某种特定的情况下,循环中的程序不再继续进行.同样地,Exit Do用于退出DO循环. T 循环体 Exit For 循环体 循环变量增加步长 循环变量获得初值 F 循环变量在终值内 图3-13' For循环的执行过程 举例:求100到500间能被3和7同时整除的数的和,直到大于3000为止.(结果3003/357) 格式:While 〈条件表达式〉循环体 Wend功能:当While的条件表达式的值是True时执行循环体内的代码,直到While后的条件表达式的值为False.说明:它与Do …Loop语句的差别是:While …Wend语句中不能使用Exit语句跳出循环. 3. While … Wend循环(不讲) 此页已删除 特点:它对数组或对象集合中的每一个元素重复一组语句,而不是重复语句一定的次数.适用:不知道一个集合有多少元素格式:For Each 元素 In 组 语句序列 [Exit For]语句序列 Next [元素]功能:针对一个数组或集合中的每个元素,重复执行一组语句. 4.For Each...Next(不讲) 此页已删除 4 .循环的嵌套 4 . 循环的嵌套 循环的嵌套是指一个循环体内完整地包括了另一个循环.一套一称为二重循环,如果二重循环的内循环中又包含一个循环,则称为三重循环,依此类推.三重以上的可称为多重循环.For循环和Do可以混合嵌套,但是各循环间不得交叉.下例是非法的循环嵌套.For I…For J……Next INext J Do ForDo Loop NextLoop 二重循环 三重循环 就和我们一层层的包裹东西是一样的! 5. 循环结构应用举例 例: 今有物不知其数:三三数之余二,五五数之余三,七七数之余二,问物几何? (假设在100以内) 例: 利用泰勒展开式,求sinx的值.(书上程序有误!) 例:百元买百鸡问题.公鸡,母鸡,小鸡分别为5、3和1/3元一只. SinX = 应用实例详解:割圆术求圆周率 为了求出圆周率,逐次以圆内接正六边形、十二边形、二十四边形、四十八边形、九十六边形…的边长当作圆周长,计算与直径的比值,6边时为3,12边时为3.105,24边时为3.132,…96边时为3.141,...迭代关系:G = Sqr(1 - R ^ 2)R = Sqr(R ^ 2 + (1 - G) ^ 2) 祖冲之(429-500) 南北朝时代南朝数学家、天文学家.字文远,范阳道县 (今河北省涞源县 )人. ... 一天,祖冲之早上进宫办完杂事,就匆匆赶回了家,在书房的地板上画了一个直径一丈的大圆,运用 "割圆 术"的计算方法,在圆内先作了一个正六边形.他们的工作就这样开始了.日复一日,不论是酷暑,还是严寒,从 不间断地辛勤地计算着……祖冲之为了求出最精密的圆周率,对九位数进行包括加减乘除及开方等运算一百三十次 以上.这样艰巨复杂的计算,在当时,既没有电子计算机,也没有算盘,只靠一些被称作"数筹"的小竹棍,摆成 纵横不同的形状,用来表示各种数目,然后进行计算,这不仅需要掌握纯熟的理论和技巧,而且,更需具备踏踏实 实、一丝不苟的严谨态度,不惜付出艰巨的劳动代价,才能取得杰出的成就. 祖冲之为了求出最精密的圆周率,逐次以圆内接正六边形、十二边形、二十四边形、四十八边形、九十六边形 …的边长当作圆周长,计算与直径的比值, 一直割圆到24576边形,这样边已经和圆周紧贴在一起,而不能再割了 ,于是他算出:12288边形各边总长为3.14159251丈,24576边形各边总长为3.14159261丈. 祖冲之经过艰苦的计算,终于得出较精确的圆周如直径为1,圆周大于3.1415926,小于3.1415927. 这个结论,用现代数字符号写出,就是:3.1415926
-
visualbasic visualbasic教程 visualbasic程序设计 visualbasic程序 visualbasic视频教程 visualbasic2010教程 visualbasic6.0教程 电脑visualbasic了 visualbasic应用技术 visualbasic6视频