《第4章 基本程序设计结构.ppt》由会员分享,可在线阅读,更多相关《第4章 基本程序设计结构.ppt(55页珍藏版)》请在三一办公上搜索。
1、1,第4章 基本程序设计结构,本章学习目标:1掌握赋值语句,InputBox()、MsgBox()函数;2掌握Print方法的使用;3理解选择结构及其特点;4掌握常用的几 种选择结构;5理解选择的构成及其执行过程;6理解循环结构及其特点;7掌握常用的几种循环结构;8理解嵌套的构成及其执行过程。,2,4.1 顺序结构程序设计,各条语句将按照在程序中出现的位置依次执行,这就是最简单的顺序结构,3,4.1.1 赋值语句,赋值语句:将右边表达式的值赋给左边的变量。格式:Let 变量名=表达式 Let 对象名.属性名=表达式通常都省略Let关键字。功能:程序在执行过程中,首先计算右边表达式的值,然后将表
2、达式的值赋值给变量名或指定对象的属性。例如:给整型变量x赋值67:Dim x As Integer Let x=67,4,4.1.1 赋值语句(续),例如:给文本框的Text属性赋值欢迎使用Visual Basic 6.0!的语句表达式为:Text1.Text=欢迎使用 Visual Basic 6.0!“说明:(1)Let 是赋值语句的关键字,是一个可选项,通常省略;(2)当表达式为数值型且与变量的精度不相同时,强制转换成左边变量的精度。例如:iA%=4.7 iA是整型变量,iA中的结果是5;(3)当表达式是数字字符串,左边变量是数值类型时,自动转换成数值类型再赋值;但当表达式有非数字字符或
3、空串时,则出错。,5,4.1.1 赋值语句(续),例如;n%=“123”n中的结果是123,与 n%=Val(123)效果相同 n%=1a23 出现“类型不匹配”的错误(4)赋值语句中的“=”与关系运算符中的“=”的作用截然不同。例如:A=7=9 其中,第一个“=”是赋值运算符,第二个“=”是关系运算符。,6,4.1.1 赋值语句(续),赋值号左边只能是变量,不能是表达式、常量。如下面的赋值语句是错误的。sin(x)=x+y 左边是表达式 5=sqr(s)+a+b 左边是常量 x+y=a+b 左边是表达式(5)不能在同一语句中给多个变量赋值。例如:a=b=c=1 右边两个“=”作为关系运算符处
4、理,先进行b=c的的比较,结果为true(-1);接着进行True=1的比较,结果为False(0);最后将false的值赋给a。,7,4.1.1 赋值语句(续),(6)当逻辑型赋值给数值型时,True转换为-1,False转换为0;反之,当数值型赋给逻辑型时,非0转换为True,0转换为False。(7)任何非字符类型的值赋给字符变量时,系统自动转换为字符类型。注意:在Visual Basic中,如果变量未被赋值而直接引用,则数值型变量的值为0,字符型变量的值为空串,逻辑型变量的值为False。,8,4.1.2数据的输出,Print方法可以用于在窗体、图片框和打印机以及Debug窗口上显示数
5、据。1.Print方法语法格式 对象名.Print,|;其中,表达式列表是显示或打印的输出项。如果省略,则显示(输出)一个空行。例如:Form1.Print Visual Basic 在Form1窗体中显示“Visual Basic”Picture1.Print Visual Basic 在图片框Picture1中显示“Visual Basic”Print Visual Basic 在当前窗体中显示“Visual Basic”,9,Print方法使用说明,使用说明:(1)对象名.可以是窗体名、图片框名,也可以是立即窗口“Debug”。若省略对象,则表示在当前窗体上输出。(2)“输出表列”是一个
6、或多个表达式,省略为空行,若是多个表达式可以使用逗号(,)、分号(;)或空格分开。其中:;(分号或空格):表示光标定位在上一个显示的字符后;,(逗号):表示光标定位在下一个打印的开始位置处,打印区间隔为14列。(3)Print方法具有计算和输出的双重功能,对于表达式,则先计算后输出。例如:x5;y10Print(x+y)/3 输出结果为5。,10,与Print有关的一些标准函数,可用Print方法配合Tab、Spc函数,使信息按指定的格式输出。(1)Tab 函数 语法格式:Tab(n)Tab 函数把光标移到由参数 n 指定的位置,并从该位置输出信息。要输出的信息放在 Tab函数的后面,并用分号
7、隔开。例如:Print Tab(25);1250 将在第25个字符位置开始输出数值1250。,11,与Print有关的一些标准函数,【例4-1】设有某班级的部分学生名单如下:姓名、年龄、籍贯、专业、黎明23北京计算机张华22上海生物技术刘娟22南京经济学杨萍23云南外语编程序显示表格中的数据。,12,与Print有关的一些标准函数,Private Sub Form_Click()FontName=楷体_GB2312 显示输出何种字体 FontSize=12 显示输出字体大小Print 姓名;Tab(8);年龄;Tab(16);籍贯;Print Tab(24);专业 PrintPrint 黎明;
8、Tab(8);18;Tab(16);北京;Tab(24);计算机Print 张华;Tab(8);17;Tab(16);上海;Tab(24);生物技术Print 刘娟;Tab(8);19;Tab(16);南京;Tab(24);经济学Print 杨萍;Tab(8);19;Tab(16);云南;Tab(24);外语图4-1 程序运行结果End Sub,13,与Print有关的一些标准函数,(2)Spc 函数语法格式:Spc(n)在Print的输出中,Spc函数是在输出下一个表达式之前首先跳过n个空格。,图4-1 程序运行结果,14,4.1.3 用户交互函数和过程,1、InputBox()函数 Inp
9、utBox函数是从键盘输入数据的函数。利用它可产生一个对话框,提示用户输入数据,并返回用户所输入的内容,返回数据为字符串。语法格式:InputBox Prompt,Title,Default,xpos,ypos,helpfile,context 说明:(1)Prompt是一个字符串,用来指定输入框中显示的信息。如果Prompt的内容超过一行,可以在每一行之间用回车符(chr(13)、换行符(chr(10)或回车与换行的组合(chr(13)+chr(10)将各行分割开来;,15,4.1.3 用户交互函数和过程(续),(2)Title用来指定输入框的标题,如果缺省该参数,则用工程名作为标题;(3)
10、Default是一个字符串,用来指定文本框中的缺省内容,该参数缺省为空;(4)xpos和ypos是数值表达式,必须成对出现或成对缺省。这两个数值用来指定输入框左上角相对屏幕的位置,输入框的默认位置是水平方向居中,垂直方向距下边大约三分之一处;,16,4.1.3 用户交互函数和过程(续),【例4-2】单击窗体将出现如图4-2所示的输入框。单击“确定”按钮,可将输入的内容显示在窗体上。程序代码:Private Sub Form_Click()Dim username As Stringusername=InputBox(请输入要查询的姓名,然后按确定按钮,输入提示,Wang)Print usern
11、ameEnd Sub,17,4.1.3 用户交互函数和过程(续),InputBox Prompt,Title,Default,xpos,ypos,helpfile,context说明:(1)用户在输入文本框中输入数据后,如果单击“确定”按钮或按回车键,即表示确认,并返回包含文本框内容的字符串;如果单击“取消”或按Esc键,则放弃当前输入,并返回一个空字符串。(2)每执行一次InputBox函数,只能输入一个值,如果需要输入多个值,则需要多次调用InputBox函数。(3)InputBox函数返回值的数据类型为字符串。,18,MsgBox()函数,MsgBox函数可以用对话框的形式向用户输出一些
12、必要信息,还可以让用户在对话框内进行相应的选择,然后将该选择结果传输给程序。语法格式:MsgBox(prompt,buttons,title,helpfile,context)其中:title、helpfile 和context参数与Inputbox函数中的同名参数类似。,19,MsgBox()函数,(1)prompt参数:用于显示对话框的提示信息,通知用户应该做什么选择,或者直接确认信息。该参数为字符串型变量,最大长度为1024个字符,多余部分会被删掉。在内容少于1024个字符时,若一行无法容纳,可以自动换行或自己添加回车符和换行符来决定换行位置(字符串+chr(10)+chr(13)+字符
13、串)。此参数不允许省略。(2)buttons参数:用于控制对话框中按钮的数目及形式、使用的图标的样式、哪个按钮为默认按钮以及强制对该对话框做出反应的设置。该参数为整数型数值变量,具体数值由上述四种控制的取值之和决定。,20,MsgBox()函数Button的取值见p58(电子教材6),MsgBox(prompt,buttons,title,helpfile,context)在使用buttons参数时,只需在以上四类中分别选出合适的数值或相应的常量,将数值直接相加或者将常量用加号连接即可得到buttons参数的值。在每一类中选择不同的值会产生不同的效果,一般对于选择的值最好用常量表示,这样可以提
14、高程序的可读性。此参数可以省略,若省略时代表值为0,只显示一个OK按钮,而且此按钮为默认按钮。MsgBox函数的返回值是一个整数数值,此数值的大小与用户选择的不同按钮有关。,21,MsgBox过程,语法格式:MsgBox prompt,buttons,title,helpfile,contextMsgBox语句中的各参数与MsgBox函数相同,由于MsgBox语句无返回值,因而常用于简单的信息提示。例如:MsgBox 程序运行完毕,请先存盘后再关机!,vbYesNo+vbInformation,提示,22,4.1.4其它语句,1注释语句:在程序中加入注释,以提高程序和可读性其语法格式为:Rem
15、 或 说明:(1)指要包括的任何注释文本。在Rem关键字和注释内容之间要加一个空格。可以用一个英文单引号“”来代替Rem关键字。(2)如果在语句行后面使用Rem关键字,必需用冒号(:)与语句隔开,或者另起一行,rem 和注释语句之间应有空格。若用英文单引号“”,则在其他语句行后面不必加冒号(:)。,23,结束语句(END),格式:END功能:终止当前程序,重置所有变量,并关闭所有数据文件.说明:(1)通常用来结束程序的执行。(2)其它用途:End Sub 结束一个 Sub 过程 End Function 结束一个 Function 过程 End If 结束一个 If 语句块 End Type
16、结束记录类型定义 End Select 结束情况语句,24,With语句,With结构用于对一个对象或用户定义对象执行一系列的语句,不能用一个With语句来设置多个不同的对象,其格式为:With 对象 语句块End With使用With结构可以对某个对象执行一系列的语句,而不用重复指出该对象的名称。例如,要改变窗体对象的多个属性,在With结构中进行属性的赋值如下:With Form1.Height=2000.Width=3000.Caption=这是一个标题End With,25,4.2 选择结构程序设计,1 IfThen语句(单分支结构)语法格式1:If Then 语句块 End If如:
17、A=20:B=30 If AB Then T=A:A=B:B=T End If,26,IfThen语句(单分支结构),语法格式2:If Then 如:A=20:B=30 If AB Then TA:AB:BT功能:当条件表达式的值为“真”时,则执行Then后面的语句或语句块;否则不执行任何操作。说明:表达式都是逻辑表达式,数值表达式和关系表达式被视为逻辑表达式的特例。当表达式为数值表达式时,Visual Basic将这个值解释为True或False,即一个为零的数值为False,而任何非零数值都被看作True。,27,2.IfThen Else 语句结构(双分支结构),语法格式1:If The
18、n Else End If例4-4,28,2.IfThen Else 语句结构(双分支结构),语法格式2:If Then Else 功能:当表达式的值为非0(True)时,执行Then后面的语句块1,否则执行Else后面的语句块2,如图4-6所示,29,3.IfThenElseIf语句(多分支结构),If Then ElseIf Then Else 语句块 n+1 End If,30,3.IfThenElseIf语句(多分支结构),说明:(1)不管有几个分支,程序执行了一个分支后,其余分支不再执行。(2)ElseIf子句的数量没有限制,可以根据需要使用任意多个ElseIf子句。(3)语句中的E
19、lseIf子句和Else子句都是可选项,如果省略这些子句,则成为单分支结构。(4)If.Then.ElseIf 只是 If.Then.Else 的一个特例。注意,可以使用任意数量的 ElseIf 子句,或者一个也不用。可以有一个 Else 子句,而不管有没有 ElseIf 子句。例:4-6,31,4.2.2 Select Case语句,语法格式:Select Case 测试变量或表达式Case 表达式列表1语句块1Case 表达式列表2语句块2Case Else语句块n+1End Select,功能:根据Select Case 中的结果与各Case子句中的值比较,决定执行哪一组语句块。如果有多
20、个Case短语中的值与测试值匹配,则根据自上而下判断原则,只执行第一个与之匹配的语句块。,32,4.2.2 Select Case语句,说明:情况语句的执行过程是:先对“测试表达式”求值;顺序比较“测试表达式”的值和Case子句中的“表达式列 表”的值;找到匹配值后,则执行该Case分支的语句块,把控制转移 到End Select后面的语句块;如果没找到,则执行Case Else分支的语句块,然后把控 制转移到End Select后面的语句块。(2)“测试表达式”:数值表达式;字符串表达式;为变量;常量。(3)每个Case子句中的语句块可以是一行或多行VB语句。(4)“表达式表列”中的表达式必
21、须与测试表达式的类型相同。(5)“表达式列表”称为域值,可以是下列形式之一(如表4-3所示),33,表达式列表主要形式,(1)常数 Case 1 或 Case“A”(使用数值和字符串表达式)(2)表达式:Case a+b(可使用数值和字符串表达式)(3)表达式:To 表达式Case 1 To 9 Case“a”To“x”用来指定一个范围,要求较小的值出现在 To 之前(4)Is 关系表达式:Case Is100可以配合比较运算符来指定一个数值范围。如果没有提供,则Is关键字会被自动插入,34,4.2.3 选择结构的嵌套,在IF语句的Then分支和Else分支中可以完整地嵌套另一IF语句或Sel
22、ect Case语句,同样Select Case语句每一个Case分支中都可嵌套另一IF语句或另一Select Case语句。下面是两种正确的嵌套形式:,35,格式1:IF Then.IF Then Else.End If.Else.IF Then.Else.End If.End IF,36,格式2:IF Then.Select Case Case IF Then Else.End If Case.End Select.End IF,37,4.2.4 条件函数,1.IIF函数 使用IIf函数也可以实现简单的选择结构,其语法格式如下:result=IIF(条件表达式,True部分,False部分
23、)说明:(1)“result”是函数的返回值,IIF函数的工作过程如下:当条件表达式为真时,函数返回值为True(真)部分,当条件表达式为假时,函数返回值为False(假)部分。(2)True部分和False部分可以是任何表达式。IIf函数可以用来实现简单的选择结构,和条件语句的功能类似。,38,IIF函数,例如,有如下件 语句:If x=y Then z=x Else z=y End If 完全可以用下面的IIf函数来代替:z=IIF(x=y,x,y),39,2.Choose函数,语法格式:result=Choose(整数表达式,选项列表)说明:Choose根据整数表达式的值来决定返回选项列
24、表中的某个值。如果整数表达式值是1,则Choose会返回选项列表中的第1个选项。如果整数表达式值是2,则会返回列表中的第2个选项,以此类推。若整数表达式的值小于 1 或大于列出的选项数目时,Choose函数返回Null。例:result=Choose(2,+,*)Print result,40,2.Choose函数,例如:根据Nop是14的值,转换成+、-、运算符,语句代码如下:Op=Choose(Nop,+,-,)当值为1时,返回字符串“+”,然后放入Op变量中,当值为2时,返回字符串“-”,依此类推;当Nop是14的非整数时,系统会自动使用取Nop的整数进行再判断;若Nop不在14之间,函
25、数返回Null值。,41,4.3 循环结构,4.3.1 Do循环结构程序设计1.当型循环结构 语法格式1:Do While 语句块1 Exit Do 语句块2Loop条件表达式可以是一个逻辑表达式,也可以是一个关系表达式,其值应是逻辑型。Do While和Loop应成对出现。,判断“条件表达式”是否成立,如果成立,则执行循环体,执行完循环体后,再对“条件表达式”的值进行判断,以决定是否进行下一次循环,以此进行下去,当“条件表达式”不成立时,则退出循环体,执行Loop后面的语句,42,例4-9:用当型循环实现1+2+3+4+100的 运算。,Dim Sum As Integer,i As Int
26、egerSum=0:i=1Do While i=100 Sum=Sum+i i=i+1 设置循环控制变量的步长Loop,43,Do循环结构程序设计,语法格式2:Do Until 语句块1 Exit Do 语句块2Loop 注:Exit Do语句用于退出DoLoop循环,判断“条件表达式”是否成立,如果不成立,则执行循环体,当执行完循环体后,然后再对“条件表达式”的值进行判断,以决定是否进行下一次循环,以此进行下去,当Do Until后面的“条件表达式”成立(条件表达式为True)时,则退出循环体,执行Loop后面的语句,44,Do Until loop循环,例4-9:用Do UntilLoop
27、循环实现1+2+3+4+100的 运算。Dim Sum As Integer,i As IntegerSum=0:i=1Do Until i 100 Sum=Sum+i i=i+1 设置循环控制变量的步长Loop,45,2.直到型循环结构,语法格式1:Do 语句块1 Exit Do 语句块2Loop While,首先执行一次循环体,然后判断Loop While后面的条件,如果成立(条件表达式为True),则返回到Do,继续执行下一次循环,以此进行下去;当Loop While后面的“条件表达式”不成立(条件表达式为False)时,则退出循环体,执行Loop While后面的语句。,46,Do.L
28、oop While,例:Dim Sum As Integer,i As IntegerSum=0:i=1 Do Sum=Sum+i i=i+1 设置循环控制变量的步长 Loop While i=100,47,2.直到型循环结构,语法格式2:Do 语句块1 Exit Do 语句块2Loop Until,首先执行一次循环体,然后判断Loop Until后面的条件,如果不成立(条件表达式为False),则返回到Do,继续执行下一次循环,以此进行下去;当Loop Until后面的“条件表达式”成立(条件表达式为True)时,则退出循环体,执行Loop Until后面的语句。,48,DoLoop Unt
29、il 循环,例:Dim Sum As Integer,i As IntegerSum=0:i=1 Do Sum=Sum+i i=i+1 设置循环控制变量的步长 Loop Until i 100,49,4.3.2 While循环结构程序设计,语法格式:While(条件表达式)循环体 Wend功能:当While的条件表达式的值是True时执行循环体内的代码,当While后的条件表达式的值为False时退出循环体。说明:它与DoLoop语句的差别是:While Wend语句中不能使用Exit语句跳出循环。,50,例:用WhileWend计算1100的和,Dim Sum As Integer,i As
30、 IntegerSum=0:i=1 While i=100 Sum=Sum+i i=i+1 设置循环控制变量的步长 Wend,51,4.3.3 For循环结构程序设计,语法格式:For=To Step 语句序列1 Exit For 语句序列2Next 循环变量,循环变量是一个数值变量(简单变量);初值、终值和步长:均是数值表达式,其值若是实数,则自动取整。当初值终值时,步长为正数,反之为负数,步长为1时,可略去不写,步长不应=0,否则构成死循环。,52,For 循环,循环体可以是一句或多条语句。Exit for:用于退出循环。Next:其后面的“循环变量”与For语句中的“循环变量”必须相同。
31、循环次数的计算公式为:循环次数Int(终值-初值)/步长+1,53,For 循环,例:Dim Sum As Integer,i As Integer Sum=0 For i=1 To 100 Sum=Sum+i Next i,54,4.3.4 嵌套循环,多重循环也称为循环嵌套。由于能构成循环结构的语句有多种,它们之间可以互相嵌套,所以多重循环的形式多种多样。但要注意:(1)每一种循环语句中的开始部分与结束部分必须配对使用。(2)多层循环的循环体可以一层套一层,但不能互相交叉。(3)不能从循环体外转向循环体内,也不能从外循环转向内循环,反之则可以。(4)内循环变量与外循环变量不能同名。,55,【例4-13】打印九九乘法表。程序代码:Private Sub Form_click()Dim i,j As Single ClsPrint Tab(50);九九乘法表For i=1 To 9For j=1 To iPrint j;*;i;=;i*j;Next jPrint 控制换行Next iEnd Sub,