收藏 分销(赏)

高中信息关键技术算法与程序设计VB选修.doc

上传人:快乐****生活 文档编号:2825964 上传时间:2024-06-06 格式:DOC 页数:20 大小:119.54KB 下载积分:10 金币
下载 相关 举报
高中信息关键技术算法与程序设计VB选修.doc_第1页
第1页 / 共20页
高中信息关键技术算法与程序设计VB选修.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
一、算法 (1)、计算机解决问题过程 计算机程序(Computer Program)是计算机如何去解决问题完毕任务一组可执行指令。 程序设计(Program Design)是寻找解决问题办法,并将其实现环节编写成计算机可执行程序过程。 程序设计语言(Program Language)泛指一切用于书写计算机程序语言。 计算机解决问题和人解决问题有着本质区别:计算机解决问题要经历分析问题、拟定算法、编程求解等基本过程主。计算机解决问题流程如下: 开始→分析问题→设计算法→编写程序→运营程序→结束 编写程序时,一方面要对问题进行详细分析,明确已知条件下初始状态及要达到目的,找出解决问题办法和过程,并抽取出一种数学模型,形成算法;然后将这个数学模型连同它要解决数据,用计算机能辨认方式描述出来,使之成为计算机能解决对像;最后用程序设计语言设计出详细问题求解过程,形成计算机程序。 (2)算法描述办法 ①、算法定义及其特性 算法:就是解决问题思想办法,对解题过程精准描述。 计算机解决问题环节为分析问题、设计算法、编写程序、调试程序。 算法是程序设计“灵魂”,世界知名计算机科学家尼克劳斯·沃斯(N.With)指出:算法+数据构造(Data Structure)=程序。 算法具备如下特性。 1、有穷性:一种算法必要保证执行有限步之后结束; 2、拟定性:算法每一环节必要有确切定义; 3、输入:一种算法有0个或各种输入,以刻画运算对象初始状况,所谓0个输入是指算法自身定出了初始条件; 4、输出:一种算法有一种或各种输出,以反映对输入数据加工后成果。没有输出算法是毫无意义; 5、可行性:算法中执行任何计算步都是可以被分解为基本可执行操作步,即每个计算步都可以在有限时间内完毕;(也称之为有效性) ②、算法描述办法有自然语言、流程图、伪代码三种形式 自然语言描述法:指用人们寻常生活中使用语言(本国语言),用自然语言描述符合咱们习惯,且容易理解。 例1:求圆周长和面积 算法如下:(自然语言描述法) (1)输入半径r ; (2) 计算周长c=2*π*r ; (3) 计算面积 s=π*r*r ; (4) 输出周长c,输出面积s ; (5) 结束 流程图描述:也称程序框图,它是算法一种图形化表达办法。且描述算法形象、直观,更易理解。 惯用“流程图”所用基本符号及功能 程序框 名称 功能   开始/结束框 表达算法开始或结束   输入/输出框 表达算法中变量输入或输出   解决框 表达算法中变量赋值与计算   判断框 表达算法中条件判断   流程线 表达算法中流向   连接点 表达算法中连接 例1:求圆周长和面积 c←2*π*r s←π*r*r 输出c,s 输入r 结束 开始 伪代码描述法:是介于自然语言和计算机程序语言之间一种算法描述。是专业软件开发人员惯用办法。流程图基本图形及功能: 例1:求圆周长和面积 input r c=2*π*r s=π*r*r print c,s 二、程序设计基本 1.程序设计语言 程序设计语言经了机器语言、汇编语言、高档语言三个阶段。高档语言又分解释型语言和编译型语言。 1、机器语言:是计算机能直接辨认语言,机器语言是由一串由“0”和“1”构成二进制代码。 2、汇编语言:是一种符号化机器语言,用英文助记符代替机器语言,比机器语言容易辨认和记忆,提高了程序可读性。它缺陷是依赖机器,不同机器有不同指令集,通用性差,使用时还必要翻译成目的程序执行。 3、高档语言:是更接近自然语言和数学语言编程语言,它不依赖机器,通用性好,更容易掌握。高档语言程序可读性强,更于修改和维护。常用高档语言:C语言、C++、pascal、java、C#、VB、Basic 结识可视化编程工具-VB语言 Visual Basic 是基于Basic可视化程序语言,所谓可视化程序设计,重要是指程序设计人员运用软件自身提供各种控件,像搭积木式地应用程序各种界面,然后编写少量代码就可以构建应用程序。 可视化编程普通环节:设计程序界面→编写程序代码→调试、运营程序 面向对象程序设计就是以对象为中心,以事件为过程执行起点。VB可提供事件有单击(Click)、双击(DbClick)、加载(Load)、按键(KeyPress)等,办法是对象可以操作,这些操作普通是一种动作或一段程序 对象类型 意义 前辍 名称举例 Form 窗体 Frm Frmfind Command 命令按钮 Cmd Cmdok Label 标签 Lbl Lblinput textbox 文本框 txt txtsource 下面是几种应理解文献。 .vbp文献:与VB工程关于文献和对象清单,是一种文本文献。 .frm文献:是包括窗体及控件属性设立、有关程序代码文献。 .ocx文献:是VB扩展文献。 .bas文献:是原则模块文献。 2.数据及运算 ①.数据类型 VB提供了数值型、字符型、布尔型、日期型等基本数据类型。 惯用数据类型 整型 Integer 从-32768到32767 长整型 Long 从-到 单精度实型 Single 负数-3.402823E+38到-1.401298E-45 正数1.40129E-45到3.402823E38 但它只有7位有效数字 双精度实型 Double 绝对值不大于10308数,它有15位有效数字 日期型 Date(Time) 如:#-01-31# #01/31/# 字符型 String 如:“中华人民共和国”,“zhongguo” 布尔型 Boolean True或False 注意: (1)、浮点型(单精度型和双精度型合称)数据表达办法:浮点数在计算机中类似于数学中实数,例如304707表达到3.04707E5 (2)字符串表达法:“Visual Basic”、“245”、“=33+2”等。 (3)日期型数据表达办法:用一对“#”号把日期或时间括起来,如#/12/25#表达12月25日。 ②.常量与变量 (1)、在VB中用常量()表达程序运营过程中事先设立、其值不能变化数据。VB中常量有数值常量、字符串常量等。常量定义形式如下 Const 常量名 [As 常量类型] = 表达式 如:Const pi As Single = 3.14159 常量名为pi (2)、变量()是内存中存储数据存储单元,其中存储数据称为变量值。 变量声明: Dim <变量名 >As <变量类型> 如:Dim a As Integer 定义一种 整型变量,变量名为a 变量命名注意要点: 1、必要以字母开头,不能以数字或其她字符开头。 2、只能由字母、中文、数字学或下划线构成,不能具有小数点、空格等字符。 3、最长不超过255个字符 4、不能以VB保存字作变量名,如语句定义符、函数名等。 5、VB不区别变量名中字母大小写。如HELLO和Hello是同一种变量。 6、变量名最佳取故意义名称,普通在前面加上类型缩写。 惯用前辍有:字符型(str)、整型(int)、长整型(lng)、单精度(sng)、双精度(dbl)、布尔型(bln)、日期型(dtm)。 ③.运算符与表达式 1.在VB中依照运算功能不同将运算符分为算术运算符、字符串运算符、日期运算符、关系运算符和逻辑运算符等。 2.表达式是由变量、常量、运算符、函数和圆括号按一定规律组合而成。VB中惯用表达式有算术表达式、字符串表达式、日期表达式、关系表达式、逻辑表达式等。 算术运算: + - * ^ / \ mod 加 减 乘 乘方 除 整除 取余 算术运算符规定参加运算量是数值型,运算优先级为:指数>取负>乘除法>整除>加减,运算成果是数值型。 关系运算: = > < >= <= <> 等于 不不大于 不大于 不不大于等于 不大于等于 不等于 关系表达式运算成果为布尔值True 或 False 逻辑运算:Not(取反)And(与) Or(或),运算成果为布尔型(Boolean)True 或 False,逻辑运算符优先级为:No > And > Or 日期运算符与日期表达式: 日期表达式是用日期运算符“+”或“-”将算式表达式、日期型常量、日期型变量、日期函数等连接起来式子,如表达式“#/09/01# +30”运算成果是“-10-1”;表达式“#/10/20# - #/10/10#”运算成果为整数10 字符运算: 字符串连接符为“+”和“&” “123” + “45” = “12345” “123” & “45” = “12345” 123 + “45” = 168 “123” + 45 = 168 运算符执行顺序:在VB中,当一种表达式中同步浮现各种运算符时,运算顺序由运算符优先级决定,优先级高运算符先运算,优先级相似从左向右进行运算。不同性质运算符优先级如下。 算术运算符 > 字符串运算符 >  关系运算符 >  逻辑运算符 ④.惯用语句 1.赋值语句格式:变量名=表达式 把右边数或表达式值赋给左边变量。 2.Print语句格式为:[对象名.] Print [表达式列表] Print语句是VB中输出语句,其功能是在指定对象上输出成果,默认对象为当前窗体。 Print语句背面无表达式时,表达换行;Print显示项背面没有符号,表达显示完换行;Print语句显示项用分号分隔,表达后续显示项紧凑显示;Print语句显示项用逗号分隔,表达后续显示项分区显示,每区14个字符位。 3.注释语句格式:Rem注释内容, 当使用Rem语句时,必要单独写一行。使用“ ‘ ”注释语句时,可以单独写一行,也可以跟在其他语句背面。 4.结束语名有格式:End。 是VB强制结束语句, ⑤.惯用函数 1.交互函数。 (1)InputBox( )函数是一种输入函数。 格式:InputBox (提示[,标题][,默认值][,x坐标][,y坐标]) 例:InputBox ( “请输入一种数” ) (2)Msgbox( )函数重要来显示各种样式消息对话框。 格式:Msgbox(提示信息[,按钮][,标题] ) 例:Msgbox(““ 输入顾客名不对的 ” , 16 , “ 提示 ”) 2.数学函数。 数学函数用于数学运算,数学函数重要有如下几种: 函数名 阐明 示例 成果 Sin(X) X弧度正弦 Sin(0) 0 Cos (X) X弧度余弦 Cos (0) 1 Tan(X) X弧度正切 Tan(0) 0 Atn(X) X用弧度表达反正切值 Atn(0) 0 Abs(X) X绝对值 Abs(-3.5) 3.5 Exp(X) e指定次幂,即ex Exp(3) 20.086 Log(X) 一种数值X自然对数 Log(10) 2.3 Sqr(X) X平方根 Sqr(9) 3 Sgn(X) 符号函数:X>0,得到1, X<0,得到-1,X=0得到0 Sgn(-3.5) -1 Int(X) 不不不大于给定数X最大整数 Int(-1.6) -2 Rnd 产生[0,1 ]之间小数 Rnd 返回1随机数 Fix(X) X整数某些 Fix(-1.6) -1 Cint(X) 类型为:Integer -322768~32767 小数某些四舍五入 CLng(X) 类型为:Long -~ 小数某些四舍五入 注意:三角函数中参数使用弧度数,Rnd函数返回[0,1]之间一种随机实数,普通和Randomize为初始化随机数生成器。 3.字符串函数 VB提供了丰富字符串解决函数,学用字符串函数有如下几种 Mid(C,N1,N2) 从C中N1位开始取出长度为N2子串 Mid(“ABCDEFG”,3,2) “CD” Right(C,N) 返回字符串右边N个字符 Right(“ABCDEFG”,3) “EFG” Left(C,N) 返回字符串左边N个字符 Left(“ABCDEFG”,3) “ABC” Len(C,N) 测量字符串长度 Len(“VB学习开始”) 7 Space(N) 产生N个空格构成字符串 “ABC”&“Space(N) ”& “113” “ABC 123” 4.日期函数 Date() 返回当前系统日期(yy-mm-dd) Date()或Date 04-12-18 Day() 反回指定日期日数 Day( “10/22/” ) 22 Month() 反回指定日期月数 Month( “10/22/” ) 10 Year() 反回指定日期年份 Year( “10/22/” ) Time() 返回系统时间 Time()或Time 10:36:08 3.程序设计顺序构造 VB程序有三种基本构造,即顺序构造、选取构造和循环构造。顺序构造是三种构造中最基本构造,在顺序构造中,算法各个环节是按语句先后顺序执行。 4.程序设计分支构造 (1)、If语句 1.单分支If格式为: If <关系表达式> Then 语句块 End if 2.双分支If语句格式: If <关系表达式> Then 语句块1 Else 语句块2 End if 例:在Text1文本框中输入一种年号,判断它与否是闰年,并输出判断成果“是闰年”或“不是闰年”。 判断闰年算法是:如果此年号能被400除尽,则它是闰年,否则如果它能被4整除而不能被100整除,则它是闰年,否则它不是闰年。打开文献“Z:\38\工程1.vbp”,完善程序后并保存。 Private Sub Command1_Click() Dim year As Integer year = Val(InputBox("请输入年号:")) If ((year Mod 4 = 0) And (year Mod 100 <> 0))or (year Mod 400 = 0) Then Print "是闰年" Else Print "不是闰年" End If End Sub 3.使用If语句多层嵌套还可以实现程序多分支构造,但程序构造较啰嗦。 (2)、Select Case Select Case语句格式: Select Case 表达式 Case 表达式列表1 语句块1 Case表达式列表1 语句块2 …… Case表达式列表n 语句块 n End Select “表达式列表”普通是一组常量值,每个值拟定一种分支。表达式列表可以使用下面格式: (1)一组用逗号隔开若干表达式,如Case 1,2,3表达1,2,3满足指定条件。 (2)表达式1 to 表达式2,如:Case 70 to 80这一取值范畴满足指定条件。 (3)Is关系运算符表达式,如:Case Is>30 ,表达不不大于30满足指定条件。 例:输入不同飞船速度后,判断出它飞行状况。 在“神州九号载人飞船”飞行程序中,其飞行状况与飞行速度关系如下表: 飞船速度(V) 单位(km/s) 飞行状况 7.91<=V<11.19 飞船绕地球似做匀速圆周运动 11.19<=V<16.67 飞船离开地球控制 ,环绕太阳转 V>16.67 飞船挣脱太阳引力飞出太阳系 Private Sub Command1_Click() Dim v As Single v = Val(InputBox("请输入飞船速度值")) Select Case v Case Is > 16.67 Label1.Caption = "飞船挣脱太阳引力飞出太阳系" Case Is >=11.19 Label1.Caption = " 飞船离开地球控制,环绕太阳转" Case Is >=7.91 Label1.Caption = "飞船绕地球似做匀速圆周运动" Case Else Label1.Caption = " 输入数据错误!" End Select End Sub 5.程序设计循环构造 1.For/Next循环语句 For/Next循环语句学用来解决已知循环次数程序设计问题。 格式: For 循环变量=初值 To 终值 [Step步长值] <循环体> Next [循环变量] Next后循环变量与For后循环变量必要相似 例1:求s=1+2+3+4.....+100 Private Sub Form_Click() Dim i As Integer Dim sum As Integer sum = 0 For i = 1 To 100 step 1 sum = sum + i ' 循环体 Next i Print "sum=";sum End Sub 循环变量初值、终值、循环变量增量都是数值型。其中要重复执行操作称为循环体,增量可正可负,如果没有设立Step,则增量缺省值为1 a循环变量取初值; b循环变量与终值比较,没有超过终值转3,否则循结束,接着执行循环语句后继语句; c执行一次循环体 d循环变量增长一种增量 e重复环节2~4。 以上可以看出,For-Next循环变量是一种当型循环。阐明 1、For语句与Next语句必要成对浮现,并且它们当中“循环变量”必要是同一种变量,如上例中均为I。 2、当循环变量为正时,循环变量超过终值,是指循环变量值不不大于终值时;若为负,则是指循环变量值不大于终值。 例2:编写程序,使能打印下面所示图案。 @ @@ @@@ @@@@ @@@@@ @@@@@@ 程序: Private Sub Form_Click() Dim i As Integer Dim j As Integer For i = 1 To 6 ‘外循环打印6行 For j = 1 To i ‘内循环打印个数 Print “@”; Next j Print Next i End Sub 一种FOR循环里包括了另一种FOR,咱们称它为嵌套循环。 2.Do/Loop循环语句 Do/Loop循环语句惯用来解决未知循环次数程序设计设计问题,可分为当型循环和直到型循环两种。 当型循环是指当条件成立时才执行循环,惯用Do While/Loop或Do/Loop While循环语句;而直到型循环是指直到条件成立时才跳出循环,惯用Do/Loop Until循环语句。 Do While/Loop循环语句格式:  Do While <条件>        <循环体>     Loop “条件”是关系表达式或逻辑表达式。Do While/Loop循环就是当给定“条件”为True时,执行循环体,给定“条件”为False时,不执行循环体。 Do While/Loop循环执行过程如下: (1)执行Do语句; (2)执行循环体; (3)执行Loop Until语句,如果“条件”不成立,转到(1)执行,否则转到(2)执行; (4)执行Loop语句后语句。 例1:求最大公约数 Private Sub Command1_Click() Dim a As Integer Dim b As Integer Dim r As Integer a = InputBox("输入a") b = InputBox("输入b") r = a Mod b Do While r <> 0 a = b b = r r = a Mod b Loop Print b End Sub 例2:如果国内人口每年以平均1.5%速度增长,问多少年后国内人口达到或超过15亿?设当前人口为12.3亿。 Private Sub Form_Click() Dim p As Single Dim r As Single Dim n As Integer p = r = 0.015 n = 0 Do p = p * (1 + r) n = n + 1 Loop Until p >= Print n;"年后","人口=";p End Sub 例3完毕下面程序,使得程序运营时单击窗体后,计算1+2+3+……+n<500n最大值,并在文本框Texe1中显示成果。 Dim s As Integer Dim n As Integer Do While s<500 n=n+1 s=s+n Loop Text1.text=str(n-1) 6.构造化程序设计思想 构造化程序设计思想规定了一套办法,规定程序设计者按照一定构造形式来设计和编写。 1.一种大程序可划为若干个模块,每个模块又可以继续分为更小子模块,最后分出模块能完毕一种独立功能,模块之间按层次关系进行组织。 2.程序由某些基本构造构成,任何一种复杂程序都可以由三种基本构造构成,即顺序构造、选取构造、循环构造。 3.程序设计时应由顶向下,逐渐细化实行办法。使整个问题可用程序设计语言明确地描述来为止。 例:下面是用VB编写求1+1/2+1/3+……+1/100和程序段,其构造属于( ) Dim i As Ieteger,sun As Integer Sun=0 For i=1 to 100 Sum=sum+1/i Next I Print “ sum= ” ;sum 7.面向对象程序设计思想 面向对象程序设计环绕真实世界概念来组织模型,采用对象来描述客观实体,从所解决数据入手,以数据为中心来描述系统。 例:VB是面向对象程序设计语言,对象三个要素分别是什么?在VB中经常使用哪些事件?在VB中对象普通具备哪些属性? 分析:本题考核对对象结识,理解对象属性、办法和事件三大要素内涵。在编写程序时惯用事件有“单击(Click)”、“双击(DbClick)”等,VB对象普通具备名称、位置、大小、字体、颜色等属性。 三、算法与问题解决 1、解析法:是指通过度析问题中各要素之间关系,用最简洁语言或形式化得符号来表达她们关系,得出解决问题所需表达式,然后设计程序求解问题办法。 使用解析法包括四个环节:分析问题、建立数学模型、写出解析表达式、解决问题。 如:京沪动车以每小时300km/h速度从北京开往上海(全程1400km)跑完全程所需时间用t=s/v计算。这种解决问题办法就是算法。 鸡兔同笼问题是国内古代有名数学题,即笼子中有鸡和兔若干,已知鸡和兔总头数是m,总脚法是n,问笼中有鸡、各多少只?(注意:n>2m,n为偶数)。 Dim x As Integer,y As Integer,m As Integer,n As Integer 'x:鸡;y:兔;m:头数;n腿数 m = Val(InputBox("输入m值","解析法")) m = Val(InputBox("输入n值","解析法")) X= ①  Y= ②  Print "鸡:";x;"兔:";y 分析:本题为完美程序题,重要写出求鸡、兔数量公式。由题意可知,设鸡为x只,兔为y只,用数学办法可列出方程组 m=x+y n=2x+4y 解这个方程组可得x=(4m-n)/2,y=m-x 2、穷举法:是例举一切与命题有关状况,然后依照问题设定条件,逐个加以检查,找到满足条件解。 例1:公元6世纪,中华人民共和国《张丘建算经》有一道知名百鸡问题:公鸡5钱1只,母鸡3钱1只,小鸡三只1钱,有人用100钱买了100只鸡,请完美程序,求其中公鸡、母鸡、小鸡各多少只。 For i=0 to 20 For j=0 to 33 K= ① If 5*I+3*j+k/3= ② then Print i,j,k Next j Next i 分析:本题使用是穷举法,从if语名可以看出,i代表公鸡数,j代表母鸡数,k代表小鸡数,故第一种填空为100-i-j,if语句是判断钱数,按题意第二空为100。 例2:鸡兔同笼,共有100条腿,40个头,问鸡有几只,兔有几只? Dim Ji As Integer 'Ji变量表达鸡个数 Dim Tu As Integer 'Tu变量表达兔个数 Dim Leg As Integer 'Leg变量表达腿数 For Ji = 1 To 40 Tu = ① '计算腿数 Leg = ② + Tu * 4 '如果腿正好100只,则打印。 If Leg = ③ Then Print "鸡=";Ji;"只","兔=";Tu;"只" End If Next Ji 分析:本题使用是穷举法,鸡从1到40列举,兔数量就是40-鸡数量,故第一处为40-ji,接着计算脚总数,第二处应是鸡脚数为ji*2,第三处判断当鸡从1到40列举时依照其中某一鸡数量值计算总脚数与否为100,是100就打印鸡与兔只数。 3、递归法:如果一种函数自己调用了自己,这种算法叫递归算法。例如函数A自己调用了自己,这就是递归算法。此外,例如函数A调用了函数B,函数B反过来调用了函数A算法,也是递归算法。 递归算法特性是设法将规模较大问题分解为规模较小问题,然后通过这些规模较小问题也能采用同样办法分解规模成更小问题,并通过这些更小问题解构造出规模更大问题解。当规模为1时,能直接得解。 由于递归算法能引起一系列函数调用,并且也许有一系列重复计算,因此递归算法执行效率相对较低。 运用递归算法解决问题时,一方面要对问题如下三方面进行分析。 (1)找出决定问题更大规模。 (2)找出解决问题边界条件及边界值。 (3)构造解决问题通式。 1.自定义函数。 [Public|private] Function <函数名称> ([<参数列表>])[As<类型>] <局部常量、变量定义> <语句组> [函数名=返回值] End Function 自定义函数调用有如下三种格式。 格式1:变量=函数名称(参数) 格式2:Call函数名称(参数) 格式3:函数名称(参数) 2.在子过程中调用递归调用。普通格式如下。 If 边界条件1成立 Then 赋予边界值1 [Else 赋予边界值2 ……] Else 调用解决问题通式 End If 例1: 用递归算法求6!. Public Function a(n As Integer) As Long If n=1 Then a= ① Else a= ② End If End Function Private Sub Command1 Click() Print “a(6)=”;a ③ End Sub 分析:递归算法是程序设计一种难点,递归程序核心是要找出问题递归关系和初始值。办法之一就是运用递归法依照问题归纳总结出递归式,加上初始条件,从而编写递归函数。这里边界条件是当n=1时,1阶乘等于1,故第一空为1,当没用边界条件时,如当n=6时,6=6*5!,故第二空应是a(n-1)*n,第三空应是(6)。 例2:用递归法求斐波那契数列1,1,2,3,5,8,…第10项值。 Public Function Fib(n As Integer) As Integer If (n = 1) Or (n = 2) Then Fib = ① Else Fib = Fib(n - 1) + Fib(n - 2) ② End Function Private Sub Command1_Click() Dim S As Integer S = Fib( ③ ) Print "S=" & CStr(S) End Sub 分析:这里边界条件是当n=1时,1斐波那契数列值为1,故①处填1,当没用边界条件时,如n=3时,Fib=Fib(3-1)+Fib(3-2), 第3项值为第二项值加第一项值。②处应是判断结束标志End If ,s为第10项值,故③ 值为10。 4、排序与查找数据 数组:数组是在程序设计中,为了解决以便, 把具备相似类型若干变量按有序形式组织起来一种形式。 定义数组格式如下: Dim 数组名 (常量)As 数据类型 例:Dim Array (9) As Integer 定义数组包括10个元素下标从0到9。 定义数组时也可以指写上 下标起始值。 例:Dim IntegerArray (2 to 10) As Integer 定义数组具有9个元素,下标从0到10. 还可定义多维数组,如: Dim ThreeD (1 to 4,2 to 5,3 to 6) As Integer,定义了一种三维数组(4×4×4)。 ①.顺序查找 数据查找分为顺序查找和二分查找两种。 顺序查找时,普通从数据第一种元素开始中,按照数据顺序查找指定核心值;如果被查数据和该核心值匹配,则表达找到,如果所有数据与核心值都不匹配,则表达被查数据中不存在该核心值。 例1:学校秋季运动会100米短跑比赛后,要查找运动员成绩,数组a中存储是20名运动员号码,数组b中存储是运动员相应成绩,现输入运动员号码来查找运动员成绩,如果找到则显示成绩。 下列程序中空白处代码应为( )。 Dim a(19) As Integer Dim b(19) As Integer Private Sub Command1_Click() Randomize ‘打开随机数开关 For i=0 to 19 a(i)=100+i ‘生成20名运动员号码,用于测试程序 a(i)=10+Int(Rnd*10)/10 ‘生成20名运动员随机成绩,用于测试程序 Next I End Sub Private Sub Command2_Click() Dim ret As Boolean Ret=False Key=Val(Text1.Text) For I=0 to 10 If ① Then Print “ 运动员”;Key;”成绩是:”;b(i) Ret= ② End If Next I IF Not ret Then Print “没有找到这个运动员成绩” End Sub 分析:查找事实上就是进行比较,顺序查找就是从第一种数组元素开始,比较每一种元素中值跟核心值与否相似,相似表达找到,①是a(i)=key ②是True. ②.二分法查找 二分法查找也叫折半查找,它规定被查找数据是有序,否则无法使用二分法查找。运用二分法查找时,一方面设立一种上边界和一种下界,然后取上下界中间元素与指定核心值进行比对。如果两者相符,表达找到,结束查找。如果不相符,再判断核心值落在中间元素左半部还是右半部,如果在左部,则保持下界位置不变,将上界设在中间元素前一种位置,重新查找;如果在右部,则保持上界位置不变,将下界设在中间元素后一种位置,重新查找。如此重复进行,若下界不不大于上界,表白没用元素与核心值相匹配,查找结束。 例如:数组a(9)中存储从小到大10个数字字符:2,4,7,9,10,14,18,26,32,40,查找核心字是7元素。 Private Sub Command1_Click() Dim a(9) As Integer ‘定义数组 Dim low As Integer,hight As Integer,mid As Integer‘定义下界、上界、中间数值类型 Dim flg As Boolean ‘定义查找标志为逻辑数据 a(0)= 2:a(1)= 4:a(2)= 7:a(3)= 9:a(4)= 10 a(5)= 14:a(6)= 18:a(7)= 26:a(8)= 32:a(9)= 40 ‘数组赋值 low = 0 ‘设立下界初始值 hight = 9 ‘设立上界初始值 flg = False‘设立查找标志初始为否 Do While low <= hight ‘设立循环查找条件为下界不大于等于上界 mid = (hight + low) / 2 取下上界中间值 If a(mid) = Val(Text1.Text) Then ‘查找输入值与数组中值与否匹配 flg = True ‘标志为true Exit Do ‘退出循环 ElseIf Val(Text1.Text) < a(mid) Then ‘如果输入值不大于下上界中间位值 hight = mid – 1 ‘下界不变、上界由中间位前移一位 Else ‘如果输入值不不大于中间位值 low = mid + 1‘上界不变、下界由中间位后移一位 End If Loop If flg Then Text2.Text = "要找数" & (Text1.Text) & "是数组第" & mid + 1 & "个位置数" Else Text2.Text = (Text1.Text) & "不在数组中" End If End Sub ③.冒泡法排序算法 所谓排序法,就是批将一种无序序列排成一种有序序列过程。 排序算法在计算机编程中使用非常频繁。在实践中,人们设计出了许多好排序算法,如互换排序、插入排序、选取排序、归并排序、基数排序。各种算法均有其自身特点与合用范畴。 “冒泡法排序”也叫“起泡法排序”,是一种比较简朴、易懂互换排序办法,它通过相邻元素进行比较和互换,逐渐将一种无序序列排成一种有序序列。将元素按从小到大顺序排序列为升序排列,反之称为降序排序。 例1:将10个无序数据存储在数组元素a(0)到a(9)中,若要将这些数据按升序排序,下面一段用冒泡法排序程序代码,其中空白处代码应为( )。 Dim a(10) As Integer ‘
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服