收藏 分享(赏)

32 VB三种程序结构Visual Basic语言作为结构化程序设计语言,提供.ppt

上传人:hwpkd79526 文档编号:9112809 上传时间:2019-07-24 格式:PPT 页数:60 大小:242KB
下载 相关 举报
32 VB三种程序结构Visual Basic语言作为结构化程序设计语言,提供.ppt_第1页
第1页 / 共60页
32 VB三种程序结构Visual Basic语言作为结构化程序设计语言,提供.ppt_第2页
第2页 / 共60页
32 VB三种程序结构Visual Basic语言作为结构化程序设计语言,提供.ppt_第3页
第3页 / 共60页
32 VB三种程序结构Visual Basic语言作为结构化程序设计语言,提供.ppt_第4页
第4页 / 共60页
32 VB三种程序结构Visual Basic语言作为结构化程序设计语言,提供.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

1、3.2 VB三种程序结构 Visual Basic语言作为结构化程序设计语言,提供了三种控制流来控制程序的流程:顺序,条件分支和循环语句。,3.2.1 顺序结构顺序结构程序中的语句依照其在程序中的位置依次顺序地执行。 1、 赋值语句 格式: 变量名/对象.属性名 = 表达式 功能:将赋值号右边表达式的值赋给赋值号左边的变量或对象属性。 举例: Form1.width = 300Temp = 20,说明: 1、 当表达式为数值型且与变量的精度不相同时,强制转换成左边变量的精度。例如: Dim A as integer A = 4.7 A是整型变量,A中的结果是5。2、 当表达式是数字字符串,左边

2、变量是数值类型时,自动转换成数值类型再赋值;但当表达式有非数字字符或空串时,则出错。例如;n=“123” n中的结果是123 n为整形n=“1a23” 出现“类型不匹配”的错误 3、 当逻辑型赋值给数值型时,True转换为-1,False转换为0;反之,当数值型赋给逻辑型时,非0转换为True,0转换为False.,2、MsgBox函数:向用户显示信息(输出) MsgBox语句: MsgBox (提示内容 ,答复按钮+图标,标题) MsgBox函数: Dim x As Integer X=MsgBox(提示内容 ,答复按钮+图标,标题),功能:打开一个消息框,等待用户选择一个按钮。MsgBox

3、函数返回所选按钮对应的整数值,其数值的意义见后表。若不需要返回值,则作为MsgBox语句。,参数说明,提示内容:显示给用户的信息。最长1024字符。如果 内容超过一行,则可以在每一行之间用回车符 Chr(13)、换行符 (Chr(10) 或是回车与换行符的组合 (Chr(13) & Chr(10) 将各行分隔开来。 答复按钮+图标:确定在消息框中按钮的数目和类型,以及图标的类型。 标题:显示在消息框标题栏上的文本。,“按钮“设置值及意义,MsgBox函数返回所选按钮整数值的意义,3、InputBox函数:从用户处获取信息(输入)功能:打开一个对话框,等待用户键入内容。当用户单击“确定“按钮或按

4、回车键时,函数返回输入的值,其值的类型为字符串。,(1)句法,变量名=InputBox(提示,标题,默认值横坐标,纵坐标)(2)参数说明 提示:提示信息,类型是字符串。 标题:是对话框窗口中的标题文本,类型是字符串。 默认值:在用户输入信息之前,输入框中显 示的内容,类型是字符串。,例:,bb = MsgBox(“错误,重输吗?“, vbYesNo + vbDefaultButton2 + vbCritical, “确认重输对话框“) If bb = vbNo Then End,4、print语句格式1:对象. Print 表达式 ,|; 功能:显示数据。对象可以是窗体(Form)、图形框(P

5、ictureBox)或打印机(Printer)。如果省略了对象,则在窗体上输出。 说明: 表达式:可选项。可以是一个或多个表达式。当有多个表达式时,要用分隔符(逗号、分号)隔开。当表达式缺省时,则屏幕显示一个空行。 输出格式分为标准输出格式和紧凑输出格式。 标准输出格式:以14个字符宽度划分为一个区段,每个数据项占一个区段的位置。(数据项之间用逗号隔开) 紧凑输出格式:对于数值型数据,前面有一个符号位,后面有一个空格;对于每个字符串,各个数据项之间没有间隔。(各数据项之间用分号或空格作为分隔符),格式2: 对象.PrintSpc(n)/Tab(n)表达式表 Spc(n)函数:用于在输出时插入n

6、个空格。 Tab(n)函数:表示在第n 列显示。,? Round(3.89456,3) 结果:3.895 说明: 在三角函数中,以弧度表示;sqr的自变量不能是负数, Rnd函数返回小于1,大于等于0的单精度随机数。VB用于产生随机数的公式取决于称为种子(seed)的初始值。默认情况下,每次运行一个应用程序,VB提供一相同的种子,即Rnd产生相同序列的随机数。为了每次运行时,产生不同序列的随机数,可执行Randomize语句,格式如下:Randomize number 如果省略number,则用系统计时器返回的值作为新的种子 Rnd(x): x=0:得到的相同的随机数结果。 大于 0:序列中的

7、下一个。省略:序列中的下一个随机数。 例子:int(b-a+1)*rnd)+a要产生3050之间的随机数 int(Rnd*21)+30, Len( )函数格式:Len(String)功能:计算字符串的长度。例子:Len(“Visual“) 函数返回值为6 Mid( ) 函数格式:Mid(String,n,m)功能:从String字符串中从第n 个字符开始连续取m个字符。例子:Mid(“VisualBasic6.0“,7,5) 函数返回值是“Basic“InStr( )函数格式:InStr(n, string1, string2)功能;在string1 中从n开始查找 string2,如果存在,

8、函数值为string2在string1中的位置值;找不到时函数的值为0。n是可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。例子: Print InStr(2, “efabcdefg“, “ef“) 函数返回值为7,删除前后空格函数 格式:TRIM():去掉前后空格LTRIM():去掉前空格RTRIM():去掉后空格 例:trim(“ ab “)=“ab” ltrim(“ ab “)=“ab ” Rtrim(“ ab “)=“ ab”取子串函数 格式:LEFT(,) 功能:从表达式值的左端取一个指定长度的子串 格式: RIGHT(,) 功能:从表达式的右端取一个

9、指定长度的子串。 例子: LEFT(“VisualBasic6.0“, 5) 函数返回值是“Visua“ RIGHT(“VisualBasic6.0“, 5) 函数返回值是“ic6.0“,4Str( )格式:Str(Number)功能:将数值型量转换成字符型量。说明:Number为一个数值型量,返回一个字符型量。示例:Print Str(12345) 值为字符“ 12345“。 说明: Str函数将非负数值转换成字符类型后,会在转换后的字符串左边增加空格,即数值的符号位。如Str(123)的结果为“ 123“,而不是“123“。Print Str(123),三、 日期函数,1Date格式:Da

10、te功能:提取计算机系统的当前日期。说明:该函数是无参函数,返回日期的格式为“月-日-年“示例:如果今天是2000年3月10日,则a=Date的值为“03-10-2000” Print Date 2Now格式:Now功能:提取计算机系统的当前的时间和日期。示例:a=Now a的值为00-3-6 10:08:34,表示当前系统日期为2000年3月6日,系统时间为10点8分34秒。 Print Now,3Time格式:Time功能:提取计算机系统的当前的时间。说明:该函数是无参函数,返回由当前系统时间组成的一个字符串。示例:a=Time a的值为“10:08:34“。,4、格式:YEAR(日期表达

11、式 )MONTH(日期表达式 )DAY(日期表达式 ) 功能:返回年月日 例:Print DatePrint Day(#3/12/2006#) 5、格式: HOUR(日期时间表达式 )MINUTE(日期时间表达式 )Second(日期时间表达式 ) 功能:返回时、分、秒。 例:Print Time Print Hour(#1:34:24 PM#) Print Minute(Time),四、 其他函数,1Asc()格式:Asc(String)功能:将字符串转换成ASCII值。示例:Print Asc(“C“) 值为67。 2Chr()格式:Chr(x)功能:将ASCII码值转换成字符串。示例:P

12、rint Chr(66) 值为字符“B“。 Chr和Asc函数是一对互为反函数,3.小写转换函数 格式:Lcase() 功能:将指定表达式值中的大写字母转换成小写字母,其他字符不变。 例: ? Lcase(BOOK)book 4.大写转换函数 格式:Ucase() 功能:将指定表达式值中的小写字母转换成大写字母,其他字符不变。 例: ? Ucase(“work”)WORK,5Val()格式:Val(String)功能:将字符串量转换成数值量。示例:a=Val(“-13.456“) 值为-13.456b=Val(“13-456“) 值为13Val将数字字符串转换为数值,当字符串中出现非数值字符时

13、,停止转换,函数返回的是停止转换前的结果。如Val(“ 123.45ty”)结果为-123.45。 6.str( ) 功能:将数值转换成字符串。,Visual Basic 选择结构的实现: IfThen 语句(单分支结构) If.ThenElse 语句(双分支结构) Select Case 语句(多分支结构),3、2、2 分支结构,1. IfThen语句(单分支结构),格式1:If 表达式Then 语句 格式2:If 表达式Then语句块End If,功能:当条件表达式的值为“真”时,则执行Then后面的语句或语句块;否则不执行任何操作。,说明: 语句块可以是一条或多条语句。如果使用格式1的简

14、单形式表示,则只能是一条语句;或用冒号隔开的多条语句,但这些语句必须书写在一行上。If.Then 的单行格式不用 End If 语句。 Dim x As Integer Private Sub Command1_Click() x = 90 If x 0 Then MsgBox “正数“: Print “x=90“ End Sub Private Sub Command2_Click() x = 90 If x 0 Then MsgBox “正数“ Print “x=90“ End If End Sub,【例3-3】任意输入3个数,找出其中的最大值。 编写的窗体单击事件过程代码如下: Priv

15、ate Sub Form_Click()Dim a As Single, b As Single, c As Single, max As Singlea = InputBox(“请输入第一个数“, “输入框“)b = InputBox(“请输入第二个数“, “输入框“)c = InputBox(“请输入第三个数“, “输入框“)max = aIf b max Then max = bIf c max Then max = cPrint “三个数中最大的为:“ & max End Sub,说明:块结构的条件语句可以嵌套,即把一个If Then Else 块放在另一个If Then Else 块

16、内。嵌套必须完全嵌套,也就是内层条件语句必须完全包含在外层条件语句之中。,【例3-4】火车站行李费的收费标准是40kg以内(包括40kg)0.20元/kg,超过部分为0.50元/kg。编写程序,根据输入的任意重量,计算出应付的行李费。 根据题意计算公式如下: Pay=Weight0.20 Weight40 (Weight-40)0.50+400.20 Weight40,编写的窗体单击事件过程代码如下: Private Sub Form_Click() Dim weight As Single, pay As Single weight = InputBox(“请输入行李重量“, “输入框“)

17、If weight 40 Then pay = (weight - 40) * 0.5 + 40 * 0.2 Else pay = weight * 0.2 End If Print “行李重量=“ & weight Print “所付费用=“ & pay End Sub,语句格式: If 表达式1 Then 语句块1ElseIf 表达式2Then语句块2 Else语句块 n+1 End If,说明: 不管有几个分支,程序执行了一个分支后,其余分支不再执行。 ElseIf子句的数量没有限制,可以根据需要使用任意多个ElseIf子句。,例: 【例3-6】输入一个学生的成绩score,根据其所在分

18、数段给出他的考试等级。分数段划分规则是:90100为“输入错误”。 Private Sub Form_Click() Dim score As Single score = InputBox(“请输入学生的成绩score;“) If score 60 Then Print “不及格“ ElseIf score 70 Then Print “及格“ ElseIf score 80 Then Print “中等“ ElseIf score 90 Then Print “良好“ ElseIf score = 100 Then Print “优秀“ Else Print “输入错误“ End If E

19、nd Sub,If 语句的嵌套是指if或else语句后面的语句块中又包含if语句。 语句形式为:,If thenif thenendif endif,【例3-5】输入系数a,b和c,求二次方程ax2+bx+c = 0的实根。 Private Sub Form_Click() Dim a!, b!, c!, d!, x1!, x2!, x a = InputBox(“请输入系数a:“) b = InputBox(“请输入系数b:“) c = InputBox(“请输入系数c:“) d = b * b - 4 * a * c If d 0 Then x1 = (-b + Sqr(d) / (2 *

20、 a) x2 = (-b - Sqr(d) / (2 * a) Print “x1=“; x1, “x2=“; x2 Else If d = 0 Then x = -b / (2 * a): Print “x=“; x Else Print “此方程无实根“ End If End If End Sub,Private Sub Form_Click() Dim score As Single score = InputBox(“请输入学生的成绩score:“) If score 60 Then Print “不及格“ ElseIf score = 70 Then Print “及格“ ElseI

21、f score = 80 Then Print “中等“ ElseIf score = 90 Then Print “良好“ ElseIf score = 100 Then Print “优秀“ Else Print “输入错误“ End If End Sub,格式:Select Case 测试变量或表达式Case 表达式表1语句块1Case 表达式表2语句块2Case 表达式表n语句块nCase Else语句块n+1End Select,功能:根据Select Case 中的结果与各Case子句中的值比较,决定执行哪一组语句块。如果有多个Case短语中的值与测试值匹配,则根据自上而下判断原则

22、,只执行第一个与之匹配的语句块。 说明: 如果在一个列表中有多个值,就用逗号把值隔开。例:, 一个表达式。如:Case 6 一组用逗号隔开的枚举值。如: Case 1,3,5,7 表达式1 TO 表达式2。如: Case 1 To 10 Is 关系运算表达式。如 case is5,Private Sub Form_Click() Dim score As Single score = InputBox(“请输入学生的成绩score;“) Select Case score Case Is 60 Print “不及格“ Case Is 70 Print “及格“ Case Is 80 Print

23、 “中等“ Case Is 90 Print “良好“ Case Is = 100 Print “优秀“ Case Else Print “输入错误“ End Select End Sub,循环是在指定的条件下多次重复执行一组语句,这可通过循环结构来实现。VB中提供了两种类型的循环语句:一种是计数循环语句;另一种是条件循环语句。Visual Basic 支持的循环结构有:For.NextDoLoop WhileWend,3.2.3 循环结构,格式:For 循环变量 = 初值 To 终值 Step 步长 Exit For Next 循环变量,说明: 格式中的参数说明:循环变量必须为数值型。循环的

24、初值、终值和步长都是数值表达式,其中,增量参数可正可负。如果增量为正,则初值必须小于等于终值;如果增量为负,则初值必须大于等于终值。如果没有设置step,则增量默认为1。 Exit For为强行退出循环语句。当遇到该语句时,退出循环,执行Next的下一个语句。 当循环是单层循环时,Next后面的循环变量可以不写。,例:3-8 求阶乘。 Private Sub Form_Click() Dim i%, f f End Sub,DoLoop循环用于事先不知道循环次数的循环结构。此种语句四种语法格式: . Do While Loop 语句 . Do Loop While 语句 . Do Until

25、Loop 语句 . Do Loop Until 语句,格式:Do While 条件表达式循环体 Exit Do 循环体Loop,说明: 1、 循环体中要有控制循环的语句,以避免出现死循环。 2、由于该循环的特点是先判断条件,然后再决定是否要执行循环体里的语句。 3、Exit Do 表示当遇到该语句时,强制退出循环,执行Loop后的下一条语句。,Private Sub cmdDoWhileLoop_Click()Dim i As IntegerDim Total As LongDo until i 100Total = Total + i*ii = i + 1LoopPrint Total En

26、d Sub,例 求1到100之间所有自然数的平方和。 即,【例3-10】给出两个正整数M和N,求他们的最大公约数和最小公倍数。 求最大公约数的算法如下: (1)以M作被除数,N作除数,求余数R。 (2)如果R不为零,则将除数N做为新的被除数M,将余数R做为新的除数N,再进行相除,得到新的余数R。 (3)如果R仍不等于0,则重复步骤(2)。如果R为零,则这时的被除数N就是最大公约数。 最小公倍数为这两个数的乘积除以他们的最大公约数。,编写窗体单击事件过程代码如下: Private Sub Form_Click()Dim A As Integer, B As Integer, N As Integ

27、er, M As Integer, R As Integer, T As IntegerM = InputBox(“请输入第一个正整数M“,“求M、N最大公约数和最小公倍数“)N = InputBox(“请输入第二个正整数N“,“求M、N最大公约数和最小公倍数“)A = M: B = NIf M 0M = NN = RR = M Mod NLoopPrint “最大公约数为:“, NPrint “最小公倍数为:“, A * B / N End Sub,格式:Do循环体 Exit Do 循环体Loop While条件表达式,说明: 至少要执行循环体一次。 与Do While循环的区别:Do Wh

28、ile循环先测试条件是否成立,只有成立才执行循环;而该循环先执行循环体,后测试条件是否成立。,例 求1到100之间所有自然数的平方和。 即,Private Sub cmdDoLoopWhile_Click()Dim i As IntegerDim Total As LongDoTotal = Total + i * ii = i + 1Loop While i = 100Label1.Caption = “Do Loop While方法结果:“Label2.Caption = Format(Total) End Sub,格式:Do Until条件表达式循环体 Exit Do循环体 Loop,格

29、式:Do循环体 Exit Do循环体 Loop Until条件表达式,Private Sub cmdDoUntilLoop_Click()Dim i As IntegerDim Total As LongDo Until i 100Total = Total + i * ii = i + 1Loop? Total End Sub,格式:While 条件表达式循环体Wend 功能:当While的条件表达式的值是True时执行循环体内的代码,直到While后的条件表达式的值为False。 说明:它与Do Loop语句的差别是:While Wend语句中不能使用Exit语句跳出循环。,3. Whil

30、e Wend循环,例:求N要求N的阶乘最接近 2000,但不大于2000。 Private Sub Form_Click() Dim n%, f% n = 0 f = 1 While f 2000 n = n + 1 f = f * n Wend f = f / n n = n - 1 Print “n=“; n End Sub,多重循环,循环体内含有循环语句的循环称多重循环。 格式: For 循环变量 = 初值 To 终值 Step 步长For 循环变量 = 初值 To 终值 Step 步长Next 循环变量Next 循环变量,类型说明符有: Dim I as integer Dim i%

31、表示整型& 表示长整型! 表示单精度型# 表示双精度型 表示货币型 表示字符型,【例3-11】编写程序,判断用户输入的数是否为素数。素数是指除了1和该数本身,不能被任何其他整数所整除的数。判断一个自然数n(n =3)是否为素数,只要依次用从2到n/2作除数去除n,若n不能被其中任何一个数整除,则n为素数。 若flag为0:没有找到除了1和它本身以外能整除n的数,即n为素数; flag为1:则说明找到了某个能整除n的正整数,即n不是素数。,Private Sub Form_Click()Dim n!, k%, flag%, i%n = InputBox (“请输入一个大于2的整数“)k = Int (Sqr (n)flag = 0i = 2While i = k And flag = 0If n Mod i = 0 Thenflag = 1Elsei = i + 1End IfWendIf flag = 0 ThenPrint n; “是素数“ElsePrint n; “不是素数“End If End Sub,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报