结构化程序设计与数组

上传人:pu****.1 文档编号:578423273 上传时间:2024-08-24 格式:PPT 页数:79 大小:583.50KB
返回 下载 相关 举报
结构化程序设计与数组_第1页
第1页 / 共79页
结构化程序设计与数组_第2页
第2页 / 共79页
结构化程序设计与数组_第3页
第3页 / 共79页
结构化程序设计与数组_第4页
第4页 / 共79页
结构化程序设计与数组_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《结构化程序设计与数组》由会员分享,可在线阅读,更多相关《结构化程序设计与数组(79页珍藏版)》请在金锄头文库上搜索。

1、葛锦环温州医学院计算机教研室第三章第三章 结构化程序设计与数组结构化程序设计与数组 3.1 3 3种基本的控制结构种基本的控制结构学习了什么是表达式,学习了什么是表达式,那么如何对表达式进行有效地组织呢?那么如何对表达式进行有效地组织呢?必须依靠三大基本结构:必须依靠三大基本结构: 顺序结构顺序结构选择结构选择结构循环结构循环结构利用这三种结构相互嵌套可以构造出各种复杂程序!利用这三种结构相互嵌套可以构造出各种复杂程序!嵌套结构(结构中包含结构)嵌套结构(结构中包含结构)2语句一语句一语句二语句二表达式表达式语句一语句一语句二语句二表达式表达式语句语句真假真真假假顺序顺序结构结构选择选择结构结

2、构循环循环结构结构三种基本结构流程图三种基本结构流程图8/24/顺序结构顺序结构赋值语句赋值语句输入输出语句输入输出语句选择结构选择结构条件语句条件语句双分支结构双分支结构多分支结构多分支结构单分支结构单分支结构情况语句情况语句循环结构循环结构ForNextDo WhileLoopDoLoopDo Loop WhileDo UntilLoopDo Loop UntilWhileWend4赋值语句:赋值语句:是程序中最常用的语句,其功能是先计算出赋值号是程序中最常用的语句,其功能是先计算出赋值号右边表达式的值右边表达式的值( (必要时转换为相同类型数据必要时转换为相同类型数据) ),再将值赋给赋

3、,再将值赋给赋值号左边的变量。值号左边的变量。赋值语句的形式为:赋值语句的形式为: 变量名表达式变量名表达式 或或 对象名对象名. .属性名表达式属性名表达式注意注意赋值语句的阅读顺序赋值语句的阅读顺序:从右至左从右至左 x = 100*8x = 100*8Text1.Text = Text1.Text = “welcome towelcome to” & & “中国中国”顺序结构顺序结构 赋值语句赋值语句5赋值语句赋值语句说明说明: n(1)如果语句中有表达式,则表达式一定要放在赋如果语句中有表达式,则表达式一定要放在赋值号值号“=”右边。右边。n(2)赋值号两边为数值类型时,表达式的值不得

4、超赋值号两边为数值类型时,表达式的值不得超过数值变量的过数值变量的表示范围表示范围, 且强制转换右边的类型,且强制转换右边的类型,与左边保持一致。与左边保持一致。n(3)任何类型表达式都可以向字符串变量赋值。任何类型表达式都可以向字符串变量赋值。n(4)数值和逻辑类型可以相互转换,数值和逻辑类型可以相互转换,逻辑量逻辑量True转转为数值为数值-1,False转为转为0,数值量,数值量0转换为转换为False,非,非0转换为转换为True。n(5)赋值号赋值号“=”与等号与等号“=”是有本质区别的。是有本质区别的。8/24/顺序结构顺序结构 赋值语句赋值语句赋值语句的应用示例:(1)变量自增(

5、2)x=5(3)x=x+1(4)(2)变量交换(5)假设a=5,b=8,如何实现变量值的交换,(6)即交换后a=8,b=5。(7)实例2-47顺序结构顺序结构 输入输出语句输入输出语句 输入输出语句是人机交互的桥梁,程序通过输输入输出语句是人机交互的桥梁,程序通过输入语句得到用户的输入数据,用户通过输出语句获入语句得到用户的输入数据,用户通过输出语句获得反馈。得反馈。1 1、输入语句、输入语句InputBoxInputBox函数函数 函数语法格式:函数语法格式: =InputBoxInputBox(,)8Const PI = 3.14Private Sub Form_Click() Dim r

6、 As Integer r = InputBox(请输入圆的半径:请输入圆的半径:, 求圆的面积求圆的面积, 10) Print PI * r * rEnd Sub提示信息提示信息对话框标题对话框标题默认值默认值9InputBoxInputBox函数注意事项函数注意事项nInputBox( )函数的函数的返回值返回值为为String类型。类型。n第二个参数可以不加,但是逗号不能省。第二个参数可以不加,但是逗号不能省。101 1、输入语句、输入语句文本框控件文本框控件利用文本框控件也可以实现输入语句的功能利用文本框控件也可以实现输入语句的功能要想得到数值型数据,可以用要想得到数值型数据,可以用V

7、al函数进行类型转换:函数进行类型转换:例如:例如:Dim Temp As Integer Temp=Val(Text1.Text)Private Sub Form_Click() Dim r As Integer r = Val(Text1.Text) Print rEnd Sub112 2、输出语句、输出语句PrintPrint方法方法.Print ,|;功能:在窗体上功能:在窗体上(对象是窗体对象是窗体)打印内容,内容的默认位置在打印内容,内容的默认位置在窗体的左上角。窗体的左上角。Private Sub Form_Click() Print 温州医学院温州医学院End SubPriva

8、te Sub Form_Click() Print 温州医学院温州医学院 Print 欢迎你!欢迎你!End SubPrivate Sub Form_Click() Print 温州医学院温州医学院 Print Print 欢迎你!欢迎你!End Sub12注意:无注意:无“;”或或“,”表示输出后下一个输出位置表示输出后下一个输出位置换行换行Private Sub Form_Click() Print 温州医学院温州医学院; Print 欢迎你!欢迎你!End Sub(紧凑格式紧凑格式)Private Sub Form_Click() Print 温州医学院温州医学院; 欢迎你!欢迎你!En

9、d SubPrivate Sub Form_Click() Print 温州医学院温州医学院, Print 欢迎你!欢迎你!End Sub(宽松格式宽松格式)Private Sub Form_Click() Print 温州医学院温州医学院, 欢迎你!欢迎你!End Sub注意:符号必须是注意:符号必须是英文输入状态!英文输入状态!13如何精确地控制打印内容的格式?如何精确地控制打印内容的格式?用用Spc(n)、Tab(n)两个内部函数可以满足要求两个内部函数可以满足要求Spc(n):输出输出n个空格个空格Tab(n):在第:在第n列开始输出列开始输出Private Sub Form_Clic

10、k() Print 1234567890123456789 Print good; Spc(3); afternoon Print Tab(8); good; Tab(16); afternoonEnd Sub14特别说明特别说明:刚才所演示的都是打印字符串,:刚才所演示的都是打印字符串,当打印的是数值时,会有明显的不同。当打印的是数值时,会有明显的不同。Private Sub Form_Click() Print 1234567890123456789 Print 1000 Print 1000 Print Trim(1000) Print -1000End Sub如果打印的是数值类型,则会

11、自动在前后加上空格,称如果打印的是数值类型,则会自动在前后加上空格,称为为前导空格前导空格和和后置空格后置空格。15MsgBoxMsgBox函数的使用方法:函数的使用方法:=MsgBoxMsgBox(, ,对话框标题,对话框标题 )2 2、输出语句、输出语句MsgBoxMsgBox函数函数Private Sub Private Sub Form_ClickForm_Click()() Dim I as Integer, length as Integer, width as Integer Dim I as Integer, length as Integer, width as Intege

12、r Dim s as Long Dim s as Long length = length = InputBoxInputBox(请输入长方形的长请输入长方形的长:, :, 求长方形的面积求长方形的面积, , 10)10) width = width = InputBoxInputBox(请输入长方形的宽:请输入长方形的宽:, , 求长方形的面积求长方形的面积, , 10)10) s = length * width s = length * width i = i = MsgBoxMsgBox(长方形的长:长方形的长: & length & & length & 长方形的宽:长方形的宽: &

13、 width & width & & 长方形的面积:长方形的面积: & s, & s, 0 + 64 + 0 , 0 + 64 + 0 , 计算的最终结果计算的最终结果)End SubEnd Sub16对话框类型参数指定对话框中出现的按钮和图标样式对话框类型参数指定对话框中出现的按钮和图标样式可由多项值组成:可由多项值组成: + + 表表表表1 1 按钮样式按钮样式按钮样式按钮样式 值VisualBasic常量按钮样式0vbOKOnly“确定”按钮1vbOKCancle“确定”和“取消”按钮2vbAbortRetryIgnore“终止”、“重试”和“忽略”按钮3vbYesNoCancle“是”

14、、“否”和“取消”按钮4vbYesNo“是”和“否”按钮5vbRetryCancle“重试”和“取消”按钮2 2、输出语句、输出语句MsgBoxMsgBox函数函数值VisualBasic常量按钮样式0vbOKOnly“确定”按钮1vbOKCancle“确定”和“取消”按钮2vbAbortRetryIgnore“终止”、“重试”和“忽略”按钮3vbYesNoCancle“是”、“否”和“取消”按钮4vbYesNo“是”和“否”按钮5vbRetryCancle“重试”和“取消”按钮17值VisualBasic常量图标样式16VbCritical停止图标32VbQuestion问号(?)图标48v

15、bExclamation感叹号(!)图标64vbInformation消息图标表表2 图标样式图标样式表表表表3 3 默认按钮默认按钮默认按钮默认按钮 值VisualBasic常量说明0vbDefaultButton1第一按钮为默认按钮256vbDefaultButton2第二按钮为默认按钮512vbDefaultButton3第三按钮为默认按钮2 2、输出语句、输出语句MsgBoxMsgBox函数和函数和MsgBoxMsgBox过程过程18表表4 4 MsgBoxMsgBox函数返回值函数返回值返回值按钮返回值按钮1“确定”按钮5“忽略”按钮2“取消”按钮6“是”按钮3“终止”按钮7“否”按

16、钮4“重试”按钮2 2、输出语句、输出语句MsgBoxMsgBox函数和函数和MsgBoxMsgBox过程过程193.2选择结构根据所给定的条件成立与否根据所给定的条件成立与否, ,决定从各决定从各种实际可能的不同分支中选择某一分支的相种实际可能的不同分支中选择某一分支的相应操作。应操作。VBVB提供用来实现选择结构的语句提供用来实现选择结构的语句, ,主要主要有有IFIF和和SelectSelect。 20IF结构结构(条件语句条件语句)条件语句之一:单分支结构例:例:例:例: If xy ThenIf xy Then t=x t=x x=y x=y y=t y=t End If End I

17、f 或或或或 If xy Then t=x: x=y: y=tIf xy Then t=x: x=y: y=tIf Then End IfIf Then 或行行IF语句语句块块IF语句语句21条件语句之二:双分支结构或或或或If Then Else End IfIf Then Else 行行IF语句语句块块IF语句语句22Private Sub Form_Click() Dim Max as single, sFirst as single, sSecond as single sFirst = InputBox(请输入第一个数:请输入第一个数:, sFirst) sSecond = Inpu

18、tBox(请输入第二个数:请输入第二个数:, sSecond) If sFirst sSecond Then Max = sFirst Else Max = sSecond End If Print MaxEnd Sub23If If 1 ThenThen 1ElseElse If If Then2 Then 2 Else Else If If 3 3 Else Else n+1 . . End If End If End If End IfEnd IfEnd If条件语句之三:多分支结构一定要注意一定要注意End If成对出现成对出现24 例例3-4:编程编程,在窗体上输出字符串在窗体上输出

19、字符串”欢迎使用欢迎使用Visual Basic”.第一次单击时以黑体显示第一次单击时以黑体显示;第二次单击时以楷体显第二次单击时以楷体显示示;第三次显示时以宋体显示第三次显示时以宋体显示;第四次单击则清除窗体上的第四次单击则清除窗体上的信息信息,重复重复.25If Then ElseIf Then ElseIf Then End If注意:注意:ElseIfElseIf 不要写成不要写成Else Else IfIf,末尾的,末尾的End IfEnd If不要忘记。不要忘记。另外一种多分支选择结构形式另外一种多分支选择结构形式8/24/选择结构选择结构(2)情况选择语句情况选择语句情况选择结构

20、用于多路选择情况选择结构用于多路选择,根据根据测试表达式测试表达式的不同取值决定执行该结构的哪一个的不同取值决定执行该结构的哪一个分支。测试表达式可以为数值、字符等类型,常用的一般为整型或字符串类型。分支。测试表达式可以为数值、字符等类型,常用的一般为整型或字符串类型。27情况语句情况语句Select语法格式语法格式Select CaseSelect Case Case Case 1 1 Case Case 2 2 Case Case n n Case Else Case Else n+1End SelectEnd Select28例例3-7 分析一下程序,理解情况分析一下程序,理解情况选择结

21、构的执行流程(当程序运选择结构的执行流程(当程序运行时,先后输入行时,先后输入3、1、4和和125,查看在,查看在Label1上的信息分别是上的信息分别是什么?什么?8/24/Select Case语句:语句:n n测试表达式:为数值表达式或字符串表达式测试表达式:为数值表达式或字符串表达式n n表达式列表:多个表达式用表达式列表:多个表达式用逗号间隔逗号间隔即为表即为表达式列表。表达式可以是单个表达式(单值)达式列表。表达式可以是单个表达式(单值)或或“表达式表达式 to 表达式表达式”(数值范围),如果(数值范围),如果比较测试表达式与其他表达式的关系,则用比较测试表达式与其他表达式的关系

22、,则用符号符号“Is”表示测试表达式的值。表示测试表达式的值。8/24/Private Sub Form_Click() Dim Chinese%, Math%, English% Chinese = InputBox(语文语文) Math = InputBox(数学数学) English = InputBox(英语英语) Select Case (chinese + math + english) / 3 Case Is = 60 Print 及格及格 Case Is 60 Print 不及格不及格 End SelectEnd Sub注意:注意:Select Case 后不能出现多个表达式后

23、不能出现多个表达式测试表达式测试表达式313.3 循环结构循环结构计算机为什么能够大大提高人们的工作效率?计算机为什么能够大大提高人们的工作效率?一个很重要的原因就是它能够不知疲倦地进行一个很重要的原因就是它能够不知疲倦地进行循环运算,而且结果精确。循环运算,而且结果精确。( (比如:编程实现比如:编程实现1 1到到100100的累积和的累积和) 323.3 循环结构循环结构(1)ForNextForFor X e1 toto e2 StepStep e3 NextNext 循环变量循环变量循环变量循环变量 XX语法:例例: For x=1 To 100 Step 1 限定范围及步长限定范围及

24、步长 sum=sum+x ; 累加累加 Next x 进入下次循环进入下次循环 33例例: For x=2 To 13 Step 3 限定范围及步长限定范围及步长 Print x ; 输出输出x的值的值 Next x 进入下次循环进入下次循环 例例: For x=1 To 99 Step 2 限定范围及步长限定范围及步长 s=s+x 连加连加 Next x 进入下次循环进入下次循环 8/24/Exit For语句语句n n循环体中,可以包括一条或多条循环体中,可以包括一条或多条循环体中,可以包括一条或多条循环体中,可以包括一条或多条Exit ForExit For语句,如果程语句,如果程语句,

25、如果程语句,如果程序执行到序执行到序执行到序执行到Exit ForExit For语句时,就会直接退出循环,转而执语句时,就会直接退出循环,转而执语句时,就会直接退出循环,转而执语句时,就会直接退出循环,转而执行行行行NextNext语句的下一条语句。语句的下一条语句。语句的下一条语句。语句的下一条语句。n nExit ForExit For语句最常用的形式是与语句最常用的形式是与语句最常用的形式是与语句最常用的形式是与If-ThenIf-Then语句相结合,语句相结合,语句相结合,语句相结合,即:即:即:即:If e Then Exit ForIf e Then Exit Forn n在执行

26、循环体时,如果条件在执行循环体时,如果条件在执行循环体时,如果条件在执行循环体时,如果条件e e被满足,则执行被满足,则执行被满足,则执行被满足,则执行Exit ForExit For语句直接退出循环。语句直接退出循环。语句直接退出循环。语句直接退出循环。For i= 1 to 10 setp 1 If i=7 Then Exit ForNext i8/24/ForNext结构注意事项:结构注意事项:n n步长缺省值为步长缺省值为1(可以省略)(可以省略)n n循环变量取值不合理,则不执行循环体。循环变量取值不合理,则不执行循环体。如:如: For n=99 to 1 step 2n n循环体

27、中可以出现语句循环体中可以出现语句“Exit For”,用于,用于将控制转移到将控制转移到Next后一语句后一语句n n循环正常结束(未执行循环正常结束(未执行Exit For等控制语句)等控制语句)后,控制变量为最后后,控制变量为最后1次取值加步长。次取值加步长。8/24/Private Sub Form_Click() For x = 13 To 1 Step -3 Print x; If x = 7 Then Exit For End If Next x Print Print xEnd Sub循环结构循环结构(1)ForNext例子:例子:37例子:例子:Private Sub For

28、m_Click() Print 12345 Dim i As Integer For i = 1 To 5 Print Tab(i); String(6 - i, T) Next iEnd Sub循环结构循环结构(1)ForNext38例例3-8:求表达式的值:求表达式的值 1-1/2+1/3-1/4+(-1)n-1*1/n回顾开头的回顾开头的1到到100的累加程序的累加程序算法分析:算法分析:n n1、累加问题、累加问题n n2、正负号有规律的交替,所以可以用一个、正负号有规律的交替,所以可以用一个变量来表示这个符号位变量来表示这个符号位n n3、累加的每一项分母有规律地从、累加的每一项分母

29、有规律地从1变化到变化到n8/24/循环结构循环结构(2)WhileWendWhile While WendWend语法格式:语法格式:功能:当条件为真功能:当条件为真(True)时执行循环体时执行循环体While/Wend结构的特点是:先判断条件、后执行循环体,结构的特点是:先判断条件、后执行循环体,常用于编制某些循环次数预先未知的程序。常用于编制某些循环次数预先未知的程序。40n n例如例如例如例如: :Private Sub Command1_Click()Private Sub Command1_Click()Dim i As Integer, Dim i As Integer, fh

30、fh As Integer As IntegerDim y As Double, n As IntegerDim y As Double, n As Integern = n = InputBoxInputBox(输入输入输入输入n, )n, )y = 0y = 0fhfh = -1 = -1for i =1 to nfor i =1 to nfhfh = - = -fhfhy = y + y = y + fhfh / i / inext inext iLabel1.Caption = yLabel1.Caption = yEnd SubEnd SubPrivate Sub Command1_

31、Click() Dim i As Integer, fh As Integer Dim y As Double, n As Integer n = InputBox(输入输入n, ) y = 0 fh = -1 i = 1 While i = n fh = -fhy = y + fh / i i = i + 1 Wend Label1.Caption = y End Sub8/24/循环结构循环结构(3)DoLoopDo While i101 sum=sum+i i=i+1LoopDim i As Integer, sum As Integeri = 1: sum = 0Print sumDo

32、 While Do While LoopLoop先判断条先判断条件,后执件,后执行循环体行循环体42循环结构循环结构(3)DoLoopDoDo Loop While Loop While Dim i As Integer, sum As Integeri = 1: sum = 0Print sumDo sum=sum+i i=i+1Loop While i100 sum=sum+i i=i+1LoopDo Until Do Until LoopLoop44循环结构循环结构(3)DoLoopDim i As Integer, sum As Integeri = 1: sum = 0Print s

33、umDo sum=sum+i i=i+1Loop Until i100DoDo Loop Until Loop Until 45循环结构循环结构(3)DoLoopDo While i100 sum=sum+i i=i+1LoopDo sum=sum+i i=i+1Loop While i100四四种种形形式:式:46Exit Do语句语句n n循环体中,可以包括一条或多条循环体中,可以包括一条或多条循环体中,可以包括一条或多条循环体中,可以包括一条或多条Exit DoExit Do语句,如果程语句,如果程语句,如果程语句,如果程序执行到序执行到序执行到序执行到Exit DoExit Do语句时

34、,就会直接退出循环,转而执语句时,就会直接退出循环,转而执语句时,就会直接退出循环,转而执语句时,就会直接退出循环,转而执行行行行LoopLoop语句的下一条语句。语句的下一条语句。语句的下一条语句。语句的下一条语句。n nExit DoExit Do语句最常用的形式是与语句最常用的形式是与语句最常用的形式是与语句最常用的形式是与If-ThenIf-Then语句相结合,即:语句相结合,即:语句相结合,即:语句相结合,即:If e Then Exit DoIf e Then Exit Don n在执行循环体时,如果条件在执行循环体时,如果条件在执行循环体时,如果条件在执行循环体时,如果条件e e

35、被满足,则执行被满足,则执行被满足,则执行被满足,则执行Exit DoExit Do语语语语句直接退出循环。句直接退出循环。句直接退出循环。句直接退出循环。Do While i50 Then Exit doLoop8/24/例例3-14 循环结构循环结构n n输入一个大于等于输入一个大于等于4的正整数,判断该数是的正整数,判断该数是不是素数。不是素数。n n注意注意Exit For的用法的用法n n修改程序,利用修改程序,利用DoLoop实现该程序实现该程序。8/24/3.4 嵌套结构嵌套结构(多重循环)多重循环) 单一的循环结构功能较弱,如果将循环结构与单一的循环结构功能较弱,如果将循环结构

36、与分支结构进行分支结构进行嵌套嵌套,或者,或者多重循环多重循环结构进行嵌套,结构进行嵌套,就能就能实现复杂的功能实现复杂的功能。49嵌套结构嵌套结构For A =1 To 10 For B=1 To 20 Next B Next AFor A =1 To 10 If B=10 then End If Next A要注意嵌套层次的对应关系要注意嵌套层次的对应关系50多重循环多重循环Private Sub Form_Click() Dim i As Integer, j As Integer Dim star As String star=“#” For i = 1 To 6 For j = i

37、To 6 Form1.Print star; Next j Form1.Print Next iEnd Sub注意对应关系注意对应关系51n n例例3-15 “鸡翁一,值钱五;鸡母一,值钱鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?翁、母、雏各几何?”n n算法分析:采用算法分析:采用穷举法穷举法,设公鸡,设公鸡x只,母鸡只,母鸡y 只,小鸡只,小鸡z只。利用三重循环把所有的组合只。利用三重循环把所有的组合都算一遍,把满足都算一遍,把满足5x3yz/3100的解求的解求出来。出来。8/24/嵌套结构(实例)嵌套结构(实例

38、)n n产生产生6个个100到到200之间的随机整数,打印到之间的随机整数,打印到窗体上,找出其中的最大值,并把该值另窗体上,找出其中的最大值,并把该值另起一行打印出来。起一行打印出来。n n注意对应关系。注意对应关系。n n复习使用复习使用print方法和随机函数。方法和随机函数。n n一定要灵活使用嵌套结构,不要使用太多一定要灵活使用嵌套结构,不要使用太多的嵌套结构。的嵌套结构。8/24/3.5 数组及其应用数组及其应用 假设有假设有100个学生的成绩需要输入计算机,按照个学生的成绩需要输入计算机,按照前面的说法,就需要声明前面的说法,就需要声明100个变量来分别存储成绩,个变量来分别存储

39、成绩,显然这是极不合适的。但若使用数组,就可以轻松地显然这是极不合适的。但若使用数组,就可以轻松地解决此类大数据量的问题。解决此类大数据量的问题。数组的定义:数组的定义:数组是指数组是指相同类型相同类型数据的数据的有序有序集合,由集合,由一个变量名一个变量名来引用。数组中的每一个来引用。数组中的每一个元素元素都可以通过都可以通过一个数值一个数值下标下标访问。访问。543.5 数组数组数组可分为两种类型:数组可分为两种类型: 静态静态(定长定长)数组、动态数组、动态(可变长可变长)数组数组1 1、 定长数组及声明(定长数组及声明(必须先声明,再使用必须先声明,再使用) 数组名数组名( (下标下标

40、) ) As As 类型类型 下标:下标: 下界下界 ToTo上界上界 注:注:必须为常量,若省略,则表示必须为常量,若省略,则表示 下界为下界为0 0或者或者1 1数组大小(总的元素个数):数组大小(总的元素个数): 上界下界上界下界1 1例例: Dim mark(1 to 100) As Integer1是下标的下界100是下标的上界数组元素的数据类型55可以利用此语句设置数组中下标中的下界的缺省值。可以利用此语句设置数组中下标中的下界的缺省值。 Option Base 0|1 的用法的用法Option Base 1 Dim a(8) As Integera(1)a(2)a(3)a(4)a

41、(5)a(6)a(7)a(8)a(0)a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8)Option Base 0 Dim a(8) As Integer56Option Base 0|1 的用法的用法注意:注意:(1)在模块的通用声明段设置,并只在此模块起)在模块的通用声明段设置,并只在此模块起作用。作用。(2)参数只能为)参数只能为0或或1。 (具体应写成具体应写成Option Base 0或或Option Base 1)(3)程序中没有写明此条语句的话,数组下界的缺程序中没有写明此条语句的话,数组下界的缺省值依然为省值依然为0。 57一维数组的简单应用:一维数组的简单应用:

42、Private Sub Form_click()Dim a(1 To 5) As IntegerFor i = 1 To 5 a(i) = i Print a(i); Space(1);Next iEnd Sub8/24/回顾刚才例子用数组实现:回顾刚才例子用数组实现:n nPrivate Sub Private Sub Form_ClickForm_Click() ()n n Dim i As Integer, Dim i As Integer, a(1 to 6) As Integera(1 to 6) As Integer, max As Integer, max As Integern

43、 n max = 0 max = 0n n For i = 1 To 6 For i = 1 To 6n n a(ia(i) ) = = Int(RndInt(Rnd * 101) + 100 * 101) + 100n n Print Print a(ia(i); );n n If If a(ia(i) ) max Then max = max Then max = a(ia(i) )n n Next i Next in n Print Printn n Print max= & max Print max= & maxn nEnd SubEnd Sub8/24/多维数组多维数组 a(0,0

44、) a(0,0)a(0,1)a(0,1)a(0,2)a(0,2)a(0,3) a(0,3) a(1,0) a(1,0)a(1,1)a(1,1)a(1,2)a(1,2)a(1,3) a(1,3) a(2,0) a(2,0)a(2,1)a(2,1)a(2,2)a(2,2)a(2,3)a(2,3)如:Dim a(2,3) As Integer (共3*4个元素)如:Dim a(8) As Integera(0)a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8)一维数组:一维数组:二维数组二维数组:60多维数组多维数组例:例: Dim a(1 to 3, 1 to4) As Intege

45、r Dim s(2,5) As Single多维数组的语法形式:多维数组的语法形式: 数组名数组名( (下标下标1 1,下标,下标2 2,) As ) As 类型类型 61多维数组的简单应用:多维数组的简单应用:Option ExplicitOption ExplicitOption Base 1Option Base 1Private Sub Private Sub Form_clickForm_click() ()Dim a(10, 10) As IntegerDim a(10, 10) As IntegerDim i As Integer, j As IntegerDim i As In

46、teger, j As IntegerFor i = 1 To 10For i = 1 To 10For j = 1 To 10For j = 1 To 10 a(ia(i, j) = i + j, j) = i + j If j = 1 And i 1 Then If j = 1 And i 1 Then PrintPrint Print Print a(ia(i, j);, j); If If a(ia(i, j) 10 Then, j) 10 Then Print Space(2);Print Space(2); ElseElse Print Space(1);Print Space(1

47、); End IfEnd If Next jNext jNext iNext iEnd SubEnd Sub8/24/动态数组动态数组n n声明数组的时候下标界不能出现变量,因声明数组的时候下标界不能出现变量,因此试图用下列语句在运行时动态的声明数此试图用下列语句在运行时动态的声明数组的大小(数组元素个数)是组的大小(数组元素个数)是错误错误的。的。n nnInputBox(“请输入数组元素个数请输入数组元素个数”)n nDim a(1 to n) As Integer8/24/动态数组动态数组动态数组的声明格式:动态数组的声明格式:动态数组的声明格式:动态数组的声明格式: 数组名数组名数组名

48、数组名( )( ) As As 数据类型数据类型数据类型数据类型 重新定义数组大小的语句格式:重新定义数组大小的语句格式:重新定义数组大小的语句格式:重新定义数组大小的语句格式: ReDimReDim Preserve Preserve 数组名数组名数组名数组名( (下标下标下标下标11,下标,下标,下标,下标2)2)或者两条语句加在一起:或者两条语句加在一起:或者两条语句加在一起:或者两条语句加在一起: ReDimReDim Preserve Preserve 数数数数组组组组名名名名( (下下下下标标标标11,下下下下标标标标2) 2) As As 数数数数据类型据类型据类型据类型 数组的

49、大小在声明时并没有给出,而要根据后续程序数组的大小在声明时并没有给出,而要根据后续程序的需要来重新定义数组的大小。的需要来重新定义数组的大小。64例:例:Dim a( ) As Integer nInputBox(“请输入数请输入数 组元素个数组元素个数”) ReDim a(n) ReDim Preserve a(25) 建议用建议用这个方这个方式,请式,请大家修大家修改改P73nInputBox(“请输入数组请输入数组元素个数元素个数”)ReDim a(n) As Integer或者或者8/24/动态数组动态数组关键字关键字Preserve加与不加的区别:(加与不加的区别:(书上没有书上没有

50、)(1)如果没有如果没有Preserve,重新确定数组大小时,会重新确定数组大小时,会把原来数组里的内容全部清空为把原来数组里的内容全部清空为0。(2)(2) 如果加了如果加了Preserve,重新确定数组大小时,重新确定数组大小时,会保留原来数组里的全部内容。会保留原来数组里的全部内容。66Option ExplicitPrivate Sub Form_Click() Dim mark( ) As Integer ReDim mark(6) mark(1) = 23 mark(2) = 56 mark(3) = 77 ReDim Preserve mark(8) Print mark(3)E

51、nd Sub动态数组动态数组673.6 实例(常用算法)实例(常用算法) 算法是指解决问题的一种方法或者一个过程,算法是指解决问题的一种方法或者一个过程,而程序是指使用某种计算机语言对一种算法的具体而程序是指使用某种计算机语言对一种算法的具体实现。实现。打个小比喻:算法VB语言工具方法问题68累加与累乘累加与累乘一般需要依靠循环结构来实现累加与累乘算法一般需要依靠循环结构来实现累加与累乘算法Sum=0For i=1 To 100 Sum=Sum+iNext iPrint Sum 累加就是在原来的累加就是在原来的和的基础上一次又一次和的基础上一次又一次的再加上一个数的再加上一个数1+2+3+10

52、0F=1For i=1 To 100 F=F*iNext iPrint F 累乘又叫连乘是在累乘又叫连乘是在原来积的基础上一次又原来积的基础上一次又一次地再乘上一个数一次地再乘上一个数12310069例:例:求自然对数求自然对数e e的近似值的近似值, , 要求其误差小于要求其误差小于0.000010.00001,近似公式为,近似公式为: :算法分析:累加问题算法分析:累加问题归纳出其通项:归纳出其通项:an1/n!n nPrivate Sub Private Sub Form_ClickForm_Click() ()n n Dim i As Integer, sum As Double, t

53、emp1 As Double Dim i As Integer, sum As Double, temp1 As Doublen n sum = 0 sum = 0 各项阶乘倒数总和各项阶乘倒数总和各项阶乘倒数总和各项阶乘倒数总和n n i = 0i = 0 递增变量递增变量递增变量递增变量n n temp1 = 1temp1 = 1 单项阶乘单项阶乘单项阶乘单项阶乘n n Do While 1/temp1 0.00001Do While 1/temp1 0.00001n n sum = sum = sumsum + 1/temp1 + 1/temp1n n i = i + 1 i = i +

54、 1n n temp1 = temp1 = temp1temp1 * i * in n Loop Loopn n Print Print 计算了计算了计算了计算了 ; i; ; i; 项的和是项的和是项的和是项的和是 ; sum; sumn nEnd SubEnd Sub70穷举法穷举法 “穷举法穷举法”也称为也称为“枚举法枚举法”或或“试凑法试凑法”, 即即对可能出现的各种情况逐一进行测试,判断是否满足对可能出现的各种情况逐一进行测试,判断是否满足条件,从中找出那些满足条件的结果作为问题的解。条件,从中找出那些满足条件的结果作为问题的解。 例如用计算机破译密码、探寻路径等。例如用计算机破译密

55、码、探寻路径等。 这是一种最这是一种最“笨笨”的方法,一般采用循环来实现。的方法,一般采用循环来实现。71Private Sub Form_Click() Dim A As Integer, B As Integer, C As Integer, D As Integer Dim S1 As Integer, S2 As Integer, S3 As Integer For A = 1 To 9 For B = 0 To 9 For C = 1 To 9 For D = 0 To 9 S1 = A * 1000 + B * 100 + C * 10 + D S2 = C * 100 + D *

56、 10 + C S3 = A * 100 + B * 10 + C If S1 - S2 = S3 Then Print A; B; C; D End If Next D Next C Next B Next AEnd Sub数字灯谜:数字灯谜: ABCD - CDC ABC72递推法递推法 递推法又叫迭代法,是利用问题本身递推法又叫迭代法,是利用问题本身所具有的一种递推关系求问题解的方法。所具有的一种递推关系求问题解的方法。 递推法的基本思想是把一个复杂的计算递推法的基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复过程转化为简单过程的多次重复。每次重复都都从旧值的基础上递推出

57、新值,并由新值替从旧值的基础上递推出新值,并由新值替代旧值代旧值。例如数列:例如数列:1 2 2 4 8 32 73斐波那契数列0,1,1,2,3,5,8,13,Private Sub Form_Click() a = 0 b = 1 Text1.Text = Str(a) & Str(b) & Chr(13) & Chr(10) For i = 1 To 9 a = a + b b = a + b Text1.Text = Text1.Text & Str(a) & Str(b) & Chr(13) Next i End Sub递推法递推法打印前20项若要打印前30项呢?这个干嘛?74数组排

58、序数组排序两种算法:选择排序、冒泡排序两种算法:选择排序、冒泡排序对已知存放在数组中的对已知存放在数组中的n个数,进行排序。个数,进行排序。751 1、选择法排序、选择法排序、选择法排序、选择法排序算法思想:算法思想:算法思想:算法思想: (1 1)对对对对有有有有n n个个个个数数数数的的的的序序序序列列列列,从从从从中中中中选选选选出出出出最最最最小小小小的的的的数数数数,与与与与第第第第1 1个个个个数数数数交交交交换换换换位置;位置;位置;位置;(2 2)除除除除第第第第1 1个个个个数数数数外外外外,从从从从其其其其余余余余n-1n-1个个个个数数数数中中中中选选选选最最最最小小小小

59、的的的的数数数数,与与与与第第第第2 2个个个个数数数数交换位置;交换位置;交换位置;交换位置;(3 3)依依依依次次次次类类类类推推推推,选选选选择择择择了了了了n-1n-1次次次次后后后后,这个数列已按升序排列。这个数列已按升序排列。这个数列已按升序排列。这个数列已按升序排列。数组排序数组排序原始数据:869327第一轮后:269387第二轮后:239687第三轮后:236987第四轮后:236789第五轮后:23678976Private Sub Form_Click() Dim n As Byte, i As Byte, j As Byte, k As Byte, temp As Si

60、ngle Dim a() As Single n = InputBox(请输入数组元素个数请输入数组元素个数, 输入数据输入数据) ReDim a(n) For i = 1 To n a(i) = Int(Rnd * 90) + 10 Next i For i = 1 To n 1总共要交换总共要交换n-1次次 k = i假定第假定第i个数最小个数最小 For j = i + 1 To n从第从第i个数后面开始比较个数后面开始比较 If a(j) a(k) Then k = j找到最小的数的下标找到最小的数的下标 Next j temp = a(i): a(i) = a(k): a(k) =

61、temp交换交换 Next i For i = 1 To n Print a(i); Next i PrintEnd Sub772 2、冒泡法排序、冒泡法排序、冒泡法排序、冒泡法排序算算算算法法法法思思思思想想想想:从从从从后后后后往往往往前前前前将将将将相相相相邻邻邻邻两两两两个个个个数比较,小的调到前头数比较,小的调到前头数比较,小的调到前头数比较,小的调到前头(1 1)有有有有n n个个个个数数数数,第第第第一一一一趟趟趟趟将将将将相相相相邻邻邻邻两两两两个个个个数数数数比比比比较较较较,小小小小的的的的调调调调到到到到前前前前头头头头,经经经经n-1n-1次次次次两两两两两两两两相相相

62、相邻邻邻邻比比比比较较较较后后后后,最最最最小小小小的的的的数数数数已已已已“ “浮浮浮浮起起起起” ”,放放放放在第一个位置;在第一个位置;在第一个位置;在第一个位置;(2 2)第第第第二二二二趟趟趟趟对对对对余余余余下下下下的的的的n-1n-1个个个个数数数数按按按按上上上上法法法法比比比比较较较较,经经经经n-2n-2次次次次两两两两两两两两相相相相邻邻邻邻比比比比较较较较后后后后得得得得到到到到次次次次小的数;小的数;小的数;小的数;(3 3)依依依依次次次次类类类类推推推推,n n个个个个数数数数共共共共进进进进行行行行n-1n-1趟趟趟趟比比比比较较较较,就就就就能能能能得得得得到

63、到到到最最最最终终终终结结结结果果果果。在在在在第第第第j j趟趟趟趟比比比比较较较较中要进行中要进行中要进行中要进行n-jn-j次两两比较。次两两比较。次两两比较。次两两比较。原始数据:869327第一轮后:286937第二轮后:238697第三轮后:236879第四轮后:236789第五轮后:23678978Private Sub Command1_Click() Dim a(1 To 6) Dim n%, i%, j%, iMin%, t%, k% n = 6 a(1) = 8:a(2) = 6: a(3) = 9: a(4) = 3: a(5) = 2: a(6) = 7 For k = 1 To n Print a(k); Next k Print For i = 1 To n - 1 For j = n To i + 1 Step -1 If a(j) a(j - 1) Then t = a(j) a(j) = a(j - 1) a(j - 1) = t End If Next j For k = 1 To n Print a(k); Next k Print Next iEnd Sub原始数据:869327第一轮后:286937第二轮后:238697第三轮后:236879第四轮后:236789第五轮后:23678979

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号