第三章思考题答案及相关内容
1.Visual Basic提供了哪些标准数据类型?声明类型时,其类型关键字分别是什么?其类型符又是什么?
表1.3.1 Visual Basic 的数据类型
数据类型 | 关键字 | 类型符 | 前缀 | 占字节数 | 范 围 |
字节型 | Byte | 无 | byt | 1 | 0~255 |
逻辑型 | Boolean | 无 | bin | 2 | True与False |
整型 | Integer | % | int | 2 | -32768到32767 |
长整型 | Long | & | lng | 4 | -2,147,483,648~2,147,483,647 |
单精度型 | Single | ! | sng | 4 | 负数:-3.402823E38~-1.401298E-45正数:1.401298E-45~3.402823E38 |
双精度型 | Double | # | dbl | 8 | 负数:-1.79769313486232D308~-4.94065645841247D-324 正数:4.94065645841247D-324~1.79769313486232D308 |
货币型 | Currency | @ | cur | 8 | -922,337,203,685,477.5808~922,337,203,685,477.5807 |
日期型 | Date(time) | 无 | dtm | 8 | 01,01,100~12,31,9999 |
字符型 | String | $ | str | 字符串长有关 | 0~65535个字符 |
对象型 | Object | 无 | obj | 4 | 任何对象引用 |
变体型 | Variant | 无 | vnt | 根据需要分配 | |
2.哪种数据类型需要的内存容量最少,且可存储诸如3.2345这样的值?
答:单精度数据类型。
3.在Form1窗体通用声明部分声明的变量,可否在Form2窗体中的过程被访问?
4.为了使某变量在所有的窗体中都能使用,应在何处声明该变量?
5.在同一模块、不同过程中声明的相同变量名,两者是否表示同一个变量?有没有联系?
表1.3.22 不同作用范围的2种过程定义及调用规则
作用范围 | 模 块 级 | 全 局 级 | ||
窗体 | 标准模块 | 窗体 | 标准模块 | |
定义方式 | 过程名前加Private 例:Private Sub Mysubl(形参表) | 过程名前加Public或缺省 例:[Public] Sub My2(形参表) | ||
能否被本模块其他过程调用 | 能 | 能 | 能 | 能 |
能否被本应用程序其他模块调用 | 不能 | 不能 | 能,但必须在过程名前加窗体名,例:Call窗体名.My2(实参表) | 能,但过程名必须唯一,否则要加标准模块名,例:Call标准模块名.My2(实参表) |
(1) 局部变量:指在过程内用dim语句声明的变量(或不加声明直接使用的变量),只能在本过程中使用的变量,别的过程不可访问。局部变量随过程的调用而分配存储单元,并进行变量的初始化),在此过程体内进行数据的存取,一旦该过程体结束,变量的内容自动消失,占用的存储单元释放。不同的过程中可有相同名称的变量,彼此互不相干。使用局部变量,有利于程序的调试。
表1.3.23 不同作用范围的3种变量声明及使用规则
作用范围 | 局部变量 | 窗体/模块级变量 | 全局变量 | ||
窗 体 | 标准模块 | ||||
声明方式 | Dim、Static | Dim、Private | Public | ||
声明位置 | 在过程中 | 窗体/模块的“通用声明”段 | 窗体/模块的“通用声明”段 | ||
能否被本模块的其他过程存取 | 不能 | 能 | 能 | ||
能否被其他模块存取 | 不能 | 不能 | 能,但在变量名前加窗体名 | 能 | |
(2)窗体/模块级变量:指在一个窗体/模块的任何过程外,即在“通用声明”段中用Dim语句或用Private语句声明的变量,可被本窗体/模块的任何过程访问。
(3)全局变量:指只能在标准模块的任何过程或函数外,即在“通用声明”段中用Public语句声明的变量,可被应用程序的任何过程或函数访问。全局变量的值在整个应用程序中始终不会消失和重新初始化,只有当整个应用程序执行结束时,才会消失。
6.将数字字符串转换成数值,用什么函数?判断是否是数字字符串,用什么函数?取字符串中的某几个字符,用什么函数?大小写字母间的转换用什么函数?
答:(1) VAL(C);
(2) ISNUMERIC(EXPRESSION)AS BOOLEAN;
(3) LEFT$(“C”,N), MID$(“C”,N1,N2), RIGHT$(“C”,N);
(4) Lcase$(“ABCD”), Ucase$(“abcd”)。
7.使用MsgBox函数与Msgbox过程的区别是什么?
答: MsgBox函数用法如下:
变量[%]=MsgBox(提示[,按钮][,标题])
MsgBox语句用法如下:
MsgBox提示[,按钮][,标题]
其中:
“提示”和“标题”:意义与InputBox函数中对应的参数相同。
“按钮”:整型表达式,决定信息框按钮的数目和类型及出现在信息框上的图标类型,其设置见表1.3.5。
“按钮”设置值及意义
分组 | 内部常数 | 按钮值 | 描 述 |
按钮数目 | VbOkOnly VbOkCancel VbAboutRetryIgnore VbYesNoCancel VbYesNo VbRetryCancel | 0 1 2 3 4 5 | 只显示“确定”按钮 显示“确定”、“取消”按钮 显示“终止”、重试”、“忽略”按钮 显示“是”、“否”、“取消”按钮 显示“是”、“否”按钮 显示“重试”、“取消”按钮 |
图标类型 | VbCritical VbQuestion VbExclamation VbInformation | 16 32 48 64 | 关键信息图标红STOP标志 询问信息图标 ? 警告信息图标 ! 信息图标 i |
缺省按钮 | VbDefaultButton1 VbDefaultButton2 VbDefaultButton3 | 0 256 512 | 第一个按钮为缺省 第二个按钮为缺省 第三按钮为缺省 |
模式 | VbApplicationModale VbSystemModal | 0 4096 | 应用模式 系统模式 |
注意: (1)以上按钮的四组方式可以组合使用(可以用内部常数形式或按钮值形式表示); (2)以应用模式建立对话框,则必须响应对话框才能继续当前的应用程序;若以系统模式建立对话框时,所有的应用程序都将被挂起,直到用户响应了对话框。
MsgBox的作用是打开一个信息框,等待用户选择一个按钮。MsgBox函数返回所选按钮的整数值,其数值的意义见表1.3.16若不需返回值,则可作为MsgBox过程使用。
表1.3.16 MsgBox函数返回所选按钮整数值的意义
内部常数 | 返回值 | 被按下的按钮 |
VbOk VbCancel VbAbout VbRetry VbIgnore VbYes VbNo | 1 2 3 4 5 6 7 | 确定 取消 终止 重试 忽略 是 否 |
8,在KeyPress事件中,如何取消用户刚键入的字符?
答、首先按要求判断是否是合法的输入,若为非法输入则加入如下语句取消输入:keyascii=0.
9.静态数组与动态数组的区别是什么?在声明静态数组、重定义动态数组时的下标都可以用变量来表示吗?
答:(1)在静态数组声明中的下标只能是常量,在动态数组ReDim语句中的下标可以是常量,也可以是有了确定值的变量。
(2)在过程中可多次使用ReDim来改变数组的大小,也可改变数组的维数。
(3)每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数用来保留数组中的数据,但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。
声明静态数组、重定义动态数组时不都可以用变量表示。
10.函数过程和子过程的区别是什么?
答:对于同一个问题,若可以用函数过程实现,则也可以用子过程实现,反之则不然。函数过程与子过程不同之处是函数过程有返回值,而子过程通过形参与实参的传递得到结果;当然调用的方式也不同。
11.子过程调用有哪两种形式?
答:(1)子过程利用语句加以调用,使子过程成为一个独立的语句,其形式为:
子过程名[参数列表]
或 Call 子过程名[(参数列表)]
(2)函数过程的调用
由于函数过程可由函数过程名返回一个值,故函数过程不能作为单独的语句加以调用,被调用的函数必须作为表达式或表达式中的一部分,再配以其他的语法成分构成语句。
最简单的情况就是在赋值语句中调用函数过程,其形式为
变量名=函数过程名([参数列表])
12、什么是形参?什么是实参?什么是值引用?什么是地址引用?地址引用时,对应的实参有没有限制?
答:1、参数也称为形参或哑元,在定义时没有值。ByVal表示当该过程被调用时,参数是值传递,否则是引用传递。定义子过程与函数过程时,都可以无参数。但函数过程无参数时,函数过程名后的括号不能省略。这是函数过程与子过程表示上的区别。
2、
(1)“参数列表”称为实参或实元,它必须与形参保持个数相同,位置与类型一一对应.
(2)调用时把实参的值传递给形参称为参数传递。其中值传递(形参前有ByVal说明)时实参的值不随形参的值变化而改变,而引用传递实参的值随形参的值一起改变。
(3)当参数是数组时,形参与实参在参数声明时应省略其维数,但括号不能省。
(4)调用子过程的形式有两种,用Call关键字时,实参必须加圆括号括起,反之则全无。
3、 在调用过程时,一般主调过程与被调过程之间有数据传递,即将主调过程的实参传递给被调的过程,完成实参与形参的结合,然后执行被调过程体。在VB中,实参与形参的结合有两种方法,即传址和传值,其中传址又称为引用,是默认的方法。区分两种结合的方法是在要使用传值的形参前加“ByVal”关键字。
传址的结合过程是:当调用一个过程时,它将实参的地址传递给形参。因此在被调过程体中对形参的任何操作都变成了对相应实参的操作,因此实参的值就会随形参的改变而改变。当参数是字符串、数组时,使用传址传递直接将实参的地址传递给过程,会使程序的效率提高。
传值的结合过程是:当调用一个过程时,系统将实参的值复制给形参,实参与形参断开了联系。被调过程中的操作是在形参自己的存储单元中进行,当过程调用结束时,这些形参所占用的存储单元也同时被释放。因此在过程中对形参的任何操作不会影响到实参。 为了程序的可靠和便于调试,减少各过程间的关联,一般用传值方式,除非希望从被调过程改变实参的值。 4、使用传址方式时,对应的实参不能是表达式、常数。第四章 思 考 题
1. 框架的作用是什么?如何在框架中建立控件?
答:当需要在同一窗体中建立几组相互独立的单选钮时,就需要用框架(frame)将每一组单选钮框起来,这样在一个框架内的单选钮为一组,它们的操作不影响框外其他组的单选钮。另外,对于其他类型的控件用框架框起来,可提供视觉上的区分和总体的激活或屏蔽特性。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论