



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
讲解:课本 P77(实践体验)的求一元二次方程根的程序(注意:对象属性名如何选择?)第43讲 过程和自定义函数VB应用程序是按模块化的方式组成的,一个程序模块是程序的一部分,每个模块负责解决整个应用问题的一部分任务。程序模块分为过程和函数两种。过程强调的是动作,而函数强调的是值的计算。1、过程可以将程序划分成一个个较小的逻辑单元,每个这样的逻辑单元可以构成一个过程。过程中的代码可以被重复地调用,从而避免了不必要的代码的重复编制,减少了编程的工作量。过程可以分成两类:一类是事件处理过程,另一类是通用过程。事件处理过程描述的是,当对象 X上发生某个事件Y时,需要执行一段程序来响应这个事件; 某个事件Y(如:Click点击) 通用过程开始返回(函数返回值送到调用点)对象 X_Y事件Private Sub Command1_Click().调用一个通用过程(调用点).End Sub而通用过程则是一个独立的程序段,不同的事件可能需要使用同一个程序段时,可以把这个程序段单独地建立成一个通用过程,供其他事件处理过程或其他通用过程调用。在本书中,我们只关心事件处理过程。2函数 实际上,函数也是一个程序模块,与过程相比,不同之处是函数执行完成后,函数的计算结果(称为“函数返回值”)被送到函数的调用点(即调用该函数的程序位置)上,供程序的后继部分继续进行处理,而过程是没有返回值的。一、事件处理过程 P83 可以按下面的方式构造一个事件处理过程:Sub 事件处理过程名(参数表) 语句块End Sub这里,事件处理过程名必须符合下面的规则: 对象名_事件的标准名 例如,在VB编程窗口中,建立一个“命令”对象如下:Private Sub Command_Click() 语句块End Sub则:对象名_事件的标准名是Command_Click,而Click表示鼠标点击执行语句块; X_Y又例如:设Textl是一个文本框对象,一般我们用于输入、输出数据,但双击Textl文本框对象,进入编程状态如下:Private Sub Text1_Change()语句块End SubChange是改变、变化的意思,用于输入、输出数据的改变,如果要写一个事件处理过程,处理用户单击该文本框这样的事件,则该事件处理过程的名称必须是: Textl_Click (演示:在程序代码窗口顶部栏有对象名_事件框,可改选对象名和事件标准名,如:把Change改选为Click,可鼠标点击执行语句块) 表441 VB的一些常用对象上的常见事件的标准名如下: 如果应用程序必须关心对象X上发生的事件Y,就应编写一个事件处理过程X_Y,按照设计好的算法来处理这个事件;否则,这样的事件将由VB按照标准的方式自动地进行处理。例如,用鼠标拖动滚动条,列表框就会显示文本的不同部分。本章以后的大部分应用程序实例中,我们将把应用问题的计算过程,放在命令按钮上发生单击鼠标事件的事件处理过程中。这是因为,当用户在某些文本框内输入了必要的原始数据之后,应用程序的计算才能进行。数据输入是否完成,必须要由用户来通知应用程序,常规的做法是在应用程序的窗体上,安排一个字面为“计算”或“开始”的命令按钮,一旦用户的数据输入完成后,就可用鼠标单击该命令按钮,它意味着这个事件的发生应用程序已经具备了开始计算的必要条件,能够启动执行整个计算过程了。例1:上节课的求计算一元二次方程ax2+bx+c=O的实数根的程序,程序界面要求见课本P77,程序清单见:一元二次方程.FRM,其中程序的输出部分代码为:If k = 0 Then Label6.Caption = 无解! 字符串无解!显示在标签6的属性名Caption上; Text4.Text = : Text5.Text = Text4.BackColor = vbBlue: Text5.BackColor = &HFF0000 蓝色的16进制码 Else 底色属性名:BackColor Label6.Caption = k 系统符号常量(蓝色)vbBlue= &HFF0000 (蓝色的16进制码) Text4.Text = X1 Text5.Text = X2 End If 演示:本应用程序窗体中使用对象属性值的设置; 另外,我给大家提一下全局变量的概念,例如:有下面是课本P87的应用程序的代码结构如下: #01 Dim d(1 To 500) As Double 定义数组变量d(1 To 500)供下面3个子程序公用; #02 Dim nc As Integer 定义简单变量nc供下面3个子程序公用; 这样的d(1 To 500)和 nc称为全局变量 #03 Sub Command1_Click() #04 Dim sum As Double sum、i是子程序Command1_Click()的局部变量; #05 Dim i As Integer . #15 End Sub #16 Sub Textl_Cliek() Dim sum As Integer 这里的sum因为是局部变量,和上面子程序的sum可以是无关的; #19 nc=10 如果是全局变量nc,在子程序Textl_Cliek()中就不要再定义了; #20 End Sub #21 Sub Text1_KeyPressf(Key Ascii As Integer) #24 nc=nc+l 这里的全局变量nc在各个子程序中是同一个变量; #25 d(nc)=Val(TextlText) #31 End Sub d(1 To 500) 由500个双精度实数类型的元素构成的数组变量,用来存储用户的输入数据。 nc计数器,用来记录用户已经输入的数据的个数。 这两个变量是在事件处理过程的外部说明的,这样的变量被称为“全局的”(Global)变量,在所有的事件处理过程中,都可以使用这些全局变量。 二、函数 P88-89 虽然VB提供了常用的标准函数P71,可以使用这些标准函数来实现某些数学计算或数据类型的转换,但许多应用程序常常需要自己来定义函数,以实现某种特定的计算。 可以按下面的方式自己来构造(规定)一个函数: Function 函数名(参数表) As 数据类型名 语句块 End Function 这里,函数名是程序设计者为函数指定的名称。参数表是对于函数需要的原始数据的类型一一地进行说明。As后的类型名,是说明函数的计算结果,即函数返回值的数据类型,函数计算完成后,VB自动地把函数返回值送到函数的调用点上,这样,程序的其他部分能对这个结果作进一步的处理,最终完成计算任务。 例20设计一个函数Leap,判断y年是否是闰年,若是,就返回1,否则,就返回0。 我们先构造一个函数Leap(Y):判断y年是否是闰年方法见课本P74的问题和练习第3题;Function Leap(y AS Integer) As Integer If y mod 100=0 Then mod是求余数运算符,例:8 mod 5=3,见课本P72表4.2.1 If y mod 400=0 Then Leap=1 Else Leap=O Else If y mod 4=0 Then Leap=1 Else Leap=0 EndIfEnd FunctionEnd Function之前的语句块,描述了函数的计算过程,在这些语句中,至少要有一个形如 函数名=表达式 例如:上函数模块中的Leap=1、Leap=0的语句,这样,表达式的计算结果才能作为函数的返回值,被VB送到函数的调用点上。 把“判断y年是否是闰年”这样一个计算过程从整个应用程序中分离出来,成为一个独立的模块(模块可以是一个函数,也可以是一个过程),这是一种模块化的程序设计方法。使用这种方法的好处是: (1)在设计(构造)这个模块时,需要处理的计算任务比起整个应用程序来相对地要简单些,例如,在这里需要设计的计算过程仅仅是按一定的规则判断y年是否是闰年,并按规定返回O或1这两个结果之一,而不需要考虑数据y是怎么获得的,y年是闰年要进行怎样的处理,y年不是闰年又要进行怎样的处理等问题,这些是应用程序其他部分的任务。(2)构造了一个程序模块后,在程序的各个部分中可以使用这个模块。例如:下面我们要要编制一个完整的程序,输入一个年份y(设y=1900),输出该年2月份的天数: 分析如下: 28 y不是闰年; 2月份的天数:D2= 29 y是闰年; 可先设D2=28 ,则: IF y是闰年 then D2=D2+1 0 y不是闰年;可自定义一个函数:Leap(y)= 1 y是闰年; 则:D2=D2+ Leap(2012) 上面我们已经构造一个函数Leap(Y)因此,输出该年2月份的天数的子程序如下:Sub Command1_Click()Dim y As IntegerDim n As Stringn = InputBox(请输入年份:)y = Val(n)d2 = 28d2 = d2 + Leap(y) 调用函数Leap(y),并把的返回值1或0,被VB送到函数的调用点Text1.Text = d2End Sub演示:把上子程序模块和构造的函数Leap(Y) 程序模块放到VB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 62386-351:2025 EN-FR Digital addressable lighting interface – Part 351: Particular requirements – Control devices – Luminaire-mounted control devices
- 【正版授权】 IEC 63522-54:2025 EN Electrical relays - Tests and measurements - Part 54: Critical DC load current test
- JJF(石化)071-2023热封仪校准规范
- 2025年部编人教版小学二年级数学上册全册教案
- 人教版八年级英语上册Unit2标准检测卷(含答案)
- 新解读《GB-T 18507-2014城镇土地分等定级规程》
- 重庆地道果酒知识培训课件
- 重大危险源监督管理
- 老年人的情绪与情感课件
- 《创新创业概论》课程简介与教学大纲
- 2023-2025年中考语文试题分类汇编:记叙文阅读(辽宁专用)解析版
- 学校食堂从业人员食品安全知识培训考试试题(含答案)
- 电影艺术概述-设计艺术-人文社科-专业资料
- 2025年教科版新教材科学三年级上册全册教案设计(含教学计划)
- 医院药品采购与质量控制规范
- 支部纪检委员课件
- 从+“心”+出发遇见更好的自己-开学第一课暨心理健康教育主题班会-2025-2026学年高中主题班会
- 2025版仓储库房租赁合同范本(含合同生效条件)
- 2025年人伤保险理赔试题及答案
- 2025年全国招标采购专业技能大赛(央企组)历年参考题库含答案详解(5卷)
- 医院药学带教课件
评论
0/150
提交评论