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