第四章 顺序结构程序设计本章内容及要求:
1.了解算法概念及算法的表示,掌握用 N—S
流程序表示算法
2,熟练掌握赋值语句,End语句和注释语句等语句及输入 /输出消息框函数的使用;
4.1 算法及算法的表示
4,1.1 算法概述什么是算法:
广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。
狭义地讲:算法是解决一个问题采取的方法和步骤的描述 。
下面通过两个简单的例子加以说明:
例 4.1 输入三个数,然后输出其中最大的数。
将三个数依次输入到变量A,B,C中,设变量 MAX存放最大数。其算法如下:
例 4.2 输入 10个数,打印输出其中最大的数。
算法设计如下:
( 1) 输入 1个数,存入变量 A中,将记录数据个数的变量 N赋值为 1,即 N=1
( 2) 将 A存入表示最大值的变量 Max中,即 Max=A
( 3) 再输入一个值给 A,如果 A>Max 则 Max=A,否则 Max
不变
( 4) 让记录数据个数的变量增加 1,即 N=N+1
( 5) 判断 N是否小于 10,若成立则转到第 ( 3) 步执行,否则转到第 ( 6) 步 。
( 6) 打印输出 max
1) 输入 A,B,C。
2) A与 B中大的一个放入 MAX中。
3) 把 C与 MAX中大的一个放入 MAX中。
4) 输出 MAX,MAX即为最大数。
4.1.2 算法的特性
1 有穷性
2 确定性
3 有 0个或多个输入
4 有一个或多个输出
5 有效性
4.1.3 算法的表示一、自然语言与伪代码表示算法自然语言:就是指人们日常使用的语言,可以是汉语、
英语或其它语言。
伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。
例如:例 4.1可用如下的伪代码表示
Begin( 算法开始 )
输入 A,B,C
IF A>B 则
A→Max
否则 B→Max
IF C>Max 则 C→Max
Print Max
End (算法结束 )
二 用 传统 流程图表示算法处理框起止框 I/O框 判断框流程线 连接点
1、传统流程图中的基本符号
2、三种基本结构的表示
( 1)顺序结构条件语句 1 语句 2
Y N语句 1
语句 2
( 2)选择结构条件
( a )
条件语句组
( 3)循环结构
a) 当型循环 b) 直到循环
Y
N
Y
N
( b )
语句组三种基本结构的特点:
( 1)只有一个入口
( 2)只有一个出口
( 3)不存在死语句
( 4)不存在死循环例,例 4.2输入 10个数,打印输出其中的最大的数的流程图从 10个数中选出最大的数的流程图
N<10
Max =AN=1
A>Max
Max =A
输入 A
开始再输入给 A
N=N+1 打印 Max
结束
YN
N
Y
4.1.4 用 N— S流程图表示算法将全部算法写在一个矩形框内,在矩形内还可包含其它从属于它的框三种基本结构的 N— S图表示:
语句 A
语句 B
语句 A 语句 B
条件Y N
1、顺序结构 2、选择结构语句组
( 3)循环结构
a) 当型循环 b) 直到循环当条件成立语句组直到当条件成立例,画出从 10个数中选出最大的数的 N— S 流程图
( a ) ( b )
传统流程图
N<10
Max =AN=1
A>Max
Max =A
输入 A
开始再输入给 A
N=N+1 打印 Max
结束
YN
N
Y
输入 A
当 N<=10
Max =A
N=N+1
打印 Max
输入 A
N—S流程图
A>=Max YN
Private Sub Form_Click()
Dim a%,max%,i%
max = a
For i = 1 To 10
a = Val(InputBox("A=?"))
If a > max Then max = a
Next i
Print "Max="; max
End Sub
最后需要说明的是:上面介绍的算法表示是给人看的,
即是为帮助程序开发人员阅读、编写程序而设计的一种辅助工具,程序则必须符一计算机语言的语法规则。
下面是例 4.2的计算机 程序,即为 用计算机语言表示算法:
4.1.6 结构化程序设计方法(补充)
(一)、用计算机解决问题的过程提出、分析问题确定算法模型设计算法编写程序调试程序分析输出结果正确合理结束
(二)、结构化程序设计思想自顶向下、逐步细化、模块化自顶向下,先从全局、整体设计逐步细化,将一个问题分解成几个较小的问题解决模块化,将一个大任务分解成若干个较小的部分,
每 个部分承担一定功能,称为“功能模块”
例:给 100个整数,打印输出其中的素数
S1
N— S流程图输入 100个数存入
X1,x2,……x 100
打印 x1…..x 100中不等于 0的数让 x1,
x2,……x 100中的非素变为 0
S3
S2
输入 xi
当 i<=100
i=i+1
i=1
xi≠0
当 i<=100
i=i+1
i=1
YN
打印 xi
S1
N— S流程图输入 100个数存入
X1,x2,……x 100
打印 x1…..x 100中不等于 0的数让 x1,……x 100中的非素变为 0
S3
S2
判断 xi是否是素数,
若不是则将 xi=0
当 i<=100
i=i+1
i=1
S21
r=0
r<=将 x1除 j的余
j=j+1
j=2
YN
xi=0
直到 j>xi/2
输入 100个数存入
X1,x2,……x 100
打印 x1…..x 100中不等于 0的数让 x1,……x 100中的非素变为 0
细化后的流程图输入 xi
当 i<=100
i=i+1
i=1
当 i<=100
i=1
r=0
r =xi%j
j=j+1
j=2
YN x
i=0
直到 j>xi/2
i=i+1
xi≠0
当 i<=100
i=1
YN
打印 xi
i=i+1
4.2 赋值语句赋值语句是 VB程序最常用,最基本的语句,
它能为变量提供数据 。 另外,若要在程序代码中设置对象的属性,也要使用赋值语句 。
赋值语句有两种格式:
格式 1,变量名 =表达式
格式 2,[对象名,]属性名 =表达式赋值语句的作用是:首先计算,=”右边表达式的值,然后将该值赋给,=”左边的变量或对象的属性。在格式 2中,若对象名省略,则默认对象为当前窗体。
例如:
x=2 ' 把 2赋给 x
y=x*3 ' 计算 x*3的值,得
6,把 6赋给 y
x=x+1 ' 计算 x+1的值,得 3,把 3赋给 x
a$= "Hello" ' 把,Hello”赋给 a$
Text1.Text="你好! " ' 把,你好!,赋给 Text1的 Text属性例,已知三角形三边 a,b,c的长,求三角形的面积,
输出三条边长及面积 。
分析:应用程序的界面应该能让用户输入三边的长,
程序在接收用户输入的数据后,利用数学公式对数据进行计算,并把结果输出到屏幕上 。 已知三角形三边 a,
b,c的长,求三角形的面积的公式为:
其中 p=( a+b+c) /2。
( 1) 界面设计在窗体上建立 5个标签,3个文本框和 1个命令按钮 。 设置各对象的属性,如表 3-3所示 。
))()(( cpbpapps
设计完成的界面如图 3-5所示。
( 2)编写事件过程如下:
Private Sub Command1_Click()
Dim a!,b!,c!,p!,s!
a = Text1.Text
b = Text2.Text
c = Text3.Text
p =( a + b + c) / 2
s = Sqr( p *( p - a) *( p - b) *( p - c))
Label5.Caption = s
End Sub
思考题,A=10,B=20,现交换A,B的值,语句改怎么写?
4.3 数据的输出
Print方法
3.6.1 Print的格式及功能
格式,[对象名,]Print [表达式列表 ]
功能:在对象上输出表达式的值 。
说明:
( 1) 对象名:可以是 Form( 窗体 ),Debug( 立即窗口 ),Picture( 图片框 ),Printer( 打印机 ) 。 省略此项,
表示在当前窗体上输出 。 例如:
Print "23*2="; 23*2 ' 在当前窗体上输出 23*2=
46
Picture1.Print "Good "
' 在图片框 Picture1上输出 Good
Printer.Print "Morning" ' 在打印机上输出
Morning
( 2)表达式列表:是一个或多个表达式,
若为多个表达式,则各表达式之间用,,,或,;,
隔开。省略此项,则输出一空行。
( 3) 用,,,分隔各表达式时,各项在以 14个字符位置为单位划分出的区段中输出,每个区段输出一项;
用,;,分隔各表达式时,各项按紧凑格式输出。
( 4)如果在语句行末尾有,;,,则下一个 Print输出的内容,将紧跟在当前 Print输出内容后面;如果在语句行末尾有,,,,则下一个 Print输出的内容,将在当前 Print输出内容的下一区段输出;如果在语句行末尾无分隔符,则输出完本语句内容后换行,即在新的一行输出下一个 Print的内容。例如:
Print 1; 2; 3
Print 4,5,
Print 6
Print 7,8
Print
Print 9,10
输出结果为:
1 2 3
4 5 6
7 8
9 10
( 3) 定位输出:在 Print方法中,可以使用 Tab函数对输出项进行定位。
例如:
Print Tab( 10); "姓名 "; Tab( 25); "年龄 "
则,姓名,和,年龄,分别从当前行的第 10列和第 25列开始输出。
输出结果如下:
姓名 年龄
Print方法中,还可以使用 Spc函数,例如:
Print "后面有 8个空格 "; Spc( 8) ; "前面有 8个空格 "
输出结果如下:
后面有 8个空格 前面有 8个空格
4.3.2 Cls方法格式,[对象名,]Cls
功能,Cls方法清除 Print方法显示的文本或在图片框中显示的图形,并把输出位置移到对象的左上角 。 格式中的对象可以是窗体或图片框,
如果省略对象名,则清除当前窗体的显示内容 。
4.4输入框我们知道,文本框可以接收用户的输入 。 输入框也可以接受用户的输入,但是其风格和用法有别于文本框 。
VB提供的 InputBox函数可生成输入框 。
例如,p$=InputBox( "请输入密码 ","密码框 ")
执行该语句后,屏幕上显示如图 3-6所示的输入框 。
每执行一次 InputBox函数,用户只能输入一个数据,
另外,输入框的样式是固定的,用户不能改变 。 用户能改变的是输入框的,提示,和,标题,的内容,
,提示,和,标题,都是字符串表达式 。
InputBox函数的一般格式:
InputBox( 提示 [,标题 ][,缺省值 ][,x坐标位置 ][,y
坐标位置 ])
需要注意的是:各项参数次序必须一一对应,除了
,提示,不能省略外,其余各项均可省略,但省略部分也要用逗号占位符跳过。
例如,f$ = InputBox( "第一行 " & vbNewLine & "第二行 ",,"ddd",200,200)
运行时屏幕的显示如图 3-7所示。
例:已知圆半径,求圆周长和圆面积。
( 1)界面设计在窗体上建立两个标签、两个文本框、两个命令按钮。
设置各对象的属性如表 3-4所示。
( 2) 编写事件过程如下:
Private Sub Command1_Click( )
Dim r!,c!,a!
r = InputBox( "请输入半径 ","输入框 ")
c = 2 * r * 3.14159
a = 3.14159 * r ^ 2
Text1.Text = c
Text2.Text = a
End Sub
Private Sub Command2_Click( )
End
End Sub
消息框执行 VB提供的 MsgBox函数,可以在屏幕上出现一个消息框,消息框通知用户消息并等待用户来选择消息框中的按钮,MsgBox函数返回一个与用户所选按钮相对应的整数 。
MsgBox函数的格式:
MsgBox( 提示,[,按钮数值 ][,标题 ])
例如,inta=MsgBox(“密码错,,21,,密码核对,)
执行该语句后,屏幕上显示如图 3-10所示的消息框 。
在 MsgBox函数格式中,,提示,和,标题,的含义同
InputBox函数,,按钮数值,的含义复杂一些,,按钮数值,指定按钮的数目及类型,使用的图标样式及缺省按钮是什么等,,按钮数值,的缺省值是 0。 本例
,按钮数值,是 21,其含义是:消息框中有,×,图标,
有,重试,及,取消,两个按钮,缺省按钮是,重试,
按钮 。 当用户单击消息框中的一个按钮后,消息框即从屏幕上消失 。 在上面的语句中,将函数的返回值赋给了变量 inta,在程序中可引用 inta作相应的处理 。
下面对,按钮数值,作进一步的解释 。
,按钮数值,是 3个数值之和,这 3个数值分别代表按钮的数目和类型,使用的图标样式以及缺省按钮是什么 。
“按钮数值,是从上面 3个表中各取一个数相加而得。
注意:每个表只能取一个数。例如,按钮数值,是 21,
系统会自动把它分解成分别属于上面 3个表中的 3个值 5,
16,0。 21=5+16+0,这种分解是唯一的。
在程序中,一般把,按钮数值,写成符号常数相加的形式,如把 21写成
VbRetryCancel+vbCritical+vbDefaultButton1,这样可使程序含义清楚,从而增加程序的可读性。当然,把
21写成 5+16+0也是允许的。
MsgBox函数的返回值是根据用户单击哪个按钮而定的,
见表 3-8。
通常,在程序中要根据 MsgBox函数返回值的不同作不同的处理,这需要用到第 4章中介绍的选择结构方面的知识。
MsgBox也可以写成语句形式,例如,MsgBox
"密码错 ","密码核对 "
执行此语句也产生一个消息框,如图 3-11所示 。
MsgBox语句没有返回值,因此常用于比较简单的信息提示 。
4.5 注释语句、结束语句
3.9.1 注释语句为了提高程序的可读性,通常在程序的适当位置加上必要的注释 。 在 VB中用,'”或
Rem来标识一条注释语句,格式为:
' | Rem <注释内容 >
例如:
Rem 2002年编写
Private Sub Form_click()
Dim a$ ' 定义一个字符串变量
a="Visual Basic6.0中文版 " ' 为变量赋值
print a ' 打印 a的内容
End Sub
4.9.2 结束语句格式,End
End语句用来结束程序的执行,并关闭已打开的文件。
例如:
Private Sub Command3_Click()
End
End Sub
该过程用于结束程序,即单击命令按钮 Command3时,结束程序的运行。
暂停语句
Stop
暂停程序执行
With… End With
对同一个对象执行多个操作如:
With Label1
.Caption=“欢迎,
.Autosize=True
.FontSize=28
End With
鸡兔同笼问题一个笼子中有鸡 x只,兔 y只,每只鸡 2只脚兔 4只脚,已知鸡兔总数 h,总脚为 f。
求:鸡和兔有多少只?
由,x+y=h
2x+4y=f
得,x=(4h-f)/2
y=(f-2h)/2
输入方式:文本框,InputBox
输出方式:文本框、标签,MsgBox,Print
程序调试在程序中发现错误并排除错误的过程叫做程序调试 。 VB提供了丰富的调试手段,可以方便地跟踪程序的运行,排除程序错误 。
3.10.1 程序错误程序设计中常见的错误可分为以下 3
种:编译错误,运行错误和逻辑错误 。
1.编译错误编译错误指 VB在编译程序过程中出现的错误 。 此类错误是由于不正确的构造代码而产生的,比如关键字输入错,遗漏了必需的标点符号等 。
例如,Printt "hello"语句会导致编译错误 。
2.运行错误运行错误指编译通过后,运行代码时发生的错误 。 此类错误通常是代码执行了非法操作或某些操作失败 。 比如,要打开的文件没找到,除法运算时除数为零,数据溢出等 。
例如,print 245*1000语句 。
3.逻辑错误程序运行后,得不到应有的结果,这说明程序存在逻辑错误,逻辑错误是由于程序结构或算法错误而引起的 。
例如,把语句 s=s+l中的英文字母 l写成了数字 1。
3.10.2 3种模式
VB开发环境有 3种模式:设计模式,
运行模式和中断模式 。 开发环境中的标题能够显示出当前所处的模式 。
1.设计模式
2.运行模式
3.中断模式
3.10.3 调试方法使用 VB提供的调试工具与调试手段,
可提高程序调试的效率 。
1.逐语句执行
2.设置断点
3.使用调试窗口
VB提供了 3个供用户调试程序使用的调试窗口:立即窗口、本地窗口和监视窗口。
可以利用这些窗口观察有关变量的值。可单击
,视图,菜单中的相应命令打开它们。
( 1)立即窗口
( 2)本地窗口
( 3)监视窗口