VB中的局部变量vb中len是什么意思思?

3777人阅读
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
在VB中function 程序如何应用?
&&&&&& Function 过程是由用户定义的独立的函数过程,与Sub字程序类似。Function 函数过程可读取参数,修改语句。可作为独立的基本语句调用,也可以在程序或是函数中嵌套使用。它有返回值。Vb 中有许多内置的函数,如sin, cos, abs 等。如果过程需要多次用到某一公式或函数时,VB中有没有可用的参数,此时,Function过程就派上用场了。
&Function 过程的语法为:
  [private | public ] [static] Function (函数名)([形参表])  [as(类型)]
  [语句列] [(函数名)= (表达式)]
  Exit gunction
  [语句列] [(函数名)=(表达式)]
  End function
说明: 中括号内的可省略, Function 函数程序跟Sub 字程序过程类似。只是as (类型)表示Function的返回值是as 指向的类型。还有一种可以创建Function 过程, 在工具 添加过程, 在添加过程中的对话框中,名称由用户自定义,可以是字母、数字、下划线等。 在类型中选择函数选项,点击确定。OK! Function 函数过程创建完毕。
函数过程的调用:
&&&&& 1, call 语句。 Call (过程名) [实参表]
&&&&& 2, 直接调用。(过程名) [ 实参表]
&&&&& 3, 无参数直接调用。
    Function f2
    F2=”Flollow me.”
    End Function
关于vb function&&
谁能清楚地介绍vb function过程,阐明它是如何返回值的? 下面这段代码表示什么意义?
Dim y As Integer
Private Sub Command1_Click()
Dim x As Integer
Text1.Text=f2(f1(x),y)
Text2.Text=f1(x)
Private Function f1(x As Integer)As Integer
x=x+y:y=y+x
End Function
Private Function f2(x As Integer,y As Integer)As Integer
End Function
以下是我的一个分析过程,由于我对流程图不是很擅长.就把每一话都分析了一下。
Dim Y As Integer
分析1 这一句定义了一个全局的整形变量y,对于这个y的理解是整个问题的关键.因为Y是全局变量,因此Y的值会保留,直到程序结束.又因为没有给Y赋值,所以系统会自动给Y赋0值.此时Y的值为0
Private Sub Command1_Click() '命令按钮1的单击事件
Dim x As Integer
这一句定义了一个过程级变量X.过程级变量指的是,该变量的生存期只在过程内,即在Command1_Click()过程内有效.若X在其他过程内出现,那么系统也会给X赋0值.
分析2 x=2 给X赋值.此时X的值为2
Text1.Text= f2(f1(x),y)
接下来也就到了程序的难点了.我相信你要的也是这一句的分析过程,当然,我也会详细的分析.
首先来简单说一下.这一句中,程序首先调用函数f1,得出f1的值,再调用函数f2,得出f2的值,最后再将f2的值在文本框内显示.
当程序执行到此处时,程序会首先调用函数f1,执行f1内的语句.也就是说,程序执行到此处时,会首先执行Private Function f1(x As Integer)As Integer 内的语句.
因此,这里跳到此语句分析.
Private Function f1(x As Integer)As Integer
这一句的意思是,函数f2返回一个整形变量,调用此函数时,必须提供一个参数X,该参数按址传递.当程序执行到此处时,程序会自动将调用者f1(参数)中的参数部分赋于X.
分析3 x=x+y
这一句的意思是,将X的值与Y的值相加,再赋于X.因为X=2,Y=0,所以X=2+0=2,即X=2.(关于为什么X=2,请参看分析2.为什么Y=0,请参看分析1),此时X=2.
这一句的意思就是,将Y的值与X想加,再赋于Y.因为X=2(为什么X=2?参见分析3),Y=0(为什么Y=0?参见分析1),所以Y=Y+X=0+2=2,此时Y的值为2,即Y=2.
f1=x+y
将X+Y的结果赋于f1.因为x=2(参看分析3),Y=2(参看分析4),所以f1=X+Y=2+4=4,也即f1=4.
当程序执行到这里后,由于已经得出f1的值,程序跳会Text1.Text=f2(f1(x),y)这一句执行.因为f1=4(为什么f1=4?参看分析5),所以此时代码可简化为:
Text1.Text=f2(4,y)
这一句的意思是,调用函数f2,再将f2的值赋于文本框,当中调用者提供了两个参数,即4和Y.
此时程序会跳到Private Function f2(x As Integer,y As Integer)As Integer 函数过程内执行.这个函数过程的意思是,将第一个参数赋于X,将第二个参数赋于Y.因为f2(4,y)第一个参数为4,因此X=4,第二个参数为Y,因此Y=Y.
f2=2*x+y
此为数学运算,意思再明显不过.计算2*X+Y的值,再将结果赋于f2,因此f2=2*x+y=2*4+2=8+2=10(为什么X等于4?参看分析6)(为什么Y等于2?参看分析4),所以f2=10.
计算出f2的值以后,回到Text1.Text=f2(4,y)内执行.因为f2=10(为什么等于10?参见分析7),即Text1.Text=10,所以文本框控件显示的是10.
请您自己分析Text2.Text=f1(x)这一句的程序执行结果.当中的要点我都已经进行了详细的解说,精确到点.如果您仍然不明白,那就应该好好的看一下书了.
vb Function 参数如何定义
一、子过程的定义与调用
1、子过程的种类
(1)在VB中,有两类子(SUB)过程:事件过程和通用过程
& 事件过程
&&&&&&&&事件过程是在响应事件时执行的代码块。事件过程一般由VB创建,用户不能增加或删除。缺省时事件过程是私有的。事件过程是附加在窗体和控件上的。其控件事件的语法为:
&&&&&& Private Sub &控件名&_&事件名&([形参表])
&&&&&& [(语句组)]
&&&&&& End SUB
通用过程是指必须由其他过程显示调用的代码块。通用过程由用户自己创建。在一个过程中,通用过程可以被其他过程调用,这样会提高代码的利用率。通用过程又分为子过程和函数过程。
(2)定义通用过程
通用过程通常完成指定的任务,通用过程不与任何特定的事件相联系,只能由别的过程来调用,它可以存储在窗体或标准模块中。
子过程的形式如下:
[ Static][Public | Private ] Sub 过程名([形参表])
局部变量或常数定义
[Exit Sub]
说明:可以将子过程放入标准模块、类模块和窗体模块中。按缺省规定,所有模块中的子过程为PUBLIC(公用的),这意味在应用程序中可随处调用它们;如果选用PRIVATE,只有该过程所在模块中的程序才能调用该过程。
&&&&& 如果使用STATIC(静态)关键字,则该过程中的所有局部变量的存储空间只分配一次,且这此致变量的值在整个程序运行期间都存在,即在每次调用该过程时,各局部变量的值一直存在;如果省略STATIC,过程每次被调用时重新为其变量分配存储空间,当该过程结束时释放变量的存储空间。
形参表类似于变量声明,它声明了从调用过程传递进来的值。指明了传送过程的变量个数和类型,各变量之间用逗号分隔。形式参数被缺省为具有Variant数据类型。
建立通用过程的目的之一就是减少重复代码,将公共语句放入离开的过程(通用过程)并由事件过程来调用它。
(3)创建新的通用过程
两种方法:
&使用“添加过程”对话框
&在“代码编辑器”窗口中输入
& 查看当前模块中的过程
& 查看其他模块中的过程
(4)调用过程
形式:(1)CALL 子过程名[(实参列表)]
(2)子过程名[实参列表]
(1)在一个窗口中包含3个命令按纽,当用户单击其中一个时,要求其他个别按纽不能使用,并且窗口中按纽是相同的,其处理方法一致,用一个过程来实现。
(2)利用子程序的设计方法,先分别计算5!+6!+8!值的程序。
二、函数过程的定义和调用
&&&&&& 函数是过程的另一种形式,当子过程的执行返回一个值时,把它作为函数就比较简单。VB包含了许多内置的或内部的函数,用户在编写程序时,只需要写出一个函数名并给定参数就能得出函数值。当程序中需要多次用到某一公式或要调用它们,这样的函数称为用户定义函数。用户定义函数与内部函数一样,可以在程序中或函数嵌中使用。
函数过程的定义
(1)利用“工具”菜单下的“添加过程”命令定义
(2)利用代码窗口直接定义
自定义函数过程的形式如下:
[ Static][Public | Private ] Function 函数过程名([参数列表])[AS 类型]
局部变量或常数定义
函数名=返回值
[Exit Function]
函数名=返回值
End Function
函数过程的调用
形式:函数过程名([参数列表])
说明:在VB中调用FUNCTION过程的方法和调用任何内部函数的方法是一样的。还可以像调用SUB过程那样调用函数过程。
例:已知直角三角形两直角边的值,计算第三边(斜边)的函数。
Function nuse(a as interger, b as interger ) as single
&&&& Nuse=sqr(a^2+b^2)
End Function
在VB中调用FUNCTION过程的方法:strx=nuse(width, Height)
也可以用下面的语句调用了同一个函数过程:call nuse(3,6)&&&& 或&&&& nuse 3,6
(1)设计计算圆面积的用户定义函数。
(2)已知长和宽,计算矩形面积的函数。
(3)设计求任意整数N的阶乘的函数,然后求3到10的阶乘之和。
注:函数与过程的区别
函数以FUNCTION开头,而过程以SUB开头
&&&&&& 当过程有一个返回值时,可以使用函数。当过程有多个返回值时,就当用过程。
函数是通过函数名回送一个结果值。在函数的形式参数表后面要说明函数(即结果)的类型。而过程的结果由参数送回。
函数体中至少要包括一个给函数赋值的语句。而过程不能给过程名赋值。
&&&&&& 函数的调用出现在表达式中。而过程的调用必须作为一个单独的语句。
形参没有具体的值,只代表了参数的个数、位置、类型;只能上简单变量,不能是常量、数组元素、表达式。
三、参数传递
&&&&&&& 在调用一个有参数的过程,首先进行的是“形实结合”,即按传值传递或按地址传递方式,实现调用程序和被调用的过程之间的数据传递。通过参数传递,Sub过程或Function过程就能根据不同的变量执行同种任务。为了叙述方便,将形式参数简称为形参,实在参数简称为实参。
&&&&&& 在Visual Basic中传递参数有两种方式,即按值传递(Passed by Value)和按地址传递(Passed by refecence)。按值传递参数时,传递的只是实参变量的副本。如果在被调过程中改变了形参值,只影响副本,而不会影响实参变量本身。即当控制返回调用程序时,实参变量保持调用前的值不变。在定义过程时,若形参名前面没有关键字“ByVal”,即形参名前面缺省修饰词,或有“ByRef”关键字时,则指定了它是一个按地址传递的参数。按地址传递参数时,把实参变量(简单变量、数组元素、数组以记录等)的地址传送给被调过程。因此实参变量的地址和与之结合的形参地址是相同的,也就是说形参和实参共用内存的同一“地址”,即共享同一个存储单元。这样在被调过程中的形式参数值一旦被改变,相应的实参值也跟随着被改变了。
形式参数与实际参数
&&&&&& 形式参数是指在定义通用过程时,出现在SUB或FUNCTION语句中的变量,是接收传送子过程的变量。形式参数表的各个变量之间用逗号分隔。实际参数是指在调用SUB或FUNCTION过程时,传送给SUB或FUNCTION过程的常量、变量或表达式。实参表可由常量、表达式、有效的变量名、数组名组成,实参表中各参数用逗号分隔。
按值传递和按地址传递
&&&&&& 传递参数的方式有两种:如果CALL语句中的实际参数是常量或表达式,或者定义过程时选用ByVall关键字,就可以按值传递。如果CALL语句中的实际参数为变量,或者定义过程时选用ByRef关键字,就可以按地址传递。否则缺省按地址传递参数。
(1)按值传递参数
&&&&&& 按地址传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变量只影响副本而不会影响变量本身。当要求变量按值传送时,可以先把变量变成一个表达式,把变量转换成表达式的最简单的方法就是把它放在括号内。或者定义过程时用ByVal关键字指出参数是按值来传递的。例如:Sub Post (ByVal&&&& num&&&& as&&&& Integer )
例:运行下面给出的程序,理解按值传递参数。
Private Sub Form_Click( )
Dim a as intger, b as integer, c as integer
A=5: b=3 : c=9
Call prod( (a), (b), (c) )
Sub prod (a as intger, b as integer, c as integer )
a=6 : b=8 : c=a*b
(2)按地址传递参数
&&&&& 按地址传参数,就是让过程根据变量的内存地址去访问实际变量的内容,即形式参数与实际参数使用相同的内存地址单元, 这样通过子过程就可以改变变量本身的值。系统缺省按地址传递参数。在传递调用时,实际参数必须是变量,常量或表达式无法传址。
例:运行下面给出的程序,理解按地址传递参数。
Private Sub Form_Click( )
Dim a as intger, b as integer, c as integer
A=5: b=3 : c=9
Call prod( a, b, c )
Sub prod (x as intger, y as integer, z as integer )
x=6 : y=8 : z=x*y
Private Sub Form_Click( )
Dim x as intger, y as integer
Call test(5, x, y+1)
‘5传值,X传址, Y+1传值
Print “主程序”,5, x, y
Sub test (a as intger, b as integer, c as integer )
Print “子程序”, a, b, c
A=2: b=4: c=9
四、过程的嵌套和递归调用
1、过程的嵌套
2、过程的递归调用
&&&&&& 递归调用是指一个过程直接或间接调用自己本身,即自己调用自己。VB的过程具有递归调用功能,递归调用在处理阶乘运算、级数运算、幂指数运算等方面特别有效。
&&&&&& 递归是一种十分有用的程序设计技术。由于很多的数学模型和算法设计方法本来就递归的。用递归过程描述它们比用非递归方法简洁易读,可理解性好,算法的正确性证明也比较容易,因此读者应掌握递归程序设方法。递归过程是在过程定义中调用(或间接调用)本过程的过程。在递归调用中,一个过程执行的某一步要用到它自身的前面一步或前若干步的结果。
&五、变量的作用范围
作用域&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 定义方式
&& 局部变量&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Dim,Static
&& 模块级变量&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Dim,Private&&&
&&&全局变量&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Public&&&&&&&
变量的定义位置
&&& 过程之中
&&& 模块的声明段中
&&& 模块的声明段中
能否被本模块中其它过程访问
能否被其它模块访问
&&&&&& 变量的作用范围不同时,变量的名字可以相同。变量的作用范围还可以出现交叉。一般来说,当变量名称相同而作用域不同时,局限性大的变量总会用“阴影”遮住局限性不太大的变量(即优先访问局限性大的变量)。例如,程序中有一个模块级变量Temp,还有一个名为Temp的过程级变量,则它的“阴影”会遮住模块级变量Temp。
&&&&&& 在一个过程内部用Dim语句定义的变量是局部变量,只有在定义它们的过程中才能访问或改变变量的值,这样的变量成为局部变量;为了使某个变量在整个模块的所有过程中都能使用,在模块的(通用)和(声明)部分使用Private或Dim语句定义的变量就是模块级变量,在该模块中任何过程都可以对模块级变量进行读、写操作;在模块的(通用)和(声明)部分使用Public语句定义的变量就是全局变量,在应用程序的任何部分都可以对全局变量进行读、写操作。
&&&&&& 使用Dim在过程中定义的变量,在过程结束后变量的值不能被保存下来。在每一次过程重新执行时,变量的内容将被清除。如果希望在离开该过程后,还能保存过程中局部变量的值,就应该使用Static关键字在过程中定义局部变量,即使过程结束,变量的值仍然保留着。
&&&&&& Visual Basic程序的窗体模块、标准模块和类模块可以定义变量,在过程和函数中也可以定义变量。在不同部分定义的变量在程序中的适用范围是不同的。Visual Basic中的变量可以分为局部变量(过程级变量)、模块级变量和全局变量。
过程级变量
&&&&&& 在一个过程内部声明变量时,只有该过程内部的代码才能访问或改变该变量的值。过程级变量的作用范围限制在该过程。在过程内部使用DIM或STATIC关键字声明变量。
&&&&&&&如果在过程中未作说明而直接使用某个变量,该变量也被当成过程级变量。用STATIC说明的变量在应用程序的整个运行过程中都一直存在,而用DIM说明的变量只在过程执行时存在,退出过程后,这类变量就会消失。过程变量通常用于保存临时数据。
1、过程级变量
在模块有声明中声明的变量属于模块级变量。模块级变量分为两种:私有和公有。
(1)私有的模块变量
&&&&&& 私有的模块级变量在说明它的整个模块中的所有过程中都能使用,但其他模块却不能访问该变量。说明方法是在模块的声明中使用PRIVATE或DIM关键字声明变量。
(2)公有的模块级变量
&&&&& 公有的模块级变量在所有模块中的所有过程中都能使用。它的作用范围是整个应用程序,因此公有模块级变量属于全局变量。说明方法是在模块的声明中使用PUBLIC关键字声明。
&&&&& 全程变量是指在所有程序(包括主程序和过程)中都可以使用的内存变量。全程变量就像在一个过程中定义的变量一样,在子过程中可以任意改变和调用,当某子过程执行完后,其值带回主程序。
2、变量的生存期
(1)动态变量
&&&&&& 动态变量是指程序运行后进入变量所在的子程序,才分配该变量的内存单元,经过处理退出该过程,该变量占用的内存单元自动释放,其值消失,其内存能被其他变量占用。
&&&&&& 使用DIM关键字在过程中声明的局部变量,在过程执行结束后变量的值不被保留,在每一次重新执行过程时,变量重新声明。用DIM声明的变量属于动态变量。
(2)静态变量
&&&&& &静态变量是指程序运行进入该变量所在的子程序,修改变量的值后,退出该子程序,其值仍被保留,即变量所占内存单元没有释放。当以后再次进入该子程序,原来变量的值可以继续使用。
&&&&& 使用STATIC关键字在过程中声明的局部变量,就属于静态变量。静态变量在过程退出后仍然可以保持原来的值。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:119060次
积分:5257
积分:5257
排名:第1640名
原创:103篇
评论:1877条
(2)(3)(2)(3)(4)(7)(2)(6)(2)(5)(4)(4)(3)(4)(7)(9)(3)(5)(5)(3)(4)(9)(7)(2)(1)请问VB中DoEvent函数是什么意思啊?它的用法是什么和功能是什么啊?
[问题点数:0分]
请问VB中DoEvent函数是什么意思啊?它的用法是什么和功能是什么啊?
[问题点数:0分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
本帖子已过去太久远了,不再提供回复功能。VB中,声明一个整型局部变量正确的语句是什么.?
VB中,声明一个整型局部变量正确的语句是什么.?
VB中,声明一个整型局部变量正确的语句是什么.?
A.Dim 5lk As Inerger
B.Dim ke As Integer
C.Dim 5lk As String
D.Dim ke As String
Integer 是整型的意思 所以排除 C和D
5lk 是正确的命名规则 所以就只有B是对的
的感言:我还有其他的问题,还可以帮帮我吗?
其他回答 (2)
标识符不能 以数字开头,所以A、C错,D声明的是个字符串,所以B对
B a的变量名不能以数字开头 cd都是字符串
等待您来回答
编程领域专家vb中全局量和局部变量有什么区别_百度知道
vb中全局量和局部变量有什么区别
如题,急求教!谢谢啦!!!
我有更好的答案
作用范围不一样,全局量用于全局(如模块或工程),局部变量用于局部(如过程)
那在画图的时候有没有什么区别呢?比如说dim i%在private sub 前后画出来的图有不一样啊...
其他类似问题
局部变量的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 vb中dim是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信