编程基础.docx

上传人:b****6 文档编号:5281828 上传时间:2022-12-14 格式:DOCX 页数:17 大小:29.25KB
下载 相关 举报
编程基础.docx_第1页
第1页 / 共17页
编程基础.docx_第2页
第2页 / 共17页
编程基础.docx_第3页
第3页 / 共17页
编程基础.docx_第4页
第4页 / 共17页
编程基础.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

编程基础.docx

《编程基础.docx》由会员分享,可在线阅读,更多相关《编程基础.docx(17页珍藏版)》请在冰豆网上搜索。

编程基础.docx

编程基础

在我们设计完用户界面后,我们将开始了编写指令代码的过程。

这是一个相对枯燥但却是必须的过程。

§1VisualBasic编程概述

一、事件驱动应用程序

简单地说就是当事件发生时程序才工作,否则程序将等待事件的发生。

在事件驱动程序中,用户的操作或系统事件执行一个事件过程,这样,程序执行的顺序就由哪一个事件的发生决定,由用户的操作决定。

就是用户管理,代码响应。

二、事件过程

用户界面对事件响应的三个部分是:

1.窗体

2.控件

3.菜单

编写程序代码的通常过程是:

1.确定哪一个对象(窗体,控件或菜单)做出反应——单击此对象选中它;

2.打开代码窗口——简单的方法是按F7键或者双击对象;

3.找到响应的事件;

代码窗口的Object列表框可以选择对象,旁边的Proc列表框可以选择对象的事件。

如果事件已经有了代码的话,那么在Proc列表框里这个事件名用黑体显示。

空的事件代码都由两行组成。

如:

PrivateSubForm_Load()

|

EndSub

4.编写程序代码。

三、变量

程序总是要做三件事:

1.输入数据;

2.处理数据;

3.输出数据。

在程序运行时,这些数据被储存在变量里,变量可理解为计算机内存条上的一个微观的东西。

一旦关机,变量就消失了。

变量在VisualBasic里有两种类型:

1.程序员建立的变量;

2.对象的属性往往也看成变量。

变量必须满足:

1.字母开头;

2.不超过40个字;

3.只包括字母,数字,下划线;

4.不是保留字。

创建变量的方法:

1.用Dim语句说明它;

2.可以省略声明语句而用变量声明字符生成确定类型的变量。

在程序执行时若要生成变量并指定数据类型,可加入下表所示的变量声明字符后缀。

符号

数据类型

举例

$

String

A$,messageText$

%

Integer

Counter%,var%

&

Long

Population&,colorValue%

!

Single

Distance!

#

Double

ExactDistance#

3.把一个值赋给一个名称,VisualBasic就把这个名称看成变量。

Dim语句的语法是:

DimVariableNameAsType

例如:

DimMyName

AsType部分可以省略,它涉及到我们将要讲的关于数据类型的问题。

Dim语句的作用是声明变量并分配存储空间。

赋值语句的语法是:

VariableName=Value或VariableName1=VariableName2

与数学中的等号意义不同,这里等号只表示把后者的值赋给前者,所以,A=A+1在VisualBasic里是合法的。

例如:

cmdExit.Caption=“Exit”(这是一个改变对象属性的例子)

四、数据类型

变量可以存放数字或字符串等东西,但是MyName变量并不需要存放数字,所以你可以限制存放的数据类型。

你可以规定MyName只能字符串。

VisualBasic提供了七种数据类型:

1.整型(Integer)

2字节整数,标识符(同上面的变量声明字符)为百分号(%),范围从-32768到32767,运算很快。

2.长整型(Long)

4字节整数,标识符为&,范围从-2147483648到2147483647,运算很快。

4.单精度型(Single)

4字节浮点数,标识符为!

,范围可达38位数字,前7位可靠,运算比整型和长整型慢。

5.双精度型(Double)

8字节浮点数,标识符为#,范围可达300多位,但是可靠的只有前16位数字。

5.字符串型(String)

标识符为$,在32位版本的VisualBasic4.0中,字符串可容纳高达200兆字节的内容。

6.货币型(Currency)

8字节定点数,标识符为@,小数点右边4位,左边15位。

7.日期型(Date)

用于存放日期,范围从#January1,100#到#December31,9999#,日期的格式取决于系统的设定,赋值方法是:

New=#January1,2000#。

8.字节型(Byte)

VisualBasic4.0新增加的数据类型,用于存放0到255的整数。

9.布尔型(Boolean)

只有True或False两个值。

10.变体型(Variant)

如果你不告诉VisualBasic你的变量是什么类型,VisualBasic就自动把它看成变体型。

变体型的意思就是它没有类型,或者是任何类型。

如果声明了Variant变量而未赋值,则其值为Empty。

例如:

DimMyNameAsString

事实上,语句DimMyName只是将MyName变量声明为变体类型罢了,因为变体类型是VisualBasic的缺省类型。

但是,我们使用数据类型的原因是什么呢?

1.使用最小的数据类型可节省内存;

2.程序员可以容易地找出每一变量所存放的数据类型;

3.可以防止数据类型存放错误引起的错误。

例如:

PrivateSubForm_Load()

DimMyNameAsString

MyName=“DongShan”

EndSub

●变换变量类型

有时需要将一种变量类型变成另一种变量类型,下表列出了进行变量类型转换的函数:

函数

说明

函数

说明

Cbool

将变元变成布尔值

CLng

将变元变成长整型值

Cbyte

将变元变成字节值

CSng

将变元变成单精度值

CCur

将变元变成货币型值

CStr

将变元变成字符串值

CDate

将变元变成日期值

Cvar

将变元变成变体值

CDbl

将变元变成双精度值

CVErr

将变元变成错误值

CInt

将变元变成整型值

例如要将如下的初始化变量:

DimAAsInteger

变成双精度值,可用下列函数:

B=CDbl(A)

●用户自定义的数据类型------记录

保存多个相同或不同类型数值的结构称为记录(record)。

在VISUALBASIC中定义记录,用Type语句,其语法如下:

TypevarType

Variable1AsvarType

Variable2AsvarType

VariablenAsvarType

EndType

例如定义一个名为CheckRecord的记录:

TypeCheckRecord

CheckNumberasInteger

CheckDateasDate

CheckAmountasSingle

EndType

CheckRecord结构可以像普通变量类型一样使用。

要定义这个类型的变量,使用如下语句:

Dimcheck1AsCheckRecord

要对结构的各个字段访问,可使用如下语句:

check1.CheckNumber=123

check1.CheckDate=#08/14/1996#

check1.CheckAmount=240.00

●强制的变量声明

VisualBasic并不要求变量声明,但对于编写大型应用程序时,变量声明的确很有好处。

因此VisualBasic提供强制声明的方法,只要在窗体或模块的声明部分加上一条语句:

OptionExplicit

这个语句使编译器检查每个变量的声明,如果要用的变量没有声明,则发出一个错误消息!

●数组

单个变量只能存放单个实体,而数组可以存放一组相关的数据。

像变量一样,数组有名称,存放在数组中的数值通过一个索引来访问。

数组的定义必须用Dim语句声明,如下:

DimNames(9)AsString'也可以不指定数据类型

Names是保存了10个元素的数组,Names(0)是第一个元素,Names(9)是最后一个元素。

数组元素的赋值如下:

Names(0)="John"

Names

(1)="Tom"

Names(9)="Xionghui"

数组的第一个元素的索引可以不是0,可以在Dim语句中指定下限:

DimNames(1To16)

DimNames(5To16)

●动态数组

有时可能不知道需要多大的数组,这时可以生成动态数组,其长度可以在运行程序时改变。

定义动态数组,和平常一样用Dim语句(或Private和Public),但不要指定长度(或维数):

DimDynArray()

后面等能确定维数的时候,再用ReDim语句重新确定实际长度(或维数):

ReDimDynArray(UserCount)

ReDim语句只能出现在过程之中,它是可执行语句。

但每次执行ReDim语句,数组中原先存放的所有当前值会消失。

但有时可能想改变数组的长度,而不损失原有的数据,幸好VisualBasic提供了Preserve关键字,它就能作到!

例如下面语句将数组加大一个元素而不改变原有数据:

ReDimPreserveDynArray(Ubound(DynArray)+1)

五、变量的使用范围

VisualBasic的变量有三种使用范围。

1.局部变量;

2.模块级变量,也可以叫做窗体级变量,因为窗体和模块是同级的;

3.全局变量。

局部变量只存在于说明它的过程里,为说明一个局部变量,应在一个事件过程中说明。

模块级变量可存在于这个窗体或模块中,可以被所有窗体内的事件过程所引用和改变,说明模块级变量的方法是:

1.按F7键打开代码窗口;

2.在Object列表框中选择(general);

3.在Proc列表框里选择(declarations);

4.用Dim语句说明。

全局变量从程序开始时存在至程序结束,不过全局变量的错误也许会导致致命的错误,你不得不读遍程序来寻找到底在说明地方改变了全局变量。

创建全局变量的方法是:

1.从Insert菜单里选Module项,这个命令为一个BAS模块文件显示代码窗口;

2.在Object列表框中选择(general);

3.在Proc列表框中选择(declarations);

4.用Public语句说明全局变量。

六、算术,逻辑,比较运算符

1.算术运算

尽管一台计算机看来很高科技,但它在算术运算方面并不比一个计算器强多少。

运算符

运算

运算符

运算

+

加(也是字符串拼接)

\

整数除

-

减(也是取负值)

Mod

取余数

*

^

乘方

/

浮点数除

&

字符串拼接

2.逻辑运算

逻辑运算是对True和False进行操作的运算。

VisualBasic将True的值看成-1,将False的值看成0。

运算符

使用

意义

And

变量1And变量2

两个量均为True,才返回True

Or

变量1Or变量2

只要有一个量为True,返回值就为True

Xor

变量1Xor变量2

两个量一个为True,一个为False才返回True

Not

变量1Not变量2

简单地把True变为False,把False变为True

3.比较运算

比较运算是比较两个数或字符串的大小。

运算符

意义

运算符

意义

<

小于

>=

大于等于

<=

小于等于

=

等于

>

大于

<>

不等于

有时候,复杂的运算会把我们搞晕,良好的习惯是加括号。

如:

x=(5*(8+9))^2,则计算机先处理(8+9),再处理(5*(8+9)),最后才是乘方。

再如:

x=(5*6)/2,这个括号加得似乎没什么意义,但它使我们清晰地知道是从哪儿开始运算的。

七、字符串操作

有时程序需要对字符串进行操作,比如从一个文件的完整路径名中找出文件的名称。

下面介绍几个常用的函数。

1.Len函数

返回字符串的长度。

如Length=Len(“string”),则Length=6。

2.LCase函数,UCase函数

LCase函数把字符串变为小写字母。

UCase函数把字符串变为大写字母。

如:

x=LCase(“DONGSHAN”)

x=UCase(“visualBasic”)

3.Left函数,Right函数

语法是:

Left(VariableName,N)

Right(VariableName,N)

Left函数从字符串的左边提出N个字符。

Right函数从字符串的右边提出N个字符。

4.Mid函数

语法是:

x=Mid(VariableName,n,m)

Mid函数从VariableName字符串的第n个字符开始取出m个字符。

5.Instr函数

语法是:

Instr(VariableName1,VariableName2)

Instr函数从VariableName1里找出VariableName2的位置。

如:

x=Instr(“ABCD”,”CD”),此时x=3。

如果计算机没找到要找的字符串,则这个函数返回0。

6.LTrim函数,RTrim函数,Trim函数

LTrim函数将去掉字符串前的空格。

RTrim函数将去掉字符串后的空格。

Trim函数将去掉字符串前后的空格。

如:

x=RTrim(“John“),此时x=“John”。

7.Val函数

语法是:

x=Val(VariableName)

这个函数将字符串里的数字字符串转化为数字。

如:

Y=Val(“123”),则Y=123。

当VisualBasic发现下一个字符不是数字时就停止继续转化。

8.Str函数

与Val函数相反,Str函数将数字转化为字符串。

语法是:

x=Str(VariableName)

八、常量及注释

1.使用常量

如果我们编一个程序从每笔收入中拿出40%用于饭卡的消耗,则在程序中我们会总是用到0.4这个数字。

这时粮食涨价了,我们不得不把0.4全都改成0.5,这就显得非常麻烦。

我们本可以定义并使用一个常量为0.4,在涨价时把它小小调整一下就可以了。

常量命名的要求与变量一样。

常量的使用范围也与变量一样,分为:

局部常量(在过程里用Const说明)、模块级常量(在窗体,模块的声明区用Const说明)、全局常量(在模块的声明区用PublicConst说明)

2.使用注释

用“‘“注释。

如:

‘ThisSubisusedtogetWindowsversion

撇号右边的东西VisualBasic通常用绿色的字来显示,而且VisualBasic将忽略注释的东西。

在VisualBasic所附的示例程序里使用了大量的注释,这样使其他人(也包括自己)能更好地读懂程序,所以使用注释是一个好习惯。

注释的忽略性也有一些小用处,如:

x=(3.5^2-4)*(5+6.73*7\2)-10.89

现在你需要测试这一语句是否是必要的,于是你把它删除,再运行看是否能得出正确的答案,如果它是不必要的,那就很顺利,如果它是必要的,你就不得不痛苦地再输入一遍而且还有输错的可能。

现在你可以选择把它注释掉,这样程序运行将忽略它的存在,也可达到上面测试的目的。

§2VisualBasic的语句

一、条件选择语句

人们面临选择的时候精神会变得脆弱,这就是为什么我们总是轻信偷看来的答案。

因此,选择对于人类来说是一件复杂的事情,而对于计算机来说,则非常简单。

它头脑简单,因而永远不会发出哈姆雷特式的疑问——“是生,还是死?

1.条件式

条件式必然代表一个值,是真(True)或者是假(False)计算机可以检测出这个值以做出相应的行动。

下面就是判断的例子,其中加下划线的部分就是指条件式。

IfLove=TrueThen...

与之相同的简略的形式是:

IfLoveThen...

而IfLove=FalseThen...与IfNotLoveThen...的意义是相同的。

条件式中可加入逻辑运算符,如:

Ifx<20Andx>15Then表示当15

Ifx<15Orx>20Then表示当x<15或x>20时程序将做什么。

2.If-Then语句

语法是:

IfConditionThenInstruction

例如:

Ifn>25ThentxtABC.Text=“ABC”

3.If-Then-EndIf语句

IfConditionThen

Instruction1

Instruction2

EndIf

这种结构可指示计算机执行一串语句。

4.If-Then-Else语句

IfConditionThen

Instructions1

Else

Instructions2

EndIf

这种结构指示计算机在条件不成立时应该做的事,这样保证了计算机至少执行一些语句。

5.If-Then-ElseIf语句

IfCondition1Then

Instructions1

ElseIfCondition2Then

Instructions2

ElseIfCondition3Then

Instructions3

Else

Instructions4

EndIf

类似这样的完整的语句可做出多次判断,又保证计算机至少执行一些代码。

6.Select-Case语句

被选择的值为许多定值时,这个语句就更有用一些。

SelectCaseVariableName

CaseValue1

Instructions1

CaseValue2

Instructions2

CaseValue3

Instructions3

EndSelect

Select-Case语句的不足是它需要确切的值。

7.嵌套结构

我们可以把许多各式各样的条件语句嵌套在一起,而且这种嵌套在理论上没有限制。

但事实上嵌套使用得越少,代码就越容易被理解。

在嵌套时最好使用便于观察的缩排的格式。

如:

SelectCaseGrade

Case"95"

IfClass="31"Then

Dorm="1106-1108"

ElseIfClass="33"Then

Dorm="1104-1105"

EndIf

EndSelect

二、循环语句

计算机擅长反复地做一件事,循环语句将发挥它的这种优势。

1.Do-Loop循环

Do-Loop循环基本上是一个死循环,所以需要在循环时判断一些条件。

(1)DoWhile循环当Condition条件为真时执行循环

DoWhileCondition

Instructions

Loop

While也可以放在Loop语句上。

(2)Do-LoopWhile循环

Do

Instructions

LoopWhileCondition

这两种循环的不同之处是:

DoWhile循环先判断条件,所以,DoWhile循环可能一次都不执行。

DoLoopWhile循环先执行指令,再判断循环条件。

所以DoLoopWhile循环至少执行一次指令。

但它们都是当一定条件为真时的循环。

(3)DoUntil循环当一定条件为假时执行循环

DoUntilCondition

Instructions

Loop

DoUntil先判断条件,所以循环可能一次都不执行,它是当一定条件为假时的循环。

DoUntil等同于:

DoWhileNotCondition

Instructions

Loop

(4)DoLoopUntil循环

Do

Instructions

LoopUntilCondition

DoLoopUntil先执行指令再判断循环条件,所以指令至少被执行一次。

DoLoopUntil是当一定条件为假时的循环。

2.计数的循环For-Next

(1)For-Next循环必须有一个控制变量,这个控制变量一般为整型。

语法是:

ForCounter=StartToEnd

Instructions

NextCounter

这里的Counter就是控制变量。

如果想运行5次,可用下面的循环:

Fori=1To5

Instructions

Nexti

这时,每循环一次,i的值就加1。

(2)向前向后计数

ForCounter=StartToEndStepIncrement

Instructions

NextCounter

Increment表明每次循环控制变量所加的值。

如下面代码也可循环5次:

Fori=5To1Step-1

Instructions

Nexti

只有当Counter<=End时循环才执行,当Counter>End的时候循环就不执行了。

所以

Fori=1To10Step7

Instructions

Nexti

循环将执行两次,一次是当i=1时,一次是当i=8时。

最好不要在循环内改变控制变量的值,这样往往会导致逻辑上的错误。

3.与条件语句一样,循环语句也可以嵌套。

如:

DoWhileCondition

Fori=1To5

Instructions

Nexti

Loop

循环总是先从内部开始的。

比较:

Fori=1To4Fori=1To4

Forj=1To5Forj=1To5

NextjNexti

NextiNextj

是允许的这种For-Next的缠绕是不允许的

4.从循环中快速退出

通过使用命令ExitDo和ExitFor,我们可以在循环未结束前跳出循环。

但我们应该保证所需的动作完成后再跳出来,否则也许会遇到新的错误。

而且不要试图用Goto语句从循环外跳入循环。

下面的代码可以检测出3至20之间的质数。

其中使用了循环的嵌套及条件语句,并且当发现i不是质数时立即用ExitFor转向对下一个数的检测。

SubForm_Click()

Dimi,j,xAsInteger

Fori=3To20

x=False

Forj=2Toi-1

If(iModj)=0ThenExitFor

Ifj=i-1Thenx=True

Nex

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1