




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、算法(1)、计算机解决问题的过程计算机程序(Computer Program)是计算机如何去解决问题完成任务的一组可执行指令。程序设计(Program Design)是寻找解决问题的方法,并将其实现步骤编写成计算机可执行的程序的过程。程序设计语言(Program Language)泛指一切用于书写计算机程序的语言。计算机解决问题和人解决问题有着本质区别:计算机解决问题要经历分析问题、确定算法、编程求解等基本过程主。计算机解决问题的流程如下:开始分析问题设计算法编写程序运行程序结束编写程序时,首先要对问题进行详细分析,明确已知条件下的初始状态及要达到的目标,找出解决问题的方法和过程,并抽取出
2、一个数学模型,形成算法;然后将这个数学模型连同它要处理的数据,用计算机能识别的方式描述出来,使之成为计算机能处理的对像;最后用程序设计语言设计出具体的问题求解过程,形成计算机程序。 (2)算法的描述方法、算法的定义及其特征算法:就是解决问题的思想方法,对解题过程的精确描述。计算机解决问题的步骤为分析问题、设计算法、编写程序、调试程序。算法是程序设计的“灵魂”,世界著名计算机科学家尼克劳斯·沃斯(N.With)指出:算法+数据结构(Data Structure)=程序。算法具有以下特征。1、有穷性:一个算法必须保证执行有限步之后结束; 2、确定性:算法的每一步骤必须有确切的定义; 3、
3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件; 4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; 5、可行性:算法中执行的任何计算步都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成;(也称之为有效性)、算法的描述方法有自然语言、流程图、伪代码三种形式自然语言描述法:指用人们日常生活中使用的语言(本国语言),用自然语言描述符合我们的习惯,且容易理解。例1:求圆的周长和面积算法如下:(自然语言描述法)(1)输入半径r ;(2) 计算周长c=2*r ;(3) 计算面积 s=*r*
4、r ;(4) 输出周长c,输出面积s ;(5) 结束流程图描述:也称程序框图,它是算法的一种图形化表示方法。且描述算法形象、直观,更易理解。常用的“流程图”所用的基本符号及功能 程序框名称功能 开始/结束框表示算法的开始或结束 输入/输出框表示算法中变量的输入或输出 处理框表示算法中变量的赋值与计算 判断框表示算法中的条件判断 流程线表示算法中的流向 连接点表示算法中的连接例1:求圆的周长和面积c2*rs*r*r输出c,s输入r结束开始伪代码描述法:是介于自然语言和计算机程序语言之间的一种算法描述。是专业软件开发人员常用方法。流程图的
5、基本图形及功能:例1:求圆的周长和面积input rc=2*rs=*r*rprint c,s二、程序设计基础1程序设计语言程序设计语言经了机器语言、汇编语言、高级语言三个阶段。高级语言又分解释型语言和编译型语言。1、机器语言:是计算机能直接识别的语言,机器语言是由一串由“0”和“1”构成的二进制代码。2、汇编语言:是一种符号化的机器语言,用英文助记符代替机器语言,比机器语言容易识别和记忆,提高了程序的可读性。它的缺点是依赖机器,不同的机器有不同的指令集,通用性差,使用时还必须翻译成目标程序执行。3、高级语言:是更接近自然语言和数学语言的编程语言,它不依赖机器,通用性好,更容易掌握。高级语言程序
6、可读性强,更于修改和维护。常见的高级语言:C语言、C+、pascal、java、C#、VB、Basic认识可视化编程工具-VB语言Visual Basic 是基于Basic的可视化程序语言,所谓可视化程序设计,主要是指程序设计人员利用软件本身提供的各种控件,像搭积木式地应用程序的各种界面,然后编写少量的代码就可以构建应用程序。可视化编程的一般步骤:设计程序界面编写程序代码调试、运行程序面向对象程序设计就是以对象为中心,以事件为过程执行的起点。VB可提供的事件有单击(Click)、双击(DbClick)、加载(Load)、按键(KeyPress)等,方法是对象能够的操作,这些操作一般是一个动作或
7、一段程序对象的类型意义前辍名称举例Form窗体FrmFrmfindCommand命令按钮CmdCmdokLabel标签LblLblinputtextbox文本框txttxtsource下面是几个应了解的文件。.vbp文件:与VB工程有关的文件和对象清单,是一个文本文件。.frm文件:是包含窗体及控件的属性设置、相关程序代码的文件。.ocx文件:是VB的扩展文件。.bas文件:是标准的模块文件。2数据及运算.数据类型VB提供了数值型、字符型、布尔型、日期型等基本数据类型。常用数据类型整型Integer从-32768到32767长整型Long从-2147483648到2147483647单精度实型
8、Single负数-3.402823E+38到-1.401298E-45正数1.40129E-45到3.402823E38 但它只有7位有效数字双精度实型Double绝对值小于10308的数,它有15位有效数字日期型Date(Time)如:#2008-01-31# #01/31/2008#字符型String如:“中国”,“zhongguo”布尔型BooleanTrue或False注意:(1)、浮点型(单精度型和双精度型合称)数据的表示方法:浮点数在计算机中类似于数学中的实数,比如304707表示成3.04707E5(2)字符串的表示法:“Visual Basic”、“245”、“=33+2”等。
9、(3)日期型数据的表示方法:用一对“#”号把日期或时间括起来,如#2012/12/25#表示2012年12月25日。.常量与变量(1)、在VB中用常量()表示程序运行过程中事先设置、其值不能改变的数据。VB中的常量有数值常量、字符串常量等。常量的定义形式如下Const 常量名 As 常量类型 = 表达式如:Const pi As Single = 3.14159 常量名为pi(2)、变量()是内存中存放数据的存储单元,其中存放的数据称为变量的值。变量的声明:Dim <变量名 >As <变量类型>如:Dim a As Integer 定义一个整型变量,变量名为a变量命名注
10、意要点:1、必须以字母开头,不能以数字或其他字符开头。2、只能由字母、汉字、数字学或下划线组成,不能含有小数点、空格等字符。3、最长不超过255个字符 4、不能以VB保留字作变量名,如语句定义符、函数名等。5、VB不区分变量名中字母大小写。如HELLO和Hello是同一个变量。6、变量名最好取有意义的名称,一般在前面加上类型的缩写。常用的前辍有:字符型(str)、整型(int)、长整型(lng)、单精度(sng)、双精度(dbl)、布尔型(bln)、日期型(dtm)。运算符与表达式1.在VB中根据运算功能的不同将运算符分为算术运算符、字符串运算符、日期运算符、关系运算符和逻辑运算符等。2.表达
11、式是由变量、常量、运算符、函数和圆括号按一定规律组合而成。VB中常用的表达式有算术表达式、字符串表达式、日期表达式、关系表达式、逻辑表达式等。算术运算:+-*/mod加减乘乘方除整除取余算术运算符要求参与运算的量是数值型,运算的优先级为:指数取负乘除法整除加减,运算的结果是数值型。关系运算:=><>=<=<>等于大于小于大于等于小于等于不等于关系表达式的运算结果为布尔值True 或 False逻辑运算:Not(取反)And(与) Or(或),运算结果为布尔型(Boolean)True 或 False,逻辑运算符的优先级为:No > And > O
12、r日期运算符与日期表达式:日期表达式是用日期运算符“+”或“-”将算式表达式、日期型常量、日期型变量、日期函数等连接起来的式子,如表达式“#2003/09/01# +30”的运算结果是“2003-10-1”;表达式“#2003/10/20# - #2003/10/10#”的运算结果为整数10字符运算:字符串连接符为“+”和“&”“123” + “45” = “12345”“123” & “45” = “12345”123 + “45” = 168“123” + 45 = 168运算符的执行顺序:在VB中,当一个表达式中同时出现多种运算符时,运算次序由运算符的优先级决定,优先级高
13、的运算符先运算,优先级相同的从左向右进行运算。不同性质的运算符优先级如下。算术运算符 > 字符串运算符 > 关系运算符 > 逻辑运算符.常用语句1.赋值语句的格式:变量名=表达式把右边的数或表达式的值赋给左边的变量。2.Print语句格式为:对象名. Print 表达式列表Print语句是VB中的输出语句,其功能是在指定的对象上输出结果,默认对象为当前窗体。Print语句后面无表达式时,表示换行;Print显示项后面没有符号,表示显示完换行;Print语句显示项用分号分隔,表示后续显示项紧凑显示;Print语句显示项用逗号分隔,表示后续显示项分区显示,
14、每区14个字符位。3.注释语句格式:Rem注释内容,当使用Rem语句时,必须单独写一行。使用“ ”的注释语句时,可以单独写一行,也可以跟在其它语句的后面。4.结束语名有格式:End。是VB的强制结束语句,.常用函数1.交互函数。(1)InputBox( )函数是一个输入函数。格式:InputBox (提示,标题,默认值,x坐标,y坐标)例:InputBox ( “请输入一个数” )(2)Msgbox( )函数主要来显示多种样式的消息对话框。格式:Msgbox(提示信息,按钮,标题 )例:Msgbox(“ 输入的用户名不正确 ” , 16 , “ 提示 ”)2.数学函数。数学函数用于数学运算,数
15、学函数主要有以下几种:函数名说明示例结果Sin(X)X弧度的正弦Sin(0)0 Cos (X)X弧度的余弦 Cos (0)1Tan(X)X弧度的正切Tan(0)0Atn(X)X用弧度表示的反正切值Atn(0)0Abs(X)X的绝对值 Abs(-3.5)3.5Exp(X)e的指定次幂,即exExp(3)20.086Log(X)一个数值X的自然对数Log(10)2.3Sqr(X)X的平方根Sqr(9)3Sgn(X)符号函数:X>0,得到1,X<0,得到-1,X=0得到0 Sgn(-3.5)-1Int(X)不大于给定数X的最大整数Int(-1.6)-2Rnd产生0,1 之间的小数Rnd返
16、回1随机数Fix(X)X的整数部分 Fix(-1.6)-1Cint(X)类型为:Integer -32276832767小数部分四舍五入CLng(X)类型为:Long -21474836482147483647 小数部分四舍五入注意:三角函数中的参数使用弧度数,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
17、)“EFG”Left(C,N)返回字符串左边N个字符Left(“ABCDEFG”,3)“ABC”Len(C,N)测量字符串的长度Len(“VB学习的开始”)7Space(N)产生N个空格组成的字符串“ABC”&“Space(N) ”& “113”“ABC 123”4.日期函数Date()返回当前系统日期(yy-mm-dd)Date()或Date04-12-18Day()反回指定日期的日数Day( “10/22/2012” )22Month()反回指定日期的月数Month( “10/22/2012” )10Year()反回指定日期的年份Year( “10/22/2012” )20
18、12Time()返回系统时间Time()或Time10:36:083.程序设计的顺序结构VB程序有三种基本结构,即顺序结构、选择结构和循环结构。顺序结构是三种结构中最基本的结构,在顺序结构中,算法的各个步骤是按语句的先后顺序执行。4.程序设计的分支结构(1)、If语句1.单分支If格式为:If <关系表达式> Then语句块End if2.双分支If语句的格式:If <关系表达式> Then 语句块1 Else语句块2End if 例:在Text1文本框中输入一个年号,判断它是否是闰年,并输出判断结果“是闰年”或“不是闰年”。判断闰年的算法是:如果此年号能被400除尽,
19、则它是闰年,否则如果它能被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 Sub3.使用
20、If语句的多层嵌套还可以实现程序的多分支结构,但程序结构较烦琐。(2)、Select CaseSelect Case语句格式:Select Case 表达式Case 表达式列表1语句块1Case表达式列表1语句块2Case表达式列表n语句块 nEnd Select“表达式列表”通常是一组常量值,每个值确定一个分支。表达式列表可以使用下面的格式:(1)一组用逗号隔开的若干表达式,如Case 1,2,3表示1,2,3满足指定条件。(2)表达式1 to 表达式2,如:Case 70 to 80这一取值范围满足指定条件。(3)Is关系运算符表达式,如:Case Is>30 ,表示大于30满足指定
21、条件。例:输入不同的飞船速度后,判断出它的飞行状况。在“神州九号载人飞船”飞行程序中,其飞行状况与飞行速度的关系如下表:飞船速度(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 Lab
22、el1.Caption = "飞船挣脱太阳引力飞出太阳系" Case Is >=11.19 Label1.Caption = " 飞船离开地球的控制,围绕太阳转" Case Is >=7.91 Label1.Caption = "飞船绕地球似做匀速圆周运动" Case Else Label1.Caption = " 输入数据错误!" End SelectEnd Sub5.程序设计的循环结构1.For/Next循环语句For/Next循环语句学用来解决已知循环次数的程序设计问题。格式:For 循环变量=初
23、值 To 终值 Step步长值 <循环体>Next 循环变量Next后的循环变量与For后的循环变量必须相同例1:求s1+2+3+4.+100Private 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=" sumEnd Sub循环变量的初值、终值、循环变量增量都是数值型。其中要重复执行的操作称为循环体,增量可正可负,如果没有设置Step,则增量的缺省值为1
24、a循环变量取初值;b循环变量与终值比较,没有超过终值转3,否则循结束,接着执行循环语句的后继语句;c执行一次循环体d循环变量增加一个增量e重复步骤24。以上可以看出,For-Next循环变量是一种当型循环。说明1、For语句与Next语句必须成对出现,而且它们当中的“循环变量”必须是同一个变量,如上例中均为I。2、当循环变量为正时,循环变量超过终值,是指循环变量的值大于终值时;若为负,则是指循环变量的值小于终值。例2:编写程序,使能打印下面所示的图案。程序:Private Sub Form_Click() Dim i As Integer Dim j As Integer For i = 1
25、To 6 外循环打印6行 For j = 1 To i 内循环打印个数 Print “”; Next j Print Next iEnd Sub一个FOR循环里包含了另一个FOR,我们称它为嵌套循环。2.Do/Loop循环语句Do/Loop循环语句常用来解决未知循环次数的程序设计设计问题,可分为当型循环和直到型循环两种。当型循环是指当条件成立时才执行循环,常用Do While/Loop或Do/Loop While循环语句;而直到型循环是指直到条件成立时才跳出循环,常用Do/Loop Until循环语句。Do While/Loop循环语句的格式:Do While <条件><循环
26、体>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("输入
27、a") b = InputBox("输入b") r = a Mod b Do While r <> 0 a = b b = r r = a Mod b Loop Print bEnd Sub例2:如果我国人口每年以平均1.5%的速度增长,问多少年后我国人口达到或超过15亿?设现在人口为12.3亿。Private Sub Form_Click() Dim p As Single Dim r As Single Dim n As Integer p = 1230000000 r = 0.015 n = 0 Do p = p * (1 + r) n = n
28、+ 1 Loop Until p >= 1500000000 Print n; "年后", "人口=" pEnd Sub例3完成下面程序,使得程序运行时单击窗体后,计算1+2+3+n<500的n的最大值,并在文本框Texe1中显示结果。Dim s As IntegerDim n As IntegerDo While s<500 n=n+1s=s+nLoopText1.text=str(n-1)6.结构化程序设计思想结构化程序设计的思想规定了一套方法,要求程序设计者按照一定的结构形式来设计和编写。1.一个大的程序可划为若干个模块,每个模块
29、又可以继续分为更小的子模块,最终分出的模块能完成一个独立的功能,模块之间按层次关系进行组织。2程序由一些基本结构组成,任何一个复杂的程序都可以由三种基本结构组成,即顺序结构、选择结构、循环结构。3.程序设计时应由顶向下,逐步细化的实施方法。使整个问题可用程序设计语言明确地描述来为止。例:下面是用VB编写的求1+1/2+1/3+1/100的和的程序段,其结构属于( )Dim i As Ieteger,sun As IntegerSun=0For i=1 to 100 Sum=sum+1/iNext IPrint “ sum= ” ;sum7.面向对象程序设计的思想面向对象程序设计围绕真实世界的概
30、念来组织模型,采用对象来描述客观实体,从所处理的数据入手,以数据为中心来描述系统。例:VB是面向对象的程序设计语言,对象的三个要素分别是什么?在VB中经常使用哪些事件?在VB中对象通常具有哪些属性?分析:本题考查对对象的认识,理解对象的属性、方法和事件三大要素的内涵。在编写程序时常用的事件有“单击(Click)”、“双击(DbClick)”等,VB对象通常具有名称、位置、大小、字体、颜色等属性。三、算法与问题解决1、解析法:是指通过分析问题中各要素之间的关系,用最简练的语言或形式化得符号来表达他们的关系,得出解决问题所需的表达式,然后设计程序求解问题的方法。使用解析法包含四个环节:分析问题、建
31、立数学模型、写出解析表达式、解决问题。如:京沪动车以每小时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 = V
32、al(InputBox("输入n的值", "解析法")X=Y= Print "鸡:" x; "兔:" y分析:本题为完美程序题,主要写出求鸡、兔数量的公式。由题意可知,设鸡为x只,兔为y只,用数学方法可列出方程组m=x+yn=2x+4y解这个方程组可得x=(4m-n)/2,y=m-x2、穷举法:是例举一切与命题相关的情况,然后根据问题设定的条件,逐个加以检查,找到满足条件的解。例1:公元6世纪,中国的张丘建算经有一道著名的百鸡问题:公鸡5钱1只,母鸡3钱1只,小鸡三只1钱,有人用100钱买了100只鸡,请完美程序,
33、求其中公鸡、母鸡、小鸡各多少只。For i=0 to 20For j=0 to 33K= If 5*I+3*j+k/3= thenPrint i,j,kNext jNext 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变量表示
34、腿数 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、递归法:
35、如果一个函数自己调用了自己,这种算法叫递归算法。例如函数A自己调用了自己,这就是递归算法。另外,例如函数A调用了函数B,函数B反过来调用了函数A的算法,也是递归算法。递归算法的特征是设法将规模较大的问题分解为规模较小的问题,然后通过这些规模较小的问题也能采用同样的方法分解规模成更小的问题,并通过这些更小问题的解构造出规模更大问题的解。当规模为1时,能直接得解。由于递归算法能引起一系列的函数调用,并且可能有一系列的重复计算,所以递归算法的执行效率相对较低。利用递归算法解决问题时,首先要对问题的以下三方面进行分析。(1)找出决定问题的更大规模。(2)找出解决问题的边界条件及边界值。(3)构造解决问
36、题的通式。1.自定义函数。Public|private Function <函数名称> (<参数列表>)As<类型> <局部常量、变量定义><语句组>函数名=返回值End Function自定义函数的调用有以下三种格式。格式1:变量=函数名称(参数)格式2:Call函数名称(参数)格式3:函数名称(参数)2.在子过程中调用递归调用。一般格式如下。If 边界条件1成立 Then 赋予边界值1Else赋予边界值2Else 调用解决问题的通式End If例1: 用递归算法求6!.Public Function a(n As Integer)
37、 As Long If n=1 Then a= Else a= End IfEnd FunctionPrivate 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 F
38、unction Fib(n As Integer) As Integer If (n = 1) Or (n = 2) Then Fib = Else Fib = Fib(n - 1) + Fib(n - 2) End FunctionPrivate 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项的值为第二项的值加第一
39、项的值。处应是判断结束标志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 Int
40、eger,定义了一个三维数组(4×4×4)。顺序查找数据查找分为顺序查找和二分查找两种。顺序查找时,一般从数据的第一个元素开始中,按照数据的顺序查找指定的关键值;如果被查数据和该关键值匹配,则表示找到,如果所有数据与关键值都不匹配,则表示被查数据中不存在该关键值。例1:学校秋季运动会100米短跑比赛后,要查找运动员的成绩,数组a中存放的是20名运动员的号码,数组b中存放的是运动员对应的成绩,现输入运动员号码来查找运动员成绩,如果找到则显示成绩。下列程序中空白处的代码应为( )。Dim a(19) As IntegerDim b(19) As IntegerPrivate S
41、ub Command1_Click()Randomize 打开随机数开关For i=0 to 19a(i)=100+i 生成20名运动员号码,用于测试程序a(i)=10+Int(Rnd*10)/10 生成20名运动员随机成绩,用于测试程序Next IEnd SubPrivate Sub Command2_Click() Dim ret As BooleanRet=FalseKey=Val(Text1.Text)For I=0 to 10If ThenPrint “ 运动员”;Key;”成绩是:”;b(i)Ret= End IfNext IIF Not ret ThenPrint “没有找到这个
42、运动员成绩”End Sub分析:查找实际上就是进行比较,顺序查找就是从第一个数组元素开始,比较每一个元素中的值跟关键值是否相同,相同表示找到,是a(i)=key 是True.二分法查找二分法查找也叫折半查找,它要求被查找的数据是有序的,否则无法使用二分法查找。利用二分法查找时,首先设置一个上边界和一个下界,然后取上下界中间的元素与指定的关键值进行比对。如果两者相符,表示找到,结束查找。如果不相符,再判断关键值落在中间元素的左半部还是右半部,如果在左部,则保持下界位置不变,将上界设在中间元素的前一个位置,重新查找;如果在右部,则保持上界位置不变,将下界设在中间元素的后一个位置,重新查找。如此反复
43、进行,若下界大于上界,表明没用元素与关键值相匹配,查找结束。例如:数组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)= 10a(5)= 14: a(6)=
44、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 如果输入的值小于下上界中
45、间位的值 hight = mid 1 下界不变、上界由中间位前移一位 Else 如果输入的值大于中间位的值 low = mid + 1上界不变、下界由中间位后移一位 End IfLoopIf flg Then Text2.Text = "要找的数" & (Text1.Text) & "是数组第" & mid + 1 & "个位置的数"Else Text2.Text = (Text1.Text) & "不在数组中"End IfEnd Sub.冒泡法排序算法所谓排序法,就是批将一
46、个无序序列排成一个有序序列的过程。排序算法在计算机编程中使用非常频繁。在实践中,人们设计出了许多好的排序算法,如交换排序、插入排序、选择排序、归并排序、基数排序。各种算法都有其自身的特点与适用范围。“冒泡法排序”也叫“起泡法排序”,是一种比较简单、易懂的交换排序方法,它通过相邻元素进行比较和交换,逐步将一个无序序列排成一个有序序列。将元素按从小到大的顺序排序列为升序排列,反之称为降序排序。例1:将10个无序数据存放在数组元素a(0)到a(9)中,若要将这些数据按升序排序,下面一段用冒泡法排序的程序代码,其中空白处的代码应为( )。Dim a(10) As Integer 要定义为有11个元素的
47、数组For i=0 to 9 For j=0 to 9-i If then t=a(j) a(j)=a(j+1) a(j+1)=t End if Next jNext i分析:本题中要求升序排序,即数据由小到大的冒泡法排序,程序中使用了两重循环,外循环是控制排序趟数,每执行一趟外循环,有序部分的数据就多一个;内循环控制每趟排序时数组元素的比较和交换,也就是只对无序部分的元素进行比较和交换。If语句中条件是判断相邻两个元素的大小,如果前面的元素a(j)大于后面元素a(j+1),则交换两个元素的值,即较大的元素向后移(如果是降序排列,则刚好相反)。故空白处应是a(j)>a(j+1)。例2:用
48、选择排序法将数组a中随机生成的10个整数按升序排列。Private Sub Command1_Click() Dim a(10) As Integer For i = 1 To 10 a(i) = Int(Rnd * 1000) Next i For i = 1 To 10 For j = 1 to i If a(i)< a(j) Then 如果后面数a(i)小于前面数a(j) a(0)= a(i) a(0)作为中间变量,把后面小的数先放入中间变量中 a(i)= a(j) 把前面大的数移入后面 a(j)=a(0) 把中间变量的数赋给前面的数,把小的数移入前面 End If Next j Next i For i = 1 To 10 Print CStr(a(i) Next iEnd Sub插入排序法插入排序法也是一种常用的排序算法,其基本思想是将一个数据序列看做两部分,前一部分是有序的,后一部分是无序的,排序时把无序部分的数据元素逐个插入到有序部分,使得有序部分的元素不断增加,无序部分的元素相应减少,最后所有元素志为有序序列。通常将无序部分中的第一个数赋给哨兵,然后哨兵分别跟有序部分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西班牙语真考题及答案
- 建省宁德市福鼎一中2024届十校联考最后数学试题含解析
- 天然真石漆施工方案
- 江西省赣州市寻乌县博豪中学2024-2025学年高二下学期第一次阶段性检测语文试题
- 外脚手架拆除施工方案
- 2025届陕西省宁强县天津高级中学高三零诊考试英语试题含解析
- 西安医学院《设计论文写作》2023-2024学年第二学期期末试卷
- 贵州省铜仁市德江一中2025届高三最后一卷高三生物试题练习卷含解析
- 宁德师范学院《会计实务操作》2023-2024学年第二学期期末试卷
- 益阳市安化县2025届小学六年级第二学期小升初数学试卷含解析
- 商超行业风险分析
- ICU患者的人文关怀
- 《孟子》五章课件
- 2023污水处理设备维修合同
- 信息化项目咨询服务方案
- 餐饮连锁品牌授权书范本
- 酒店西餐厅物品采购清单
- 医学伦理审查申请表
- 旅行社投标书范本
- 危险作业维修工作方案
- 校园欺凌模拟法庭剧本
评论
0/150
提交评论