1、VB程序设计(笔试2~4分)
1、VB主窗口包括标题栏、菜单栏、工具栏。VB中集成开发环境除了主窗口 还 有窗体设计器、工程资源管理器、属性窗口、工具箱窗口。
2、VB的特点有可视化编程、面向对象的程序设计、结构化的程序设计、事件驱动机制(最主要的)。
3、工程资源管理器窗口,用树形目录列出工程中的窗体和模块,展现当前工程文件的组成。
4、 工程资源管理器可以包含的六种文件:窗体文件(frm)、程序模块文件(bas)、 类模块文件(cls)、工程文件(vbp)、工程组文件(vbg)、资源文件(res).
5、标题栏是屏幕顶部的水平条,它显示的是应用程序的名字。
6、窗体上有许多点是用来对齐控件的。
7、VB的两种运行方式:解释和编译
8、VB的三种控制结构:选择、顺序、循环
9、VB的三种运行方式:设计、运行、中断
10、VB控件分为两种;标准内部控件和active控件
2、对象及其操作(笔试2~6分)
当窗体的keypreview性设置为ture时,窗体可以捕获键盘事件并响应。
为窗体和控件命名的名称必须以字母开头,只能包含字母、数字、下划线(-);不允许有标点符号字符和空格,不能超过40个字符。
当选择多个控件后,在属性窗口中只能显示它们共同的属性。修改了某个属性值,则所有被选择的控件的这个属性值都会改变。
按下ctrl键,单击一次控件图标,然后松开ctrl键,可以连续在窗体中画多个同一类型的控件。 要想使VB应用程序脱离设计平台,在任意环境下都能运行,则需要编译应用程序,生成可执行文件。
在第一次保存工程文件时,系统会出现文件另存为和工程另存为两个对话框,如果不是第一次保存文件,则不会出现对话框。
空格键=鼠标单击、回车键=鼠标双击 、空格键右边第三个键(就是windows徽标键和ctrl之间
的那个键,不知道叫什么名字)=鼠标右击。
选择多个控件的方法按住shift键的同时单击多个控件。
Borderstyle属性为2或者5时在运行时窗体大小可以改变,其他值不可以。
事件是指发生在对象上的事情。对象对事件具有响应性,即遇到事件发生时会做出响应的响应动作。
在事件驱动机制中程序员只需编写响应用户动作的代码,而不必精确的考虑执行次序的每个步骤,这样,每个小段程序(模块)都由用户产生的随机事件来触发。 12、将command1扩大一倍的代码:
Command1.height=command1.height*2
Command1.weight=command1.weight*2
将command1放在窗体左上角的代码 Command1.top=0
Command1.left=0
将command1放在窗体右上角的代码: Command1.top=0
Command1.left=form1.width-command1.width
将command1向左移动100的代码
Command1.left=command1.left-100
16、向左left-;向右left+;向上top-;向下top+
3、数据类型和表达式
intrger整型,不包含小数和指数,每个数据占用两个(16位)字节,声明符% long 不包含小数和指数 每个数据占用4个字节(36位) &
single 通常以指数表示,以e或E表示指数部分 ,占4个字节,可以精确到7位, 声明符! Double 以指数形式表示,d或D表示指数部分,占用8个字节 Currency 占用8个字节, 声明符@ Byte 1个字节的存储空间。
逻辑型boolean取值ture是-1,false是0.
变量的命名第一个必须是字母,最后一个可以是隐式类型声明符。可以包含数字,字母、下划线。不区分大小写,abc和ABC指的是同一个名字。 变量的作用域:
①局部变量:在过程内部用dim定义的变量或者未生命而直接使用的变量以及用static生命
的变量
②模块级变量:在窗体模块或者标准模块的通用生命段中用dim语句或者private声明的变量。作用反胃是其所在的模块。
③全局变量:在模块的通用声明段中用public声明的变量,作用范围是应用程序的所有过程。
符号常量是用coast语句定义的常量:参数可以是定义过的常量、数据、或包含常量的数值表达式,但是不能使用函数的调用。
字符串比较比如 adckiij 与adcmho 从字符串的第一个字符开始比较如果相同比较第二个直到两字符不相同是。即上面的k与m处,比较的是k与m的ascii码值。k的ascii码值为107 m的为109
所以结果109 > 107 即比较结果 adckiij < adcmho
12、空格的ASCII码值是32,小于字母的ASCII码。
14、暂停语句:stop 执行暂停语句时 ,窗体自动打开立即窗口
15、用dim定义的变量是动态变量(对)
用dim定义的变量是局部变量(错)
静态变量一定是局部变量(对)
用private定义的变量是模块级变量(对)
算数表达式运算符运算顺序:幂运算^ * / \\ mod + -
\\和mod运算先转换成整数 后运算如25.6mod6.5(即26 mod 6遵循奇进偶不进)为2 字符串连接符+ &
如下:print 12+\
输出结果 46 1234 类型不匹配
布尔值可以用于算数运算:true为-1,false为0 如12+true为11;12+false为12
a=5:b=4:c=3
Print a>b>c 结果为false
True>c
-1>3 false
VB中=有赋值,比较两个功能 a=3 赋值
b=a=2 赋值 比较 将a=2比较的值赋值给b
Print a,b
3 false
在VB中5<=X<=10不能判断X在[5,10]中应该是5<=X and X<=10 数值可以用于逻辑运算,非0值为true,0为false
其中true and n 和false or n为n,否则true为-1,false为0
Print true and 3;true or 3;false and 3;false or 3
结果: 3 -1 0 3
23、本章要求:变量2分以上,函数2分,表达式2分
4、数据的输入和输出(笔试2~4分)
print方法:outputlist表示要输出的文件表达式,,其中分号表示下一个字符紧挨着前一个字符打印,而逗号表示下一个字符在前一个字符的下一个打印区开始打印(14个字符作为一个分区),打印多次print时,会自动换行,如果要同行输出,则在上一个print方法的末尾加上分号或者逗号。
与print有关的函数:
Spc(n),用来在输出中插入空白字符。
hello world
aaa
Tab(n)将插入点定位在绝对列号上,使用无参数的tab()将插入点定位在下一个打印区的起始位置。
如 print“hello”;tab;”world”
Print Tab;”aaa”
输出结果如图
Format函数实现数值按一定的格式输出
(0)数字占位符。显示一位数字或是零。如果表达式在格式字符串中 0 的位置上有一位数字存在,那么就显示出来;否则,就以零显示。如果数值的位数少于格式表达式中零的位数(无论是小数点的左方或右方),那么就把前面或后面的零补足。如果数值的小数点右方位数多于格式表达式中小数点右面零的位数,那么就四舍五入到有零的位数的最后一位。如果数值的小数点左方位数多于格式表达式中小数点左面零的位数,那么多出的部分都要不加修饰地显示出来。
(#)数字占位符。显示一位数字或什么都不显示。如果表达式在格式字符串中“#”的位置上有数字存在,那么就显示出来;否则,该位置就什么都不显示。
此符号的工作原理和“0”数字占位符大致相同,不同之处只有在当表达式中数值的位数少于“#”的位数(无论是小数点左方或右方)时,不会把前面或后面的零显示出来。
msgbox函数的作用是在对话框中显示消息,等待用户单击按钮,并返回一个integer。Msgbox(提示信息[,按钮][,标题]),按钮是一个整型表达式,决定对话框中按钮的数量和类型,以及对话框上的图标类型。只有提示信息时,只显示一个确定按钮,标题为工程名。返回值是整型integer
msgbox函数也能写成语句的形式, msgbox 提示[,按钮][,标题] 它的含义和作用和msgbox函数一样,但是该语句没有返回值且不需要括号。
inputbox(提示[,标题][,默认值]),提示信息为字符串表达式,不能省略,若要多行显示需要在每行行末加上回车chr(10)和换行chr(13)控制符。标题是一个字符串表达式,在对话框的标题区显示(最上面一行),如果省略则将应用程序名放入标题栏。默认值为一个字符串表达式,提供给用户默认输入内容。返回值是字符串
字体的属性,fontname,fontbold(加粗),fontitalic(斜体),fontunderline(下划线) Print方法适用的控件包括窗体,图片框,立即窗口,打印机。
Print之间用“:”相间实际相当于另起一行。即print“*”:print“**”:print”***”相当于 print”*”
Print”**”
Print”***”
printform方法可以打印包括窗体上的文本、可见控件、和图形。 printformat$(3.789,”00.00E+00”)的结果是37.89E+00
10、使用print方法进行标准格式输出,各表达式的分隔符应当是逗号。
11、print语句如果是一个判断就输出ture 或false
12、print方法是在窗口中显示文本和表达式的值。
5、常用标准控件(笔试10分、上机15分)
1、文本控件属性
Alignment属性设置文本的对齐方式
Autosize属性值设为ture时控件可以水平扩充以适应caption内容;
Wordwrap属性为ture时 可以垂直扩充
Backstyle属性用于只是标签是否透明,透明(0),不透明(1默认)
Bordstyle属性用于判断控件是否有边框,无边框(0默认),有边框(1)
Multiline属性设置text字符串是否接收换行符,默认是false,为ture时,设计时,在属性窗口自己人写入text,按回车键换行;运行时,用赋值语句修改必须加入回车、换行符才可以
如 text1.text=“未到达边界”+chr(13)+chr(10)+“另起一行”
Scrollbar属性决定文本框是否加滚动条,其值为0时没有滚动条,1(水平),2(垂直),3(两种),有滚动条时必须将multiline属性设置为ture
Selstart属性表示文本框中被选择哪个文本的起始位置,计数从0开始
Sellenght表示文本框中被选中文本的长度
Seltext(字符串类型)是文本框中被选中的文本。
剪贴板的方法:
1)clear方法:清除剪贴板中的内容 clipboard.clear
2)gettext方法:将剪贴板中的文本复制到制定文本框的光标处 text1.seltext=clipboard.gettext
或者复制给字符串变量 str=clipboard.gettext
3)settext方法将选中文本送入剪贴板,clipboard.settext(text1.seltext)
2、控件事件和方法
Keyup keydown事件的必选参数是keycode和shift ,keycode表示按键的代码,键盘上的字母和数字的代码与其ASCII码相同;shift值是1时,表示按下了shift键,2时 表示按下了ctrl, 4时按下了Alt键,按下不知一个键时,参数值可以相加。这两个事件区分数字小键盘和常规数字键。
3、下列情况不能引发Keyup keydown这两事件:
窗体上有一个命令按钮的default属性设置为ture时按下enter键,引发的是命令按钮的click事件。
窗体上有一个命令按钮的cancel属性设置为ture时,按下esc键,引发的是命令按钮的click事件
窗体上有多个可拥有焦点的控件时按下Tab键
4、对于字母键,keycode参数返回的总是大写形式,要知道当前的大小写形式应该检测shift参数的值
5、keypress事件的必选参数是keyascii ,只有具有焦点的控件才能接收keypress事件,一个窗体只有在它没有可视和有效的控件或者keypreview属性设置为ture时才能接收该事件。将keyascii设置为0可以取消击键,这样对象便接收不到字符。
6、方向键不会产生keypress事件。
7、keypress将每个字符的大小写形式作为不同的字符;而keydown keyup用两个参数解释每个字符的大写形式和小写形式:keycode---显示物理的键(将A和a作为同一个键返回)和shift---指示shift+key键的状态而且返回A和a其中之一。
8、keycode表示你按下了哪一个键,而keyascii表示你按下了哪一个字符。
9、图形控件
图片框(picture)和图像框(image)
1)对于图片框,如果控件不足以显示整幅图像,则剪切图像以适应控件的大小。 2)图像框支持图片框的一部分属性、事件、方法,图片框可以使用print方法接收和输出信息,而图像框不能
3)图片框可以作为容器,内部安置其他控件(这些控件的left和top属性都是相对于图片框而言的),而图像框不能
4)图像框可以设置streth属性用来指定一个图形是否要调整自身大小,以适应与image控件的大小,而图片框可以设置autosize属性决定图片框控件是否要自动改变大小以显示其全部内容。
5)图像框使用较少的系统资源,重画起来比图片框要快
6)图片框支持print cls 方法,图像框不支持
10、图形的装入:[object].picture=loadpicture(“图形文件名”) 该函数的参数是一个字符串表达式,清除图片框中原有的图片用picture1.picture=loadpicture(“”)
11、框架、单选按钮、复选按钮
1)框架必须先建立,然后在框架中添加其他控件,不能简单的把已经建立的控件拖放到框架中去。
2)单选按钮的value属性:ture时表示选中,false 未选
3)复选按钮的value属性值为0时,复选框内为空白:值为1时显示对钩;值为2时显示灰色的对钩
4)字体设置要注意双引号在半角状态下设置,另外楷体的字体名称是“楷体_gb2312”,不要与其他字体混淆。
12、列表框控件常用属性
1)List属性(字符串数组),利用索引可以访问列表项目,数组元素最小下标值的设定对于列表框来说是无效的,第一个表项的索引值总是0.
2)listcount属性为控件列表部分项目的个数,由于从0开始计数,则listcount-1是最后一个项目的index
3)listindex被选中项的索引,通过该属性可以区分已选中和未选中的表项。表达式“list1.list(list1.listindex)”的值应该解析为:list1.listindex是选中项的索引值,而list(list.listindex)是列表框所对应的选中项。当没有选中任一项时,listindex值为-1
4)multiselect属性值为0时表示只能单选;为1时表示可以多选,shift连续多选;为2时表示ctrl断续多选(可以在列表框内拖动、选中相邻若干个表项)。
5)text属性(字符串类型)当前选中的表项内容,字符串list1.list(list1.listindex)与list1.text相等,都表示被选中表项的文本。
6)selected属性标识一个数组,如果第i项被选中。则selected(i-1)的值为ture,在允许多想选择的情况下,利用selected属性区分哪些表项被选中
7)topindex属性指定在列表框中哪个项被显示在顶部的位置,list1.topindex=3,表示将第四项放在顶部
13、列表框的常用方法
1)additem方法:列表框控件名.Additem 表项文本[,索引号],索引号指定项目文本的插入位置,如果省略,自动加到列表框末尾。也可以
列表框控件名.list(list1.listindex)=表项文本
2)clear方法;用于清空列表框中的所有表项
列表框控件名.clear
removeitem方法用于删除列表框中指定的表项 格式; 列表框控件名.removeitem 索引值
语句list1.removeitem list1.listindex的功能即为删除所选表项。
14、组合框(combo)是文本框和列表框的组合控件
常用属性:
style属性值为0(缺省值)时,为下拉式组合框(包括一个文本框和一个下拉式列表框,用户可以从中选择也可以键入文本);值为1时,为简单的组合框包括一个文本框和一个非下拉式列表框,可以选择也可以键入文本;值为2 时为一个下拉式列表框,包括一个不可输入的文本框和一个下拉式的列表框
text属性,对于组合框一次只能选中一个表项,所以text即为选中表项的文本。
15、滚动条
Value属性,在滚动条上的位置决定该值滑块位于最顶端和最左端时最小min,反之最大max, 在数值上min可以大于max
largechange smallchange 属性
16、计时器
Interval属性,表示事件间隔,以毫秒为单位(即设置为1000时,事件间隔为1秒)
Enable表示控件是否能被激活
停止代码可以是:timer.intervel=0
或:timer.Enabled=false
17、焦点与Tab顺序
将焦点给对象的方法有运行时选择对象、运行时用快捷键选择对象、在代码中用setfocus方法,只有当对象的enabled和visible属性设置为ture时才能接收焦点,并且用setfocus方法设置控件焦点,但在form_load事件中不能直接设置,而必须首先使用show方法显示窗体后才能对该窗体的控件设置焦点。
即 sub form_load()
Text1.setfocus
End sub 是错误代码
当控件获得焦点时引发gotfocus事件,失去焦点时lostfocus事件
Tab顺序是在按tab键时焦点在控件之间移动的顺序,将控件的tabstop属性设置为false,便可以将控件从tab键顺序中删除。
Tabstop属性已经设置为false 的控件,仍然保持他在tab键顺序中的位置,只不过在按下tab键时 这个控件被跳过,一组同样的空间中只能有一个tab焦点即被选中的控件的tabstop属性为ture,其他的为false。
坐标原点在容器(窗体、屏幕、框架、图片框)的左上角,向右向下为正方向。 当容器对象无效时,其内的所有控件均无效。
分析列表框中的项是否和文本框中的内容相同,相同则删除: For i=1 to list1.listcount-1
If list1.list(i) = text1.text then
List1.removeitem i
End if
Next i
6、VB控制结构
1、VB提供的语句包括赋值语句、暂停语句、结束语句、注释语句、跳转语句等
2、VB中可以一条语句占一行,也可以一条语句占多行,在上一行结尾处加上下划线“-”与下一行连接,还可以多条语句写在同一行上,用冒号隔开。
3、注释语句可以使用rem关键字也可以使用撇号“'”,在一行中撇号和rem关键字后面的内容为注释内容。它们之间的区别在于使用rem关键字时必须使用冒号将其与前面的语句隔开。
4、续行符:一个空格后跟一个下划线
5、在同一行内,续行符后面不能加注释。
6、If then单行格式不用end if语句。如果表达式的值是ture时要执行多行 代码,则必须使用多行块if then end if语法。在一个块内满足多个时执行第一个。
7、IIf函数可以执行简单的判断,它根据表达式的值,来返回两部分中的其中一个值,语法是IIf(expr,turepart,falsepart),expr是必要的参数,用来判断真伪的表达式,为真则返回turepart假则返回falsepart.
Select语句表达式的值①可以是几个值的列表②如果列表中的值是连续的可以用to表达式。如case1to5 ③列表中还可以使用Is关系表达式,使用关键字Is定义条件时,只能定义简单条件,如case Is>79表示大于79的值case Is<5,Is>50表示小于5或者大于50的值。不能用逻辑运算符
(and or)把多个简单条件组合在一起,如case Is>10 And Is<50就是错误的。④表达式值的类型必须与测试表达式的类型一致⑤如果不止一个case与测试表达式相匹配,则只对第一个匹配的case执行与之相关的语句块⑥各个case子句的顺序对执行结果没有影响⑦不同的case子句的条件和操作不能相互矛盾。
先判断条件形式的DO┄loop语句:Do[while│until<条件>] [语句块] loop该语句的功能是当指定循环条件为ture或者直到指定的循环结束条件变为ture之前重复执行语句块组成的循环体。
10、后判断形条件形式的Do‥‥loop语句:Do [<语句块>] loop[while│until<条件>]该语句首先执行循环体,然后测试循环条件与循环终止条件,决定是否继续循环,所以,这种结构的语句至少执行一次循环体。
11、While 条件表达式[循环体语句] wend语句
12、For‥‥next循环控制结构:在知道要循环多少次时,则最好使用for‥next循环:初值、步长、终值均是数值表达式;循环体省略时for语句依然执行,例如for i=1to5 step 1 next I 只是不实现任何动作;循环次数=int((终值-步长)/步长+1)。
13、For??next做题思路:从外层到内层,将内层做完,返回到外层,依次循环
14、例:求在1到60之间满足2a+2b=2c和沟股定力的组合数
For a=1 to 60
For b =1 to 60
For c = 1 to 60
If a^2+b^2=c^2 then
n=n+1
End if
Next c
Next b
Next a
Print n/2 不区分a b 取值
求 a b 的最大公约数
思路:大数除以小数取余数,如果余数不为0 ,则将小数给大数,余数给小数继续取余数,最终的小数即为最大公约数
m=24
n=18
r=m mod n
Do while r<>0
n=r
m=n
Loop
Print n
判断一个数是否是素数(只能被1和本身整除的数) 思路:逐一判断该数是否能被2到n-1整除
For i =2 to n-1 其中n-1可以改为n/2或sqr(n)
If n mod i =0 then exit for
Next i
If i >n-1 then
Print \是\
Else
Print \否\
判断一个数是否是完全平方数(即是另一个整数的平方):sqr(x)=int(sqr(x)) 水仙花数即一个数是其各位立方之和
判断一个数的正负可以用sgn(x)函数(正数返回1;负数返回-1;0返回0)或者和0比较 判断一个数是否是偶数:x mod 2=0;x/2=x\\2;x/2=int(x/2);x/2=fix(x/2)
在VB中数值可以表示条件:非0值表示条件成立(true);0表示条件不成立(false) 例:x=9
If sgn(x) then
Print sgn(x)
Else
Print sgn(x) 输出结果是1
7、数组(笔试10、上机20到30分)
1、如果没有特别说明,,数组的索引是从0开始,例如,price(200)表示该数组中包含了200个元素,索引值从0到199.
2、数组的清除,erase 数组名[,数组名] 通过该语句清除了数组中的元素以后,数组中所有元素的值都变成0或者空字符串。
3、在使用Array语句对数组初始化时,数组的定义应当定义成变体型,且只能对一维数组进行初始化。
即 dim a() as integer
A=array(2,3,4,5)是错误的 必须是变体型
4、redim 语句用来对数组进行重新定义,可以改变数组的元素个数和维数,使用redim语句之前必须用“dim 数组名()”语句惊醒声明。
5、每次执行redim语句后当前存储在数组中的值都会全部丢失,如果想改变数组的大小但是又不丢失数组中的数据,使用具有preserve关键字的redim语句就能做到这一点。
6、在使用preserve关键字时,只能改变多维数组中组后一维的上界;如果改变了其他维或者最后一维的下界,运行时就会出现错误。
7、控件数组由相同类型的控件组成,数组中每个成员具有相同的名字和属性设置。
8、dim a() as integer
A(0)=3.5 是正确的 等价于a(0)=4
A(0)=\错 类型不匹配
dim a(n) as integer 错 应该是a() 即dim 不能使用变量 一个数组中所有元素类型必须一致 错 是变体的 一个整型数组中所有元素类型必须一致 对 一个控件数组中所有控件元素类型必须一致 对
将a(30)和b(30)两个数组的元素给c(60),并将这个数组升序排列,思路是两个相邻的元素比较,n个元素比较n-1次,前面的数如果大于后面的就交换。 For i =1 to 30
C(i)=a(i)
C(i+30)=b(i)
Next i
For i=60 to 2 step -1
For j=1 to i-1
If c(j)>c(j+1) then
t=c(j)
C(j)=c(j+1)
C(j+1)=t
End if
Next j
Next i
8、过程(笔试10,上机20~30分)
过程分为子程序(sub)过程和函数(function)过程
在同意模块中,同一过程名不能既用于sub过程又用于function过程。 形参声明格式:
[[optional][byval|byref]|paramarray]<变量名>[()][as<类型>]
Optional 表示参数是可选的 如果参数表中某一个参数使用了该选自昂,则 参数表中该参数的所有后续参数都是可选的,而且必须都由optional关键字声明 Byval 表示该参数是按值传递,byref (默认)按地址传递
Paramarray 关键字用于表示可变参数,只用于最后一个参数,指明最后一个参数是一个变体型元素的optional数组,该关键字可以提供任意数目的参数,不能与byval byref 或 optional 连用。
sub 过程可以分为事件过程和通用过程。事件过程是VB预先定义好的过程,过程名和参数的类型与个数不能改变,编程人员只能填写事件过程中的语句。通用过程是编程人员根据需要自己定义的,过程名和参数的个数和类型均可以自己设定。
事件过程是当发生某个事件时,对该事件坐车响应的程序段,它是VB应用程序的主体。
不管窗体如何定义,在窗体事件过程定义中只能使用form,而在程序中对窗体进行引用才会用到窗体的名字。如果正在使用MDI窗体,则事件过程定义为:MDIform_事件名 一个命令按钮(名称为cmdok)的单击事件过程 Private sub cmdok_click()
通用过程并不是由对象的某种事件激活,也不依附于某一个对象。 Function过程可以返回一个值到调用过程。
在关键字function与end function之间的函数体中,应该至少含有一条给函数过程名赋值的语句最后依据给函数赋的值就是该函数过程的返回值,如果在函数过程中没有给函数赋值的,则返回值为数据类型的默认值。例如,数值函数返回值为0,字符串函数返回值为空字符串。在function的定义过程中括号内是形参类型,括号外是返回值的类型,两者没有关系。 11、sub 事件过程的调用:使用Call语句和直接使用sub过程名
Call 过程名[(参数列表)] 有括号(没有参数时,括号可以省略)
或者
过程名[参数列表] 无括号
sub 通用过程的调用与事件过程的调用不同的是通用过程只有通过语句调用 后才被执行。 按值传递参数时,,实参想形参传递是单向的,如果在被调用的过程中改变了形参的值,则只是临时单元格的值的变动,不会影响实参变脸本身,当被调用过程结束返回调用过程时,实参变
量的值不变。
如果调用语句中实参是常量或者表达式,此时参数传递是按值传递。
按地址传递参数,实参和形参具有相同的地址,即他们共享一段存储单元,因此在调用的过程中改变形参的值,相应的实参也会改变,即在被调用的过程中可以改变实参的值。 并不是所有的byref修饰的形参都是按地址传递,,只有当实参是变量名或者数组名时才能实现按地址传递,如果是常量或者表达式,实际进行的是按值传递,如果希望单个变量进行按值传递,可以给这个实参加上额外的小括号,这样VB就把他理解成一个表达式,按值传递。 数组做参数时必须按地址传递,形参数组和实参数组的数据类型必须一致。 递归就是某一事物直接或间接的由自身组成。
任何有意义的递归总是有两部分组成:递归方式和递归终止条件。 按地址传递比按值传递节约内存,效率更高。
过程的定义不能嵌套,不能在事件过程中定义通用过程,但是过程的调用可以嵌套。 通用过程可以放在标准模块和窗体模块中,而事件过程只能放在窗体模块中。
菜单(2+15)和对话框
在形式上菜单分为弹出式对话框和下拉式对话框。
用菜单编辑器创建新的菜单和菜单项、在已有的菜单上增加新命令,用自己的命令来替换已有的命令,以及修改和删除已有的菜单和菜单项。所创建的菜单最多可以包括五级子菜单。 调用菜单编辑器的方法:在工具菜单中选择菜单编辑器;使用快捷键ctrl+E;在工具栏中使用菜单编辑器按钮
每个菜单和菜单项都必须含有一个标题和一个名称。菜单的name属性是在编辑代码时控件的唯一标识,菜单名字的标准前缀是mnu. Caption属性若想定义热键可以在标题中使用“&”字符,运行时可以使用Alt键加上带下划线的字符来选中该菜单项。 只能在子菜单项中设置快捷键,不能在顶层菜单上设置。 菜单编辑器包含:菜单属性区,菜单编辑区,菜单显示区。
菜单编辑器中的四个箭头,单击一次右箭头产生4个点的一个內缩符号,单击一次左箭头消除一个內缩符号(四个点),上下箭头用来在菜单项列表中上下移动。 【插入】按钮用来在当前菜单项的前面插入一个新的菜单项。
当菜单项的数目较多时,一般用分离条把他们分组,在标题栏中输入“—”可以生成分离条。 【有效】复选框:设置为true时,表明菜单项可以被激活,对用户的事件做出响应。否则会变灰,不作响应
【可见】复选框确定菜单项是否可见
【显示窗口列表】复选框:当选中该项时,将显示当前打开的所有子窗口
【复选】复选框;设置为true时,可以在相应的菜单项前面加上指定的记号“√”这个属性可以指明当前菜单项是否处于活跃状态。 除了快捷键菜单项还可以定义功能键,菜单项【新建】的功能键是(N),而它的快捷键是ctrl+N。菜单的功能键的定义是在【标题】栏中菜单项的标题后面加上一对(),括号中输入&和字母键,如“&N” 文件(F)标题是文件(&F) 弹出式菜单的制作使用popupmenu方法 语法是object.popupmenu menuname,flag
Object:可选的,是一个对象表达式,其值为应用于列表中的一个对象。如 果省略,则默认带有焦点的form对象缺省为object
Menuname 必选的,显示要弹出的菜单名,指定的菜单必须含有至少一个子菜单
Flags 可选 指定弹出式菜单的行为和位置。值为0是缺省值,表示弹出式菜单的左边定位于X;值为4表示菜单的中间定位于X;值为8表示菜单右边定位于X。
X,Y用于指定弹出菜单的坐标
Boldcommand 可选项 指定弹出菜单中菜单控件的名字
对话框可以分为模态对话框和非模态对话框。若在其他窗体和其他对话框前必须单击确定或者取消(或者其他按键),那么这个对话框就是模态对话框。非模态对话框不需要关闭就可以使焦点在对话框和其他窗体之间移动。 对话框分为三种类型:
预定义对话框:使用msgbox函数或者inputbox函数的代码可以创建预定义 对话框。
自定义对话框:使用标准窗体或者自定义已经存在的对话框创建自定义对话框。
标准对话框:使用commondialog控件可以创建标准对话框。
对话框的特点:
一般情况下,不必改变对话框的大小,其边框是固定的;
必须单击对话框中设置的某个按钮才能退出对话框
对话框和窗体不一样,不具备最大化和最小化按钮
对话框只是一个临时工作区
文件对话框的属性
Filetitle 指定所选择的文件名。与filename属性的区别是:filename属性用来指定完整的路径,而filetitle只指定文件名。
Filter属性指定文件类型,即后缀名。可以设置多个文件类型,用“|”将filter和description的值分开
Filterindex 属性;当一个对话框要指定一个以上的过滤器时,需要用该属性指定哪一个作为缺省过滤器显示,用filter属性设置多个过滤器后,每个过滤器都有一个值,从1开始计数。
如commondialog.filter=\files(*.*)|*.*|text files(.txt)|*.txt|vb project(*.vbp)|*.vbp\
Commondialog.filterindex=2
则对话框显示的文件类型是text files(.txt)
该语句显示三种 all files, text files ,vb project
在显示【字体】对话框之前,必须先设置flags属性,否则将出现字体不存在。字体对话框中max和min属性设置字体的大小,
Command1.action=4 错误的 应该先设置command1.flags=3
打印对话框max和min属性用来设置frompages和topages的取值范围。 Frompages topages指定要打印的其实和终值页面
颜色对话框中flags属性值为2时显示全部的对话框,包括定义和自定义的颜色部分;值为8时使对话框显示帮助按钮;值为4时使定义和自定义的命令按钮无效并放置定义和自定义颜色;值为1时,为对话框设置出事颜色值。 Sub form_load() Text1.setfocus
End sub
是错误的,在formload事件中必须先form1.show
hide和show仅适用于窗体 Command1.show 错误
sub main 主过程:可以没有,有则只有一个;必须在标准模块中;可以不是启动对象 标准模块不可以作为启动对象。
为了把通用对话框控件添加到工具箱中,需要在“部件”对话框的“控件”选项卡中选择“Microsoft common dialog control 6.0”
Action属性返回或设置被显示的对话框的类型,1——打开对话框;2——保存对话框;3——颜色对话框;4——字体对话框;5——打印对话框。 10、键盘和鼠标事件(笔试2~4)
1、鼠标事件button参数值1表示按下左键;2表示按下右键;4表示按下中键。
2、拖放;dragmode属性为1时为自动拖放,缘对象不会接收click事件和mousemove事件;为0时是手工拖放,可以接收这两个事件。
3、dragicon 属性改变拖动图标 4、在拖动对象经过某个对象时,该对象发生dragover事件,拖动对象在某个对象上释放鼠标时,该对象发生dragdrop事件
5、为自定义光标,需要将mousepointer属性设置为99,然后将mouseicon属性设置为图标文件。
6、keypress事件和keyup keydown事件的主要区别是:前者将字母的大小写作为 不同的字符,而后两者作为同一个字符,即keycode显示物理的键。
7、sub form _keypress
Print keyascii
End sub
如果按下A键 则输出97,因为按下A键输入的是a
private sub text1_keypress Text1.text=keyascii
End sub
如果按下按键A,则文本框中显示a97,因为在文本框中首先显示输入的字符,再执行代码。
private sub text1_keypress Text1.text=keyascii
Keyascii=0
End sub
如果按下按键A则文本框中显示97
Keyascii=0 是关闭回显,即不显示字符
三事件的引发次序是:keydown keypress keyup 执行下列代码:
sub form_keypress
Print chr(keyascii)
End sub
Sub form_keydown
Print chr(keyascii)
End sub
运行时如果按下A键,则窗体上显示的是Aa
文件(笔试4,上机30分)
1、文件就是外部数据的有效组织集合,外部数据的组织方式就是文件结构。文件是由记录组成的,记录是由字段组成的,字段是由字符组成的。
2、在使用文件时,应根据文件包括什么类型的数据,确定合适的访问类型,在VB中有三种访问类型:顺序型文件,随机型文件,二进制型文件。
3、output模式打开的文件用来写入;append模式打开的文件用来在文件尾部追加数据;input模式打开的文件用来从文件中读取数据;random模式打开的文件用来对文件读取和写入定长记录;binary模式打开的文件用来读取或写入但是不要求记录定长。,input output append 适用于顺序文件;random适用于随机文件,binary适用于二进制文件。
4、顺序文件:存储方式是顺序存储,即数据是一个接一个的写入文件,这种方式只提供了第一个数据的存储位置,因此要对文件内部进行修改就必须将整个文件读到内存中进行,再写回文件。存取方式简单,占用磁盘较少但是无法随意的存取文件数据,适用于有一定规律不经常修改的数据存储。
5、input语句;input#filenumber,varlist
功能是从已打开的顺序文件中读出数据并将数据赋值给变量列表varlist
注;要使input语句将文件的数据正确读入变量中,在将数据写入文件时,要使用write#语句不要使用print#语句,使用write#语句可以确保将各个单独数据正确分隔开。
例:采用input语句将文件ab.dat内的数据读入两个变量中
Dim mystring,mynumber
Open \′打开输入文件
Do while not EOF(1) ′循环至文件尾
Input#1,mystring.my number ′将数据读入两个变量
Print my string, my number ′在屏幕上输出数据
Loop
Close#1 ′关闭文件
line input#filenumber,varname功能是从已打开的顺序文件中读出一行并将它分配给字符串变量varname,通常用print语句将line input#语句读出来的数据写出来。用法和input类似。 Input函数:input(number,[#]filenumber)
功能是从文件中读入指定字符个数number,返回值是字符串,通常用print#或put将input函数读出的数据写入文件。
如:mychar=input(8,#1) 从1号文件读取8个字符
get#语句: get[#]filenumber,[recnumber],varname
功能是将文件中由记录号或字节renumber所指定的记录内容读入指定的变量varname中
9、put#语句将变量varname中的内容写入文件中由记录号或字节recnumber所指定的位置,如果省略,就写在指针所在位置。通常用get#将put#写入的数据读出。Put[#]filenumber,[recnumber,]varname 10、write# 将数据写入顺序文件,通常用input#从文件中读取write#写入的数据,而不是print#语句。
11、文件的定位:
Seek函数:在用open语句打开的文件中,返回当前的读写位置,返回值是长整型。Seek(filenumber)
Seek 语句:Seek[#]filenumber,position
在open语句打开的文件中,设置下一个读写操作的位置。
EOF函数:对于顺序文件,当文件指针指向文件尾时返回true,否则返回 false ;对于随机
和二进制文件,当get语句读不到一个完整的记录时返回true,否则false。 EOF(filenumber)
Filelen函数:返回文件所含字节数,如果文件已经打开,则返回的值是这个文件在打开前的大小。若要取得一个打开文件的长度大小,则要使用LOF函数,但是lof函数不能读取汉字 lof(filenumber)
如将1号文件中的所有英文显示在text1中
Text1.text=input(lof(1),#1)
如果用input读取的文件不存在会提示出错信息;而文件不存在,output和append都会建立文件,如果文件存在output覆盖;append追加
随机文件:是由固定长度的记录组成的,对文件的读写顺序没有限制,而且打开后可以同时做读写操作,但是占用的空间较大。
速记文件建立的4个步骤:定义数据类型、打开文件、对文件进行读写和关闭文件 在对随机文件进行操作时需要首先定义记录数据类型并声明变量。 如、设计一个通讯博,包括姓名、手机号码、和电话号码
Type contactinfo
Name as string*8
Mobile as string*11
Phone as string*12
End type
有了自定义的数据类型,就可以用来声明变量,从而处理文件中的数据。如
Public contact as contactinfo
二进制文件是二进制数据的集合,允许程序员修改文件中的任意字节,它与随机 文件的主要区别就是随机文件只能定位读写文件中记录,而二进制文件可以定位读写文件中的任意字节 VB中的三个文件系统控件分别是驱动器列表框,目标列表框,文件列表框控件。 12、算法与基本数据结构
数据元素是数据的基本单位,,数据项是数据不可分割的最小单位
数据结构是相互之间存在一种或多种特定关系的相同性质的数据元素的集合。 数据的逻辑结构:集合、线性结构、树型结构、图状结构 集合:其中的元素除了同属于同一个集合外,别无其他关系
线性结构:其中的元素存在一对一的关系
树型结构:有分支,层次的特性,数据元素之间存在一对多的关系
图状结构:结构中的元素存在多对多的关系
数据的存储结构:数据的逻辑结构在计算机存储器中的逻辑存储方式称为数据的存储结构(又称物理结构)
一个存储结构包括:数据元素的存储;逻辑结构的存储
逻辑结构的存储有四种纯属方式:顺序存储方式、链式存储方式、索引存储方式、散列存储方式
数据的逻辑结构是从逻辑关系上观察数据,它与数据存储无关,即独立于计算机;而存储结构是依赖于计算机的
算法:对具体问题求解步骤的一种描述
每一个算法的5个特性:有穷性、确定性、可行性、输入、输出。 算法设计的要求:正确性、可读性、健壮性、效率与低存储量要求
效率指的是一个算法在计算机上运行所花费的时间;事件复杂度是指算法中所包含的简单操作的执行次数
线性表的顺序存储结构——顺序表。顺序表的特点是逻辑结构中相邻的元素在存储结构仍然相邻。
线性表的链式存储结构——线性列表。每个存储点不仅要存储数据元素本身,而且要存储数据元素之间逻辑关系的信息。单链表的结点由数据域和指针域组成,头指针具有标识单链表的作用,
栈:先进后出,后进先出 队列:先进先出
二叉树特性:第i层最多含有2t-1个结点;深度为k的二叉树最多含有2k-1个结点;对于任意一颗二叉树,如果其终端节点数为N0,度为2的节点数为N2,则有关系式N0=N2+1 深度为K有N个结点的二叉树,当且仅当其每个结点都与深度为K的满二叉树中编号1到N的结点一一对应,成为完全二叉树。
具有N个结点的二叉树的深度为[log2n]+1
二叉树的遍历:先根遍历、中根遍历、后根遍历
顺序查找在等概率情况下查找成功的平均长度是(n+1)/2;若考虑查找不成功的情形,则平均查找长度为3(n+1)/4
二分查找最坏情况查找的log2n
直接插入排序若开始已经排好关键字的比较次数是n-1最小值,时间复杂度o(n);初始时是逆序,关键字的比较次数是(n+2)(n-1)/2,记录移动的次数是(n-1)(n+4)/2,事件复杂度是o(n2)
直接插入排序是稳定的排序,平均的时间复杂度为o(n2);空间复杂度为o(1)
冒泡排序;记录排好的起概况下关键字比较次数是n-1;逆序情况下比较次数是n(n-1)/2(最大值),记录的移动次数是3n(n-1)/2
冒泡排序是稳定的排序,空间复杂度是O(n);空间复杂度是O(1)
直接选择排序是不稳定的排序,时间复杂度是o(n2),空间复杂度是o(1) 顺序表要求每个结点对应的存储单元必须是连续的,而单链表可以是连续的也可以是不连续的。 线性表进行二分法查找,其前提条件是线性表以顺序方式存储,并且按关键字的检索频率排好序
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机二级笔记在线全文阅读。
相关推荐: