VB程序设计第三章Visual Basic程序设计基础.ppt_第1页
VB程序设计第三章Visual Basic程序设计基础.ppt_第2页
VB程序设计第三章Visual Basic程序设计基础.ppt_第3页
VB程序设计第三章Visual Basic程序设计基础.ppt_第4页
VB程序设计第三章Visual Basic程序设计基础.ppt_第5页
已阅读5页,还剩93页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 3 章,Visual Basic 程序设计基础,3.1 知识要点 3.2 习题与解答 3.3 实训指导 3.4 测验题,1、标识符 标识符是编程人员在编程过程中为变量、常量、数据类型、过程、函数、类等所定义的以供识别的名字,使用标识符可以显式地完成对它们的引用。在Visual Basic语言中,标识符的命名需遵守如下规则:,所有标识符必须以26个英文字母之一开头,后跟字母、数字或下划线符号。 所定义标识符的长度不能超过255个字符。 用户自定义的标识符不能和VB中的运算符、语句、函数和过程名等关键字同名,也不能与系统已有的方法和属性同名。 关键字是VB保留下来的作为程序中有固定含义的标识符

2、,不能被重新定义。VB中的关键字包括:,As Binary ByRef ByVal Date Else Empty Error False For Friend Get Input Is Len Let Lock Me Mid New Next Nothing Null On Option Optional ParamArray Print Private Property Public Resume Seek Set Static Steo String Then Time To True WithEvents,2、变量 这里所说的变量是指其值在VB应用程序运行过程中可以改变的量。在VB应用

3、程序执行期间,经常用变量来存储临时数据,也可以说变量就是命名的内存单元。程序中用变量名来引用内存单元,变量在整个程序运行中其值可以改变,但某一时刻变量有惟一确定的值。变量有两个特性:名称和数据类型。,变量名称的命名规则如下: 变量名的第一个字符必须是英文字母,后跟任意字母、数字或下划线,最多为255个字符。 变量名不能包含Visual Basic语言中的保留字和小数点,因在VB中小数点是专用于引用属性、方法及用户自定义类型的。 变量名在同一作用范围内不能重名。,(1)变量的数据类型 变量的数据类型指明了变量中能够保存哪种类型的数据,同时也说明了为保存变量中的所需的存储空间的大小。Visual

4、Basic 60提供了Byte,Boolean,Integer,Long,Currency,Single,Double,Date,String,Variant等多种数据类型。按保存数据的种类可分为数值型、字符型、日期型、逻辑型、变体型和对象型几种类型。,(2)变量的作用域 在一个过程内部声明变量时,只有过程内部的代码才能访问或修改这个变量的值;它的作用范围,对该过程来说是局部的。但是,有时需要使用具有更大范围的变量,例如需要这样一个变量,其值对于同一模块内的所有过程都有效,甚至对于整个应用程序的所有过程都有效。Visual Basic允许在声明变量时指定变量的作用域。,在Visual Basi

5、c 6.0中,变量的作用域分为两级:过程级和模块级。过程级的变量只能在声明的过程中使用,不能在其它过程中使用;模块级变量既可以在声明它的过程中使用,也能够在同一模块的其它过程中使用。过程级变量又称做局部变量,模块级变量又称做全局变量。,3、常量 常量是指在程序运行过程中,其值始终保持不变的量。在Visual Basic中,经常用常量表示在整个应用程序中事先设置的、不会改变数值的数据。一般对于程序中使用的常数,能够用常量表示的应尽量用常量表示,这样可以用有意义的符号表示数据,以增强程序的可读性和可修改性。,在Visual Basic中,常量有两种形式:直接常量和符号常量。根据所使用的数据类型,直

6、接常量又分为:字符串常量、数值常量、布尔常量、日期常量。 符号常量又分为两种:系统内部定义常量和用户定义常量。符号常量与变量一样,也有局部、模块级和全局的作用范围,只是常量的值是固定不变的。,4、数组 数组是程序设计语言中一个十分常见的概念。 (1)关于数组 在Visual Basic语言中,除一般的变量外,还允许使用一组属性 相同的变量来表示一个数据系列集合,这就是数组。 数组内的元素是连续存放的,且有上、下两个边界限制数组内元素的个数、数组的起始位置以及结束位置。,有了数组,就可以用相同的名字引用一系列的变量,并用数字索引(下标)来识别它们。在许多场合使用数组可以缩短和简化程序。在一般情况

7、下,同一个数组中元素的类型必须相同,其具体类型可以是前面所讲过的各种基本数据类型。,特别地,当数组类型被指定为Variant时,则其元素的类型可以为各种基本数据类型的混合。数组可以是一维的,也可以是多维的。 从数组的存储特性来看,一般可将Visual Basic语言中的数组分为两类:静态数组和动态数组。静态数组的大小始终保持不变,而动态数组的大小在程序运行过程中可以改变。,(2)静态数组 对于静态数组,有三种声明方法供选择:声明全局数组、声明模块数组和声明局部数组。具体采用哪一种方法取决于数组的有效使用范围。在声明数组时,数组名之后跟一个用括号括起来的界标。界标的取值不得超过Long数据类型的

8、范围:-2147483648到2147483647。,声明静态数组时,必须给定该数组使用的有效范围。以一维数组为例,可以声明如下几类数组: 局部数组:在模块中用Dim语句来声明数组。 模块数组:在模块中用Private语句来声明数组。 全局数组:在模块中用Public语句来声明数组。,设定上界下界声明数组时,在数组名后需跟一个用括号括起来的上界(默认下界为0),上界不得超过Long数据类型的范围。声明格式如下: Dim |Private | Public 数组名(数组长度一1) As数组元素的数据类型 同时,我们可以使用关键字To来显式地提供下界。,例如,对于上面所声明的数组,若规定其下标索引

9、取值范围为从l到10,则可以使用如下语句进行声明: Dim MyArray(1 T0 10) As String,(2)动态数组 在编程过程中,若事先不能确定数组的大小,可以声明该数组为动态数组,然后在需要的时候再指定数组的大小。声明动态数组与声明静态数组类似,可以使用不同的语句限定数组的有效使用范围。,若要将数组声明为全局数组,可以使用Public语句声明;若要将数组声明为模块数组,可以使用Private语句声明;若要将数组声明为局部数组,可以使用Static或Dim语句声明。在声明动态数组的过程中,不需要用户给出数组的具体长度,只需保留一个空维数表即可。,5、流程控制 流程控制指控制程序的

10、执行次序。Visual Basic 6.0的流程控制有三种类型: 条件控制,使用条件语句 循环控制,使用循环语句 转移控制,使用Goto语句,条件控制根据不同的条件执行不同的语句,它是最基本的一种控制方式。 循环控制重复地执行一组语句,直到满足某个条件或执行到一定次数为止。 转移控制无条件地将程序的执行权转移给所指示的语句。 这三种控制结构再加上循序执行,就构成了所有应用程序的基本结构。,(1)条件语句 Visual Basic 60的条件语句有三种格式: IfThen IfThenElse Select Case,2)循环语句 循环语句用于重复执行一行或多行代码。Visual Basic 6

11、0的循环语句有四种形式,分别为: ForNext For EachNext DoLoop WhileWend 而DoLoop本身有四种格式,丰富多采的表达方式为我们编写清晰流畅的应用程序提供了有效手段。,3.1 知识要点 3.2 习题与解答 3.3 实训指导 3.4 测验题,3.2习题与解答,1数组有什么特点?什么是数组的上界、下界?什么是数组的维数? 答案:数组的上界和下界分别表示数组的最大下标和最小下标;数组的维数表示数组下标的个数。 2Data(21)是一个数组还是一个数组元素? 答案:Data(21)是一个数组元素。,3如果在代码窗口的声明段中加入“Option Base 1”,对程序

12、中声明数组有何影响? 答案:说明数组下界的默认值为1。 4数组的下标是什么类型的值?如果下标为13.5,问引用的是数组中的哪个元素? 答案:数组下标是一个整型量,如果有小数则自动按四舍五人取整。所以下标为13.5,等价于引用数组中下标为14的元素。,5二维数组中的元素在内存中是怎样排列的? 答案:二维数组中的元素在内存中是按行排列的。 6过程有几种形式?VB程序主要由哪个过程构成? 答案:VB的过程分Sub过程、Function过程和Property过程。其中,Sub过程又可分为事件过程和通用过程。VB程序主要由Sub过程构成。,7调用过程时传递参数的方式有哪两种?默认的方式是什么? 答案:在

13、调用过程时,参数的传递有按值传递和按地址传递两种方式,默认的是按地址传递方式。 8程序有哪几种基本结构?试举例说明。 答案:程序有三种基本结构:顺序、选择和循环。举例略。,3.1 知识要点 3.2 习题与解答 3.3 实训指导 3.4 测验题,3.3实训指导,3.3.1技能训练目的 掌握定义标识符的方法。 掌握变量和常量使用方法。 掌握数组的定义和使用方法。 掌握条件语句的三种格式并能设计简单程序。 掌握循环结构语句的格式并能设计简单程序。 能够灵活使用部分内部函数并能使用过程。,3.3.2技能训练内容 【实训3.1】编程计算分段函数 x2 (x12),参考代码: Private sub Fo

14、rm_click() Dim X As integer,Y As Long X=InputBox(“请输入x的值”,”输入”) Select Case X Case Is12 Y=X3-1 End Select Print “Y=” A;”个”;”负数有”;B;”个”;”零有”;c;”个” End Sub,【实训3.3】用随机函数生成3个200以内的正整数,按从小到大的顺序依次输出。,参考代码: private sub Form_click() Dim C%,B%,A%,intTemp% Randomize A=(200*Rnd) B=(200*Rnd) c=(200*Rnd) If AB T

15、hen 找出A和B中较小的一个数 intTemp=A A=B B=intTemp End if,If Ac Then 找出A和c中较小的一个数 intTemp=A A=C C=intTemp Endif if BC Then intTemp=B B=C C=intTemp Endif print A ,B ,C End Sub,【实训3.4】用随机函数生成并输出20个两位数,找出其中的最小值并且指出它是第几个数。 参考代码: Private sub Form_click() Dim rn%,min%,n%,i% RandOmize(Timer) i=1 min=90*Rnd+10 假设第一个数

16、最小,Print i,min For i=2 To 20 rn=90*Rnd+10 Print i,rn if rnmin Then min=rn n=i Endif Next i Print最小数是;min;位置在;n End Sub,【实训3.5】形成数列1,2,3,5,16,231,的前10项,该数列的规律是从第三项起,每一项是前两项的平方差。 参考代码:,Private sub Form_click() Dim a As Double,b As Double,c As Double a=1 b=2 Print 1,a print 2,b For i=3 To 10 c=b2-a2 数列

17、从第三项起是前两项的平方差 a=b b=c Print i,c Next i End Sub,【实训3.6】求100500之间各位数字之和等于5的所有整数。 参考代码:,Private sub command1_Click() For i=100 To 500 ge=i Mod 10 求出个位 shi=(i10)Mod 10 求出十位 bai=i100 求出百位 if(ge+shi+bai)=5 Then Print i Next i Print End Sub,【实训3.7】找出10000以内的同构数。同构数是指一个自然数平方的最后几位正好是该自然数本身,例如252=625,3762=141

18、376等。提示:本题可利用字符串函数Right()、Len()等,根据自然数的长度取出其平方数的最后若干位进行比较。,参考代码: Private sub Form_click() Print 10000以内的同构数有: For i=1 To 10000 if i=val(Right(i2,Len(i) Then Print i End if Next i End Sub,【实训3.8】利用级数 求当n=500、n=1000、n=2000时圆周率的近似值。 参考代码:,Private sub Form_Click() Const N=500 Const N=1000 Const N=2000 D

19、im i As integer, t As Double, pi As Double For i=1 To N t=1/i2 Pi=Pi+t Next i Pi=sqr(Pi*6) Print Pi End Sub,【实训3.9】用泰勒级数求sin20的值,要求级数最后一项的绝对值不能小于1E-6。提示:角度要转换成弧度。 参考代码:,Option Explicit Private Sub Form_click() Dim i As Integer, N As Integer, F As Integer, t As Double Dim X As Single, term As Single,

20、 sinx As Single X = 20 * 3.1415926536 / 180 角度转换成弧度 Debug.Print X term = X N = 1: sinx = 0: F = 1 Do While term = 0.000001,sinx = sinx + term * F N = N + 2 t = 1 For i = 1 To N 本循环计算N! t = t * i Next i term = X N / t F = -F Loop Print sin(20)=; sinx End Sub,【实训3.10】有一个数组Data存放了N个数据,现从中删除了一个元素,其余的元素依

21、次向前递补(假设删除的是第三个元素,则要将第四个元素移到第三个元素处,第五个元素移到第四个元素处,以此类推),然后输出数组内容。 参考代码:,private sub command1_Click() Dim Data(10) As integer Dim I%,N%,T% N=10 For I=l To N Data(I)=I*2 Next I T=InputBox(删除第几个元素?) For I=T+1 To N Data(I-1)=Data(I) Next I N=N-1 For I=1 To N Print Data(I); Next I End Sub,【实训3.11】下面的程序用于求

22、一个二维数组对角线上元素之和。 参考代码: Private sub command1_click() Dim Data(5,5)As integer Dim I%,J%,For I=1 To 5 For J=1 To 5 Data(I,J) =1 Next J Next I For I=1 To 5 For J=1 To 5 if I=j or I+J=6 then Data(0,0) =Data(0,0)+Data(I,J) Next J Next I Print Data(0,0); End Sub,【实训3.12】设数组A包括10个整型元素。下面程序的功能是求出A中各相邻两个元素的和,并

23、将这些和存在数组B中,按每行3个元素的形式输出。 参考代码:,Private sub Command1_Click() Dim A%(10),B%(9) Dim I% For I=1 To 10 A(I)=I Next I For I=1 To 9 B(I)=A(I)+A(I+1) Next I For I=1 To 9 Print B(I), If I MOD 3=0 Then Print Next I End Sub,【实训3.13】下面程序的功能是输入10个整数,找出最大数与最小数所在的位置,并把二者对调,然后输出调整后的10个数。,参考代码: Private sub Command1_

24、click() Dim D(10) As Integer Dim I%,Max%,Min%,Temp% Randomize For I=1 To 10 D(I)=Rnd*100 Next I For I=1 To 10 Print D(I); Next I Print Max=1 Min=Max,For I=2 To 10 If D(I)D(Max)Then max=i If D(I)D(Min)Then min=i Next I Temp=D(Max) D(Max)=D(min) D(Min)=Temp For I=1 To 10 Print D(I); Next I End Sub,【实训

25、3.14】找出自然数21000之间所有的素数放人数组Prime中,并按每行6个素数的格式在窗体上输出。 参考代码:,Private sub command1_click() Dim prime(1000) As integer Dim f As Boolean K=0 For n=2 To 1000 f=True For I=2 To n-1 if n Mod i=0 Then f=False Exit For End If,Next I If f Then K=K+1 prime(K) =I End if Next n Print 21000之间有;K;个素数,具体: Print For I

26、=1 To K Print prime(I); If I Mod 6=0 Then Print Next I End Sub,【实训3.15】定义一个整型数组,将100个随机整数从下标1开始放入该数组中,求出该数组中具有偶数值的偶数下标元素之和。 参考代码:,Private sub Form_click() Dim data%(1 To 100) Randomize(Timer) For i=1 To 100 data(i) =Rnd*100 If i Mod 2=0 And data(i)Mod 2=0 Then sum=sum+data(i) EndIf Print data(i); If

27、 i Mod 10=0 Then Print Next i Print 偶数值且为偶数下标的元素之和:;sum End Sub,3.1 知识要点 3.2 习题与解答 3.3 实训指导 3.4 测验题,3.4测验题,3.4.1选择题 1计算一个班级某门课程的平均分,数据通过键盘输入,-1表示数据输入结束,正确的答案是: 、 、 。 Private Sub Command1_click() Dim Sum%,Data%,I% For I=1 To 1000 Data=InputBox(”请输人数据”) If Data=-1 Then Sum=Sum+ Next I If I=1 then exit

28、 sub Print “平均分=”,Sum End Sub,AEnd For BExit For CQuit For DExit sub AI Bsum CData DDataI AI BI-1 CI+1 D1000 答案:BB,2找出l100之间所有能被3整除但不能被6整除的数,正确的答案是: 、 、 。 Private Sub Command1_Click() Dim D As Integer For D=1 To 100 Step If D Mod 60 D3= Then Print D Next D End Sub,A1 B3 C6 D18 ANot BAnd C0r DFalse A

29、D3 BD3 CD3 DD3=0 答案:ABB,3下面程序的输出是 。 Private Sub Command1_Click() Dim X% X=3 If X6 Then Print”“ ElseIf X B C= D输出不确定 答案: B,4下述错误不属于语法错误的是 。 A有Do while没有Loop B将Rnd函数写成Ran C变量没有初始化 D内外循环交叉 答案:C 5如果变量x能被7整除则输出“Yes”。下列语句中错误的是 。 AIf x7=Int(x7)Then Print”Yes” BIf x7=Int(x7)Then Print”Yes” CIf X7=X7 Then Pr

30、int”Yes” DIf X Mod 7=0 Then Print”Yes” 答案:A,6执行下列语句后,x的值是 。 X=l0 If X Mod 41 Then X=X+X Mod 3 A2 B4 C10 D11 答案: D 7执行下列语句后,sum的值是 。 For X=-10 To 1 Sum =Sum+X X=X+1 Next X A -30 B -54 C程序有错,不能循环 D -10 答案: A,8语句Dim A(-6 To 8)As Integer定义了一个有 个元素的整型数组。 A6 B8 C14 D15 答案: 9下面的一个过程中定义了4个数组,定义语句对应于语句标号14,其

31、中错误的数组定义语句是 。 Private Sub Commandl_Click() Dim N% Const L=100 N=20 1:Dim A(-10 To -5) 2:Dim B(1 To L) 3:Dim c(L+1) 4:Dim D(N+1) End Sub A1 B2 C3 D4 答案:,10使用数组定义语句:Dim D$(10),则数组D中各元素的值为: A0 B空格 C空 D随机数 答案: 11在窗体上添加一个命令按钮,编写按钮单击事件如下:,Private Sub Commandl_C1ick() Dim Data(5) As Integer Dim I As Intege

32、r,K As Integer For I=5 To 1 Step -1 Data(I)=3*I Next I For K=1 To 5 Data(K-1)=Data(K-1)+Data(K) Next K Print Data(0); Data(3); Data(5) End Sub 输出结果应该是 。 A0 9 15 B-1 8 14 C3 21 15 DA(0)未赋初值,无解 答案:,12单击Commandl按钮执行以下过程后,数组中最大值元素的下标是 ,最大值是 。 Private Sub Commandl_Click() Dim A%(6) Dim I%,J% For I=1 To 3

33、 For J=3 To 1 Step -1 A(I+J)=I*J+A(I+J) Next J Next I For I=0 To 6 Print A(I); Next I End Sub A3 B4 C5 D6 A4 B10 c12 D24 答案:CC,13设在数组Data中有N个从小到大排列的数据,下面的 程序段可以使Data数组中的数据按从大到小的顺序重新排列。 AFor I=1 To N BFor I=1 To N/2 Data(N-I+1)=Data(I) Data(I)=Data(N-I+1) Next I Next I CFor I=1 To N DFor I=1 To N/2 T

34、=Data(I) T=Data(I) Data(I)=Data(N-I+1) Data(I)=Data(N-I+1) Data(N-I+1)=T Data(N-I+1) =T Next I Next I 答案:,14下面的程序段是一个单击Commandl按钮的过程,其作用和结果是 。 Private Sub Commandl_Click() Dim D(10) As Integer Dim I%,T1%,T2% For I=1 To 10 D(i)=i Next i For i =1 To 10 Step 2 T1=T1 +D(I) T2=T2 +D(I+1) Next I Print T2-

35、T1 End Sub,A完成数组中两个相邻元素的差,结果为1 B分别完成数组元素中偶数和与奇数和,然后相减,结果为5 C分别完成偶数下标元素之和与奇数下标元素之和,然后相减,结果为5 D完成数组D中一半元素的数值之和,然后相减,结果为0 答案:,15下面的程序段是一个单击Commandl按钮的过程,运行结果是 。 private sub command1_click() Dim Data(5,5)As integer Dim I%,J% For I=1 To 5 For J=1 To 5 Data(I,J) =Data(I,J)+2*(I/J)*(J/I) Next J Next I For

36、I=1 To 5 For J=1 To 5 Print Data(I,J); Next J Print Next I End Sub,A 2 0 0 0 0 B 0 0 0 0 2 0 2 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 2 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 2 2 0 0 0 0 C 2 0 0 0 2 D 2 2 2 2 2 0 2 0 2 0 2 2 2 2 2 0 0 2 0 0 2 2 2 2 2 0 2 0 2 0 2 2 2 2 2 2 0 0 0 2 2 2 2 2 2 答案:,16单击Commandl按钮后,程序的输出

37、结果为 。 Private Sub Command1_Click() Dim a% a=1 For j=1 To 3 Print examp(a); Next j End Sub Function examp (a As Integer) Dim b% Static c b=b+1:c=c+1 examp =a+b+c End Function A1 1 1 B3 3 3 C3 4 5 D1 2 3 答案:,3.4.2填空题 1下面程序的运行结果是 。 Private Sub Command1_Click() Dim A As Integer,B As Long,C As Double A=1

38、00.1 B=200.2 C=300.3 Print A+B+C End Sub 答案:600.3,2执行下列语句后窗体输出 。 I=2:J=3 If I+J10 Then I=5:J=I Print I,J 答案:5 5,3程序填空:输入一个字符,如果这个字符不是英文字母,则输出该字符。 Private Sub Command1_Click() Dim Char As String , Flag As Flag=True Char=InputBox(输入一个字符) If Asc(Char)=Asc(A) And Asc(Char)=Asc(a)And Asc(Char)=Asc(z) Flag或Flag=True,4下面的程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论