信息技术vb选修知识点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
处理、运算三、算法的5个特征:选修知识点
(二)算法
」、算法定义:是解决问题的方法和步骤。
算法是程序设计的“灵魂”。
算法+数据结构=程序。
、算法的描述方法:分自然语言、流程图和伪代码三种。
1、自然语言:人们日常生活中的语言(本国语言),用自然语言描述符合我们的习惯,且容易理解。
2、流程图:也称程序框图,它是算法的一种图形化表示方法。
且描述算法形象、直观,更易理解。
3、伪代码:是介于自然语言和计算机程序语言之间的一种算法描述。
是专业软件开发人员常用方法。
1、有穷性:执行有限步之后结束,且每一步的执行时间也都是有限的。
2、确定性:每一步都有确切的含义。
3、可行性:原则上能精确运行,用纸和笔做有限次运算后即可完成。
4、输入:有零个或多个输入。
5、输出:至少产生一个输出。
(三)程序设计基础
计算机程序设计语言经历了机器语言、汇编语言、高级语言的发展过程。
常用高级语言:BASIC VB Pascal、C、C++、Java、Delphi、Fortran、Powerbuilder 等。
面向对象的程序设计语言,如vb :其中的对象主要是系统设计好的对象,包括窗体、控件等。
控件:是指工具箱中的工具在窗体中画出的能实现一定功能的部件,如标签、文本框、命令按钮等。
控件对象的类型前缀名子举例
窗体Form frm frmfind
命令按钮Comma nd cmd cmdok
标签Label lbl lbli nput
文本框TextBox txt txtClock 右命令按钮(Command的Enabled属性设置为True时按钮有效,设置为False时按钮无效
对象的三要素:属性、方法、事件
•属性名
:
对象名•属性名=属性值
例:给文本框 Txt123的Text 属性赋值为字符串”20”,代码如下:Txt123.text =
“20 ”
注意:如果直接给对象名赋值的话,是赋值给对象的默认属性。
例:Txt123 =
“20 ” 相当于Txt123.text =
“20 ”都是给文本框 Txt123的text 属性赋值。
如果要获取对象的状态或特性,这时就要读取对象的属性值,方法如下:变量名=对象名 例:读取文本框"txt123 ”的"Text ”属性的代码如下:a = txt123.text
方法 格式:[对象] 常见的方法如下: Print Cls Move Show
.方法[参数名表] 例:Form1.Print ”欢迎使用”
事件及事件驱动 常见的事件如下: Click 、DbICIick 、KeyPress 、Load 、MouseUp 等。
事件是对象对外部操作的响应,如在程序执行时,单击命令按钮会产生一个
Click 事件。
如需要命令按
钮响应Click 事件,就把完成 Click 事件功能的代码写到 Click 事件的事件过程中,与事件——对应。
事件过程的形式如下:
Private Sub
对象名_事件名()
(事件过程代码)
End Sub
一、常量:指在程序进行过程中不变的量,在
VB 中一般分数值常量与字符常量两种
数值常量:就是数学中说的常数,分整型常量和实型常量两种
整型常量:即整数,指不带小数点的数值如 1、0、、-10、+35等都是合法的整数
实型常量:即实数,指带小数点的数值。
实型常量又分为定点数和浮点数两种。
例:定点数:3.14159 和-6.8 , 1.99
浮点数:2E6、1E5、88E
3
例:1.2345 X 10可表示为1.2345E3,字母E 表示底数10 浮点数就是数学上的科学计数法。
字符串常量:被一对英文双引号括起来的若干个合法的字符称为字符串常量。
例如:
"China ”、"Visual
Basic ”、”18”、”3.1415 ”等,是指英文双引号中的字符,不包括英文双引号本身。
2 句)
符号常量:如果多次用到同一个常量,则可用一个有意义的名字表示这个常量。
、变量:在程序执行过程中,其值可以改变的量称为变量。
变量命名注意要点:
1、 必须以字母或汉字 开头,不能以数字或其他字符开头。
2、 只能由字母、汉字、数字或下划线 组成,不能含有小数点、空格等字符。
3、 最长不超过255个字符
4、 不能以VB 保留字作变量名,如语句定义符、函数名(
Integer 、End 、Print 、Dim )等。
5、 VB 不区分变量名中字母 大小写。
如HELLO 和Hello 是同一个变量。
三、数据及运算
2、常量和变量的命名、声明及赋值
(注意:符号常量声明和赋值必须一起完成,变量却必须分
符号常量的声明和赋值
Const 常量名[As 常量类型]=常量值(或表达式)
女口: Con st pi As Si ngle = 3.14159
常量名为 pi
注意:常量必须在声明的时候 立马赋值,如果没有 “=3”部分就是错误的。
变量的声明:Dim <变量名>As <变量类型>
女口: Dim a As Integer 定义一个
整型变量,变量名为 a
变量的赋值 VB 中使用“=”
给变量赋值,
其形式为:变量名=表达式
四、运算符
1、算术运算符
(注意:算术运算符的优先级问题、区分 / \ Mod 三个运算符)
实例
A12'I(J1024注意:
和mod
7-5+2■*的运算一
*5*42(}量如果
/徐5/2 2.5带小数,
要先四
斗 5 2r
舍五入Mod求命5 5 Mod 2]
取整,再+加20+S25作运算。
6
—A20-5]5
2、字符串运算符“+”和“ & ”
作用是将运算符两边的字符串连接为一个新的字符串。
使用"&"运算符时应注意前后加空格。
注意特例:当数值型和字符型连接时,"+"把数据都转化成数值型然后相加,返回一个数值型数据。
例如:123 ” + 45”= 12345”123 + 45” = 168
123 ”& 45”= 12345”123 & '45 ”= 12345”
3、关系运算符(优先级相同)注意:关系表达式的运算结果为布尔值True或False
= 等于< 小于号<> 不等于
> 大于号>= 大于等于号<=小于等于号
运算规则:(1)当两个操作式均为数值型,按数值大小比较。
(2)字符串比较,则按字符的ASCII码值从左到右逐位比较,直到出现不同的字符为止。
例:"987" > "99" ,结果为False。
(3)数值型与可转换为数值型的数据,按数值比较。
例:29 > "189",结果为False 。
4、逻辑运算符Not (取反)And (与)Or (或)优先级依次降低
5、日期运算符与日期表达式
日期表达式是用“+”或“-”将算式表达式、日期型常量、日期型变量、日期函数等连接起来的式子。
例如:表达式“ #2003/09/01# + 30 ”的运算结果是“ 2003-10-1 ”
表达式“ #2003/10/20# - #2003/10/10# ”的运算结果为整数10
6、运算符的执行顺序:算术运算符> 字符串运算符> 关系运算符> 逻辑运算符
女口a = 2: b = 3: c = 4: d = 5 贝U表达式a > b And 2 * a > c Or c <= d 的值为True
7、表达式的写法
代数式 VE 表达式 说明
2a b 4ab
(2*a+b)/(4 *a*b)
在VB 表达式中无法写分式,,乘法运算符*不能省略
虽然VB 中的表达式与代数式中的算式很相似,但两者却是完全不同的概念。
要注意区别,如在
VB 中
不能使用 < > 工等。
下表中列出了一些代数式对应的
VB 表达式。
五、常用函数
1、数学函数
注意:(1)1 nt (x)是取小于等于x 的最大整数。
例如:Int (3.12) =3
Int (2.1+3) =5
Int ( -4. 6) = -5
Int ( -1-2. 5) = -4
(2) Rnd 函数产生[0, 1)之间的一个随机数,它常与Randomize (以初始化随机数生成器)结合使用,
如果要产生
[0 , A ) 间的 随机整数,表达式为Int (Rnd *A)
使用内部函数Sqr 计算平方根(另函数Abs 求绝对值)
Sqr(b * b -4 * a* c)
产生[A , B)间的随机数:Rn d*(B-A) +A
产生[A , B]间的随机整数:Int(Rnd * (B-A+1))+A 2、字符串函数(注意的以下字符串函数返回的值是数值型,还是字符串型。
)
注意:(1)String函数只返回n个指疋的字符串的首字符。
⑵Left(字符串,n )和Right(字符串,n )中,当n的值大于字符串的长度时,返回整个字符串。
⑶Mid(字符串,m n)函数中,如果m大于字符串的长度,则返回空串,如果省略n,则返回m J
开始的全部字符。
3
注意(1)对于Str(数值)函数,如果其中的数值为正数,则返回的字符串的第一个字符为空格(符号位)。
如Str(5)的结果为两个字符长度的字符串” 5",如要得到不含符号位的字符串,可使用CStr()函数。
(2)Clnt(表达式)当表达式的值对应的小数位为.5 的时候比较特殊,函数结果为离表达式的值最近的一个偶数。
如Clnt (4.5)=4
(3)Asc(字符)函数,只求"字符"中的第一个字符的ASCII码值,如:Asc("AB" )=65
(4)ASCII码的大小:空格< 数值< 大写字母< 小写字母
常用字符的ASCII码值:空格的ASCII码为:32 0 的ASCII码为:48
A的ASCII码为:65 a 的ASCII码为:97 其他数字和英文字母按序依次类推。
(5)字母转换。
因大写字母的ASCII码比对应的小写字母小32,所以可通过Chr和Asc函数互相转换。
例:a转A Chr ( Asc ("a") - 32) A 转a Chr (Asc ("A") + 32 )注意式子中""不能省略
4、日期函数
输入岡半斤
匸
intel
(1) Date() 、Time()、Now()。
这三个函数 没有参数,分别返回计算机系统的当前日期、时间、日期与时间。
如 2011 年5月 29 日,Print Date() 或者 Print Date
都会打印出
2011-5-29
(2) Year()、Month()、Day()。
这三个函数必须有参数,即必须指定一个日期,分别返回指定日期的年、月和日。
函数实例
结果
Day(#8/18/2008#) 18 Mon th(#8/18/2008#)
8 Year (#8/18/2008#)
2008
5、 定位函数(与Print 语句配合使用的),以控制输出数据的格式,主要包括
Tab 、Space 等。
(1) Tab 函数。
功能:将被输出的内容放在由参数
n 所指定的位置(列数)处,在书写时,被输出的内
容要放在Tab 函数的右面,并用分号分隔。
例:Print Tab (15);" 姓名 ”;Tab (30);" 成绩”
(2) Space 函数。
功能:产生由n 个空格所组成的字符串。
6、 用户交互函数
VB 提供InputBox()和MsgBox()函数用于人机交互。
(1) InputBox ()
格式:InputBox(提示[,标题][,默认值][,X 坐标][,Y 坐标])
功能:在程序中调用InputBox 函数,将产生一个提示用户输入内容的输入框,等待用户输入信息,并返 回字符串类型的数据。
用户要想得到 InputBox ()函数的返回值,就必须将函数的结果赋值给指定的变量。
格式为:
变量=InputBox(提示[,标题][,默认值])
注意:每执行一次InputBox()函数,用户只能输入一个数 据。
输入框的样式是固定的,我们可以改变的是输入框 的提示”和标题”的内容。
例如:r = InputBox ("请输入r","输入圆半径”)
2. MsgBox() 格式为:MsgBox(提示信息[,按钮][,标题])
功能:用于在程序运行过程中产生一个消息框, 可以看作是输出对话框,
该函数的返回值为数值型数据。
格式:MsgBox(提示信息[,按钮][,标题])
例如:p=MsgBox("你输入的密码不正确,是否继续?
",vbYesNo ,"错误提示")
当用户单击消息框中的一个按钮后,消息框即从屏幕上消失。
在上面的语句中,将函数的返回值赋 给变量P ,在程序中可引用P 作相应的处理。
六、常用语句
功能:将右边表达式的结果赋给左边变量 。
";"或”,”隔开。
如果用逗号分 逗号后的表达式在下一个区段输
2 3 7
,后面再执行Print 如
果在Print 语句末尾使用逗号,则在同一行上跳到下一个输出区段
VB 中添加注释语句的方法
1、赋值语句 格式1: Let 变量=表达式
通常情况,Let 可以省略。
”="为赋值号。
它与数学中的”="是不同的。
特别要 跟方程式区分开。
如:
X=5 即把数值5赋值给变量X
Y =5 Mod 2 + 7 即先计算表达式5 Mod 2 + 7 的值,再将值8赋值给变量Y N =N + 1 即将N 勺值加1后后再赋给N X=Y
即将变量丫的值赋值给变量X
也可以在一行内给多个变量赋值,两条语句之间用冒号 ”:" 隔开,如:s=0: a=l: b=2
格式2:对象名[.属性名]=表达式 如果省略属性名,则直接赋值给对象的默认属性。
女口: Textl. Text =" 你好!"
即把字符串"你好!" 赋给Text I 的Text 属性。
注意:赋值语句一般都独立成行,如果有类似赋值的语句出现在一些结构中,大家要会辨别。
例如跟在以下关键字之后 If x=5 While x=5 Un til x=5 Print x=5
以上结构中的x=5
不再是赋值语句,因为 "="在这里是个关系运算符,判断左右是否相等,所
以x=5是一个关系表达式,其值应该是个逻辑型,不是 True 就是False 。
2、Print 语旬
格式:[对象名.]Print [
表达式列表]
功能:Print 方法具有计算和输出双重功能。
对于表达式,它先计算其值,然后再在指定的对 象上输出文本,对于常量、变量则直接输出其值。
对象可以是窗体、图片框、打印机等。
”对象名”
可以省略,省略时表示在当前窗体上输出数据。
说明:(1 )表达式列表可以是一个或多个表达式,之间用英文的 隔,则按标准输出格式 输出各数据,此时以14个字符位置为一个区段, 出;如果之间用 分号分隔,则按 紧凑格式 输出数据。
例:Print 1 ; 2 ; 3 ; 4 + 3
Print l , 2,3,4 + 3
输出结果为:1 2 3 7 输出结果为:1
(2)
如果Print 语句末尾没有逗号或分号
,表示该Print 输出完结果后自动换行 时将在下一行的起始位置输出数据; 输出下一个Print 所输出的内容。
如果在Print 语句的末尾加上一个分号,表示下一个Print 输出的内容将 按紧凑格式紧跟在前一个 Print 所输出的内容后面;
(3) 当一个Print 语句的后面无任何表达式 时,则输出一空行或 换行。
注意:与Tab ()函数结合使用,
掌握各种图形的输出。
3、注释语句
为了提高程序的可读性,通常需要在程序的适当位置加上必要的注释。
在 为在字符"’" 后加注释内容或采用” Rem 注释内容”两种形式。
格式1:'注释内容
用’ 写的注释语句既可以单独写一行,也可以跟在其他语句后。
格式2: Rem 注释内容
用Ren写的注释语句必须单独写一行。
4、结束语旬格式:End
功能:强制程序结束运行。
Private Sub Comma nd1_Click()
End
End Sub 该过程用于结束程序,即单击命令按钮Comma ndl时,结束程序的运行。
(四)程序设计的三大基本结构
一、顺序结构
代码按照由上到下的顺序一行一行地执行。
程序执行过程中没有分支、没有重复
、分支结构(选择结构)
程序在运行时会根据不同的条件决定程序的走向。
实现选择结构的语句有If语句和Select语句。
1、If语句分为单分支、双分支和多分支三类
(1)单分支if结构:(注意:行if和块if的区别只在书写格式上。
)
行if语句:IF <条件表达式> Then语句A
块if语句:IF <条件表达式> Then
语句A
End if
⑵双分支if结构:
行if 语句:IF <条件表达式> Then 语句A Else 语句B
块if语句:IF <条件表达式> Then
语句A
ELSE
语句B
END IF
(3) 多分支If语句
If < 表达式1> The n
<语句块1>
[ElseIf < 表达式2> Then
<语句块2>]
[Else <语句块n+1> ]
End If
2、Select Case 语句
Select Case <测试表达式>
注意:要会区分选择结构和循环结构的流程图。
如上图:甲为循环结构,有向上回到条件框的箭头。
乙为选择结构(双分支)。
Case 表达式列表1
语句组1
Case 表达式列表2
语句组2
Case ELSE
语句组N+1
End Select
Select/Case 语句的执行过程 是:先求”测试表达式”的值,然后顺序测试该值符合哪一个
Case 子句的
情况,如果找到了,则直接执行该
Case 子句下面的语句块,然后执行 End Select 的后续语句;如果没找
到,则执行Case Else 下面的语句块,然后执行 End Select 的后续语句。
说明:(1)"测试表达式”可以是数值型或字符串型表达式。
(2)"表达式列表"形式有以下4种。
① 一个表达式或用逗号隔开的若干表达式,例如
2, 4, 6, 8。
② 表达式1 To 表达式2,例如60 To 80。
注意,表达式1应该小于 表达式2 ③ Is 关系运算符表达式,例如Is > 80。
④ 表达式,例如x+3。
三、循环结构
1、For-Next 循环 (适合于解决循环次数事先能够确定的问题。
) For 循环变量一般形式是:
For 循环变量=初值To 终值[Step 步长值] [ 循环体] Next [循环变量]
说明:(1)循环变量,必须为数值型。
循环初值、循环终值也是数值型或数值表达式。
(2 )循环的有效区间是由循环初值、循环终值所限定的闭区间。
(3) 步长值是循环变量的增量,是一个数值表达式。
若步长值为正,则初值就应小于终值,否则循环体
一次都不执行;若步长值为负,则初值应大于终值,否则循环体一次都不执行。
如果步长值是1,Step 1
可略去不写。
但若步长值为 0,会造成死循环,这是要避免的,可用 Ctrl+Break 结
束程序。
(4) 循环体是For 语句和Next 语句之间的语句序列,也是需要重复执行的语句组。
(5) Next 后的循环变量与For 语句中的循环变量必须相同。
(6) 循环的次数=(循环终值-循环初值)\步长值+ 1
For/ Next 循环语句的执行过程:
(1)系统将初值赋给循环变量,并自动记下终值和步长。
(2)检查循环变量的值是否越过终值。
如越过就结束循环,执行Next后面的语句;否则执行一次循环体。
(3)执行Next语句:将循环变量增加一个步长值再赋给循环变量,转到第2步继续执行循环。
2、Do— Loop循环(对于不能预先确定次数,但需要执行多次的情况,可以使用Do/Loop循环。
)
格式一:Do While条件表达式
循环体
Loop
先判断条件是否为真,若条件为真,执行循环体,条件为假时退出循环。
因此可能一次都不执行循环。
格式二:Do
循环体
Loop While 条件表达式
先执行一次循环体,再判断条件是否为真,若条件为真,执行循环体,条件为假时退出循环。
因此至少执行一次循环体。
格式三:Do
循环体
Loop Un til 条件表达式
先执行一次循环体,再判断条件是否为假,若条件为假,执行循环体,条件为真时退出循环。
因此至少执行一次循环体。
格式四:Do Un til 条件表达式
循环体
Loop
先判断条件是否为假,若条件为假,执行循环体,条件为真时退出循环。
因此可能一次都不执行循环。
注意:If 语句和Do语句中都有的”条件表达式”,一般是一个关系表达式或逻辑表达式,其值不是
True就是False。
但如果是数值型的表达式的话,会进行强制转换,即数字0转换成False ,非0转
换成True。
(五)算法与冋题解决
一、解析法
解析法又称公式法。
解析法就是在分析具体问题的基础上,抽取出一个数学模型,这个数学模型能
用若干个解析表达式表示出来。
求解了这些表达式,问题也就得以解决。
如:求解一元二次方程a*x^2+b*x+c=0的实根
二、穷举法
穷举法是将求解对象一一列举出来,然后逐一加以分析、处理,并验证结果是否满足给定的条件, 穷举完所有对象,问
题将最终得以解决。
穷举法也叫枚举法、列举法。
穷举法关键是如何列举所有可能的情况,不能遗漏,也不能重复。
注意取值范围,减少计算机工作量。
适用编程问题:水仙花问题、鸡兔同笼问题、百钱百鸡问题、素数问题。
如:已知公鸡每只3元,母鸡每只5元,每3只小鸡1元。
用100元钱买100只鸡,应各买多少只鸡?
Dim a As Integer, b As Integer,c As Integer For a=0 to 33 公鸡数
For b=0 to 20 母鸡数
For c=0 to 100 小鸡数
If a+b+c=100 and a*3+b*5+c/3=100
Print a;b;c
end if
Next c
Next b
Next a
Dim a As In teger, b As In teger
Dim c As In teger
For a=0 to 33公鸡数
For b=0 to 20母鸡数
then c=100-a-b小鸡数
If a*3+b*5+c/3=100
Print a;b;c
end if
Next b
Next a
the n
每个元素
三、数组及其应用
数组是一组相同类型的变量集合。
数组用一个统一的名字代表逻辑上相关的一批数据,
靠下标变量来区分。
有一个下标的数组称为一维数组。
数组中的数据,逻辑上是相互关联的。
1、使用数组要先声明数组的大小和数据类型。
声明数组的格式如下:
Dim 数组名(最大下标常量)As 数据类型
例1: Dim s (9) As In teger
表示:名称为s的一维数组中包含10个元素,下标从O1U 9。
用来存放整型数据。
也可以指定下标的起始值。
例2: Dim x (2 to 10) As Si ngle
这个数组含有9个元素,下标从2到10,数据类型属于单精度实型。
还可以说明多维数组。
例3: Dim D (4, 2 To 6, 3 To 9) As long
说明了一个3维数组,一共5*5*7个数组成员,数据类型属于长整型。
2、应注意的问题:
(1 )在同一个程序中,任何数组只能声明一次。
例如:
Dim s(5) As In teger
Dim s(10) As In teger 这样,运行时会报错:当前范围内的声明重复。
(2)下标必须是常量且为整数(若不是整数,程序运行时自动4舍5入为整数)。
(3)同一个程序中,数组名不能与变量名相同。
例如:
Dim s As In teger
Dim s (10) As In teger 这样,运行时会报错:变量与数组不能同名。
(4 )数组必须先声明后使用否则运行时会报错:子程序或函数未定义。
(5)数组使用时,下标不能超出声明的范围。
例如:
Dim s (10) As In teger
Print s(11) 这样运行时会报错:下标越界。
(6)数组声明时和变量一样,要注意类型。
例如:
Dim s (10) As In teger
S(3)=40000 这样运行时会报错:溢出。
3、数组的应用数组的赋值、计算、输出通常都与F o r—N e x t循环结合使用。
F o r语句中的循环变量作为数组元素的下标,通过循环变量的不断改变,达到对每个数组元素依次进行处理的目的。
例子:利用数组实现:输出10个[1,100]的随机数,并输出它们的和与平均值。
四、顺序查找
顺序查找是查找算法中简单、易行的算法。
进行查找时一般从数据的第一个元素开始,按照数据的顺序查找指定的关键值。
如果被查数据和该关键值相匹配,则表示找到;如果所有数据与关键值都不匹配,则表示被查数据中不存在该关键值,查找失败。
顺序查找的数据不要求是有序的。
五、二分法查找(二分法查找也叫折半查找) 二分法查找要求被查数据是有序的
查找思路:对于有序数列(从小到大排),设定下界low (最小元素下标)和上界high (最大元素
下标),当满足条件low<=high时,求中点mid,将中点元素的值与所要查找的值比较,若中点元素值比所要查找元素小,则应找后半段,所以low=mid+1,否则应找前半段high=mid-1,直到找到为止;若
low>high,则说明找不到。
六、冒泡排序
排序的种类有交换排序、选择排序、快速排序等。
“冒泡法排序”也叫“起泡法排序”,是一种比较
简单、易懂的交换排序方法。
它通过将相邻元素进行比较和交换,逐步将一个无序序列排列为一个有序
1、自定义函数:编程者自己编写的函数。
自定义函数定义格式: Function <函数名称> ([<参数列表> ])[As<类型>]
<局部常量、变量说明>
分析:5!=5*4!
4!=4*3!
3!=3*2!
2!=2*1!
1!=1
n !=n*( n-1)! 如果用s(n)来表示n!, 当n=1 时,s(n)=? 当n>1 时,s(n)=?
自定义递归函数的过程
S=n* s(n-1)
<语句组>函数名=返回值
End Function
自定义函数的调用有三种格式:格式1变量=函数名称(参数)
格式2:Call函数名称(参数)
格式3:函数名称参数
2、递归法如果一个函数在定义时,直接或间接地调用了自己,这种算法称为递归法。
例如函数A自己调用了自己。
另外如果函数A调用了函数B,函数B反过来再调用函数A的算法,这也是递归算法。
用递归写出的算法往往十分简洁。
递归法一般需要自定义函数或过程来实现。
例1用递归函数求n!
注意给函数名s赋
的值,就是该函数的
返回结果值。
Function s(n As In teger) '
If n=1 the n s=1 Else
End Fun cti on
Private Sub Comma nd1_Click()
Dim n As In teger
n = Val(InputBox(" 请输入N 的值"))
Print s( n) '调用递归函数
End Sub
例2:求两个自然数,它们的和是667,最小公倍数与最大公约数之比是60 : 1。
分析:设两个自然数中较小的一个为m显然m = 1是不满足条件的,m的取值范围应是2~333,那么另外一个就是667 -m。
处理方法:对m从2到333检查,当bei= yue * 60 时,输出m与667 -m。
主程序:Private Sub Form_Click ()
Dim m As Integer ,yue As Integer ,bei As Integer
For m =2 To 333
yue = gys ( m , 667 - m)
bei = gbs( m ,667 - m)
If bei =yue * 60 Then Print m , 667 - m
next m End Sub
自定义函数gys() 求最大公约数
Function gys(a As Integer ,b As Integer) As Integer Dim i As In teger
For i = a To 1 Step -1
If (a Mod i = 0) And (b Mod i = 0) Then
gys = i
Exit Function
En dIf
Next i
End Function 自定义函数gbs()求最小公倍数
Function gbs( a As Integer ,b As Integer) As long Dim i As long
i=b
Do While i Mod a < > 0
i=i+b
Loop
gbs = i
End Function
(六)程序设计思想和方法
一、结构化程序设计的思想和方法特点:先整体后局部,先抽象后具体。
思想:把一个大的程序按照功能划分为若干个模块,每个小的模块完成一个确定的功能,在这些模块之间按层次关系进行组织,互相协作完成整个程序要完成的功能。
方法:自顶向下,先设计第一层(顶层),然后步步深入,逐层细分,逐步求精。
二、面向对象程序设计的思想突出特征是:继承性、封装性、多态性。
因为实际设计中,用户的需求和软硬件是不断变化的,所以结构化程序设计按功能划分设计的模块必然也是易变的和不稳定的,所以可重用性差。
面向对象程序设计以数据为中心,而它相对功能而言,具有较强的稳定性,模块可重用性也比较高。
(七)程序中的作图
1、画线命令Line 格式:对象名.Line (起点坐标)-(终点坐标),线的颜色
例:Forml.Line (-1,-1)-(1,1),vbred
2、画圆命令Circle : 格式:对象名.Circle (圆心坐标),半径,颜色
例:Forml.circle (0,0),3,vbred
3、画点命令PSet: 格式:对象名.PSet (点坐标),颜色
例:Form1.Pset (0,0), vbred
4、改变坐标系Scale 格式:对象名.Scale (对象左上角坐标)-(对象右下角坐标)
例: Form1.Scale (-1.5,-1.5)-(1.5,1.5)。