VB可视化程序设计基础课件_第1页
VB可视化程序设计基础课件_第2页
VB可视化程序设计基础课件_第3页
VB可视化程序设计基础课件_第4页
VB可视化程序设计基础课件_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

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

文档简介

第2章VB可视化程序设计基础

模拟计算器程序设计窗体基本的输入/输出控件命令按钮VisualBasic程序设计语言基础基本语句数组过程知识延伸——焦点2/6/20231知识回顾通过一个文字移动的例子,讲解VB功能特色集成开发环境可视化编程的基本概念(类和对象)可视化编程的基本步骤工程管理和程序调试提问:什么是类?什么是对象?提问:可视化程序设计的三种工作模式?提问:可视化程序设计编程的基本步骤。2/6/20232本章目标熟悉窗体、标签、文本框和命令按钮的使用掌握VB的基本语法掌握三种控制语句掌握数组的定义和使用掌握过程的定义和使用能根据所学基础知识开发简单应用程序2/6/202332.2窗体什么是窗体在程序设计时,窗体是设计的平台在程序运行时,窗体是应用程序与用户交互的平台窗体由系统菜单、标题栏、最小化和最大化按钮、关闭按钮组成系统菜单标题栏最小化按钮最大化按钮关闭按钮2/6/20235窗体—常用属性(3-1)示例:模拟黑板。(单击查看代码)刚运行时单击后双击后2/6/20236NameBackColor和ForeColorBorderStyleHeight和WidthCaption用来指定窗体的名称,在代码中用来引用窗体用来指定窗体的背景颜色和前景颜色用来指定窗体的边框样式用来指定窗体的高度和宽度,单位:twip用来指定窗体的标题信息(单击查看补充材料)2/6/20237窗体—常用属性(3-3)VisibleEnabledAutoRedrawPicture用来指定窗体是否可见指定窗体运行时是否可响应用户或系统的操作用来实现窗体上输出内容的持久显示如:当单击窗体时,窗体是否能否调用窗体单击事件过程即:当窗体由非激活状态转回到激活状态时,仍然能够显示原来输出的内容用来设置窗体上显示的图形

LoadPicture函数的使用Form1.Picture=LoadPicture("图形文件路径")(单击查看补充材料)2/6/20239窗体—事件Load(加载)事件窗体被装入内存工作区时触发该事件通常用来在启动程序时对属性和变量进行初始化Click(单击)事件鼠标单击窗体时触发DblClick(双击)事件鼠标双击窗体时触发Resize事件当窗体第一次显示或改变大小时触发Resize事件使用。(单击查看代码)2/6/202310窗体—常用方法(2-1)Print用于在窗体上输出数据格式[对象.]Print[{tab(n)|spc(n)][表达式列表][;|,]Cls清除运行时在窗体上显示的文本和图形不能清除设计阶段窗体上的文本和图形2/6/202311几个练习例题示例:在Load事件中通过代码为窗体和命令按钮的属性设置初始值。单击按钮实现窗体向屏幕右下角移动,同时实现用Print方法显示窗体的当前位置。单击窗体实现窗体恢复至登录时的位置。(单击查看代码)示例:在窗体上显示一个图片,使图片充满整个窗体

且在窗体大小发生变化的时,仍然是图片充满整个窗体(单击查看代码)(提示:需用Image控件)2/6/2023132.3基本的输入/输出控件标签用于显示文本信息起提示作用在运行的时候用户不能直接录入信息文本框是一个文本编辑区域用于输入、编辑、修改和显示文本信息在运行的时候用户可以直接录入信息2/6/202314标签—属性(2-1)CaptionBorderStyleBackStyleAlignmentBackColor和ForeColor用标签制作浮雕效果文字。(单击查看代码)用来设置标签要显示的内容用来设置标签有无边框0-None标签无边框(默认)1-FixedSingle标签有立体边框用来设置标签背景是否透明0-Transparent透明1-Opaque不透明(默认)用来设置标签内文本的水平对齐方式2/6/202315标签—事件ClickDblClick在实际应用中,标签一般只起到显示文字和提示作用,因此一般不用编写事件过程2/6/202317文本框控件用文本框制作一个登录界面。窗体上有系统的标题

窗体上有用户名和密码的输入

单击“确定”按钮,判断输入的用户名和密码是否正确如果正确,提示“欢迎光临!!!”如果不正确,提示“用户名和密码错误,请重新输入!”同时,清空密码文本框内容,并把焦点放到用户名文本框,让用户重新输入单击“取消”按钮,退出程序的运行(单击查看代码)2/6/202318文本框—属性(4-1)Text文本框没有Caption属性Text属性设置显示的文本信息对文本框中字符格式的设置将会影响文本框全部内容,不能只对部分内容设置格式MaxLength设置文本框允许输入的最大字符数默认为0,表示无限制PassWordChar设置是否在文本框中显示用户键入的字符如PassWordChar不为空,文本框中显示指定字符,但此时Text属性值仍然为实际文本内容;否则,文本框显示实际输入文本内容。2/6/202319文本框—属性(4-3)创建多行文本框: 默认情况下,文本框只显示单行文本,无滚动条,不支持回车换行。MultiLine只能在设计时(即属性窗口中)设置只有在ScrollBars为非零值时有效取值为True或FalseScrollBars只能在设计时(即属性窗口中)设置设置文本框是否具有水平或垂直滚动条ScrollBars0-None无滚动条

1-Horizontal只有水平滚动条

2-Vertical只有垂直滚动条

3-Both具有水平和垂直两种滚动条2/6/202321文本框—属性(4-4)Enabled设置是否相应用户或系统的操作取值为True或FalseLocked设置文本框是否可以编辑取值为True或False两者的区别?相同点:两者都不允许用户直接录入内容不同点:Locked为True时,可以接受焦点;Enabled为False时,不能接受焦点。2/6/202322属性类型总结只能在设计阶段设置的属性MultiLine、ScrollBars只能在运行阶段设置的属性SelStart、SelLength、SelText可同时在运行和设计阶段设置的属性问题:设计阶段选中某个控件,在属性窗口中显示该控件的所有属性。2/6/202323文本框—事件Click和DblClickChange在改变文本框的Text属性时触发该事件问题:如果有Text1_Change事件过程,运行时用户在文本框中输入“Change”,会触发几次Text1_Change事件过程?LostFocus当文本框失去焦点时触发GotFocus当文本框获得焦点时触发6次2/6/202325练习例题示例:要求输入合法数字数据。在第一个文本框输入信息,当输入结束时,判断数据是否有效

对于输入正确的数据,在第二个文本框中显示“正确!!”对于输入错误的数据,则显示错误信息,并清除第一个文本框中输入的信息,使焦点重新回到文本框

提示:判断是否为数字,使用函数IsNumeric(参数)(单击查看代码)2/6/202326命令按钮—属性(2-2)Value

设计阶段无效,只能在运行时获取或设置用于检查或设置按钮当前是否被按下True:按下 False:未按下Default设置窗体中的某个命令按钮为缺省按钮当按Enter键时,相当于单击该按钮Cancel设置窗体中的某个命令按钮为取消按钮当按Esc键时,相当于单击该按钮在同一窗体中,只能有一个命令按钮的Default属性为True,也只能有一个按钮的Cancel属性为True。2/6/202329命令按钮—事件Click按钮没有DblClick事件2/6/2023302.5VB程序设计语言基础编码规则数据类型变量和常量运算符和表达式常用函数2/6/202331编码规则VB代码不区分字母的大小写语句书写自由在同一行可以书写多条语句,语句间用冒号“:”分隔一条语句可以分若干行书写,此时在后面添加续行符(一个空格后面跟一个下划线)一行允许多达255个字符注释有利于程序的维护和调试Rem:作为一个单独的语句出现撇号“‘”:可以直接出现在语句的后面2/6/202332数据类型标准数据类型数值型(Numeric)逻辑型(Boolean)日期型(Date)字符型(String)可变型(Variant)对象型(Object)用户自定义类型标准数据类型2/6/202333标准数据类型(4-1)数值类型字节型(Byte)整型(Integer):类型符为%长整型(Long):类型符为&单精度型(Single):类型符为!双精度型(Double):类型符为#货币型(Currency):类型符为@ 定点实数,最多保留小数点右边4位和小数点左边15位2/6/202334标准数据类型(4-2)逻辑型(Boolean)只有两个值:True、False可以和数值互换

True:-1(非零值) False:0例如:(1+2)AndTrue? TrueXorNot10?字符型(String)双引号是字符串的界定符VB用两个字节表示一个字符(包括西文字符和中文字符)采用的是Unicode字符集分为定长字符串和不定长字符串如:"可视化程序设计VisualBasic"3或True10或True长度:192/6/202335标准数据类型(4-3)日期型(Date)日期范围:从公元100年1月1日到9999年12月31日时间范围:从0:00:00到23:59:59

用“#”把日期括起来 如:#September26,2004#,#9/26/2004#, #2004-9-2610:20:30am#用数字序列表示 小数点左边:日期;小数点右边:时间 参照时间:1899年12月31日0:00:00 如:DimTAsDate:T=-2.5:PrintT?补充材料:国际化代码1899年12月28日12:00:002/6/202336标准数据类型(4-4)变体类型(Variant)一种特殊的数据类型

是所有未定义变量的数据类型对数据的处理取决于上下文的需要例如:

DimaAsVarianta=10% 'a此时是整型

a=“VB” 'a此时是字符型

a=True 'a此时是布尔类型2/6/202337自定义类型是由用户自己定义的数据类型,它由若干个标准数据类型组成。定义语句格式

[Private|Public]Type类型名 元素名As数据类型 元素名As数据类型 ……EndType例如TypeStudent NumberAsInteger NameAsString*6 AgeAsInteger BirthdayAsDate SexAsBooleanEndType2/6/202338变量与常量常量在程序执行过程中保持不变的数据文字常量

如:3.14 20% True “VB”符号常量:用标示符表示一个固定Const常量名[As数据类型]=表达式通常常量名的所有字母都大写如:ConstPIAsDouble=3.1415926系统常量:VB系统提供的符号常量如:vbMinimized(最小化)2/6/202339变量与常量变量在程序运行过程中其值可以发生改变的量每一个变量都有名字和数据类型变量名用来唯一地标志每一个变量数据类型表明了该变量的类型变量的声明显示声明隐式声明(初学者最好不要使用隐式声明)Public|Dim|Static|Private变量名As数据类型[,变量名As数据类型…]Public|Dim|Static|Private变量名<类型符>[,变量名<类型符>…]例如:DimintAAsInteger,intB%

隐式声明:不显式声明变量而直接使用

此时变量被默认为Variant数据类型2/6/202340变量变量的命名规则必须以字母或汉字开头由字母、汉字、数字和下划线组成长度小于或等于255个字符不能使用VB中的关键字VB中不区分变量名的大小写

如:MyName,myname,myName是同一个变量变量名由多个单词组成时,建议每个单词的第一个字母大写,其余字母小写变量的作用域单击窗体时,输出单击的次数(查看代码)2/6/202341运算符算术运算符/(浮点除) \(整除)%(取余)关系运算符两个汉字用拼音进行比较汉字字符大于西文字符逻辑运算符Not And Or或Xor Eqv Imp字符运算符+ &优先级(重点)算术运算符>字符运算符>关系运算符>逻辑运算符

/(浮点除):同数学的除法,结果可以是小数

\(整除):对两数进行除法运算后取商的整数部分。若参与运算的两个数都是整数,则可直接进行运算。若参与运算的两个数中有实数,则先将实数的小数部分进行四舍五入,再进行运算。

%(取余):对两数进行除法运算后取商的余数部分。参与运算的两个数的处理同整除运算。例如:16.5\3=5

字符串只有连接运算

区别

+:两边必须是字符串

&:两边不一定是字符串,但必须有空格例如

"abcdef"&12345'结果为"abcdef12345“"abcdef"+12345'出错

"123"&456'结果为"123456""123"+456'结果为579 "123"+"456“'结果为123456

注意:"123"+True=1222/6/202342表达式什么是表达式?

由常量、变量、函数、运算符以及括号连接起来的有意义的式子称为表达式。书写规则运算符不能相邻。例a+-b是错误的。乘号不能省略。例x乘以y应写成:x*y。括号必须成对出现,均使用圆括号。从左到右在同一基准上书写,无高低、大小。能用系统函数的地方尽量使用系统函数。2/6/202343几个练习例题用人单位招聘秘书:年龄小于40岁的女性,学历专科或本科年龄学历And本科专科Or招聘条件(学历=“专科”Or学历=“本科”)And年龄<40And性别=“女”算术表达式

x大于等于3,并且小于等于73<=xAndx<=7性别2/6/202344常用函数函数类型

内部函数用户自定义函数内部函数(标准函数)数学函数字符串函数转换函数时间/日期函数随机函数格式输出函数函数调用方法

函数名([参数表])2/6/202345数学函数Abs(x)函数:求x的绝对值,x为数值型参数Exp(x)函数:求ex的值Log(x)函数:求x的自然对数,返回lnx的值,且x>0Sgn(x)函数:求x的符号值(符号函数)Sqr(x)函数:求x的算术平方根,x≧0Int(x)和Fix(x)函数:均为取整运算(但有区别)随机函数Rnd()三角函数2/6/202346Int和Fix函数的区别共同点均删除参数的小数部分,返回整数部分取整时均不进行四舍五入当参数为正数时,两者功能相同区别当参数为负数时Int返回小于或等于参数的第一个负整数Fix返回大于或等于参数的第一个负整数例题(单击查看代码)(单击查看补充资料)2/6/202347随机函数用来产生随机数.形式Rnd[(x)]:返回一个单精度的随机数取值范围:0<=Rnd<1 [0,1)RandomizeRandomize[(x)]产生随机数的种子,保证每次运行产生不同的随机数求某个必区间[下界,上界]的随机整数

公式:Int((上界-

下界+1)×Rnd())+下界

产生在区间[1,6]上的随机整数(查看代码)2/6/202348转换函数Asc(c)函数:将字符c转换成ASCII码值Chr(n)函数:将ASCII码值转换成字符LCase(c)函数:将字符串c中的大写字母转换为小写字母UCase(c)函数:将字符串c中的小写字母转换为大写字母Str(n)函数:将数值n转换成字符串Val(c)函数:将数字字符转换成数值

Str()函数将非负数值转化成字符类型后,会在转换后的字符串左边增加空格,即数值的符号位。

CStr$():不加符号位。

Val()将数字字符串转化为数值类型,当字符串中出现数值类型规定的字符外的字符时,则停止转换。2/6/202349字符串函数Len(c)函数:求字符串c的长度Left(c,n)和Right(c,n):返回字符串c左(右)边的n个字符Mid(c,n1,n2)函数:自字符串c的第n1个字符开始向右取n2个连续的字符。LTrim(c)、RTrim(c)和Trim(c)函数:去掉字符串c左边、右边、左右两边的空格String(n,c)函数:返回字符串c的首字符组成的n个字符的字符串。InStr([n1,]c1,c2)函数:在字符串c1中从第n1个字符开始查找字符串c2,若找到返回位置值;若找不到,则返回0Space(n)函数:产生由n个空格组成的字符串2/6/202350时间/日期函数Time()或者Time函数:返回系统时间Date()或者Date函数:返回系统日期Year(d)函数:返回参数d的年号d为日期类型参数Month(d)函数:返回参数d的月份号Day(d)函数:返回参数d的日期号WeekDay(d):返回参数d的星期号Now函数:返回系统的日期和时间2/6/202351格式输出函数格式:Format(<表达式>,<格式字符串>)功能:按格式字符串指定的格式输出表达式的值。说明:表达式可以是数值型、字符型、日期型数据。示例:运行下面代码查看结果(单击查看代码)PrivateSubForm_Click() PrintFormat(2.71828,“#####.##")PrintFormat(2.71828,”00000.00”)PrintFormat(Date,"dddddd")PrintFormat(time,“ttttt”)EndSub(单击查看代补充资料)2/6/202352Shell函数负责执行一个可执行文件。形式:Shell(命令字符串[,窗口类型])命令字符串:要执行的应用程序名,包括路径,且必须是可执行文件(扩展名为exe、com、bat)窗口类型:执行应用程序的窗口大小。返回一个Variant。

如果成功,代表这个程序的进程ID; 若不成功,则会返回0。2/6/202353Shell函数示例i=Shell("c:\windows\calc.exe")j=Shell("c:\",1)提示:如果不知道应用程序的路径名,可用Start命令启动程序:i=Shell(start&"calc.exe");i=Shell(start&"vb6.exe")2/6/202354常见错误逻辑表达式书写错,在VB没有造成语法错而形成逻辑错例如,数学表达式3≤x<10

VB表达式写为

3<=x<10。问题在于VB中的逻辑量与数值量可相互转换。同时给多个变量赋值,在VB没有造成语法错而形成逻辑错例如:Dimx%,y%,z%:x=y=z=1标准函数名写错变量名写错检查方法:在通用声明段加OptionExplicit语句书写位置错在通用声明段只能有Dim语句,不能有赋值等其他语句2/6/2023552.6基本语句顺序结构选择结构循环结构其他辅助控制语句Exit语句Goto语句2/6/202356顺序结构—赋值语句格式[Let]变量名=表达式 将表达式的值赋值给变量名[Let][对象名.]属性名=表达式 将表达式的值赋值给对象的属性说明表达式可以是任何类型,一般应与变量名的类型一致赋值号左边只能是变量或对象属性,不能是常量常数符号或表达式不能在同一个赋值语句中,同时给多个变量赋值 例如:x=y=z=1交换A、B两个值(单击查看代码)2/6/202357顺序结构—InputBox函数(2-1)功能只需一行即可实现输入窗体的功能产生一个对话框,作为输入数据的界面,等待用户输入并返回所输入的内容。格式

InputBox$(prompt$,[title$],[default$],[xpos],[ypos])说明prompt:提示信息,最大长度为1024个字符title:对话框标题,默认为当前工程的名称default:输入区中缺省显示信息,默认为空串函数返回值是字符串类型2/6/202358顺序结构—InputBox函数(2-2)显示如下图所示的对话框。语句表示为:DimstrNameAsStringstrName=InputBox("请输入你的姓名"+vbCrLf+"然后单击确定","输入框")使用InputBox函数一次只能输入一个数据.2/6/202359顺序结构—MsgBox函数(2-1)格式

函数形式:MsgBox%(prompt$,[buttons],[title])过程形式:MsgBoxprompt,[buttons],[title]功能

在屏幕上显示诸如提示、询问、警告或错误等消息,对用户的操作作出提醒或反馈。通过用户在对话框中选择的按钮识别用户所做的响应,作为程序继续执行的依据。说明Prompt和title同InputBox函数buttons:数值表达式,用来控制在对话框内显示的按钮种类和数量以及图标类型。(由四类数值相加产生)函数返回值是整数类型2/6/202360顺序结构—MsgBox函数(2-2)Button参数建立一个退出对话框,对退出再次确认。(查看代码)2/6/202361练习例题修改文本框章节中的登录界面。如果用户名和密码正确,弹出对话框,提示“欢迎光临!!!”如果不正确,弹出对话框,提示“用户名和密码错误,是否重新输入?”如果选择是,清空密码文本框内容,并把焦点放到用户名文本框,让用户重新输入;如果选择否,推出应用程序的执行注意:学生的用户名一般输入的是学号,而学号全部是数字字符。在进行有效性检查时也用对话框提示错误信息(单击查看代码)2/6/202362命名参数的使用注意 InputBox()、MsgBox()中的参数必须按语法要求规定的顺序提供数值, 默认部分也要用逗号占位符跳过。引入“命名参数”

命名参数可用“:=”以任意顺序赋值

prompt:提示 buttons:按钮 title:标题 default:默认 xPos:x坐标 yPos:y坐标例如:

InputBox("请输入您的学号","学生成绩查询系统")

InputBox(Title:="学生成绩查询系统",prompt:="请输入您的学号")

MsgBox("登录成功",vbOKOnly+vbInformation,"成功登录页面")

MsgBox(Title:="成功登录页面",buttons:=vbOKOnly+vbInformation,prompt:="登录成功")2/6/202363顺序结构—Print方法语法 [对象名称.]Print[tab(n)|spc(n)][表达式列表][;|,]功能

在指定对象上输出表达式的值说明对象可以是窗体、图形框和打印机Tab(n):表示在参数n指定的位置输出表达式的值Spc(n):表示跳过n个空格Print方法在Form_Load事件过程中不起作用。如果要在该事件中显示数据,必须在该过程中加上Form1.Show方法或把AutoRedraw设置为True.2/6/202364几个练习例题显示下图所示的图形。用Print方法输出图形。改变(单击查看代码)(单击查看代码)Fori=1To5PrintTab(i);String(6-i,"▼");Spc(6);String(i,"▲")Nexti若把程序中的Spc(6)换成Tab(6)会怎样?;Tab(6);2/6/202365选择结构特点:根据所给定条件的真假,选择不同的语句。两种类型

If语句

SelectCase语句2/6/202366If语句(4-1)单分支结构If<表达式>Then语句块EndIf或If<表达式>Then<语句表达式语句块TF例如:已知两个数x和y,比较两个数的大小,使x大于yIfx<yThent=x:x=y:y=tEndIf或Ifx<yThent=x:x=y:y=t2/6/202367If语句(4-2)双分支结构If<表达式>Then语句块1Else 语句块2EndIf或If<表达式>Then<语句块1>Else<语句块2>表达式语句块1TF语句块2计算分段函数单分支结构实现:y=cos(x)-x^3+3*xIfx<>0Theny=sin(x)+sqr(x*x+1)

双分支结构实现:

Ifx<>0Theny=sin(x)+sqr(x*x+1)Elsey=cos(x)-x^3+3*xEndIf2/6/202368If语句(4-3)多分支语句

If<表达式1>Then <语句块1>

ElseIf<表达式2>Then <语句块2> … [Else

语句块n+1]

EndIf求一元二次方程ax2+bx+c=0的根。(查看代码)2/6/202369If语句的嵌套If语句的嵌套是指If或Else后面的语句块中又包含If语句。形如: If<表达式1>Then

If<表达式11>Then … EndIf

… EndIf示例:已知x,y,z三个数,使得x>y>z。要求:用一个If语句和一个If嵌套实现。

Ifx<yThent=x:x=y:y=t

Ify<zThent=y:y=z:z=tIfx<yThent=x:x=y:y=tEndIf

EndIfIf语句(4-4)2/6/202370几个练习例题示例:已知变量strC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。IfUcase(strC)>="A"AndUcase(strC)<="Z"Then PrintstrC+"是字母字符"ElseIfstrC>="0"AndstrC<="9"Then PrintstrC+"是数字字符"Else PrintstrC+"其他字符"EndIf2/6/202371示例:已知百分制成绩mark,显示对应的五级制成绩哪些正确,哪些错误?√√(返回常见错误)2/6/202372SelectCase语句格式SelectCase变量或表达式 Case表达式列表1 语句块1 Case表达式列表2 语句块2 … [CaseElse

语句块n+1]EndSelect数值型或字符串表达式<表达式列表>:与<变量或表达式>同类型的下面四种形式之一:表达式 例:"A"

一组枚举表达式(用逗号分隔) 例:2,4,6,8

表达式1To表达式2 例:60To100

Is关系运算符表达式 例:Is<602/6/202373几个练习例题SelectCasestrC Case"a"To"z","A"To"Z" PrintstrC+"是字母字符" Case"0"To"9" PrintstrC+"是数字字符" CaseElse PrintstrC+"其他字符"EndSelect示例:已知变量strC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。示例:判断成绩等级。SelectCasescoreCase90To100Print"优"Case80To89Print"良"Case70To79Print"中"Case60To69Print"及格"CaseElsePrint"不及格"EndSelect制作简单的计算器。在三个文本框中分别输入两个操作数和一个运算符。

单击“计算”按钮,根据输入的运算符进行相应计算,并把结果写入第四个文本框。

单击“清除”按钮,清空四个文本框。

单击“退出”按钮,结束应用程序的执行。(单击查看代码)2/6/202374题:已知坐标点(x,y),判断其落在哪个象限内方法一

Ifx>0Andy>0ThenPrint"在第一象限"

ElseIfx<0Andy>0ThenPrint"在第二象限"

ElseIfx<0Andy<0ThenPrint"在第三象限"

ElseIfx>0Andy<0ThenPrint"在第四象限"

EndIf

方法二SelectCasex,yCasex>0Andy>0 Print"在第一象限"Casex<0Andy>0 Print"在第二象限"Casex<0Andy<0 Print"在第三象限"Casex>0Andy<0 Print"在第四象限"EndSelect上面两段代码,哪个能实现,哪个不能实现?√

SelectCase后不能出现多个变量;

Case后不能出现变量及有关运算符。(返回常见错误)2/6/202375条件函数IIf函数

格式:Iif(<条件>,<条件为True时的值>,<条件为False是的值>)例如:求x,y的最大值max=IIf(x>y,x,y)Switch函数

格式:Switch(条件表达式1,条件表达式1为True时的值[,条件表达式2,条件表达式2为True时的值……])例如:学生成绩等级Switch(grade>=90,“优秀”,grade>=80,“良好”,grade>=70,“中等”,grade>=60,“及格”,grade<=60,“不及格”)Choose函数格式:Choose(数字类型变量,值为1的返回值,值为2的返回值……)例如:Op=Choose(Nop,"+","-","×","÷")2/6/202376常见错误在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的EndIf语句结束。多分支选择ElseIf关键字的书写和条件表达式的表示ElseIf不要写成ElseIf;多个条件表达式次序问题,见示例。SelectCase语句的使用SelectCase后不能出现多个变量;Case子句后不能出现变量,见示例。2/6/202377循环结构指对同一程序段执行若干次,被重复执行的语句块成为循环体。For/Next循环Do/Loop循环While/Wend循环2/6/202378For/Next循环计数循环语句,用于控制循环次数预知的循环格式:

For<循环变量>=<初值>to<终值>[Step<步长>]

<语句块>[ExitFor]<语句块>Next[<循环变量>]循环变量赋初值循环变量<=终值语句块语句块循环变量加步长TExitFor·F有无计算1到100的奇数和Dimi%,ss=0Fori=1To100step2s=s+iNexti2/6/202379步长循环次数=注意出了循环,循环控制变量值的问题。允许循环变量在循环体内被赋值,但这样会影响原来的循环控制规律。ExitFor:强制退出循环步长=1可省略Fori=2To13Step3循环执行次数Printi, 输出i的值分别为:Nexti 25811Print“I=“,i 出了循环输出为:I=142/6/202380练习例题求最大最小值问题要求:随机产生10个[100,200]之间的整数输出,并求最大值。如图所示Max=100Fori=1To10x=Int(Rnd*101+100):Printx,

Ifx>MaxThenMax=xNextiPrint"最大值=";Max2/6/202381Do/Loop循环形式1:前测试循环

Do{While|Until}<条件>语句块[ExitDo语句块]Loop形式2:后测试循环Do语句块[ExitDo语句块]Loop{While|Until}<条件>2/6/202382练习例题我国有13亿人口,按人口增长0.8计算,多少年后我国人口超过26亿。分析:解决此问题有两种方法,其一可根据公式:26=13*(1+0.008)n,直接利用标准对数函数求得;其二可利用循环求得,代码如下:x=13:n=0 'x表示当前人口数,n表示年数DoWhilex<26x=x*1.008 '每年增加后的人口数n=n+1 '年数加1LoopPrintn;"年后我国人口达到";x;",超过26亿"2/6/202383循环的嵌套一个循环体内又包含了一个完整的循环结构称为循环的嵌套制作九九乘法表。求水仙花数。提示:一个3位数abc,满足:100*a+10*b+c=a^3+b^3+c^3(单击查看代码)(单击查看代码)2/6/202384注意事项外循环必须完全包含内循环,不能交叉内循环变量与外循环变量不能同名在使用Goto语句时,不能从循环体外转入循环体内多重循环最好按照缩进格式书写Forii=1To10Forjj=1To20… Nextii NextjjForii=1To10Forii=1To20… Nextii NextiiForii=1To10Forjj=1To20… NextjjNextiiForii=1To10…NextiiForii=1To10…Nextii√2/6/202385While/Wend循环格式While<条件><循环体>Wend说明每次执行完循环体后都将执行Wend语句,它将转回到While语句,在判断语句条件是否成立如果条件为Null,则将默认条件值为FalseWend语句不能省略2/6/202386常见错误不循环或死循环的问题主要是循环条件、循环初值、循环终值、循环步长的设置有问题。循环结构中缺少配对的结束语句

For缺少配对的Next循环嵌套时,内外循环交叉累加、连乘时,存放累加、连乘结果的变量赋初值问题在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。2/6/2023872.7数组静态数组动态数组控件数组若我们要求一个班100个学生的平均成绩,然后统计高于平均分的人数。以前怎么做?可以引入数组!(单击查看代码)2/6/202388数组具有相同名字不同下标的变量来表示一组具有相同性质的数据注意数组不是一种数据类型数组是一组相同类型的变量集合数组必须先声明后使用声明数组名、类型、维数和数组大小按声明时数组的大小确定与否静态数组(定长):声明时确定了大小动态数组(变长):声明时未给出大小2/6/202389静态数组声明 Dim数组名(下标1[,下标2…])[As类型]说明

几个下标就表示是几维数组,最多为60维[下界To]上界省略下界为0静态数组的下标必须为常数每一维大小:上界-下界+1数组大小:每一维大小相乘例如:Dimmark(1..105)AsInteger‘一维数组Mark(1)Mark(2)Mark(3)……Mark(104)Mark(105)2/6/202390例如:DimlArray(0to3,0to4)AsLong等价于DimlArray(3,4)AsLong注意下界缺省为0,但是可以重新定义数组的下界

OptionBase1错误的声明,下标是变量n=InputBox(“请输入n”):Dimmark(n)AsSingle分清楚数组的声明和引用lArray(0,0)lArray(0,1)lArray(0,2)lArray(0,3)lArray(0,4)lArray(1,0)lArray(1,1)lArray(1,2)lArray(1,3)lArray(1,4)lArray(2,0)lArray(2,1)lArray(2,2)lArray(2,3)lArray(2,4)lArray(3,0)lArray(3,1)lArray(3,2)lArray(3,3)lArray(3,4)2/6/202391几个练习例题示例:随机产生20个0到100的整数,按每行5个元素输出。示例:冒泡法排序。选择法排序。示例:交换数组中的各元素并打印交换后的数组元素。要求:数组大小为10,整型,数组第一个元素与最后一个元素交换,第二个元素与倒数第二个交换……依次类推。(单击查看代码)(单击查看代码)(查看代码)2/6/202392动态数组声明时没有给出数组的大小,即省略了括号中的下标。当要使用它时,随时用ReDim语句重新指出数组的大小格式:

ReDim数组名(下标1,下标2,……)[As类型]例如:

SubForm_Click() Dimx()AsSingle n=Inputbox(“输入n”) ReDimx(n)EndSub示例:求若干个学生的平均分。(单击查看代码)2/6/202393说明

Dim、Private、Public变量声明语句是说明性语句,可出现在过程内或通用声明段;ReDim语句是执行语句,只能出现在过程内。在过程中可多次使用ReDim来改变数组的大小和维数。使用ReDim语句会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据。使用Preserve只能改变最后一维的大小,前面几维大小不能改变。ReDim中的下标可以是常量,也可以是有了确定值的变量。

静态数组在程序编译时分配存储单元,动态数组在运行时分配存储单元。2/6/202394数组的操作数组元素赋值用循环

Fori=1to105 mark(i)=Int(Rnd*101) Nexti用Array函数

DimibAsVariant ib=Array("abc","def","67") Fori=0ToUBound(ib) Picture1.Printib(i);""; Nexti数组直接对数组赋值Dima()AsVariant,b()AsVarianta=Array(1,2,3,4,5)ReDimb(UBound(a))b=aFori=LBound(ib)ToUBound(ib)利用Array对数组各元素赋值,声明的数组是可调数组或连圆括号都可省,并且其类型只能是Variant。其下标下界由OptionBase决定,且可由LBound函数获得;上界由UBound函数获得。2/6/202395控件数组定义由一组相同类型的控件组成特点共用一个控件名,即Name属性值一致具有相同的属性建立时系统给每个控件赋值唯一的索引号(Index)控件共享同样的事件过程,通过传递的下标值区分控件数组中的各个控件元素例如SubCmdOperation_Click(IndexAsInteger) SelectCaseIndex Case0 ‘选择加号 ……‘进行两个数的加法运算 Case1 ‘选择减号 …… ‘进行两个数的减法运算 EndSelectEndSub2/6/202396控件数组的建立和使用(2-1)在设计时建立在窗体上画出某控件,可进行控件名的属性设置,这是建立的第一个数组元素选中该控件,进行“复制”和“粘贴”操作,系统会提示:“已经有一个控件为’[控件名]’。创建一个控件数组吗?”单击“是”按钮后,就建立了一个控件数组。进行若干次“粘贴”操作,就建立了相应个数的控件数组元素进行事件过程的编程。第一个元素修改数组的第一个元素名称第二个元素数组的第二个元素名称和Index属性2/6/202397练习例题利用控件数组的方法建立四个命令按钮,当单击某个命令按钮,显示不同的图形或结束操作。提示:界面上四个命令按钮用一个按钮数组实现。代码处理时,由Index的不同取值,执行不同的操作。(单击查看代码)控件名IndexCaptionPicshape空白空白CmdOperation0直线CmdOperation1矩形CmdOperation2圆CmdOperation3结束2/6/202398控件数组的建立和使用(2-2)运行时添加控件数组在窗体上画出某控件,设置该控件的Index值为0,表示该控件为控件数组,建立第一个元素在编程时通过Load方法添加其余的若干个元素,每个新添加的控件数组元素通过Left和Top属性,确定其在窗体的位置,并将Visible属性设置为True;也可以使用Unload方法删除某个添加的元素2/6/202399几个练习例题建立如图所示的计算器,进行数值的输入和四则运算。数字按钮控件数组(运行时创建)运算符按钮控件数组(设计时创建)

数值的数制转换数组(设计时创建)(单击查看代码)Fori=1To9

Loadnumber(i)number(i).Top=100number(i).Left=100number(i).Caption=inumber(i).Visible=TrueNexti2/6/2023100使用范围分类统计

分类统计是将一批数据中按分类的条件统计每一类中包含的个数。例如,将学生成绩按优、良、中、及格、不及格五类,统计各类的人数。这类问题一般要掌握分类条件表达式的书写和各类中计数器变量的使用。排序:冒泡法、选择法、插入法等学生作品示例:输入一串字符,统计各字母出现的次数(不区分字母大小写),并显示统计结果。(查看代码)(演示)2/6/2023101常见错误静态数组声明下标出现变量

n=InputBox("输入数组的上界") Dima(1Ton)AsInteger数组下标越界引用的下标比数组声明时的下标范围大或小。数组维数错数组声明时的维数与引用数组元素时的维数不一致。Dima(3,5)AsLonga(i)=10获得数组的上界(UBound)、下界(LBound)2/6/20231022.8过程过程是用来执行一个特定任务的一段程序代码分类一系统定义内部函数过程事件过程用户自定义分类二(由关键字区分)以Sub保留字开始的子过程以Function保留字开始的函数过程以Property保留字开始的属性过程以Event保留字开始的事件过程2/6/2023103Function过程示例:已知多边形各条边的长度,要计算多边形的面积。分析:计算多边形面积,可将多边形分解成若干个三角形。计算三角形面积的公式为:

xyz定义函数过程area:PublicFunctionarea(x!,y!,z!)AsSingleDimc!c=1/2*(x+y+z)area=Sqr(c*(c-x)*(c-y)*(c-z))EndFunction调用函数过程:Subcommand1_click()……输入若干个三角形边长S=area(a,b,c)+area(c,d,e)S=S+area(e,f,g)PrintSEndSub2/6/2023104Function过程的定义方法一:利用“工具”菜单—”添加过程”方法二:利用代码窗口直接定义格式:[Public|Private][Static]Function函数过程名([参数列表])[As类型] 局部变量或常数定义 语句块 函数名=返回值函数过程体 [ExitFunction] 语句块 函数名=返回值EndFunction参数列表::[ByVal]变量名[()][As类型]ExitFunction:退出函数函数名=返回值:在函数体内至少对函数名赋值一次2/6/2023105Function过程的调用函数过程的调用同标准函数形式函数过程名([参数列表])Call函数过程名[(参数列表)]函数过程名[参数列表]参数列表:实参或实元,必须与形参个数相同,位置与类型一一对应2/6/2023106练习例题示例:定义MyReplace$(S$,oldS$,newS$)函数过程,具有Replace函数功能(单击查看代码)PrivateSubCommand1_Click()s=“VB程序设计教程5.0版”PrintMyReplace(s,"5.0","6.0")EndSubFunctionMyReplace$(s$,OldS$,NewS$)Dimi%,lenOldS%lenOldS=Len(OldS) i=InStr(s,OldS) DoWhilei>0 s=Left(s,i-1)+NewS+Mid(s,i+lenOldS)i=InStr(s,OldS) LoopMyReplace=s EndFunctionEndSubPrivateSubCommand1_Click()s=“VB程序设计教程5.0版”PrintMyReplace(s,"5.0","6.0")S”5.0””6.0”MyReplace$(s$,OldS$,NewS$)程序运行流程

2/6/2023107子过程函数过程的不足不是为了获得某个函数值,而是为了某种功能的处理,例如文字移动动画要获得多个结果(查看代码)示例:定义MyReplace$(S$,oldS$,newS$)函数过程,具有Replace函数功能(单击查看代码)定义子过程swap:PublicSubSwap(x,y) Dimt t=x:x=y:y=tEndSub调用子过程:a=10:b=20Print"两个数交换前:a=";a,"b=";b

Swapa,bPrint"两个数交换后:a=";a,"b=";b2/6/2023

温馨提示

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

评论

0/150

提交评论