版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章
VisualBasic概述1.1VB概述
一.什么是VB?
VB(VisualBasic)是一种通用高级程序设计语言;
VB是一种OOP开发工具。
VB是可视化的工具二.VB的特点1.可视化2.集成开发环境(IDE)。3.VB与office.(VBA)。4.支持Windows系统的OLE技术。5.支持面向对象程序设计(OOP)技术。三、VB的学习特点易学难学实用听课与实习作业与检查1.2VisualBasic简介一.VB运行在32位windows9x
以上版本的操作系统。二.VB的三种版本:标准版、专业版、企业版。1.3面向对象的
程序设计方法概论一、什么是面向对象的程序设计方法?二、什么是对象及类?三、什么是属性、事件、方法?四、VB的窗体与控件
一、什么是OOP
(面向对象程序设计)
OOP是提高程序设计开发效率的面向对象的程序设计方法。它以对象为中心;它是基于对类和对象的程序设计;它以事件驱动机制实现信息传递机制与分布式系统,网络模型融为一体。二、什么是对象及类1、类: 定义了一组有共同特性,外观,行为的对象的模板; 如:汽车类;电话类;机器人类 类:是对象的正式定义。
2、对象1)对象:是类的一个实例;
动作体的逻辑模型。2)对象包括类共同特性下的
具体数据(尺寸,颜色,状态);
具体操作(事件,方法)3)对象的属性(property)
对象的事件(event)
对象的方法(method)4)对象是程序运行时刻的基本成分,是一个封装体。
而这个类的实例—对象,便是一部电话。电话的电路结构和设计布局可以是一个类品牌型号颜色大小听筒有拿起和挂上两种状态三.什么是属性:
对象特征的描述。对象具有属性(Property)每个对象都有属性。属性定义了对象的特征或某一方面的行为。属性由对象所基于的类决定。属性值既能在设计时也可在运行时进行设置。四、什么是“事件”1、事件:是对象可以识别的动作;2、事件:使某个对象进入活动状态(又称激活)的一种操作或动作。3、事件发生:
自动执行一段事先安排的代码程序。4、事件驱动机制。5、例如:演示五.什么是“方法”
指的是控制对象动作行为的方式。 为对象安排完成某个任务的“方法”;此方法对应有程序或代码。 例如:为某电话设计了一个可以打出市话外线的方法程序:拨02。
设计了一个可以打出长途电话的方法程序:拨03。习题4.有一个红色、充满氢气的气球,如果人不小心松开手抓的引线,就会飞走;如果用针刺它,则会爆破。请问,对于气球对象,哪些是属性、哪些是事件、哪些是方法?讨论:
“机器人”:属性、事件、方法?六、VB的窗体与控件窗体:VB的窗体是大容器。
例如:WORD的窗口,对话框控件:是放在窗体的部件(组件)
例如:窗口中的文本框,列表框,命令按钮……窗体与控件都有自己的属性,事件,方法。事件驱动机制。举例。小结VB与VB的特点。理解OOP、类、对象、属性、事件、方法等概念。理解“事件驱动”过程的程序设计原理。1.2“工程”的概念一个应用程序——一个工程文件
(扩展名:.vbp)一个工程文件:
将与工程有关的各种类型文件组织在一起。并不包含这些文件,只是对文件的引用。所以
一个窗体文件可以属于不同的工程文件。开始:‘工程1.VBP’。(可以更名)1.2VB的开发环境一.标题条二.菜单三.工具栏四.窗体设计器五.控制箱六.弹出式菜单七.工程资源管理器窗口和代码窗口八.属性窗口九.“窗体布局”窗口十.“立即”、“本地”和“监视”窗口十一.对象浏览器P3-P7详细如下标题条菜单工具栏窗体设计器控件箱工程资源
管理窗口属性窗口布局窗口详细如下
工程资源管理器窗口又称为工程浏览器窗口,在窗口中会列出当前工程的所有窗体和模块。
工程浏览器窗口也有一个小工具栏,上面的三个按钮分别用于查看代码、查看对象和切换文件夹。
单击“查看代码”按钮,则会出现该对象的代码编辑器窗口。
代码编辑器是输入应用程序代码的窗口。应用程序的每个窗体或代码模块都有一个单独的代码编辑器窗口。弹出式菜单 在要使用的对象上单击鼠标右键即可打开弹出式菜单。属性窗口 属性窗口由标题条、对象列表框和属性列表框及属性说明几部分组成工具栏
VB的工具栏由若干命令按钮组成,在编程环境下提供对于常用命令的快速访问。以下给出了各个命令按钮的名称及功能。1.3利用VB开发应用程序的
一般步骤一.创建程序的用户界面二.设置界面上各个对象的属性三.编写对象响应事件的程序代码P8四.保存工程(P9).vbp
工程文件一个工程保存在一个文件夹内五.测试和调试应用程序六.创建可执行程序自己动手!举例:
P9—P101.4VB的帮助“帮助”是自学的老师;是‘110’。获得帮助的方法。P36-P37VB的示例程序(完全安装,MSDN)
可以剪切到自己的程序中。演示小结了解什么是工程。熟悉VB的开发环境。熟练掌握VB开发应用程序的一般步骤。学会使用帮助。习题:P13。VB程序代码的组织方式一、模块的概念:
1、窗体模块(.frm文件)
2、标准模块(.bas文件)
3、类模块(.cls文件)二、各种模块的功能三、各种模块包含的内容(过程...)四、各种模块如何创建,组织3.1五、过程具有特定书写格式、包含若干可被作为一个整体执行的代码组(小程序段)过程的种类:事件过程、通用过程。过程的作用范围:private
与public事件过程通用过程P41练习事件过程为窗体以及各种对象编写的用来响应各种事件的代码行就是“事件过程”。
事件过程存储在被称为“窗体模块”的文件中(扩展名.FRM)。在缺省情况下,是“私有的”(Private)。事件过程的代码框架是由VB系统自动提供的
(图3-1)。
图3-1通用过程一个应用程序中可被多个窗体共享的过程被称为“通用过程”。
通用过程是由事件过程或其它通用过程调用而执行的。在缺省情况下,它是“公有的”(Public),即通用过程可被所有的窗体共享。通用过程的位置:(窗体与标准模块)通用过程的创建图3-2练习P53第1,2,3题代码行的书写规则语句书写规范练习3.2语句语句是
程序的最基本成份。语句的功能:提供信息(如定义数据类型),或者执行的某些操作。
语句的一般形式是:
一个语句可写在一行上;一个语句可写在多行上;使用“续行标志”多个语句可以写在一行上;
语句之间用冒号“:”分隔。
<语句定义符>[语句体]示例语句示例例1,一个语句分写在多行上:Dimstudent_nameAsString,student_numberAs_String,computerAsInteger,englishAsInteger例2,一行写多个语句:
x=10:y$="VisualBasic":z=20书写规范语句中字母不区分大小写。一个代码行输入完后,按回车键。系统自动进行语法检查。系统自动将所有“保留字”的第一个字母改为大写字母。如,Rem是系统保留字,所以不论输入的是ReM、还是rem或REM等,系统都会自动变换成Rem。
VB的数据类型 VB要处理各种各样的数据,如何有效的描述与处理这些数据?
每种数据类型的要素:数据类型常量变量3.3类型定义存储大小取值范围运算函数数据类型VB支持的数据类型多达12种。表3-1变量若不加说明,系统均按viarian类型处理,它可以存储各种类型的数据。
如果需要处理的数值超出了相应数据类型数据的表示范围,将产生“数据溢出”错误。
3.3.1常量数值常量字符常量逻辑型常量 只有两个取值:True和False。
日期常量符号常量3.3.2数值常量一般的数值常量由正负号、数字和小数点组成,正数的正号可以省略。
不带小数点的数称为“整数”(integer,long)。带小数点的数称为“实型数”或“浮点数”。(Single,double)。
浮点数值可表示为
mmmEeee
或
mmm
Deee
两种形式数值常量示例数值常量示例123-22732742(integer)
1758624-3765410(long)123.4-752.6781.234E-5-9.654E-6(single)-5732.12345-8.573264907D-15(double)&O137
表示这是一个八进制数137,它相当于十进制数95;
&H137
表示这是一个十六进制数137,它相当于十进制数311。
字符常量把一串字符用引号括起来,就构成一个字符常量。例如:
"VisualBasic"、"Howareyou!"、"aB"等都是合法的字符常量。字符常量最多可达65535个字符。注意:“ABC”不等于“abc”
日期常量日期常量要用“#”括起来。
日期型常量的一般表示形式是:
#月月/日日/年年#
如2003年2月15日可表示为:
#1/1/2003#
或者为:#january1,2003#符号常量以符号形式表示的常量称为“符号常量”。代表常量的符号称作“常量名”。
Const语句的形式是:
VB还在其内部定义了许多符号常量
如:Vbred,Vbblue…...
[Public|Private]Const<常量名>[Astype]=<数值>变量变量名及类型说明变量作用域与变量说明语句3.3.3变量名及类型说明变量名的命名规则是:
首字符必须是字母;
长度不超过255个字符;
在作用域内必须唯一;
不得包括点号和%、&、!、#、@、$。
为了提高程序的可读性,变量名之前加上一个约定的前缀,用于表示变量的数据类型。约定的前缀见表3-2。表3-2数据类型前缀数据类型前缀整型int长整型lng单精度型sng双精度型dbl逻辑型bln货币型cur日期型dt字串型str变体型vnt字节型byt变量作用域与变量说明语句定义变量的两个要点:
在什么地点定义变量用什么语句定义变量变量作用域变量说明语句OptionExplicit语句变量作用域等级(语句)范围(地点)
局部
Dim/static在过程中说明,仅在此过程中有效窗体/模块
Dim/Private
在窗体或模块中说明,在此模块或窗体的所有过程内均有效全局(公有)
Public在模块或窗体中说明,在工程内的所有过程中都有效注意:变量两个要点的应用变量说明语句四种说明语句说明变量的类型:
Dim|Public|Private|Static注意:使用四种说明语句的地点!Dim语句对变量的初始化。变量的类型也可以“隐式说明”。
VB规定的类型说明字符如表3-4。关于字符串变量的声明表3-4说明字符示例意义%x%表示x是整型变量&x&表示x是长整型变量!x!表示x是单精度变量#x#表示x是双精度变量@x@表示x是货币型变量$x$表示x是字符型变量关于字符串变量的声明字符串型变量的长度是可变的。但也可以说明为具有固定长度。方法是:
例如,
DimEmpNameAsString*50
去掉多余的空格,使用Trim
和
RTrim
函数。
标准模块中的定长字符串变量可说明为
Public
或
Private。在窗体和类模块中,则必须说明为
Private。
Dim<变量名>AsString
*
sizeOptionExplicit语句
在模块中使用OptionExplicit语句,系统将检查模块中所有未加显式说明的变量,一旦发现有这样的变量存在,就会产生一个出错信息,提示使用者改正错误。
运算符与表达式VB中运算符和表达式可分为以下三类。
算术运算符与算术表达式关系运算符与关系表达式逻辑运算符与逻辑表达式运算规则3.4算术运算符与算术表达式算术运算符算术表达式3.4.1算术运算符VB的算术运算符有以下几种:
^乘方运算符;+加;-减(负号)*乘;/除;
\
整除
例:8\6结果等于1Mod取余运算
例:8Mod6结果等于2&字符串连接运算
例:"Visual"&"Basic"结果是VisualBasic
算术运算符的运算次序为:
^→
-(负号)→*和
/→\(整除)→Mod→+和
-
→&算术表达式可以使用圆括号来改变运算次序。
例:
a*b/(c*d)3.14159265*r^2
等都是合法的算术表达式。注意:
P53第9题,第8题关系运算符与关系表达式
关系运算用于对两个数据进行比较,比较结果为逻辑值“True”或“False”。关系运算符关系表达式3.4.2关系运算符运算符功能<小于<=小于等于>大于>=大于等于<>不等于=等于Is用来比较两个对象的引用变量关系表达式
字符型数据的关系运算是依照字符的ASCII代码,自左至右按照“查英语字典”的原则进行。例如:
“aBcd”>“abc”的运算结果是False注意:
x+y>a+b
先做算术运算再做关系运算!逻辑运算符与逻辑表达式
逻辑运算是对逻辑值进行的运算。
逻辑运算符逻辑表达式3.4.3逻辑运算符NOT
逻辑非
NOTA>BAND
逻辑与
例:a>=bANDa>=cOR
逻辑或
例:a>=5ORa<=—5XOR
逻辑异或
逻辑运算的优先次序是:
NOT→AND→OR→XOR逻辑表达式逻辑表达式主要用于表示一些复杂的判断条件。
运算规则算术运算符—关系运算符—逻辑运算符。不同数据类型的数据进行运算,结果的类型为两个运算对象中存储长度较长的那个对象的类型。注意:除法运算是个例外,不论除数与被除数类型如何,结果总是双精度型。
3.4.4VB公共函数(考点)公共函数是由系统提供的,可随时随地调用。
函数调用形式:函数名(参数表)。函数的三要素
函数名与功能,参数,返回值算术函数字符函数转换函数日期与时间函数格式化函数Format$3.5必须掌握的函数(考纲)函数的上机练习P54第11题与补充题函数的总结函数名功能Sqr(x)求平方根值,x≥0Log(x)求自然对数,x>0Exp(x)求以e为底的幂值,即求exAbs(x)求x的绝对值Hex[$](x)求x的十六进制数值Oct[$](x)求x的八进制数值Sgn(x)求x的符号,当x>0,返回1;x=0,返回0;x<0,返回-1Rnd[(x)]产生一个在(0,1)区间均匀分布的随机数,若x=0,则给出的是上一次利用本函数产生的随机数Sin(x)求x的正弦值,x单位是弧度Cos(x)求x的余弦值,x单位是弧度Tan(x)求x的正切值,x单位是弧度Atn(x)求x的反正切值,函数返回的是主值区间的弧度值函数名功能Len(x)求x字符串的长度(字符个数)Left[$](x,n)从x字符串左边起取n个字符Right[$](x,n)从x字符串右边起取n个字符Mid[$](x,n1,n2)从x字符串左边第n1个位置开始向右起取n2个字符Ucase[$](x)将x字符串中所有小写字符改为大写Lcase[$](x)将x字符串中所有大写字符改为小写Ltrim[$](x)去掉x左边的空格Rtrim[$](x)去掉x右边的空格Instr([n,]x,"字符")从x的第n个位置起查找给定的字符,返回该字符在x中的位置,n的缺省值为1String[$](n,"字符")得到由n个给定字符组成的一个字符串Space[$](n)得到n个空格函数名功能Str[$](x)将数值数据x转换成字符串(含符号位)Val(x)将字符串x中的数字转换成数值Chr[$](x)返回以x为ASCII代码值的字符Asc(x)给出字符x的ASCII代码值(十进制数)Cint(x)将数值型数据x的小数部分四舍五入取整Fix(x)将数值型数据x的小数部分舍去Int(x)取小于等于x的最大整数CBool(x)将任何有效的字符串或数值转换成逻辑型CByte(x)将0至255之间的数值转换为字节型CDate(x)将有效的日期字符串转换成日期Ccur(x)将数值型数据x转换成货币型数据CLng(x)将数值型数据x转换成长整数型,小数部分四舍五入CDbl(x)将数值型数据x转换成双精度数CSng(x)将数值型数据x转换成单精度型Cvar(x)将数值型数据x转换成变体型CStr(x)将x转换成字符串型函数名功能Date[$]返回系统当前的日期Time[$]返回系统当前的时间Now返回系统当前的日期和时间Year(x)X应为一有效的日期变量、常量或字符表达式本函数返回一个表示x的年号的整数Month(x)X应为一有效的日期变量、常量或字符表达式本函数返回一个表示x的月份的整数Day(x)X应为一有效的日期变量、常量或字符表达式本函数返回1到31之间的整数,表示是一个月的第几日Weekday(x[,c])X应为一有效的日期变量、常量或字符表达式c是用于指定星期几为一个星期第一天的常数,缺省时表示一周的星期天为第一天格式化函数Format$Format[$]是专门用于将各种数据按指定格式输出的函数。它的一般形式是:
式中的fmt$是用于格式控制的字符串。
格式控制字符有:
#、0、.、,、%、$、-、+、(、)、E+、E-Format函数仅用于控制数据的外部输出形式,不会改变数据在计算机内部的存储形式。
Format[$](<算术表达式>,fmt$)本章总结VB程序的组织方式
(模块与过程)数据、表达式及运算规则:
类型、常量、
变量说明与作用域;(两个要点)
运算符与表达式、运算规则
公共函数:(三要素)
常用算术函数、转换函数、字符函数、
日期函数及Format函数的功能及应用
算法基础及VB的基本语句
第4章算法及程序设计基础赋值语句及InputBox、MsgBox函数
分支结构与分支结构语句循环结构与循环结构语句程序示例小结算法及程序设计基础算法的特征算法的描述基本算法结构4.1算法的特征确定性可行性有穷性输入性输出性算法的描述流程图。 是使用规定的图形符号来描述算法的。
流程图使用的图形符号见表4-1。图4-1和图4-2分别是两个算法示例的流程图。图框内的文字用于说明具体的操作内容。上例表现算法的五个特性图形符号名称代表的操作输入/输出数据的输入与输出处理各种形式的数据处理判断判断选择,根据条件满足与否选择不同路径起止流程的起点与终点特定过程一个定义过的过程流程线连接各个图框,表示执行顺序连接点表示与流程图其他部分相连接基本算法结构“结构化程序设计方法”的核心是规定了算法的三种基本结构:
顺序结构、分支结构和循环结构。P58
三种基本结构的共同特点是:
1)只有单一的入口和单一的出口;2)每个部分都可能被执行;3)结构内不存在永不终止的死循环。赋值语句及InputBox、MsgBox函数
赋值语句InputBox函数MsgBox函数4.2习题:P81:第6,7,8题上机:P41实验5.1,5.2赋值语句赋值语句的形式不同数据类型数据的赋值图4-4
一个说明不同数据类型数据赋值方式的简单程序示例
4.2.1赋值语句的形式赋值语句的一般形式是:
其中var表示某个变量名或属性名。
先运算,后“赋值”。
赋值语句可使变量或某个对象的某属性获得一个新值。示例
赋值语句还可以获取一个对象的当前属性值。例如:pw=texpass.text
var=<表达式>赋值语句示例x="Thisis”&“aflower"number%=72+23Lable1.Text="Filenameis:"Text.Font.Size=12Y=(a+b)/2思考:如何将A与B交换内容?不同数据类型数据的赋值有数值意义的字符串,OK!
无数值意义的字符串出错!字符数值变量True—”true”;False—”False”逻辑值字符变量Ture:变量的值将为-1;
False:变量的值为0逻辑值整型变量值转换为字符型赋给变量数值字符变量先求值再转换为变量类型后再赋值数值数值变量系统处理
表达式类型
变量类型
逻辑变量数值非0值转换为True赋变量,
0则转换为False赋变量图4-4
一个简单程序示例
InputBox函数InputBox函数
用来接受用户通过键盘输入的数据。
InputBox函数应用示例
P61
4.2.2N_student=inputbox(“请输入你的学号”,”程序示例”,230001)运行时,N_student的值为用户输入的学号值MsgBox函数MsgBox函数用于向用户发布提示信息,并要求用户作出必要的响应。MsgBox函数根据用户选择单击的按钮而返回不同的值MsgBox函数有以下几种使用方法4.2.3MsgBox函数的几种使用方法
三种方法都可以获得如图所示画面。 但第二、三种用法将得不到用户点击不同按钮的返回值(或没有返回值)。Ans=msgbox(“非法数据!”,48,“提示信息”)printmsgbox(“非法数据!”,48,“提示信息”)Msgbox“非法数据!”,48,“提示信息”123参数C1,C2,C3,C4见P62分支结构与分支结构语句
分支结构是程序的基本算法结构之一。VB提供了实现分支结构的相关语句。If-Then-Else-EndIf结构语句Select-Case-EndSelect结构语句4.3习题:P81第2题上机:P43实验5.3到5.7If-Then-Else-EndIf结构语句该结构语句的一般形式该结构的变形1该结构的变形2[例4-1]已知三角形三个边的长度,设计求此三角形面积的程序
[例4-2]一个有多个分支的示例程序
4.3.1If结构语句的一般形式IfeThen[A组语句]Else[B组语句]EndIfIf结构的变形1IfeThenA组语句EndifIfeThen<语句>If结构的变形2Ife1ThenA1组语句
ElseIfe2ThenA2组语句
...Endif[例4-1]已知三角形三个边的长度,设计求此三角形面积的程序算法流程图当a+b>c且a+c>b且b+c>a时,三角形存在,其面积式中:
p=(a+b+c)/2[例4-1]算法流程图[例4-2]一个有多个分支的示例程序程序代码[例4-2]程序代码PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)
Ifx<1ThenText2.Text=“这是小于1的数”
ElseIfx<=10ThenText2.Text=“这是1到10之间的数”
ElseText2.Text=”这是大于10的数”
EndIfEndSubSelect-Case-EndSelect结构语句实现多分支结构的另一种方法。
例4-2的程序代码也可使用本结构语句实现
4.3.2SelectCaseeCasec1A组语句
Casec2B组语句
...CaseElsen组语句
EndSelecte称为测试表达式;
c1,c2,...是测试项(1)具体取值:如:3、5、7.2等(当测试表达式是算术表达式时);(2)连续的数据范围:如:8To20;BToH等;(3)满足某个判决条件:如:Is>20;Is<="P"等。例4-2使用本结构语句实现PrivateSubCommand1_Click()DimxAsIntegerx=Val(text1.Text)
SelectCasexCaseIs<1Text2.text="这是小于1的数"Case1To10Text2.Text="这是1到10之间的数"CaseElseText2.Text="这是大于10的数"
EndSelectEndSub循环结构与循环结构语句
循环结构是程序的基本算法结构。所谓循环,就是重复地执行某些操作。
当型循环和直到型循的不同执行方式Do-Loop循环结构语句For-Next循环结构语句循环嵌套4.4习题:P81第3,4,5,9题上机:P47实验6.1到6.6回顾(3.30)赋值语句的兼容(P60)IF语句的多态(举例)Elseif语句的迷惑(举例)多路分支语句selectcase的妙用DO语句的2种结构、2种控制语句关于FOR语句当型循环和直到型循的不同执行方式当型循环的不同执行方式直到型循环的不同执行方式Do-Loop循环结构语句Do-Loop循环结构语句的四种形式
ExitDo语句
[例4-3]
求两个自然数的最大公约数程序
4.4.11.DoWhilee2.Do......[ExitDo][ExitDo]......LoopLoopWhilee
3.DoUntile4.Do......[ExitDo][ExitDo]......LoopLoopUntile回顾(4.27)补课问题赋值语句的兼容(P60)IF语句的多态(举例)Elseif语句的迷惑(举例)多路分支语句selectcase的妙用DO语句的2种结构、2种控制语句关于EXITDO语句ExitDo语句循环体中,执行到ExitDo语句时,就会直接退出本层循环,转而执行Loop语句的下一条语句。最常用的形式是与If-Then语句相结合,即:
IfeThenExitDo表示:如果条件e被满足,则执行ExitDo语句直接退出本层循环。
举例:P81第3题[例4-3]
求两个自然数的最大公约数程序在程序中加入对数据的合法性进行检验的部分;数据类型可选用长整型。
使用Mod运算符时,切记应前后各加一个空格
程序代码
最小公倍数?For-Next循环结构语句如果事先已知循环次数,则可使用For-Next循环结构语句。它的一般形式是:
For-Next循环结构语句的执行方式注意[例4-4][例4-5]4.4.2Forv=e1Toe2[Stepe3]
…
[ExitFor]
…
Nextvv是循环控制变量,
e1为初值;
e2为终值;
e3为步长。
当e3=1时,可省略。For-Next循环结构语句的执行方式1.计算e1、e2和e3的值;2.给v赋初值;(1与2只做一次)3.判v的值是否超过e2,如果未超过,则执行循环体;如果超过了,则退出循环。4.做完循环体后,到Next语句,v增加一个步长;转3:判别操作。
注意循环参数e1、e2和e3中包含的变量如果在循环体内被改变,不会影响循环的执行次数;但循环控制变量若在循环体内被重新赋值,则循环次数有可能发生变化(举例P82:#4)若使用非整型数做循环控制变量和循环参数,那么循环次数就有可能发生意想不到的变化。[例4-4]求1到10这十个数的和与连乘积
求若干个数之和或连乘积,可采用“累加”或“累乘”法。累加法是设置一个存放和数的变量,称为“累加器”,初始值为0,累加过程通过循环实现;累乘的算法设置的是“累乘器”,初始值为1,在循环体内,乘数应与累乘器相乘。设置适当的数据类型。程序代码
FOR语句的特例关于正常情况下的循环次数关于正常情况下循环结束后循环变量的值EXITFOR语句非正常情况下:循环变量的值!!举例:
P81#3#4循环嵌套无论是Do-Loop循环,还是For-Next循环,都可以在大循环中套小循环。注意:小循环一定要完整地被包含在大循环之内。
PrivateSubForm_Click()Fori=1To9Forj=1To9Printi;"*";j;"=";i*j;NextjPrintNextiEndSub[例4-6]一个模拟摇奖的程序
4.4.3小结VB的基本语法规则VB的基本元素(常量,变量,函数,运算符,各种表达式)结构化程序的三种结构(顺序,分支,循环)如何设计算法?如何用VB实现算法?[例4-5]大写字母逆序输出的程序回顾几组函数:
Len(),
Mid(),Left(),Right(),Chr,Asc()本例利用Mid函数可以从字符串中提取出单个字符如何控制循环过程?(使用Len函数);如何处理?(采用连接运算)如何逆序输出?(程序设计技巧之一)
程序代码[例4-6]一个模拟摇奖的程序设有100个人中签,要从中找出中奖人。由机器自动随机产生1000个1到100间的数据,第1000个随机数据即为中奖人的号码。
如何产生1~100之间的随机整数。可用以下公式:
Int((上限
-下限lb+1)*Rnd)+下限
调用
Rnd之前,可先使用无参数的
Randomize语句初始化随机数生成器程序代码程序示例[例4-7]一个简易函数计算器程序
(P74)[例4-8]
个人收入调节税应用程序
(P77)[例4-9]牛顿迭代法程序设计(P78)[例4-10]
原码转换成反码的程序(P79)
4.5[例4-7]一个简易函数计算器程序预处理:
考虑在文本框中没有输入数据;输入的数据超出函数的定义域时的出错处理。
程序中使用的IsNumeric(s)函数用于检测自变量s是否是一个可转换成数值的数字串,如果是,则返回逻辑值True,否则返回False。
程序代码
PrivateSubcmd1_Click()
IfText1.Text=""ThenMsgBox"请输入X值!",48+vbOKOnly,"程序示例"Text1.SetFocus
ElseIfIsNumeric(Text1.Text)ThenX=Val(Text1.Text) ‘求函数
Label2.Caption=“Exp(X)=:” ‘换门牌
Text2.Text=Str(Exp(X)) ‘送结果
ElseMsgBox"输入数据错误!",48+vbOKOnly,"程序示例"Text1.Text="”
EndIfEndSubexp效果?初始界面MsgBox“请输入X值!”,48+vbOKOnly,"程序示例"显示结果按月收入额计个人收入调节税的计税公式式中,pay为纳税人的月收入。
程序代码[例4-8]个人收入调节税应用程序
PrivateSubCommand1_Click()DimtaxAsSingle,payAsSinglepay=Text1.Text
IfCheck1.Value=1orpay<=1000Thentax=0
ElseIfpay<=1500Thentax=(pay-1000)*0.05
ElseIfpay<=2000Thentax=25+(pay-1500)*0.1…………...
Else ‘什么情况下执行??tax=700+(pay-4500)*0.4
EndIfText2.Text=taxEndSub思考:1、判断顺序2、if--then--elseif的结合?3、改成selectcase语句?[例4-9]利用牛顿迭代法求方程根xex-1=0at:x0=0.5<=10-7
算法说明
P78程序代码
P79OptionExplicitPrivateSubcmd1_Click()DimxAsSingle,x1AsSingle,EpsAsSinglex=InputBox("输入初始值x:","牛顿迭代法")Eps=InputBox("输入允许误差Eps:","牛顿迭代法")
Dox1=x ‘总把新符换旧符
x=x1-(x1*Exp(x1)-1)/(Exp(x1)*(x1+1))
Loop
UntilAbs(x-x1)<=EpsText1.Text=Str(x)EndSub[例4-10]
原码转换成反码的程序Mid函数的另外一个功能:
可以用在赋值语句中:其功能是用指定的字符替换字符串中指定位置的内容。例s=“abcdef”
mid(s,4,3)=“xyz”‘s的结果为“abcxyz”程序代码
PrivateSubCommand1_Click()DimSourceAsString,IAsIntegerSource=Text1.Text
IfMid(Source,1,1)<>"1"ThenText2.Text="正数没有补码"Else
ForI=2ToLen(Source)IfMid(Source,I,1)="1"Then
Mid(Source,I,1)="0"Else
Mid(Source,I,1)="1"EndIf
NextIText2.Text=Source
EndIfEndSubMid函数的新作用本章小结算法及程序设计基础赋值语句及InputBox、MsgBox函数
分支结构与分支结构语句循环结构与循环结构语句程序示例习题(P81--P83第10--13题)上机(P41--P55)(5月16日交)时间:5月27日中午要求:60分钟做完窗体上注明:
班级学号姓名随机抽题临时点题可加分1.实验书P522.实验书P55(6--6)3.实验书P604.实验书P63(7--5)5.实验书P64(7--7)6.实验书P72(8--4)7.教材P116第9题8.教材P115第2题关于期中上机考试数组的概念
数组可用于存储成组的有序数据。使用数组就是用一个相同的名字引用这一组变量中的数据,这个名字被称为数组名。数组命名与数组元素
数组定义
数组的结构
数组函数及数组语句
5.1数组命名与数组元素数组名的命名规则与简单变量命名规则一样。
数组内的每个成员称为数组元素,数组元素又称为下标变量,数组元素的类型也就是数组的类型。
数组元素名的一般形式是:
其中:下标可以是常量、变量或算术表达式。当下标的值为非整数时,会自动进行四舍五入。
5.1.1数组名(下标1[,下标2……])数组定义数组说明语句数组的初始化5.1.2定义:1、名称和数据类型
2、维数和每一维的上、下界的取值范围。数组类型:
静态数组和动态数组。数组说明同变量定义(地点?语句?)Optionbase1语句的功能维的大小=上界--下界+1数组元素总个数=各维数连乘数组类型定义(例)数组维说明示例数组说明语句示例 DimA(6)AsInteger PrivateName(1999To2002)AsString*8 DimB(2,1to2)AsIntegerA(6)A(5)A(4)A(3)A(2)A(1)A(0)Name(2002)Name(2001)Name(2000)Name(1999)B(2,2)B(2,1)B(1,2)B(1,1)B(0,2)B(0,1)数组维说明示例DimMAsintegerConstNAsInteger=5DimA(N)AsInteger√DimB(1To6.6)AsInteger√DimC(1To2+3)AsInteger√ DimD(0ToM)AsInteger
×数组初始化数值型的数组元素初始值为零变长字符类型的数组元素初始值为空字符串定长字符类型的数组元素初始值为指定长度个数的空格布尔型的数组元素初始值为False变体(Variant)类型的数组元素的初始值是Empty。
数组的结构一维数组的结构
二维数组的结构
三维数组的结构
5.1.3一维数组的结构DimStrA(8)AsInteger线性顺序StrA(0)StrA(1)StrA(2)StrA(3)StrA(4)StrA(5)StrA(6)StrA(7)StrA(8)StrA(8)StrA(7)StrA(6)StrA(5)StrA(4)StrA(3)StrA(2)StrA(1)StrA(0)存储结构逻辑结构存储结构二维数组的结构OptionBase1 DimTable(3,4)AsInteger
按列存放Table(1,1)Table(2,1)Table(3,1)Table(1,2)Table(2,2)Table(3,2)Table(1,3)Table(2,3)Table(3,3)Table(1,4)Table(2,4)Table(3,4)Table(3,1)Table(2,1)Table(3,2)Table(3,3)Table(3,4)Table(2,2)Table(2,3)Table(2,4)Table(1,1)Table(1,2)Table(1,3)Table(1,4)存储结构逻辑结构存储结构三维数组的结构Page(3,1,1)Page(2,1,1)Page(1,1,2)Page(3,2,1)Page(2,2,1)Page(1,2,2)Page(3,3,2)Page(2,3,2)Page(1,3,2)Page(3,1,1)Page(2,1,1)Page(1,1,1)Page(3,2,1)Page(2,2,1)Page(1,2,1)Page(3,3,1)Page(2,3,1)Page(1,3,1)逻辑结构存储结构Page(1,1,1)Page(2,1,1)Page(3,1,1)Page(1,2,1)…Page(3,3,1)Page(1,1,2)Page(2,1,2)Page(3,1,2)Page(1,2,2)…Page(3,3,2)DimPage(3,3,2)ASInteger(行,列,页)存放:逐页逐列(先变左边下标)逻辑结构存储结构数组函数及数组语句LBound
函数与UBound函数
Erase语句
ForEach…Next结构语句
5.1.4LBound
函数;UBound函数Lbound的功能:是返回数组某维的维下界的值(例)Ubound的功能:是返回数组某维的维上界的值(例)例如:dima(-2to3,0to5) ……...printLbound(a),Lbound(a,2)printUbound(a),Ubound(a,2) ……….Lbound函数应用示例PrivateSubForm_Click()DimA(5)AsInteger,DimB(3to8,200to208)PrintLBound(A),LBound(B,1),LBound(B,2)EndSub程序执行结果是:0
3
200Ubound函数应用示例PrivateSubForm_Click()DimA(5)AsInteger,DimB(3to8,200to208)PrintUBound(A),UBound(B,1),UBound(B,2)EndSub程序执行结果是:5
8
208Erase语句Erase语句的功能是重新初始化固定大小数组的元素,或者释放动态数组的存储空间。Erase语句应用示例Erase语句应用示例PrivateSubForm_Click()DimA(3)AsInteger,B()AsIntegerA(1)=1:A(2)=2:A(3)=3ReDimB(4)‘为B分配4个整数单元(8B)
PrintA(1),A(2),A(3)EraseA,B‘A充0,B的单元释放
PrintA(1),A(2),A(3)EndSubForEach…Next结构语句ForEach…Next语句是专门用来为数组或对象集合中的每个元素重复执行一组语句而设置的。ForEach…Next语句应用示例OptionBase1PrivateSubForm_Click()DimA(12)AsInteger,VAsVariantDimIAsInteger,JsAsIntegerJs=14ForI=1To12A(I)=JsJs=Js+7NextIJs=0
ForEachVInAJs=Js+1PrintV;If(JsMod6)=0ThenPrint
NextVPrintEndSub窗体上显示的结果是:
142128354249566370778491数组赋值输出每个元素输出6个,换行数组的基本操作数组元素的赋值数组元素的输出
数组元素的引用
5.2数组元素的赋值用赋值语句给数组元素赋值
通过循环逐一给数组元素赋值
用InputBox函数给数组元素赋值
用Array函数给数组赋值
5.2.1用赋值语句给数组元素赋值DimScore(3)AsIntegerDimTwo(1,1to2)asintegerScore(0)=80 Score(1)=75 Score(2)=91 Score(3)=68Two(0,1)=Score(0)
…K=4Score(K-2)=91PrivateSubForm_Click()DimA(6)AsInteger,IAsIntegerDimB(1to2,1to2)AsInteger,JAsIntegerForI=0To6‘使用循环给一维数组赋值并输出
A(I)=Int(99*Rnd)+1
A(I);
NextI
PrintForI=1To2 ‘利用二重循环给二维数组赋值并输出
ForJ=1To2B(I,J)=I*10+J ‘外循环是I,行
PrintB(I,J);NextJ
NextIEndSub用InputBox函数给数组元素赋值PrivateSubForm_Click()DimA(6)AsInteger,IAsIntegerForI=0To6A(I)=InputBox("给元素赋值","数组A赋值")PrintA(I);NextIPrintEndSub慢,适合少量数据OptionBase1PrivateSubForm_Click() DimAAsVariant ‘A是变量
DimB(4)AsVariant ‘B是数组
A=Array(5,4,3,2,1) PrintA(1);A(2);A(3);A(4);A(5) A=Array(1.5!,2.3!,3.6!,4.1!) PrintA(1);A(2);A(3);A(4);A(5);A(6) A=“NOArray” ‘A不是数组了
PrintA B=Array(1,2,3,4,5,6) ‘错误语句原因??EndSub注意:只对Varian类型的变量!数组元素输出示例 P9411121314152019181716212223242530292827261.规律?
2.如何设计算法?
3.用什么语句实现算法?picture1Text1OptionExplicit:OptionBase1PrivateSubCmd1_Click()DimA(4,5)AsInteger,KAsIntegerDimIAsInteger,JAsInteger,SAsStringK=10ForI=1To4IfIMod2<>0Then‘处理奇数行
ForJ=1To5K=K+1A(I,J)=KNextJElseForJ=5To1Step–1 ‘处理偶数行
K=K+1A(I,J)=KNextJEndIfNextI'生成数组IfCheck1.Value<>1ThenForI=1To4 '输出到图片框
ForJ=1To5Picture1.PrintA(I,J);NextJPicture1.PrintNextIElseForI=1To4 '输出到多行文本框
ForJ=1To5S=S&Str(A(I,J))NextJS=S&Chr(13)&Chr(10)NextI
Text1.Text=SEndIfEndSub'数组输出对text1的属性有要求!
回顾(4月20日)为什么要使用数组?
数组的特点
(程序设计=数据结构+算法)如何定义数组?
固定大小的数组;动态数组
数组的结构(逻辑结构;物理结构)如何使用数组?
函数:Ubound()与Lbound()
数组的赋值;数组的输出今天:数组的引用?数组元素的引用数组元素的下标在规定的维界范围之内,否则就会产生“数组越界”的错误。
【例5-1】
随机产生12个两位数,存放在数组Com中,并从中找出一个最大数和一个最小数。
5.2.3OptionExplicitOptionBase1PrivateSubForm_Click()DimCompare(12)AsInteger
DimIAsIntegerDimMaxAsInteger,MinAsIntegerRandomizeForI=1To12Compare(I)=Int(90*Rnd)+10PrintCompare(I);NextIPrint
生成12个随机整数
Max=Compare(1):Min=Compare(1)ForI=2To12IfCompare(I)>MaxThen
Max=Compare(I)ElseIfCompare(I)<MinThen
Min=Compare(I)EndIfNextIPrint"最大数是:";MaxPrint"最小数是:";MinEndSub思考:求最大数的位置?动态数组的特点:
不知数组应有多大能满足需要,在运行程序时改变数组的大小能力。定义动态数组分为两步:
1.首先定义不指明大小的数组。Public|Private|Dim|Static
数组名()[AS类型]2.用ReDim语句来动态地定义数组的ReDim[Preserve]数组名(维界定义)动态数组5.3OptionBase1
DimDynArry()AsInteger
…….PrivateSubSub1()DimXAsInteger,YAsInteger
ReDimDynArry(9)
……..
X=2:Y=4
ReDimDynArry(X,Y)
EndSub动态数组举例Redim语句中Preserve的使用 ReDim语句中缺省关键字Preserve时,当前存储在数组中的值全部丢失;
若要保留原数组的内容,应在ReDim语句中使用关键字Preserve,并只能改变最后一维的维上界。
举例OptionBase1DimDynArry()AsInteger
PrivateSubForm_Click()
DimIAsInteger,JAsInteger
ReDimDynarry(3,3)
Debug.Print"数组Dynarry(3,3)的值"
ForI=1To3
ForJ=1To3
Dynarry(I,J)=I*10+J
Debug.PrintDynarry(I,J);
NextJ
Debug.Print
NextI
ReDimPreserveDynarry(3,4)Debug.Print"数组Dynarry(3,4)的值"ForI=1To3
ForJ=1To4
Debug.PrintDynarry(I,J);
NextJ
Debug.Print
NextIEndSubDynarry(3,3)的值为:
111213212223313233Dynarry(3,4)的值为
1112130
2122230
3132330问?!控件数组基本概念
【例5-2】
使用控件数组,编写一个能进行加、减、乘、除运算的运算器的程序两条语句(LOAD与UNLOAD)
5.4基本概念5.4.1
控件数组是由一组具有共同名称和相同类型的控件组成,数组中的每一个控件共享同样的事件过程。 控件数组的名字由控件的Name属性指定,每个元素的下标则由控件的Index属性指定.第一个元素的下标是零(0),最大索引值为32767。引用方式同普通数组元素.操作演示Command2:有5个元素,各元素分别表示+、-、*、/和Mod运算符。
Command3的Caption属性值设为“清屏”;Command4的Caption属性值是设为“=”;Command5的Caption属性值设为“退出”。编写一个运算器的程序
Command1:
有11个元素,前10个元素分别表示10个数字,第11个元素表示小数点。
共享Command1_Click()事件过程;Load语句格式:Load
Object(Index)功能:向控件数组添加控件Unload语句格式:UnloadObject(Index)功能:删除用Load语句产生的对象数组元素举例P100OptionExplicitDimTextNumPrivateSubCommand1_Click()IfTextNum<3ThenTextNum=TextNum+1LoadText1(TextNum)
Text1(TextNum).Visible=TrueText1(TextNum).Top=Text1(TextNum-1).Top+_
Text1(TextNum-1).Height+100Text1(TextNum).Text="文本框"&Str(TextNum)EndIfEndSub回顾数组的基本概念数组的基本操作数组的应用实例?数组与常用算法精妙的结合难点,重点
N遍的重复===熟练掌握排序算法的创新!程序示例【例5-3】用选择法对10个数进行排序
【例5-4】顺序查找与二分查找程序【例5-11】将数组中重复元素删除【例5-6】有关矩阵的程序设计
【例5-7】求出裴波拉契数列的前18项【例5-8】统计字母在文本中出现的次数
【例5-9】找出100以内的所有素数【例5-10】找出5000以内的亲密对数
5.5用选择法对10个数进行排序设在数组Sort中存放10个无序的数,要将这10个数按升序重新排列。算法讲解…..比较次数:N*(N-1)/2如何写程序???如何改进算法?直接排序法Flash动画掌握了吗?(改题)
ForI=1To10Sort(I)=Int(Rn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论