资源描述
算法与程序设计知识点提要
1、算法:解题方法的准确描述,即解题方法步骤化。
2、算法的特征
l 有穷性:一个算法的执行步骤是有限的
l 确定性:算法中的每个步骤必须有确切的含义
l 可行性:算法的每个步骤是可行的,是实际能做的
l 有0个或多个输入
l 有1个或多个输出
3、算法表示:
自然语言:自然语言是指人们 日常生活 中使用的语言,如汉语、英语、法语等都是自然语言。用自然语言描述算法符合我们的表达习惯 ,并且容易理解。
流程图:流程图(Flow Chart)也称程序框 图,它是算法的一种 图形化表示方法。用流程图描述算法 与自然语言描述相比,用流程图描述算法形象、直观 ,更容易理解。
伪代码:伪代码(Pseudocode)是介于自然语言与计算机程序语言之间的一种算法描述 。它也是专业软件开发人员描述算法的一种常用方法。
计算机语言:利用程序设计语言如Visual Basic、C、C++、Pascal等编制程序,实现算法。
4、对象:在VB中,我们总是与对象打交道。新建一个窗体就是新建了一个窗体对象;从工具箱中,将一个控件拖放到窗体上,实际上也生成了一个对象。
5、属性:对象的属性是用来描述对象的外部特征的。在 VB中,窗体〔Form〕对象的属性有名称、标题〔Caption〕、字体〔Font〕、背景颜色〔BackColor〕;按钮对象的属性有按钮名称、提示、背景颜色等,对象的属性可在“属性〞面板中设置。
代码中属性的引用方法为:
对象名. 属性名=属性值
或 变量= 对象名. 属性名
例如, Form1 .Caption=" 你的体重标准吗?"
n =val(Text1.Text)
6、方法:方法是一个对象允许其他对象与之交互的方式,它说明了一个对象所具有的能力。
代码中调用对象的方法可以用:
对象名. 方法名 [ 参数列表]
例如:
' 擦除窗体
List1.AddItem n(i) ' 将幸运学号参加列表框中
7、类:现实生活中,我们通常会把具有共同性质的事物划分成一类,得出一个
抽象的概念“类〞。
在面向对象程序设计中我们也用这种方法,往往把具有共同属性、方法或事件的对象归为“类〞。类是在对象之上的抽象,是对象的模板;对象是类的具体化,称类的实例。当我们说“标签〞的时候,指的是标签类;当我们说某个标签的时候,指的是标签类的一个实例。
VB工具箱中的类是可视类,设计程序时,将它们直接拖放到窗体上就可以生成类的实例(对象〕。
使用VB进展程序设计的方便之处就在于VB给我们定义了许许多多的类,从窗体、工具栏、状态栏、命令按钮、图片框、单项选择框、复选框到时钟、文件、文件夹、驱动器、滚动条、旋转按钮等等,我们在程序设计中用到的类,一般它都提供了,这大大方便了程序的编写。编写一般的程序,我们只需要生成相应类的实例(即生成对象)就可以实现想要的功能。
8、事件与事件过程:VB为窗体与大多数控件都规定了一组事件,当应用程序被启动后,VB随时准备捕获各种事件。一旦发生了某个事件,VB就会执行与该事件相联系的事件过程;执行完后,VB将等待下一个事件的发生。
常用的事件有Load〔载入事件,如Form_load〕、Click〔单击事件,如Command1_Click〕、Change〔改变事件,如Text1_Change〕等。如用户用鼠标单击按钮〔CommandButton〕就触发了Click事件,程序就会执行Click事件过程〔即以下代码中的Sub与End Sub之间的语句〕。
Private Sub Command1_Click()
Dim r As Double
r = Val(Text1.Text)
Text2.Text = Str(2 * 3.14 * r)
End Sub
9、赋值语句
VB中赋值语句用“=〞来实现,如:
a=b ' 将b的值赋给变量a
N= 1 ' 将1 赋给N
赋值语句“= 〞后面可以是常量、变量或表达式。赋值语句中的“=〞与数学中的“=〞是不同的!如:
N =N+1
这里的意义是将 N 的值加1 后重新赋给N,结果N 的值比原值增加了1。
10、注释语句
注释是以单引号〔'〕开头的一串文字,可以出现在程序中需要说明的位置上,通过这一串文字,对附近的程序段进展简要的说明,增加程序的可读性。注释对程序的执行效果没有任何影响,程序运行时自动跳过注释。
在VB里,注释语句有两种,一种是用“Rem〞关键字,还有一种是利用单引号“'〞,例如:
' 定义 a 为字符串变量
Rem 定义 a 为字符串变量
以上两句的作用是一致的,但Rem语句必须单独占一行。
11、变量
变量应该先声明后使用。VB中变量声明的方法是:
Dim <变量名> As <数据类型>
例如,Dim N As Integer '声明变量N为整型
还可以在一行中定义多个变量,如:
Dim dtmBeginTime As Date, dtmEndTime As Date
Dim a,b,c As integer
变量名可以简单地用i、j 、k 等单个字母表示,也可以包含比拟复杂的信息描述,如intTimeCost 与intWordCount ,表示打字所花时间与输入的字符数。尽管变量命名可以有很大范围的自由度,但是还必须遵守以下几个约定:
1. 必须以字母或汉字开头,而不能以数字或其他字符开头。
2. 只能由字母、汉字、数字与下画线组成,不能含有小数点、空格等字符。
3. 字符个数不超过255 个。
4. 变量名不能使用VB中的保存字。如Print 、Sub、End等
5. VB 不区分变量名中字母的大小写。如 HELLO与Hello是同一个变量。
6. 为增加程序的可读性,变量名最好取有意义的名称,建议前面加上类型缩写,如strA。
12、常量
如果程序中屡次用到同一个常量,往往用一个有意义的符号表示,这种常量称为符号常量;代表常量的符号称为“常量名〞,其定义形式如下:
Const 常量名 [As 类型] =表达式
Const strA = "abcde"
13、数据类型
整型、长整型、单精度与双精度都属于数值型,它们表示数值的范围是不同的。其中,单精度与双精度又合称为浮点型。
字符串型数据是指用""括起来的一串字符。如"欢送进入VB世界!"、"Visual Basic "、"1234"都是字符串类型。文本框里输入的是字符串类型。
布尔型又称逻辑型,常用于表示逻辑判断的结果,如“真/ 假〞、“是/非〞等,其值为True 或False,分别表示逻辑真与逻辑假。VB中也常用数值0 表示假值,-1 表示真值。
日期型数据专门用来处理日期与时间。VB采用一对“#〞把日期与时间的值括起来,如 #2003/08/20# 表示2003年8 月20日。
14、常用函数
〔1〕常用数学函数
函数
功能
实例
结果
Abs(x)
求 x 的绝对值
Abs(-4 .6)
4 .6
Sqr(x)
求 x 的平方根
Sqr(9)
3
Sin(x)
求 x 的正弦值
Sin(30*3 .14/180)
0 .499770102643102
Cos(x)
求 x 的余弦值
Cos(30*3 .14/180)
0 .8663
Tan(x)
求 x 的正切值
Tan(60*3 .14/180)
1.72992922021979
Atn(x)
求 x 的反正切值
4*Atn(1)
3 .149
Exp(x)
求指数函数 ex
Exp(2 .0)
7 .389
Log(x)
求 x 的自然对数值
Log(10)
2 .305
Int(x)
取整数函数
Int(99 .8)
99
Rnd(x)
产生0 ~1之间 〔不包括 1〕的随机数
Rnd()
返 回一个随机数
要产生[a,b]区间范围内的随机整数,可以使用公式:int((b-a+1)*rnd+a)。例
如:要产生[10,100]区间的随机整数,可以使用公式int(91*rnd+10)获得。
用数学函数时需要注意以下几点。
( 1) 三角函数中的参数应是弧度数,如数学中sin30°应写为:
sin( 30 *3.14159/180)
( 2) Rnd 函数返回[ 0,1)〔即包括0,但不包括1〕之间的一个随机数,它往往与Randomize 结合使用。如果我们班有54名同学开联欢会,要编程抽取一名幸运同学,可以用以下代码求得:
Private Sub cmdOk _ Click()
Randomize ' 初始化随机数生成器
Label1.Caption = " 幸运同学的学号为:" & Int (( Rnd * 54) + 1 )
End Sub
〔2〕常用字符串函数
函数
功能
实例
结果
Len(字符串)
求字符串的长度
Len("2021奥运 ")
6
Left(字符串,截取长度)
截取字符串左边局部
Left("2021奥运 ",4)
2021
Mid(字符串 ,起始位置
[,截取 长度])
从 中间指定位置截取字符串
Mid("2021奥运 ",3 ,2)
08
Right(字符串 ,长度)
截取字符串右边局部
Right("2021 奥运 ",2)
奥运
String(数值 ,字符)
生成指定长度 与指定字符的字符串
String(3 ,"9 ")
999
〔3〕常用转换函数
函数
功能
实例
结果
Val(字符串)
将字符串转换 为数值
2+Val( "12 ")
14
Str(数值)
将数值转为字符串
Str(5)
"5 "
Chr(字符代码)
求字符代码对应的字符
Chr(65)
"A "
Asc(字符)
求字符对应的字符代码
Asc("A ")
65
Cint(表达式)
将表达式的结果转换 为整数,小数局部四舍五入
Cint(3 .14259*2)
6
Fix
返回数的整数局部
Fix(-3.6)
-3
15、〔1〕算术类根本运算
根本运算
运算符
优先级
表达式
表达式的值
乘幂
^
1
5^2
25
取负
-
2
-a
a的相反值
乘法
*
3
实数除法
/
3
3/2
整数除法
\
4
3\2
1
求余数
Mod
5
8 Mod 5
-7 Mod 3
3
-1
加法
+
6
2+3
5
减法
-
6
3-1
2
〔2〕关系类根本运算:=、<>、<、>、<=、>=〔7级〕
〔3〕逻辑类根本运算:Not〔8级〕、And〔9级〕、Or〔10级〕
16、程序的根本构造
〔1〕选择〔分支〕构造
IF 条件 THEN
语句
END IF
IF 条件 THEN
语句一
ELSE
语句二
END IF
IF 条件 THEN
语句一
ELSE IF 条件 THEN
语句二
ELSE
语句三
END IF
IF 条件 THEN 语句
如:If n Mod 5 = 0 Then Print
IF 条件 THEN 语句一 ELSE 语句二
如:If a > 0 Then s = a ^ 2 Else s = a * 2
〔2〕循环构造
For 语句语法格式
For 循环变量 = 初值 To 终值 Step 步长
语句块
Next 循环变量
l 步长是循环变量的增量,其值可以是正数〔递增循环〕或负数〔递减循环〕,但不能是0。如果步长为1,那么可以连同保存字Step略去不写。
l 初值、终值、步长都必须是整数。
l 执行next之后,循环变量的值都会增加一个步长的值。
计数器:n = n + 1
累加器:s = s + n
在某些情况下,循环的次数无法预先知道,但在什么条件下应该循环。这时,使用Do语句来描述这样的循环比拟适宜。
Do语句的一般格式如下:
Do While 条件表达式
语句块
Loop
以下两段程序结果是一样的,请注意两处不同:
s = 0
For i = 1 To 10
s = s + i
Next i
Print s
s = 0: i = 1
Do While i <= 10
s = s + i
i = i + 1
Loop
Print s
〔3〕顺序构造
代码是按照由上到下的顺序一行一行地执行。程序执行过程中没有分支、没有重复,我们把这种构造称为顺序构造。如:
c = a
a = b
b = c
17、循环的嵌套
〔1〕通常,把循环体内不再包含其他循环的循环构造称为单层循环。
〔2〕在处理某些问题时,常常要在循环体内再进展循环操作,这种情况称为多重循环,又称为循环的嵌套。如二重循环、三重循环等。
〔3〕多重循环的执行过程是,外层循环每执行一次,内层循环就要从头开场执行
一轮,如:
for i=1 to 9
for j=1 to 9
print i*j
next j
next i
在以上的双重循环中,外层循环变量i取1时,内层循环就要执行9次;接
着,外层循环变量I取2,内层循环同样要重新执行9次……所以,循环共执行了
9×9次,即81次。
18、数组变量
数组是由一批同类型的变量构成的一个序列,组成数组的每一个变量被称为数组的元素,也称为下标变量,下标是一个整数,用来指出某个元素在数组中的位置。
中所有使用的数组在引用前,必须先声明。
一维数组的声明包括数组变量的定义、数组的元素个数与元素的数据类型。其格式为:
〔1〕Dim 数组变量名〔元素个数〕 As 数据类型
〔2〕Dim 数组变量名〔下界 to 上界〕 As 数据类型
二维数组变量定义的常用形式为:
〔3〕Dim 数组变量名(下界 to 上界, 下界 to 上界) As 数据类型
例1:Dim S(2) As Integer
定义一维数组S, 有3个元素,分别为S(0), S(1), S(2),它们都是整型的。
例2:Dim M(2,3) As Single
定义二维数组M,数组有3*4个元素,分别为:
M(0,0)
M(0,1)
M(0,2)
M(0,3)
M(1,0)
M(1,1)
M(1,2)
M(1,3)
M(2,0)
M(2,1)
M(2,2)
M(2,3)
数组下标的下界一般默认为0,而用户也可以根据需要自行定义上、下界。
例如:Dim A (3, 1 To 6)
定义二维数组,第1维的下标为0-3,第2维的下标为1-6。
例如: Dim A (1 To 3, 2 To 6)
定义二维数组,第1维的下标为1-3,第2维的下标为2-6。
例1、使用键盘给每个元素输入数据。其根本语句为
Dim a(10) As Integer
For i=1 to 10
a(i)=val(InputBox(“请输入第〞 & I & “个元素〞))
Next i
例2、以每行10个元素输出
For i=1 to n
Print a(i);
If i mod 10=0 Then Print
Next i
19、算法:
〔1〕枚举算法:或称穷举法,根据问题的本身性质,一一列举出该问题所有可能的情况,并根据题目的条件逐一验证,从中挑选出符合条件的解.
如上面的例子的解决过程:
l 列举所有可能的解:25006,25016,25026,……25986,25996
l 逐一验证:能不能被37或者67整除?能整除的输出。
涂抹数字及求水仙花数等均采用此算法。
〔2〕解析算法
用解析的方法找出问题的前提条件与所求结果之间关系的数学表达式,并通过数学表达式的计算来实现问题的求解。
求一元二次议程的实根、求三角形面积及求总电阻值等都属此算法。
第 15 页
展开阅读全文