1、算法与程序设计操作知识点一、 知识目的内容规定说明1算法及其表达方式理解概念。2程序的基本控制结构理解三种结构的功能,并学会判断。3VB程序设计可视化程序开发工具VBVB数据的表达VB数据的解决选择结构的程序实现循环结构的程序实现一维数组的应用理解知识点的意义,并能应用。二、 知识点整理1、算法及其表达方式考点一:计算机解决问题的过程用计算机来解决问题要经历三个环节:1、分析问题,拟定要用计算机做什么?2、寻找解决问题的途径和方法(设计算法);3、用计算机进行解决(编制和运营程序)。计算机的基本功能与特性:计算机的基本功能是计算,计算机对信息的加工解决本质上是通过计算完毕的。是在程序指令的控制
2、下完毕对所有数据的解决。计算机的基本特性:速度快;准确性高;存储容量大。考点二:算法何为算法?简朴地说,算法(Algorithm)就是解决问题的方法和环节。算法的特性:(1)有穷性(有限性)。(2)拟定性(唯一性)。(3)可行性(能行性)。(4)有0到多个输入。(5)有1到多个输出。如何描述算法?算法描述可以有多种表达方法,一般用自然语言、流程图和计算机语言进行描述。流程图中最基本、最常用的几种符号:2、程序的基本控制结构 任何正规的程序无论它有多复杂,都可以分解为三种基本结构,即顺序结构、选择结构和循环结构。由这三种基本结构可以派生出多样、复杂的“多分支结构”,用其解决各种问题。结构类型流程
3、图示意功能说明顺序结构 一个环节完毕后,顺序执行紧跟着的下个解决环节。如电视节目,按先后顺序直线下来。 一般的程序设计语言中,顺序结构的语句重要是赋值语句、输入/输出语句等。选择(分支)结构 在平常生活中,经常需要对给定的条件进行分析、比较和判断,并根据结果采用不同的操作。在Visual Basic中,这样的问题通过选择结构来解决。如根据天气情况,选择体育课场地问题。选择结构的语句涉及If语句和Select Case语句。循环结构对某个情况e进行判断,当结果为真时,执行解决环节step,然后再次判断这个情况e,当结果为真是,再次执行环节step,并继续判断情况e。总是反复上述过程,直到判断的结
4、果为假。循环结构的语句可以用ForNext语句和Do whileloop语句实现。3、可视化程序开发工具VB考点一:可视化编程的任务设计过程创建工程的基本过程:启动VB,创建一个工程vbp(涉及窗体frm)界面设计属性设定编写代码调试运营调试程序保存退出。注意保存文献的两种情况:1. 工程源文献的保存 程序没有设计完毕,为方便下次的修改编辑,可以将文献保存成工程文献。一个工程通常有两个部分组成:窗体文献.frm和工程文献.vbp,工程文献至少由一个窗体构成。由于一个工程由多个文献构成,为方便解决,可以将同一工程的所有文献放在一个文献夹中。2. 工程可执行文献的保存一个程序设计完毕后,为方便程序
5、的实际应用,我们可以将工程文献保存成可执行文献.exe。工程的可执行文献只可运营程序,不能对可执行文献进行修改编辑。考点二:VB中的几个基本概念:1. 类简朴地说,类是对一类东西抽象出的结果,是一组具有相同属性和操作的对象的集合。在VB中,类是系统设计好的,工具箱上的可视类图标就是标准类控件。部分控件名的前缀约定和命名举例:对象类型意义前缀命名举例Form窗体frmfrmlandCommand命令按钮cmdcmdOKLabel标签lbllblInputTextBox文本框txttxtSourceList列表框lstlstadd2. 对象对象是类的一个实例,是其中具体的个体。例如,窗体上的一个文
6、本框、一个标签都是对象。一个命令按钮就是命令按钮类的一个对象。对象有三个要素:属性、方法和事件。属性:对象的特性称为对象的属性。类中有很多对象,而这些对象既有共有的特点也有各自的特点。VB控件重要属性及其含义:对象属性功能含义Name定义对象的名称,该属性是所有对象共有的属性。每个对象的名称都是唯一的。在代码编写中,对对象的引用也是通过Name属性,用户可以使用系统默认的Name属性值,也可以自己定义。Caption返回或设立对象的标题栏或图标下的文本。Appearance返回或设立对象的外观样式。属性值为0,对象的样式为平面;为1,对象样式为立体。ForeColor返回或设立对象的前景色,在
7、弹出的调色板中选取颜色。BackColor返回或设立对象的背景色,在弹出的调色板中选取颜色。Height返回或设立对象的高度,VB中的单位是twips(缇),1twips=1/1440英寸。Width返回或设立对象的宽度。Left返回或设立控件左边与其容器(窗体、图片框控件、框架控件)左侧之间的距离。Top返回或设立控件顶端与其容器(窗体、图片框控件、框架控件)顶部之间的距离。Visible返回或设立一个值,该值用来拟定对象是否可见。Enabled返回或设立一个值,该值用来拟定对象是否响应用户产生的事件。在VB中,一个对象有很多属性,我们可以通过改变属性窗口中的相应属性值来改变对象的特性。文本
8、框常用属性及其含义属性名功能含义Text该属性存放了文本框内显示的内容。用户可在设计、运营、中断三种状态下设立或修改文本框内的文本。MultiLine当MultiLine为True时,才可以在文本框内输入多行文本。即文本超过控件边界时,自动换行。ScrollBars设立边框的滚动条模式,文本框有四种边框模式:ScrollBars=0,文本框无滚动条;ScrollBars=1,有水平滚动条;ScrollBars=2,有垂直滚动条;ScrollBars=3,有水平和垂直滚动条;文本框出现滚动条前提是必须设立MultiLine为True,否则无效。PasswordChar设立文本框内的显示内容为该属
9、性值的内容。一般设立密码时,会将该属性值设立为“*”,这样用户输入的密码都会以“*”形式显示在文本框内。命令按钮常用属性及其含义属性名功能含义Captipon设立命令按钮上显示的文字。Enabled设立命令按钮是否有效,是否响应应触发事件。Picture设立按钮上所加载的图片。事件:VB是按照事件驱动机制运营程序的,事件的执行能被对象响应。如用户单击一个命令按钮就是一个事件。这个事件就可以被命令按钮辨认并响应,称为命令按钮的单击(Click)事件,不同的对象能辨认的事件也是不同的。方法:方法指对象的动作,就是让对象实行一个动作或执行一项任务。方法是控制对象功能及操作的内部程序。总之,方法指明了
10、对象“能做什么”。4、VB数据的表达考点一、数据类型在VB中,为了便于数据的表达与解决,VB提供了数值型、字符串型、布尔型、日期型等基本数据类型,下表所示的是我们常用的数据类型。VB常用的数据类型数据关键字所占内存取值范围整型Integer2字节-32768 32767长整型Long4字节- 单精度型Single4字节负数:-3.402823E38 -1.4011298E-45;正数:1.401298E-45 3.402823E38双精度型Double8字节负数:-1.E308 -4.E-324;正数:4.E-324 1.E308;字符串型String10字节+字符串长度定长字符串:0 655
11、35个字符;不定长字符串:0 20亿个字符。布尔型(逻辑型)Boolean2字节True 或False日期型Date8字节100/1/1 9999/12/31考点二、常量与变量1.常量的形式及定义 在程序运营期间始终保持不变的量,我们把它叫做常量(Constant)。VB中的常量有数值常量、字符串常量等。(1)数值常量类似于数学中的常数,如打字速度为“60”。(2)用一对双引号括起来的字符串称为字符串常量。例如,“China”、“Vi- sual Basic”、“18”、“3.14”等。字符串常量指的是双引号中的字符,不涉及双引号自身。 假如程序中多次用到同一个常量,往往用一个故意义的符号表达
12、,这种常量称为符号常量;代表常量的符号称为“常量名”,其定义形式如下:Const 常量名 As 类型表达式如:Const PI3.14159262.变量及其定义变量有一个名字,它相应着相应的内存单元。(1)变量命名必须以字母或汉字开头,而不能以数字或其他字符开头。只能由字母、汉字、数字和下划线组成,不能具有小数点、空格等字符。字符个数不超过255个。变量名不能使用VB中的保存字。(信息提醒:保存字也称关键字,由VB专用,具有特殊含义。例如,Print、Sub、End等都是VB中的保存字。)VB不区分变量名中字母的大小写。如HELLO和Hello是同一个变量。为增长程序的可读性,变量名最佳取故意
13、义的名称,建议前面加上类型缩写。(2)变量声明变量应当先声明后使用。VB中变量声明的方法是:Dim As 例如,Dim N As Integer,定义变量N为整型,初始值为0.考点三、运算符与表达式运算符的运算规则及优先级如下表所示:优先顺序运算符类型运算符1算术运算符(指数运算)2-(取负)3*、/(乖、除)4(整除)5Mod(求余)6+、-(加、减)7字符串运算符&、+(字符串连接)8关系运算符=、=9逻辑运算符Not(非)10And(与)11Or(或)5、数据解决考点一:程序中常用语句1. 赋值语句 VB中赋值语句用“=”来实现。赋值语句“=”后面可以是常量、变量或表达式。赋值语句中的“
14、=”与数学中的“=”是不同的!如:N = N+1,这里的意义是将N的值加1后重新赋给N,结果N的值比原值增长了1。2. Print语句 语法格式:对象名.Print 表达式列表 功能:在指定的对象上输出文本。3. 注释语句 为了提高程序的可读性,通常需要在程序适当的位置加上必要的注释。添加注释是编程的一个好习惯。 VB中注释语句的格式为:在字符“”后加注释内容或用“Rem 注释内容”。 如:r = InputBox (输入r:) 输入半径r4.结束语句 语法格式:End功能:强制程序结束运营。考点二:程序中常用函数1.与用户交互函数VB提供InputBox()函数和MsgBox()函数用于人机
15、交互。(1)InputBox()函数在前面已经用过,其语法格式为: InputBox(提醒信息,标题,默认值 ,x坐标,y坐标)参数一:提醒信息为弹出对话框中显示的说明,必填项,通常为字符串,其余参数可依据实际选择使用;参数二:标题为弹出对话框标题栏中显示的名称,通常为字符串;参数三:默认值为弹出对话框输入项中显示的值;参数四和参数五:X坐标和Y坐标用来设立对话框的弹出位置。(2)MsgBox()函数是VB程序设计中常用的交互函数,其功能非常强大,可以显示多种样式的消息对话框。基本语法格式: MsgBox(提醒信息,按钮,标题) 该函数的返回结果为一数值,其中:参数一:提醒信息为弹出对话框中显
16、示的说明,必填项,通常为字符串,其余参数可依据实际选择使用;参数二:按钮一般用VB的内部符号常量,这些符号常量有vbOkOnly、vbOKCancel、vbYesNo、vbYesNoCancel等等,它们一般可以望文生义。参数三:标题为弹出对话框标题栏中显示的名称,通常为字符串。2.数学函数 数学函数用于数学运算,涉及三角函数、求平方根函数、求绝对值函数、对数函数、指数函数等,它们与相应的数学定义相同。如表所示。常用数学函数函数功能实例结果Abs(x)求x的绝对值Abs(-4.6)4.6Sqr(x)求x的平方根Sqr(9)3Sin(x)求x的正弦值Sin(30*3.14/180)0.102Co
17、s(x)求x的余弦值Cos(30*3.14/180) 0.8663Tan(x)求x的正切值Tan(60*3.14/180)1.79Atn(x)求x的反正切值4*Atn(1)3.979Exp(x)求指数函数ex Exp(2.0) 7.65Log(x)求x的自然对数值Log(10)2.05Int(x)取整数函数Int(99.8)99Rnd(x)产生01之间(不涉及1)的随机数Rnd()返回一个随机数3.字符串函数 VB系统提供了丰富的字符串解决函数,给编程带来了极大的方便(见表)。常用字符串函数函数功能实例结果Len(字符串) 求字符串的长度Len(2023奥运)6Left(字符串,截取长度) 截
18、取字符串左边部分Left(2023奥运,4) 2023Mid(字符串,起始位置,截取长度)从中间指定位置截取字符串Mid(2023奥运,3,2)08Right(字符串,长度)截取字符串右边部分Right(2023奥运,2)奥运String(数值,字符)生成指定长度与指定字符的字符串String(3,9)9994.日期函数 Date()函数返回系统的当前日期。Time()函数返回系统的当前时间,如:dtmBeginTime = Time(),将系统当前时间赋给变量dtmBeginTime。以此类推,Day()、Month()、Year()函数分别返回指定日期的日数、月份数、年份数。5.常用转换函
19、数 在程序设计过程中,我们经常要将不同类型的数据进行转换,这时就需要使用转换函数。VB中常用转换函数如表所示。常用转换函数函数功能实例结果Val(字符串)将字符串转换为数值2+Val(12)14Str(数值)将数值转为字符串Str(5)5Chr(字符代码)求字符代码相应的字符Chr(65)AAsc(字符)求字符相应的字符代码Asc(A)65Cint(表达式)将表达式的结果转换为整数,小数部分四舍五入Cint(3.14259*2)66、算法的程序实现考点一:选择结构的程序实现在VB中,选择结构可用if语句来实现,if语句有如下三种形式:形式示意图(1)单分支选择结构,形式为: If 条件 The
20、n语句或语句组 End If 语句组是指有多条语句的情况(2)双分支选择结构,形式为: If条件 Then 语句或语句组1 Else 语句或语句组2 End If(3)多分支选择结构,形式为: If 条件 Then 语句或语句组1 ElseIF 条件2 Then 语句或语句组2 ElseIF 条件n Then 语句或语句组n Else 语句或语句组n+1 End If语句实例:例一:在三个文本框中输入任意三个数,求三个数中的最大数。例二:求一元二次方程的解。Private Sub Command1_Click()Dim a, b, c, largest, j As Singlea = Val(
21、txtshu1.Text)b = Val(txtshu2.Text)c = Val(txtshu3.Text)If a = b Then largest = a Else largest = bEnd IfIf c largest Then largest = cEnd Ifj = MsgBox(三数中的最大数为: & largest, vbOKCancel, 最大数)End SubPrivate Sub Command1_Click()Dim a, b, c, delta, x1, x2 As Singlea = Val(txta.Text)b = Val(txtb.Text)c = Val
22、(txtc.Text)delta = b * b - 4 * a * cIf delta 0 Thenx1 = (-b + Sqr(delta) / (2 * a)x2 = (-b - Sqr(delta) / (2 * a)MsgBox 一元二次方程有不同的两解,一解为: & x1, vbYesNo, 求解结果MsgBox 一元二次方程的另一解为 & x2, vbYesNo, 求解结果ElseIf delta = 0 Thenx1 = (-b + Sqr(delta) / (2 * a)MsgBox 一元二次方程有相同两解,为: & x1, vbYesNo, 求解结果Else: MsgBox
23、 此方程在实数范围内无解!, vbYesNo, 求解结果End IfEnd Sub考点二:循环结构的程序实现VB循环结构常用的语句是ForNext语句和Do WhileLoop语句等。那么用程序如何解决上面的问题呢?ForNext语句和Do WhileLoop语句的语法格式:ForNext语句的格式Do WhileLoop语句的格式For 循环变量=初值 To 终值 Step 步长 循环体Next 循环变量说明:(1)For-Next语句通常是在循环次数拟定的时候使用;(2)步长即循环变量的增量,当步长为1时,Step 步长可以省略不写。Do While 条件循环体Loop说明:(1)当问题只
24、知道循环结束的条件,反复执行的次数事先并不知道,这时就需要用Do WhileLoop循环语句;(2)Do WhileLoop语句是在条件成立的时候执行循环体,条件不成立时退出循环。 For/Next语句和Do While/Loop语句在许多情况下是可以通用的,如上例所示。但是,For/Next语句更适合用于循环次数容易拟定的场合,而Do While/Loop语句的使用则更灵活。语句实例:ForNext语句实现:Do WhileLoop语句实现:Private Sub cmdOk_Click() Dim i As Integer, Sum As Integer Sum = 0 For i = 1
25、 To 24 Sum = Sum + i Next i lblsum.Caption = 两年共存入: & Sum & 元End SubPrivate Sub cmdOk_Click() Dim i As Integer, Sum As Integer i=0Sum = 0do while i= 10 Then yingfu = pijia * num zhaoqian = sum - yingfuElse yingfu = lingjia * num zhaoqian = sum - yingfuEnd IfLabel3.Caption = 您实际应付的金额为: & yingfu & !收到
26、付款金额为: & sum & !应找您零钱金额为: & zhaoqian & !谢谢您的惠顾,欢迎再次光顾!End Sub举例:用穷举法编写程序,找出所有的“水仙花数”。水仙花数是指一个 n 位数 ( n3 ),它的每个位上的数字的 n 次幂之和等于它自身。(例如:13 + 53 + 33 = 153)方法一:Private Sub Command1_Click() Dim sum As Integer Dim i, a, b, c As Integer List1.Clear For i = 100 To 999 a = i 100 b = i 10 Mod 10 c = i Mod 10
27、If a 3 + b 3 + c 3 = i Then List1.AddItem (Str(i) sum = sum + 1 End If Next iLabel1.Caption = 个数: + Str(sum)End Sub方法二:Private Sub Command1_Click() Dim sum As Integer Dim i, j, k As Integer List1.Clear For i = 1 To 9 For j = 0 To 9 For k = 0 To 9 If i 3 + j 3 + k 3 = 100 * i + 10 * j + k Then List1.
28、AddItem (Str(100 * i + 10 * j + k) sum = sum + 1 End If Next k Next jNext iLabel1.Caption = 个数: + Str(sum)End Sub考点四:数组的应用1. 数组及其定义什么是数组?数组不是一种基本数据类型,而是一组相同类型的变量集合,集合中的每个元素都是独立的变量,它们可以通过数组序号被引用。变量与数组的关系如图所示,变量类似于一个个独立的柜子,而数组则类似于一组柜子,它们共同构成一个整体,可以用统一的编号进行管理。数组的定义数组的定义格式一:Dim 数组名(常量) As 数据类型数组的定义格式二:
29、Dim 数组(下界 to 上界) As 数据类型 例如,用数组aryChinese来表达50名同学的语文成绩,可以定义为: Dim aryChinese(49) As Single 或Dim aryChinese(0 to 49) As Single 这个数组共有50个元素,分别为aryChinese(0)、aryChinese(1)aryChinese(49),数据类型为单精度。数组的赋值数组的赋值和一般变量的赋值类似,下面这段代码可以将数组中各元素重新置0: For i = 0 To 49 aryChinese( i ) = 0 Next程序设计中,经常通过循环语句来解决数组中的数据。2.
30、 数组的应用数据的查找常见的查找算法重要有:顺序查找和二分(对分)查找。顺序查找二分(对分)查找原理实现顺序查找是查找算法中简朴、易行的算法。进行查找时,等待查找的候选数据放在数组变量中,要寻找的特定数据称为查找键,存在变量key中,查找一般从数组的第一个元素开始,按照数据的顺序查找指定的关键值;假如被查数据和该关键值相匹配,则表达找到;假如所有数据与关键值都不匹配,则表达被查数据中不存在该关键值,查找失败。二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺陷是规定待查表为有序表,且插入删除困难。因此,折半查找方法合用于不经常变动而查找频繁的有序列表。一方面,假设表中元素是按
31、升序排列,将表中间位置记录的关键字与查找关键字比较,假如两者相等,则查找成功;否则运用中间位置记录将表提成前、后两个子表,假如中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。反复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。流程图程序实现i=1Do while i=nIf d(i)=key ThenPrint iExit Do 退出循环End Ifi=i+1LoopIf i=n+1 Then Print “0”i=1j=nDo while i=jm=fix(i+j)/2)If d(m)=key ThenPrint mExi
32、t DoEnd IfIf d(m)j ThenPrint “0” End If数据的排序计算机编程中,排序算法的使用非常频繁。实践中,人们设计出了许多好的算法,如冒泡排序、选择排序、互换排序、插入排序、归并排序、基数排序等等,各种算法有其自身的特点与合用范围。选择排序冒泡排序原理实现每次在若干个无序数中找出最小数(升序排列),并放在无序数中的第一个位置。假定有下标为0n的n+1个数的序列,规定按升序排列,实现的环节如下:(1)从第0个元素开始在n+1个数中找出最小数,并与第0个元素互换位置。(2)从第1个元素开始在剩余的n个数中找出最小数,并与第1个元素互换位置。(3)反复(2)依次从3、4.
33、n+1个元素中找最小、互换直到倒数第2个元素与最后1个元素比较后结束。“冒泡法排序”也叫“起泡法排序”,是一种比较简朴、易懂的互换排序方法,它通过将相邻元素进行比较和互换,逐步将一个无序序列排列为一个有序序列。将元素按从小到大的顺序排列称为升序排列,反之称为降序排列。程序实现把a(i)作为参照物,i从数组下界开始一直到上界-1,即倒数第二个元素,每取一个i值就进行一轮比较For i=0 to n-1 imin=i for j=i+1 to n if a(imin)a(j) then imin=j end if next j得到最小值元素的序号放最小数到a(i),互换t=a(i)a(i)=a(imin)a(imin)=tnext iFor i = 1 To num - 1 冒泡排序 递增 For j = num To i + 1 Step -1 If d(j) d(j - 1) Then k = d(j) d(j) = d(j - 1) d(j - 1) = k End If Next jNext i