vb6.0中如何用按钮控制vb计时器倒计时,显示同学们好字样,灰框变红,字号36

HTML代码中,如何使按钮变成不可按(灰色状态),然后怎样解除这种状态?_百度知道
HTML代码中,如何使按钮变成不可按(灰色状态),然后怎样解除这种状态?
我有更好的答案
&button id=&myButton& onclick=&alert(1);& disabled=&true&&111&/button&这样这个button就不可以用了。 然后你要恢复就可以:document.getElementById(&myButton&).disabled =它就又可以用了
采纳率:69%
&button id=&btn&
disabled=&disabled&&按钮&/button&按钮不可用
为您推荐:
您可能关注的内容
html代码的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。当前位置: >>
VB资料之家 计算机二级考试一扫空 (36)
第一讲:Visual Basic 概述重点: 1、掌握面向对象的程序设计的概念:对象、方法、属性与事件2、事件驱动过程的程序设计原理 3、介绍 VB 集成开发环境 4、VB 开发环境的基本操作1.1Visual Basic 简介?具有面向对象的可视化设计工具?事件驱动的编程机制 ?提供了易学易用的应用程序集成开发环境 ?结构化的程序设计语言 ?支持多种数据库的访问 ?支持 DDE、DLL、OLE 技术 ?完备的 Help 联机帮助功能 1.2 面向对象的程序设计方法基础 2. 对象及对象类:动作体的逻辑模型,称为“对象” 3. 属性: 属性是用来描述对象的特性。 4. 方法: 方法指对象可以进行的动作或行为。 VB 对象具有属性、方法和事件。属性是描述对象的数据;方法告 诉对象应做的事情;事件是对象所产生的事情,事件发生时可以编写代 码进行处理。 VB 的窗体和控件是具有自己的属性、方法和事件的对象。可以把 属性看作一个对象的性质,把方法看作对象的动作,把事件看作对象的 响应。 日常生活中的对象,如小孩玩的气球同样具有属性、方法和事件。 气球的属性包括可以看到的一些性质,如它的直径和颜色。其它一些属 性描述气球的状态(充气的或未充气的)或不可见的性质,如它的寿命。 通过定义,所有气球都具有这些属性;这些属性也会因气球的不同而不 同。 气球还具有本身所固有的方法和动作。如:充气方法(用氦气充满 气球的动作) ,放气方法(排出气球中的气体)和上升方法(放手让气 球飞走) 。所有的气球都具备这些能力。 1. 3 基于 Windows 环境下的应用程序的工作方式――事件驱动 在传统的或“过程化”的应用程序中,应用程序自身控制了执行哪 一部分代码和按何种顺序执行代码。从第一行代码执行程序并按应用程 序中预定的路径执行,必要时调用过程。 在事件驱动的应用程序中,代码不是按照预定的路径执行,而是在 响应不同的事件时执行不同的代码片段。事件可以由用户操作触发、也 可以由来自操作系统或其它应用程序的消息触发、甚至由应用程序本身 的消息触发。这些事件的顺序决定了代码执行的顺序,因此应用程序每 次运行时所经过的代码的路径都是不同的。 因为事件的顺序是无法预测的,所以在代码中必须对执行时的“各 种状态”作一定的假设。当作出某些假设时(例如,假设在运行来处理 某一输入字段的过程之前,该输入字段必须包含确定的值) ,应该组织 好应用程序的结构,以确保该假设始终有效(例如,在输入字段中有值 之前禁止使用启动该处理过程的命令按钮) 。 在执行中代码也可以触发事件。例如,在程序中改变文本框中的文 本将引发文本框的 Change 事件。如果 Change 事件中包含有代码,则 将导致该代码的执行。如果原来假设该事件仅能由用户的交互操作所触 发,则可能会产生意料之外的结果。正因为这一原因,所以在设计应用 程序时理解事件驱动模型并牢记在心是非常重要的。 在 VB 中事件的调用形式是: Private Sub 对 象 名 _事 件 名 (事件内容) End Sub1.4 Visual Basic 的集成开发环境 VB 集成开发环境 (IDE――Integrated Developing Environment ) 由 以下元素组成:1. 标 题 栏用于显示正在开发或调试的工程名和系统的工作状态(设计态、运 行态、中止态) 。2. 菜 单 栏 用于显示所使用的 Visual Basic 命令。VB6.0 标准菜单包括: 3. 工 具 栏 在编程环境下用于快速访问常用命令。缺省情况下,启动 VB 后显示“标准” 工具栏,附加的编辑、窗体设计和调试的工具 栏可以从“视图”菜单上的“工具栏” 命令中移进或移出。 4. 窗 体 设 计 器 用来设计应用程序的界面。启动 VB 后,窗体设计器中自动出现一个名为 Form1 的空白窗体,可以在该窗体中添加控件、图形和图片等来创建所希望的外观,窗体的 外观设计好后,从菜单中选择“文件”→“保存窗体”→在保存对话框中给出合适的 文件名(注意扩展名) ,并选择所需的保存位置→确定。需要再设计另一个窗体时,单 击工具栏上的“添加窗体”按钮即可。 5. 控 件 ( 工 具 ) 箱 由一组控件按钮组成,用于设计时在窗体中放置控件。除了缺省的工具箱布局之 外,还可以通过从上下文菜单中选定“添加选项卡”并在结果选项卡中添加控件来创 建自定义布局。6. 弹 出 式 ( 上 下 文 ) 菜 单 在要使用的对象上单击鼠标右键即可打开快捷菜单, 其上会出现与当前对象相关 的经常执行的操作,以加快操作速度。 7. 工 程 管 理 器 窗 口 用于浏览工程中所包含的窗体和模块,还可以从中查看代码、查看对象。 8. 属 性 窗 口 是 VB 中一个比较复杂的窗口,其中列出了对选定窗体和控件的属性设置值。VB 中正是通过改变属性来改变对象的特征,如大小、标题或颜色。 9. 对 象 浏 览 器 列出工程中有效的对象,并提供在编码中漫游的快速方法。可以使用“对象浏览 器”浏览在 VB 中的对象和其它应用程序,查看对那些对象有效的方法和属性,并将 代码过程粘贴进自己的应用程序。 10. 对象浏览器 右击窗体中的对象、从工程管理器中点“查看代码”按钮。 1 1. 窗 体 布 局 窗 口 Form Layout window 允许使用表示屏幕的小图象来布置应用程序中各窗体的位 置。 1 2. 立 即 、 本 地 和 监 视 窗 口 这些附加窗口是为调试应用程序提供的,它们只在 IDE 之中运行应用程序时才有效。 1 .5 创 建 V B 应 用 程 序 的 一 般 步 骤 一个 VB 程序也称为一个工程,由窗体、标准模块、自定义控件及应用所需的环境设 置组成。开发步骤一般如下: 1. 创建程序的用户界面 2. 设置界面上各个对象的属性 3. 编写对象响应事件的程序代码 4. 保存工程 5. 测试应用程序,排除错误 6. 创建可执行程序 ?硬件环境:486 以上处理器、16MB 以上内存、50MB 以上的硬盘空间、CD-ROM 驱 动器、鼠标等 ?软件环境:Windows95 或 indowsNT3.51 以上版本 ?初次安装: 1)启动 Windows95 2)插入具有 VB6.0 系统的光盘 3)运行 VB6.0 安装程序 Setup.exe 4)选择D典型安装‖或D自定义安装‖或D最小安装‖ ?添加或删除 VB6.0 部件: 1)插入具有 VB6.0 系统的光盘 2)运行D开始/设置/控制面板‖ 3)双击控制面板中的D添加/删除程序‖图标 4)选择其中的DVisual Basic 6.0‖选项 ?启动 1.桌面:开始/程序/Visual Basic 6.0 2.建立快捷方式,双击图标 ?退出 1.选择文件菜单下的退出命令 2.单击窗口关闭按钮 举例: 1 启动 VB,开始新工程 2 创建程序的用户截面 3 加入程序代码 4 保存工程文件 5 运行和调试应用程序,检查并排除程序中的错误 6 生成可执行程序 7 打印窗体和代码 第二讲 常用控件与界面设计重点: 1、掌握窗体常用的属性、方法与事件,重点掌握窗体的 Print 方法的使用 2、掌握标签、文本框、命令按钮等控件的常用属性、方法、事件2.1 创建窗体 补充内容:调整窗体布局 生成可执行文件 2.2 VB 的常用控件(P19) 概述: 控体是用来进行用户界面设计的可视化部件。 常用的 VB6 控件一览表 P20 常用控件:P21 (1) 文本框(TextBox) :用于接收用户在框内输入 的信息或显示由程序提供的信息。 文本框在工具箱中的图标 P25;在窗体中的形式 属性: 名称:文本框名称。命名规则同窗体名。 (通常以“Txt”作为前缀。 ) Text :文本属性。该属性的值为用户从文本框中输入的内容。 PasswordChar:口令属性。设置是否可以看到用户从文本框中输入的文本内容。 取值:空字符串: (默认值) :可以看到输入的字符。 某一字符:用户每输入一个字符,文本框内就出现一个该字符。 MaxLength : 最大长度属性。 设置文本框的 Text 属性中所能放入的字符总个数。 取值:0: (默认值) 。 1~32 KB。 MultiLine :多行属性。设置用户是否可在文本框内输入多行文本。 取值: True:可多行输入。 False: (默认值)只能单行输入。 Alignment:对齐属性。设置文本框内的文本内容的对齐方式。 取值:0: (默认值)靠左对齐。 1:靠右对齐。2:居中对齐。说明:本属性只在 MultiLine 为 True 时有效。 TabStop:[Tab]键属性。设置是否可用[Tab]键来移动焦点到另一个对象上。 取值:True: (默认值)可以。 False:不可以。 其它属性类似窗体。 方法: Refresh :刷新。 SetFocus :设置焦点。通过本方法,可以使光标指向指定的文本框。 事件: Change :当文本框的内容发生变化时,就引发本事件。 LostFocus:当光标离开文本框时,引发本事件。 Keypress:当用户按下或松开键盘上某个按键时,发生本事件。 (2)标签: (Label) 主要用于在窗体上增加文字说明。 标签在工具箱中的图标 P25;在窗体中的形式 属性: 名称:标签名称。 (通常以“Lbl”作为前缀。 ) Caption :标题属性。本属性的值为显示在标签上的内容。 AutoSize :大小自适应属性。即标签的大小是否随着标题内容的多少而自动变 化。 取值:True :是。 False : (默认值)否。 FontName :字体名称。设置在标签内显示的文本的字体名称。 方法: Refresh :刷新。 Move :移动。 事件: Click :单击事件。 DblClick:双击事件。 (3) 命令按钮: (commandbutton) :用户用鼠标单击命令按钮,表示要执行某项功 能。 属性: 名称: (通常以“Cmd”作为前缀。 ) Caption : 标题 。其值就是在命令按钮上显示的文本。 Default :设定此命令按钮是否为窗体的默认按钮。 取值 true :在窗体启动(Active)后,按 Enter 键马上就会执行的命令 按钮。 (同一窗体中只能有一个命令按钮的此项属性值为 true ) False :否。 Enabled :设定命令按钮是否可用。 取值 true : (默认值) :可用。 false :不可用。 (命令按钮呈灰色) 事件: click : 单击事件 方法: SetFocus : 命令按钮经过 SetFocus 方法后,将取得焦点。 (用户此时按回车键 将会执行此命令按钮。 ) (4)复选框: (checkbox) :用来设定程序的执行状态。 属性: 名称: (通常以“Chk”作为前缀。 ) caption: 标题,显示在复选框的右方,指明此复选框所代表的功能。 Value :表示复选框在执行时的三种状态。 取值: 0: 不复选,执行时无勾。 1: 复选,执行时有勾。 2: 灰色,表示用户不能修改这个设定值,只能看到它目前状态。 事件: click :单击事件。 方法: Move : Refresh : (5)选项按钮: (optionbutton)用来设定程序的执行状态。 属性: 名称: (通常以“Opt”作为前缀。 ) caption:标题 alignment : 设置标题文本的对齐方式。 取值: 0: (默认值)靠左对齐 1:靠右对齐 2:靠中对齐 value : 其值决定该选项按钮是否被选中。 取值:true : 表示此选项按钮被选中。 False : 表示此选项按钮没选中。 说明:一个窗体或一个框架内的选项按钮只能有一个被选中, (不同框架内的选 项按钮互不干扰)若用户不设定哪一个选项按钮的值为 true ,则系统指定第一个选 项按钮的 value 值为 true 。 事件: click :单击。 方法: Move: Refresh (6) 框架 :(frame)可以用框架控件将其它各自独立的控件(一般指复选框、选项 按钮等)组合在一组中。如实验指导书 P13、P16。 属性: 名称 caption top left width height font forecolor 等等 事件:click dblclick 等等 说明:1、在使用框架控件将其它控件分组时必须先绘制框架控件,后绘制其中 的控件。 2、在一个框架内的控件可以进行整体的激活、屏蔽、移动等等。 3、在同一个窗体中的多个选项按钮,只有一个可以被选中,但在窗体中 可以用框架将选项按钮分类, 在同一框架内的多个选项按钮中只有一个可以被选 取。不同框架内的选项按钮彼此互不干扰。 4、要将控件画在框架之中,不能双击控件,因为那样将使控件重叠在框 架的上面,必须单击工具图标,然后在框架内拖动后释放,这样的所画的控件在 框架之中。 第三讲 常用控件与界面设计重点: 1、掌握列表框、组合框、选项按钮、复选按钮、滚动条等控件的常用的属性、方法、事件 2、掌握菜单的设计(7)列表框 ( ListBox):用于列出可供用户选择的项目列表。用户可以从中选择一 个或多个项目。 属性: 名称: (通常以“List”作为前缀。 ) List:列表属性。用于保存列表的内容。 List 实际上是一个一维数组,数组中元素的值,就是在执行时看到的列表 项(item)一 维 数 组 : List 中 有 5 个 元 素 , List(0),List(1) List(2) ,List(3) ,List(4) 列表项文本 List (0)=68 List (1)=78 List (2)=88 List (3)=80 List (4)=76 数组名:List 列表项序号: 0,1,2,3,4, (从 0 开始) 列表项文本(数组元素值)分别为:68 78 88 80 76 Listcount:列表框内所有选项的总数,也就是 List()数组元素的总个数。 ListIndex:用户最后单击的列表项在 List() 数组中的编号顺序。 (无选中时其值为-1) Text: 列表项的正文。其值为最后选中的列表项的文本。 请记住如下关系: [对象名称.]List(ListIndex)=Text Columns:列表框显示形式。设定 Listbox 的列表项若超过显示范围时,其卷动方式 使用垂直滚动条或是水平滚动条。 取值:0: (默认值)使用垂直滚动条。逐行显示列表项,可能有垂直滚动条。 1~n :使用水平滚动条。此时列表框内一次可显示的列数(Column)即为 n 值。 MultiSelect:设定是否允许用户多重选取对象的列表项 取值: 0:不能多重选取。 (默认值) 1:简易多重选取。 (用鼠标或空格键来选取,一次一个) 2:高级多重选取。可用[shift] 或 [ctrl] 来选取。 (类似文件选 取) Selected:设定列表项是否被选取的状态。它是一个与 List 大小相同的数组。 其中各元素的取值: True :被选取。 False:不被选取。 (默认值) Sorted:排序属性。设定列表项是否要照 ASCII 代码排序。 (字母顺序) 取值: True :是(不区分大小写) False:否。 (默认值) 方法: (P28) AddItem:添加列表项。 格式:[对象名称.]AddItem &列表项文本&[,插入位置序号] 说明:1、若不指定位置,则插入到列表项末尾。 2、新列表项插入后,原来位置及其后的列表项顺序下移。 Clear:删除列表所有项目。 RemoveItem:删除列表项。 格式: [对象名称. ]RemoveItem 删除项序号 事件: Click :单击事件。 Dblick:双击事件(使用较少) 应掌握: 1.如何添加或删除列表框中的列表项? 方法一:在设计态:定制 List 属性。 (向列表中添加列表时,按[ctrl]+[Enter] 换行。 )方法二:在程序代码中:用 AddItem,RemoveItem 等方法进行。2.如何知道目前用户所选取的列表项和目前列表框中的列表项数目? 用户目前所选的列表项:Text 的值。 目前列表框中的列表项数目:ListCount 的值。 (8)组合框(comboBox) :将文本框和列表框结合在一起,在列表框中所选项目的文 本会自动填入文本框。 (与列表框相比,组合框一次只能选取一个列表项) 工具箱中的图标 P25;在窗体中的形式 属性: 同 Listbox 有:List, ListCount,ListIndex,Text,Sorted 等等。 Style :外观属性。设置组合框的类型和功能。 取值: (实验指导书 P40) 0: (默认值)系统将创建一个带有下拉式列表框的组合框。 称为组合下拉式的组合框。它的下拉式窗体不是一直显示的。 (如 word 中字体大小选择框) , 此状态下用户可将所内容直接输入到文本框中。 1:系统创建一个由文本框和列表框直接结合在一起的简单组合框。 称为组合式的组合框。它的下拉式窗体是一直显示的。 如:word 中字体菜单对话框中的字体、字号对话内容。 2:系统创建一个没有文本框的下拉式列表框。单击列表框右侧的按钮, 文本框才会显示出来。 称为单纯下拉式的组合框。 此状态下用户不可在文本框中输入,只能在列表中选择。且下拉式窗体也不 是一直显示的。 Text:文本属性。其取值为用户从列表框中选定的文本内容或直接输入文本框中 的内容。 事件:对不同类型的组合框,响应的事件是不相同的。 对于0,2类型的组合框:单击事件。 对于 1 类型的组合框:双击事件。 带有文本框的0,1组合框:在编辑文本时可引发 Change 事件。 说明:1、用户若只需要使用单选的列表框,则可用组合框来代替。 2、如何添加或删除组合框中的列表项?(方法:同列表框) 3、如何知道用户目前所选取或输入的列表项是什么? 由于组合框不允许多重选取,所以,Text 属性值为内容;Listindex 属性 值为序号。 方法: 同列表框。 图像: (image): 主要用于图像的显示、放大、缩小等静态显示图像场合。 图像框中不能容纳其他控件、 也不能绘制图形和显示文本。 而图片控件框中可以。 图像在工具箱中的图标 P25;在窗体中的形式 属性: 名称: visible :设置此对象在执行时是否看得见。 取值:True : (默认值)看得见。 False :隐藏。 enabled :可用否。 picture : 设定图像框中代表的图片名称。 其值在设定时的格式为: 盘符\ 路径\图片文件名(.ico 图标文件 .bmp 位图文件) stretch : 用来决定图像控件的大小是否要随着所载入图片的大小而变化。 取值: true : 随图片的大小而变化。 False : (默认值) 不随图片的大小而变化。 事件: 类似窗体。 方法: Move Refresh (10)图片: (picturebox): 不仅可以装入图像,还可以在它上面绘制各种图形和 显示正文、放置控件(类似框架控件) 。 图片在工具箱中的图标 P25;在窗体中的形式 水平滚动条(horizontal scroll bar)、垂直滚动条(vertical scroll bar): 滚动条: 用来附加在那些不能自动支持滚动的应用程序或控件中水平滚动或垂直滚动 查阅大量信息。一般出现在文本框 、列表框右边;用来调整数据或选择输入。 如 ( word 中字体、段落对话框中) 滚动条在工具箱中的图标 P25;在窗体中的形式 属性: (实验指导书 P18) 名称: (通常以“Hsb”“Vsb”作为前缀。 、 ) Max / Min : 定义了 Value 属性值所能出现的最大值和最小值。 说明:1、一开始使用滚动条时,Max 为 32768,Min 为 0 。 2、水平滚动条位于最左边时、垂直滚动条位于最上边时为 M水平 滚动条位于最右边时、垂直滚动条位于最下边时为 Max 。 Value : 滚动条目前所在位置所对应的数值。 (也可在代码中设定。 ) LargeChange : 当用户在滚动块的上方、下方(左方、右方)单击时 Value 所增 加的值。默认值为 1。 SmallChang : 当用户在滚动条两端的箭头按钮上单击时 Value 所增加的值。默 认值为 1。 事件: Change : 在滚动块移动后(即 Value 值改变时)发生。 例如,可用一个滚动条的 Change 事件过程更新一个 TextBox 控件中滚动条的 Value 属性的设置。或者可以利用 Change 事件过程在一个工作区里显示数据和公 式,在另一个区域里显示结果。 Scroll : 在拖动滚动块时发生。单击滚动箭头或滚动条时不发生。 方法: Move : 用以移动滚动条。 Refresh : 强制全部重绘一个滚动条。 SetFocus : 设置焦点。将焦点移至指定的滚动条上。 时间:(timer) (计时器) :用来实现与时间有关的功能。 时间控件在工具箱中的图标 P25;在窗体中的形式 属性: 名称: enabled interval 用来设定引发 timer 事件过程的间隔时间,单位为 1/1000 秒。 事件: (时间控件只有一个事件) timer : 它会按照 interval 所设定的时间定时引发。 说明:时间控件的使用方法: 1.在 form 上放置一个时间对象。 2.在属性窗口中设定其 interval 属性。 3.填写 timer 事件的程序内容, 4.当程序开始执行后,将不会看到它的图标,每隔 interval 定义的时间内, 程序会触发一次 timer 事件。 时间控控件应用举例:windows 中计时器,word 中的定时保存文件,定时更新 屏幕画面(屏幕保护程序)等等。 第四讲 数据表达式与简单程序设计本讲内容及要求: 1 熟悉 VB 程序中代码和语句书写规则; 2 掌握 VB 的数据类型; 3 掌握 VB 的 运算符和表达式的使用; 4 掌握常用内部函数的使用; 本章重点: 变量和常量的定义及使用、运算符和表达式的使用及常用内部函数的使用。 本章难点: 数据类型、内部函数。4.1 程序代码的组织方式一个 VB 程序由窗体界面和程序代码两部组成, 通过程序代码把窗口界面的各个对 象以及应用中的其它元素联系在一起。程序代码部分则由若干被称为D过程‖的代码行 及向系统提供某些信息的说明组成。过程及说明又被组织在D模块‖之中。将设计的过 程代码及相关说明合理地组织到不同的模块之中,也就是设计代码的结构,在创建 VB 应用程序时是最为重要的一个步骤。一 过程所谓D过程‖,就是具有特定书写格式、包含若干可被作为一个整体执行的代码的 组合。根据执行方式,可把D过程‖分为D事件过程‖和D通用过程‖两类。二 模块模块是 VB 用于将不同类型过程代码组织到一起而提供的一种结构。在 VB 中具有三种 类型的模块: 窗体模块 标准模块 类模块。4.2. VB 代 码 书 写 规 则(1) 程序中不区分字母的大小写,Ab 与 AB 等效; (2) 系统对用户程序代码进行自动转换: 1) 对于 VB 中的关键字,首字母被转换成大写,其余转换成小写 2) 若关键字由多个英文单词组成,则将每个单词的首字母转换成大写 3) 对于用户定义的变量、过程名,以第一次定义的为准,以后输入的自动 转换成首次定义的形式 (1)在同一行上可以书写多行语句,语句间用冒号(:)分隔 (2)单行语句可以分多行书写,在本行后加续行符:空格和下划线 _ (3) 一行允许多达 255 个字符4.3 VB 的 数 据 类 型4.3.1.数 据 类 型 1 VB 的 标 准 数 据 类 型数据类型 关键字 类型 存储空 前缀 符 间 Byt % & Int Lng 1 个字 0 到 255 节 2 个字 -32,768 到 32,767 节 4 个 字 -2,147,483,648 到 节 2,147,483,647 负 数 : -3. 8 到 4 个字 -1.; 正 数 : 节 1. 到 3.4 02823E38 负 数 : -1.797 32E308 8 个 字 4.47E -3 24; 节 正 数 : 4. 247E-324 1. 232E308 货币 C ur re ncy 型 逻辑型 日期型 对象型 B oo le an D at e O bj ec t @ Cur 8 个字 节 从 -922,337,2 03,685 ,477.5808 到 922,337,20 3,685, 477.5807 范围字节 B yt e 型 整 型 I nt eg er 长整 L on g 型 数 单 精 S in gl e 值 度型 数 据 类 型 双精 D ou bl e 度型! Sng#DblBln Dtm Obj2 个字 True 或 F alse 节 8 个 字 100 年 1 月 1 日 到 9999 年 1 2 节 月 31 日 4 个字 节 任 何 Object 引 用变长字符 S tr in g 型 定长字符 S tr in g 型 变体数字 V ar ia nt 型 变体字符 V ar ia nt 型$Str10 字 节加字 0 到 大 约 20 亿 符串长 度 字符串 1 到 大 约 65,400 长度 16 个 任 何 数 字 值 , 大 可 达 Double 的 最 字节 范围 22 个 字节加 与 变 长 String 有 相 同 的 范 围 字符串 长度$Str VntVnt 注意:1 ) VB 中 对 没 有 声 明 的 变 量 其 缺 省 的 数 据 类 型 是 变 体 型 , 可 以 用 来 存 储 各 种 数 据 ,但 所 占 用 的 内 存 比 其 它 类 型 都 多 。为 提 高 运 行 效 率 (整 型 效 率 较 高 ),或 达 到 一 定 的 运 算 精 确 度( 浮 点 型 精 度 较 高 ,但 运 行 较 慢 ), 应合理的定义数据类型。 2) 逻 辑 型 数 据 只 有 True 和 F alse 两 个 值 , 转 换 成 整 型 时 , True=-1 ,F alse=0,将 其 它 类 型 转 换 成 逻 辑 型 时 ,非 0 数 转 换 为 True , 0 转 换 为 False。 3) 字 符 型 可 以 包 括 所 有 的 西 文 字 符 和 汉 字 ,字 符 必 须 用 双 引 号 括 & & 起 来 , 如 : &abc123& 4) 期 型 数 据 按 8 字 节 的 浮 点 数 来 存 储 , 期 型 数 表 示 方 式 有 两 种 : 日 日 可 以 用 号 码 符 #括 起 来 ,也 可 以 用 数 字 序 列 表 示( 小 数 点 左 边 的 数 字 代 表 日 期 , 右 边 代 表 时 间 , 0 为 午 夜 , 0。 5 为 中 午 12 点 , 负 数 表 示 是 1899 年 12 月 31 日 前 的 日 期 和 时 间 ) 。 如 : #3/22/2002# # 14:30: 20# Dim T As Date T=-2.5 Print T ' 打 印 出 来 的 结 果 是 189 9-12-28 12: 00: 0 0 5 ) 任 何 数 据 类 型 的 数 组 都 需 要 20 个 字 节 的 内 存 空 间 , 加 上 每 一 数 组维数占 4 个字节,再加上数据本身所占用的空间。数据所占用的内 存 空 间 可 以 用 数 据 元 数 目 乘 上 每 个 元 素 的 大 小 加 以 计 算 。例 如 ,以 4 个 2 字 节 之 Integer 数 据 元 所 组 成 的 一 维 数 组 中 的 数 据 , 占 8 个 字 节 。 这 8 个 字 节 加 上 额 外 的 24 个 字 节 , 使 得 这 个 数 组 所 需 总 内 存 空 间 为 32 个 字 节 。 2. 变 量 与 常 量 ( 1) 变 量 或 常 量 的 命 名 规 则 1) 必 须 以 字 母 或 汉 字 开 头 ,由 字 母 、汉 字 、数 字 或 下 划 线 组 成 , 长 度 ≤ 255 个 字 符 ; 2) 不 能 使 用 V B 中 的 关 键 字 , 并 尽 量 不 与 VB 中 标 准 函 数 名 同 名 ;如 : Dim 、 Sin3)VB 中 不 区 分 变 量 的 大 小 写 ,一 般 变 量 首 字 母 用 大 写 ,其 余 用 小 写;常量全部用大写字母表示 4) 为 了 增 加 程 序 的 可 读 性 , 可 在 变 量 名 前 加 一 个 缩 写 的 前 缀 来 表 明该变量的数据类型。( 2) 变 量 声 明1) 用 D i m 语 句 进 行 显 式 声 明 语句形式: i nt eg er D im 变 量 名 [A s 类 型 ] 如 : D i m i nt X As 说 明 : ?如 果 没 有 A s 类 型 , 则 默 认 为 变 体 类 型 。 ?可 在 变 量 名 后 加 类 型 符 来 代 替 A s 类 型 如 : D im in tX% ?一 条 语 句 可 以 同 时 定 义 多 个 变 量 , 但 每 个 变 量 必 须 有 自己的类型声明,类型声明不能共用; ?字 符 串 变 量 根 据 其 存 放 的 长 度 是 否 固 定 , 定 义 方 法 不 同: 定长字符串: D im st rA As S tr in g* 1 0表 示 最 多 存 放 1 0 个 字 符 , 如 果 赋 值 不 足 10 个 , 则 右 补 空 ; 若 多 于 10 个 , 则 多 余 部 分 截 去 。 不 定 长 字 符 串 : D im 最 多 可 存 放 2MB 个 字 符 s tr A As S tr in g2) 隐 式 声 明V B 中 允 许 变 量 不 经 过 声 明 就 直 接 使 用 ,这 种 称 为 隐 式 声 明 ,所 有 隐 式声明的变量都是变体型的。 隐式声明容易造成错误,为了调试程序方便,一般对使用的变量都 进 行 声 明 , 可 以 在 通 用 声 明 段 使 用 Opti on Explicit 语 句 来 强 制 显 式 声明所有变量。( 3) 常 量1) 直 接 常 量 指 在 程 序 中 直 接 给 出 值 的 数 据 , 如 : 123、 123&、 12 3. 45、 1.234E2 、 123 D3 分 别 表 示 整 型 、 长 整 型 、 单 精 度 浮 点 型 ( 小 数 形 式 ) 、 单精度浮点型(指数形式)、双精度浮点型。 八进制常数: 在 数 值 前 加 &O , 如 &O123十 六 进 制 常 数 : 在 数 值 前 加 & H , 如 &H123 2) 用 户 声 明 的 符 号 常 量 用 Const 来 声 明 : C o n st 符 号 常 量 名 [A s 类 型 ] = 表 达 式 如 : C o n st PI=3.14159 '声 明 了 常 量 PI , 代 表 3.14159, 单 精 度 型 C on st MAX As Integer=&O1 44 ' '声 明 了 常 量 MAX, 代 表 八 进 制 数 144, 整 型 C on st COUNT#=45.67 ' 声 明 了 常 量 COUNT , 代 表 45.67, 双 精 度 型 3) 系 统 提 供 的 常 量 系 统 定 义 的 常 量 位 于 对 象 库 中 , 在 对 象 浏 览 器 中 的 Vis ual Basic( VB) 和 Vis ual Basic for Aplica ti on ( VBA) 等 对 象 库 中 列 出 了 VB 的 常 量 。 这 些 常 量 可 以 与 应 用 程 序 的 对 象 、 方 法 、 属 性 一 起 使 用 。 如 : Form1 .W indowsState=vbMax im ized 表 示 将 窗 口 极 大 化 。 3. 变量作用域与变量说明语句 1)变量作用域 变量的有效作用范围称为变量作用域。 VB 有以下三个作用域等级,见表 3: 等级 局部 窗体/模块 范围在过程中说明,仅在说明它的过程 有效 在窗体或模块中说明,在定义该变的过程有效 量的模块或窗体的所有过程内均有效 在模块或窗体中说明,在工程内的全局(公有)4.4 运算符与表达式运算符的功能及优先级在定义该变量的 中都有效 体 的 所 模块或窗所有过程中都有效有过程内均有效表达式的书写及运算规则VB 中的运算符和表达式可分为: 算术运算符与算术表达式、 关系运算符与关系表达式、 逻辑运算符与逻辑表达式 4.4.1 算术运算符 VB 的算术运算符有以下几种:^ \乘方― 负号*乘/除整除 Mod 取余 + 加 +:加法运算,也适合于字符串的之间的合并运算。― 减? ? ? ? ? ?-:加法运算。 *:乘法运算。 /:除法运算。 \:整除运算。 Mod:求余运算。例如:a Mod b 表示 a 被 b 整除以后的余数。 ^:幂运算。A^B 表示以 A 为底的 B 次方。把常量、变量等运算元素用算术运算符连接起来的式子称为D算术表达式‖。例如: a*b/(c*d) 3.*r^2 等 带有括号的算术表达式在运算时将优先进行括号内的运算 注 意: (1)/和\的区别:1/2=0.5,1\2=0 (2) Mod 运算中,结果与被除数同号 例如:-9 Mod 7 结果为 -2 字符串运算符与字符串表达式 字符串运算符有:& 、+ 。 功能是字符串连接 例如: & ABCD & + & EFGHI & ?结果为: & ABCDEFGHI & & VB & & &程序设计教程& ' 结果为: & VB 程序设计教程& 说明:当连接符两旁的操作量都为字符串时,上述两个连接符等价。它们区别是: +(连接运算) :两个操作数均应为字符串类型; &(连接运算) :两个操作数既可为字符型也可为数值型,当是数值型时,系统 自动先将其转换为数字字符,然后进行连接操作。4.4.2关系运算符与关系表达式关系运算符都是双目运算,是用来比较两个运算量之间的关系,关系表达式的运算结 果为逻辑量。若关系成立,结果为 True,若关系不成立,结果为 False。 关系运算也称比较运算,它表示不等式的真或假,VB 共提供六种运算符,分别是 =(等于) ,&(大于) ,&(小于) ,&=(大于等于) ,&=(小于等于)和&&(不等于) 。 关系表达式就是用关系运算把两个比较对象连接起来的式子。 ● 比较对象可以是变量、常量和算术表达式。例如: a&32 x+y&=z/2 b$&& & Basic & object1 is object2 ● 关系表达式的运算是采用D按值比较‖的方法,即先求出运算符两边的D值‖,若是 变量,则取其当前值,如果两端的值满足条件,则结果为DTrue‖,否则为DFalse‖。4.4.3逻辑运算符与逻辑表达式逻辑非为单目运算符(要求一个操作逻辑运算是对逻辑值进行的运算,Not 数) ,其它为双目运算符。运算符 Not说明 取反说明 操作数为假,结果为真, 操作数为真,结果为假例 Not F结果 TAnd与操作数均为真时,结果才 为真T And F T And T T Or F F Or F T Xor F T Xor TF T T F T FOr或操作数中有一个为真时, 结果为真Xor异或操作数相反时,结果才为 真 逻辑运算的优先次序是: Not→And→Or→Xor 2. 逻辑表达式 逻辑表达式是用逻辑运算符把逻辑变量连接起来的式子。例如: a&=2*3.141159*r And (x&&5 Or Not b) x&2 Or Text1.text=‖Microsoft‖ 表达式的书写: (1)运算符不能相邻。例 a+*b 是错误的。 (2)乘号不能省略。例 x 乘以 y 应写成:x*y (3)括号必须成对出现,均使用圆括号,可以嵌套使用。 (4)表达式从左到右在同一基准并排书写,不能出现上下标 (5)要注意各种运算符的优先级别,为保持运算顺序,在写VB表达式时需要适当 添加括号() 4.4.4.运算规则 表达式中出现了多种不同类型的运算符时,其运算符优先级如下: 算术运算符&关系运算符&逻辑运算符 说明: 1.当一个表达式中出现多种运算符时,首先进行算术运算,接着关系运算符,最后 处理逻辑运算符,在各类运算中再按照相应的优先次序进行。 2.可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算 总是优先于括号外的运算。对于多重括号,总是由内到外。 第五讲 数据表达式与简单程序设计 ---选 择 分 支 与 循 环重点: 1、掌握赋值语句及不同类型数据的赋值操作 2、InputBox 和 Msgbox 函数的用法 3、If-else-endif 语句的格式及情况语句 select 5.1 常用的函数 1. 数 学 函 数 VB 中 常 用 的 数 学 函 数函数名Sqr( x) Log( x) Exp( x) Abs( x) 求平方根功能求 自 然 对 数 , x&0 求 以 e 为 底 的 幂 值 ,即 求 e 求 x 的绝对值x示例Sqr( 9) Log( 10) Exp( 3) Abs( -2.5)结果3 2.3 20.086 2.5 &1C& &12& 1 0-1 之 间 的数 0 0.54 1.56 0.79Hex[$]( x)求 x 的 十 六 进 制 数 , 返 回 的 是 字 符 型 Hex[$] 28) ( 值 Oct[$]( x)求 x 的 八 进 制 数 , 返 回 的 是 字 符 型 值 Oct[$] 10) ( Sgn(x) Rnd(x) 求 x 的 符 号 , 当 x&0, 返 回 1 ; x=0, 返 回 0; x&0, 返 回 - 1 产 生 一 个 在 ( 0, 1 ) 区 间 均 匀 分 布 的 随 机 数 ,每 次 的 值 都 不 同 ;若 x=0 ,则 给出的是上一次本函数产生的随机数 求 x 的正弦值,x 的单位是弧度 求 x 的余弦值,x 的单位是弧度 求 x 的正切值,x 的单位是弧度 求 x 的 反 正 切 值 ,x 的 单 位 是 弧 度 ,函 数返回的是弧度值 Sgn(15) Rnd(x)Sin(x) Cos(x) Tan(x) Atn(x)Sin(0) Cos(1) Tan(1) Atn(1)2.字符函数 ( 1) 字 符 串 编 码 在 Windows 采 用 的 DBCS( Double By te Character Set ) 编 码 方 案 中 , 一 个 汉 字 在 计 算 机 内 存 中 占 2 个 字 节 , 一 个 西 文 字 符 ( A SCII 码 ) 占 1 个 字 节 , 但 在 VB 中 采 用 的 是 Unicod e( ISO 字 符 标 准 ) 来 存 储 字 符 的 , 所 有 字 符 都 占 2 个 字 节 。 为 方 便 使 用 , 可 以 用 StrConv 函 数 来 对 Unicode 与 DB CS 进 行 转 换 ,可 以 用 函 数 L en( )函 数 求 字 符 串 的 字 符 数 , 用 LenB( ) 函 数 求 字 符 串 的 字 节 数 。 ( 2) 常 用 的 字 符 串 函 数函数名Len( x) LenB( x) Left( x, n) Right( x, n)功能求 x 字符串的字符长度 (个 数 ) 求 x 字符串的字节个数示例Len(&ab 技 术 &) LenB(&ab 技 术 &) 4 8结果从 x 字 符 串 左 边 取 n 个 字 Left(&ABsYt&,2) 符 从 x 字 符 串 右 边 取 n 个 字 Right(&ABsYt&,2) 符&AB& &Yt&从 x 字 符 串 左 边 第 n1 个 Mid( x, n1, n2 ) 位 置 开 始 向 右 取 n2 个 字 Mid( &ABsYt&,2,3 ) 符 Ucase( x) Lcase( x) Ltrim( x) Rtrim( x) Trim( x) 将 x 字符串中所有小写 字母改为大写 将 x 字符串中所有大写 字母改为小写 去掉 x 左边的空格 去掉 x 右边的空格 去掉 x 两边的空格 Ucase( &ABsYug&) Ucase( &ABsYug&) Lrim(& Trim(& Trim(& ABC ABC ABC &) &) &)&BsY& ABSYUG absyug &ABC & & & ABC &ABC&在 x 中查找给定的字符, Instr( x, &字 符 返 回 该 字 符 在 x 中 的 位 Instr(&WBAC&,&B&) &, M) 置 ,M=1 不 区 分 大 小 写 , 省 略则区分 String( n, &字 符 得 到 由 n 个 首 字 符 组 成 &) 的一个字符串 Space (n) 得到 n 个空格 String(3,&abcd&) Space (3)2&aaa& & &在 C 字 符 串 中 从 N1 开 始 Replace(&ABCASAA& ,& &ABC12 Replace(C,C1,C2 将 C2 替 代 N2 次 C1,如 果 A&,&12&,2,2) S12A& ,N1,N2) 没 有 N1 表 示 从 1 开 始3. 日 期 与 时 间 函 数 常用的日期与时间函数 函数名Date () Time() Now Month(C) Year(C) Day(C) WeekDay()含义返回系统日期 返回系统时间 返回系统时间和日期 返 回 月 份 代 号 ( 1-12) 返 回 年 代 号 ( ) 返 回 日 期 代 号 ( 1-31) 返 回 星 期 代 号( 1 - 7 ),星 期 日 为 1示例Date () Time() Now结果02-3-19 3:30 :00 PM 0 2 - 3 - 1 9 3: 3 0 : 00 3 Month(&02,03,19&) Y e a r ( & 0 2 -0 3 - 1 9 &) Day(&02,03,19&) WeekDay(&02,03,17&)增 减 日 期 函 数 : Da te Ad d( 要 增 减 日 期 形 式 ,增 减 量 ,要 增 减 的 日 期 变量) 例 : 计 算 期 末 考 试 日 期 : D a t eA dd( &w w & ,15 ,# 20 02/ 3/ 19# ) 求 日 期 之 差 函 数 : Da te Di ff ( 要 间 隔 日 期 形 式 , 日 期 一 , 日 期 二 ) 例 : 计 算 距 毕 业 天 数 : D a t eD if f(&d &, N ow, # 20 05/ 6/ 30# )日期形式 日期形式 意义 yyyy 年 q 季 m 月 y 一年的天 数 4. 转 换 函 数 函数名 Str (x) Val(x) Chr(x) Asc(x) 功能 将数值数据 x 转换成字符串 将字符串 x 中的数字转换成数值 返 回 以 x 为 ASCII 码 的 字 符 给 出 字 符 x 的 ASCII 码 值 , 十 进 制数 Cint(x) 将数值型数据 x 的小数部分四舍 五入取整 Int(-3.5) Int(x) 取小于等于 x 的最大整数 Int(3.5) Fix(x) 将数值型数据 x 的小数部分舍去 将任何有效的数字字符串或数值 转换成逻辑型 Fix(-3.5) 3 - 3 True CBool(2) CBool(&0&) False -4 Cint(3.6) 4 示例 Str (45.2) Val(&23ab&) Chr(65) Asc(&a&) 结果 &45.2& 23 &A& 97 d w ww h 时 n 分 s 秒日 一周的天数 星期CBool(x) CByte(x)将 0-255 之 间 的 数 值 转 换 成 字 节 型CByte(6)6CDate(x) CCur(x)将有效的日期字符串转换成日期 将数值数据 x 转换成货币型CDate(##)
CCur(25.6) Round(2.86, 1) 25.6 2.9Round(x, N) 在 保 留 N 位 小 数 的 情 况 下 四 舍 五 入取整 CStr(x) CVar(x) CSng(x) CDbl(x) 将 x 转换成字符串型 将数值型数据 x 转换成变体型 将数值数据 x 转换成单精度型 将数值数据 x 转换成双精度型CStr(12) CVar(&23&)+&A& CSng(23.5125468) CDbl(23.5125468)&12& &23A& 23.54685.格 式 输 出 F or ma t 函 数 Format 函 数 用 于 制 定 字 符 串 或 数 字 的 输 出 格 式 。语 法 : x = Fo rm at ( ex pre ss io n, fm t ) expr essio n 是 所 输 出 的 内 容 。f m t 是 指 输 出 的 格 式 ,这 是 一 个 字 符 串 型 的 变 量 ,这 一 项 若 省 略 的 话 ,那 么 F ormat 函 数 将 和 St r 函 数 的 功能差不多。如:语句 Format (2, “ 0.00” ) Format (.7, “ 0%” ) F o r m a t ( 1 1 4 0 , “ $ # , # # 0” ) 2.00 70% $1,140 输出F or ma t 字 符 的 意 义字符 0 意义 显 示 一 数 字 ,若 此 位 置 没 有 数 字 则 补 0 # 显 示 一 数 字 ,若 此 位 置 没 有 数 字 则 不显示 % 数 字 乘 以 100 并 在 右 边 加 上 ” %” - + $ ( ) 这 些 字 出 现 在 fmt 里 将 原 样 号 打出 , 千位的分隔符 . 字符 小数点 意义5.2 算 法 概 论1. 算 法 的 概 念 算法:指用计算机解决某一问题的方法和步骤。 算法分类:数值算法:用于解决一般数学解析方法难以解决的问题,如:求超越方程的根、 求定积分、解微分方程等。 非数值算法:用于对非数值信息进行查找、排序等 2. 算 法 的 特 征 (1)确定性:指算法的每个步骤都应确切无误,没有歧义。 (2)可行性:指算法的每个步骤必须是计算机能够有效执行、可以实现的,并可得 到确定的结果。 (3)有穷性:指一个算法应该在有限的时间和步骤内可以执行完毕的。 (4)输入性:指一个算法可以有 0 或多个输入数据。 (5)输出性:指一个算法必须有一个或多个输出结果。 3. 算 法 的 评 价 主要评价指标是:算法是否正确、运行的效率、占用系统资源的多少。 4. 算 法 的 描 述 一般常用流程框图来描述算法。图形符号 名称 输 入 /输 出 代表操作 数据的输入与输出处理各种形式的数据处理判断判断选择,根据条件满足与否选择不同路径起止流程的起点与终点特定过程 流程线 连接点一个定义过的过程 连接各个框图,表示执行顺序 表示与流程图其他部分相连接5.基本算法结构“结构化程序设计方法”规定算法有三种基本结构: 顺序结构、选 择结构和循环结构 6. 算 法 示 例欧几里德算法――求两个自然数的最大公约数 5.3 1赋值语句:P59赋值语句及 InputBox、MsgBox 函数一般格式: var=& 表达式 & 其中:var 可以是变量名或属性名。 功能:将表达式的值赋给“=”左边的变量(或为某个对象设置某属性值) 。 使用说明:■ “=”左边的变量和右边的表达式的值的类型要一致。 程序举例:已知半径,求圆面积 已知三边长,求三角形面积 P652 3不同数据类型数据的赋值:P59InputBox 函数:P60InputBox 函数:用来接受用户通过键盘输入的数据。 InputBox 的使用形式:(P60) v=InputBox(prompt[,title][,default][,x,y][,helpfile,context]) 其中: v :可为 变体变量、字符串变量、数值变量。 功能:执行本语句,调用 InputBox 函数时,将在屏幕上出现一个带有提示信息的对 话框,当用户从对话框的用户编辑框中输入数据并按回车键(或单击确定按钮) )后, 系统则把输入的数据赋给变量 v 。或按[Esc]键或取消按钮,则把 0 或空串赋给变量 v 。 用户可通过设置 InputBox 函数的参数来定制提示信息对话框的形式。 具体内容见 P61 例:P61 2、MsgBox 函数:向用户发布提示信息,并要求用户作出必要的响应。 函数格式: (P61) 例: P635.4分支结构与分支结构语句1if Cthen 结构:(可实现单分支) 一般格式: 格式一: if 格式二: ife then 语句 e then 语句组 end if 其中:e 为条件,其形式可为:逻辑变量、关系表达式或逻辑表达式。 功能:执行本语句时,判断 e 的值,若为 true ,则执行 then 后的语句(语句 组) ,若为 false ,则执行本 if 语句(或 end if )下面的语句。 (对此功能的理解可看 P64 图 4-7 ) 程序举例: 用 InputBox 输入一个数,若此数大小 0,则在窗体上将它显示出来。 Private Sub Form_click() Dim x As Integer x = InputBox(&请输入一个数&) If x & 0 Then Print x End Sub2if-then-else-end if 结构: (可实现两分支) 一般格式:if ethen A 语句组 Else B 语句组 End if 功能:执行本语句时,先判断 e 的值: e 为 true : 执行 A 语句组后转 end if 下一条语句继续执行。 e 为 false: 执行 B 语句组后转 end if 下一条语句继续执行。 (对此功能的理解可参考 P58 图 4-3 (b)) 程序举例: 教材 P65、实验指导书 P43 实验 5-33if-then-else if 结构: (可实现多分支)一般格式:if e1 then A1 语句组 Else if e2 then A2 语句组 Else if e3 then A3 语句组 …… Else if en then An 语句组 else A(n+1)语句组 End if 功能:执行本语句时依次判断各条件的值, 若有 ei 的值为 true ,则执行相应的 Ai 语句组后转 end if 的下一条语句去继续执 行。 若所有 ei 的值均为 false ,则执行 else 后的 A(n+1) 语句组后转 end if 的下一条 语句去继续执行。(对此功能的理解参考教材 P66 图 4-8)一般来说,ei 中最多只有一个值为 true 。 程序举例:教材 P66 例 4-24Select-Case-End Select 结构语句: (可以实现多分支结构)P66 一般格式:Select Case e Case c1 A1 语句组 Case c2 A2 语句组 …… Case cn An 语句组 Case Else A(n+1)语句组 End Select 其中: e : 测试表达式,形式可为:算术表达式 或 字符表达式。 c1,c2,…:测试项。形式可为以下三种: ◆ 具体取值:常量 1,常量 2,….. ◆ 连续的数据范围: 下界值 to 上界值 例如:8 to 12 B to H 等等。 ◆ 满足某个判决条件: Is &关系表达式& 常量 例如: Is&20 Is&=‖p‖ 其中 Is 代表 e (测试表达式)的值。 程序举例:教材 P67 例 4-2 第六讲循环结构与循环结构语句重点: 1、掌握单分支、双分支以及多分支结构语句的格式以及程序设计方法 2、do-loop 型循环语句及循环结构的程序设计 3、For-Next 型循环语句及循环结构的程序设计 4、循环的嵌套1 for-next 循环语句:P69 一般格式: for v=e1 to e2 [step e3] …… [exit for] 循环体语句组 …… next v 其中:v :循环控制变量。应为 整型 或 单精度型。 e1:循环控制变量的初值。 e2:循环控制变量的终值 。 e3:循环控制变量的步长值。 功能: (执行过程) :P70 使用说明:◆ 超过终值的情况:当 e3 &0 时,指 v&e2, 当 e3&0 时,指 v&e2 。 ◆ 循环次数的计算公式:循环次数=Int((e2-e1)/e3)+1 ◆当 step 1 时,此部分可以省略。 ◆循环中执行到 exit for 语句时,结束本循环语句,转本 next 的下 一条语句去执行。 1.1 程序举例 例:求 1+2+3+4+5 Private Sub Form_click() Dim s As Integer, i As Integer s = 0 For i = 1 To 5 s = s + i Next i Print &s=&; s End Sub 例: 求 1*2*3*4 Private Sub Form_click() Dim s As Integer, i As Integer s = 1 For i = 1 To 4 s = s * i Next I Print &s=&; s End Sub 例 P70 例 P71 先看 len、mid 函数的使用: 有一个字符串 A=‖abcd‖ (1) 则 len(A)=4 len(x) 可获得 x 字符串长度。(一个汉字为 2 个字符) (2) mid(x,n1,n2) :取子串函数 作用一:取子串: mid(A,1,1)=‖a‖ mid(A,1,2)=‖ab‖ mid(A,3,1)=‖c‖ 从一个字符串中一个一个取出字符的方法: for I=1 to len(x) print mid(x,I,1) next I 若逆序取出: for I=len(x) to 1 step -1 print mid(x,I,1) next I 作用二:改变一个字符串中某些字符。 mid(x,2,2)=‖k‖ 1.2 循环嵌套:P73 for I= 1 to 2 fot j=1 to 3 print Db‖ next j print Da‖ next I 程序举例:P73 例 rnd(x): 随机函数的使用方法:P73 改变程序中 rnd(X)中的 X 取值,观察结果 Private Sub Form_click() Print Rnd(1); Rnd(0) End Sub产生[a,b]范围内随机整数的公式:P73 int((b-a+1)*rnd+a) 例:生成 5 个 3 位随机整数。 For I=1 to 5 Print int((999-100+1)*rnd+100) Next I 自习 P74 各例 isNumeric(x) : 判断一个字符串是否是一个数字串。 若 x 是数字串,其值为 True ,若不是数字串,其值为 False2 do-loop 循环结构:P68 一般格式:4 种 P68 do while e do …… …… [exit do] [exit do] …… …… loop loop whilee格式一: (1)先判断 e 的值,为 true ,执行循环体 A,为 false , 循环结束,转 loop 的 下面一条语句去执行。 (2)循环体执行完后,执行 loop 语句,返回(1) 。 流程图 P67 (a) 2.1 例 : (补充) 求 s=1+2+3+4+?? 当结果大小等于 55 时结束 Private Sub Form_click() Dim s As Integer, n As Integer s = 0 n = 0 Do While s & 55 n = n + 1 s = s + n Loop Print s, n End Sub 格式二: (1)执行循环体语句组。 (2)执行到 loop while 语句时,判断 e 的值,若为 true , 转(1) ,若为 false , 循环结束,转 loop 的下面一条语句去执行。 流程图 P67 (b) 格式三: do until e 格式四: do ….. …. [exit do] [exit do] …… …… loop loop until e 格式三功能: (1) 判断 e 的值,若为 false ,则执行循环体语句;若为 true ,则循环结束,转 loop 的下面一条语句去执行。 (2)执行 loop 语句时,返回(1) 流程图 P68 图 4-13 (b) 格式四功能: (1)执行循环体语句 (2)执行 loop 语句时,判断 e 的值,若为 false , 返回(1) ,若为 true , 则循 环结束,转 loop 的下面一条语句去执行。 流程图 P68 图 4-13 (a) 特别说明:无论哪种格式,记住循环体执行的条件: (1) while 后的条件值为 true 时,执行循环体,为 false 时,循环结束。 (2)until 后的条件值为 false 时,执行循环体,为 true 时,循环结束。 程序举例:P68 例 4-3 第七讲选择分支与循环-----VB 程序设计的常用算法 重点: 1、重点掌握结构程序设计的方法和思想;4、理解和掌握 VB 中常用算法的思想和设计方法;算法(Algorithm) :计算机解题的基本思想方法和步骤。算法的描述:是对要解决一 个问题或要完成一项任务所采取的方法和步骤的描述, 包括需要什么数据 (输入什么数据、 输出什么结果) 、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然 语言、结构化流程图、伪代码等来描述算法。一、计数、求和、求阶乘等简单算法此类问题都要使用循环, 要注意根据问题确定循环变量的初值、 终值或结束条件, 更要注意用来表示计数、和、阶乘的变量的初值。 例:用随机函数产生 100 个[0,99]范围内的随机整数,统计个位上的数字分别为 1,2,3,4,5,6,7,8,9,0 的数的个数并打印出来。 本题使用数组来处理,用数组 a(1 to 100)存放产生的确 100 个随机整数,数组 x(1 to 10)来存放个位上的数字分别为 1,2,3,4,5,6,7,8,9,0 的数的个数。 即个位是 1 的个数存放在 x(1)中,个位是 2 的个数存放在 x(2)中,……个位是 0 的个数存放在 x(10)。 将程序编写在一个 GetTJput 过程中,代码如下: Public Sub GetTJput() Dim a(1 To 100) As Integer Dim x(1 To 10) As Integer Dim i As Integer, p As Integer '产生 100 个[0,99]范围内的随机整数,每行 10 个打印出来 For i = 1 To 100 a(i) = Int(Rnd * 100) If a(i) & 10 Then Form1.Print Space(2); a(i); Else Form1.Print Space(1); a(i); End If If i Mod 10 = 0 Then Form1.Print Next i '统计个位上的数字分别为 1,2,3,4,5,6,7,8,9,0 的数的个数,并 将统计结果保存在数组 x(1),x(2),...,x(10)中,将统计结果打印出来 For i = 1 To 100 p = a(i) Mod 10 If p = 0 Then p = 10 ' 求个位上的数字 x(p) = x(p) + 1 Next i Form1.Print &统计结果& For i = 1 To 10 p=i If i = 10 Then p = 0 Form1.Print &个位数为& + Str(p) + &共& + Str(x(i)) + &个& Next i End Sub二、求两个整数的最大公约数、最小公倍数分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数) (1) 对于已知两数 m,n,使得 m&n; (2) m 除以 n 得余数 r; (3) 若 r=0,则 n 为求得的最大公约数,算法结束;否则执行(4); (4) m←n,n←r,再重复执行(2)。 例如: 求 m=14 ,n=6 的最大公约数. m n r 14 6 6 2 0 m=inputBox(&m=&) n=inputBox(&n=&) nm=n*m If m & n Then t = m: m = n: n = t r=m mod n Do While (r && 0) m=n n=r r= m mod n Loop Print &最大公约数=&, n Print &最小公倍数=&, nm/n2三、判断素数只能被 1 或本身整除的数称为素数 基本思想:把 m 作为被除数,将 2―INT ( m )作为除数,如果都除不尽,m 就是素数,否则就不是。 (可用以下程序段实 现) m =val( InputBox(&请输入一个数&)) For i=2 To int(sqr(m)) If m Mod i = 0 Then Exit For Next i If i & int(sqr(m)) Then Print &该数是素数& Else Print &该数不是素数& End If 将其写成一函数,若为素数返回 True,不是则返回 False Private Function Prime( m as Integer) As Boolean Dim i% Prime=True For i=2 To int(sqr(m)) If m Mod i = 0 Then Prime=False: Exit Next i End FunctionFor四、验证哥德巴赫猜想(任意一个大于等于 6 的偶数都可以分解为两个素数之和) 基本思想:n 为大于等于 6 的任一偶数,可分解为 n1 和 n2 两个数,分别检查 n1 和 n2 是否为素数,如都是,则为一组解。如 n1 不是素数,就不必再检查 n2 是否素数。先从 n1=3 开始, 检验 n1 和 n2 (n2=N-n1) 是否素数。 然后使 n1+2 再检验 n1、 是否素数, n2 … 直到 n1=n/2 为止。 利用上面的 prime 函数,验证哥德巴赫猜想的程序代码如下: Dim n%,n1%,n2% n=Val(InputBox(&输入大于 6 的正整数&)) For n1=3 to n\2 step 2 n2=n-n1 If prime(n1) Then If prime(n2) then Print n & &=& & n1 & &+& & n2 Exit For '结束循环 End if End if Next n1五、迭代法算法思想:对于一个问题的求解 x,可由给定的一个初值 x0,根据某一迭代公式得 到一个新的值 x1,这个新值 x1 比初值 x0 更接近要求的值 x;再以新值作为初值,即:x1 →x0,重新按原来的方法求 x1,重复这一过和直到|x1-x0|&ε (某一给定的精度)。此时可将 x1 作为问题的解。 例:用迭代法求某个数的平方根。 已知求平方根的迭代公式为: x1 Private Function Fsqrt( a As single ) AS single Dim x0 As Single, x1 As Single x0 =a/2 '迭代初值 x1 = 0.5*(x0 + a/x0) Do x0 = x1 '为下一次迭代作准备 x1 = 0.5*(x0 + a/x0) Loop While Abs(x1 - x0) & 0.00001 Fsqrt=x1 End Function?1 a ( x0 ? ) 2 x0 六、数制转换将一个十进制整数 m 转换成 →r(2-16)进制字符串。 方法:将 m 不断除 r 取余数,直到商为零,以反序得到结果。下面写出一转换函数, 参数 idec 为十进制数,ibase 为要转换成数的基(如二进制的基是 2,八进制的基是 8 等) , 函数输出结果是字符串。 Private Function TrDec(idec As Integer, ibase As Integer) As String Dim strDecR$, iDecR% strDecR = && Do While idec && 0 iDecR = idec Mod ibase If iDecR &= 10 Then strDecR = Chr$(65 + iDecR - 10) & strDecR Else strDecR = iDecR & strDecR End If idec = idec \ ibase Loop TrDec = strDecR End Function七、字符串的一般处理 1.简单加密和解密加密的思想是: 将每个字母 C 加(或减)一序数 K,即用它后的第 K 个字母代替, 变换式公式: c=chr(Asc(c)+k) 例如序数 k 为 5,这时 &A&→ &F&, &a&→?&f&,&B&→?&G&… 当加序数后的字母超 过&Z&或&z&则 c=Chr(Asc(c)+k -26) 例如:You are good→ Dtz fwj ltti 解密为加密的逆过程 将每个字母 C 减(或加)一序数 K,即 c=chr(Asc(c)-k), 例如序数 k 为 5, 这时 &Z&→&U&, &z&→&u&, &Y&→&T&… 当加序数后的字母小于&A& 或&a&则 c=Chr(Asc(c)-k +26) 下段程序是加密处理: i = 1: strp = && nL = Len(RTrim(strI)) Do While (i &= nL) strT = Mid$(strI, i, 1) '取第 i 个字符 If (strT &= &A& And strT &= &Z&) Then iA = Asc(strT) + 5 If iA & Asc(&Z&) Then iA = iA - 26 strp = strp + Chr$(iA) ElseIf (strT &= &a& And strT &= &z&) Then iA = Asc(strT) + 5 If iA & Asc(&z&) Then iA = iA - 26 strp = strp + Chr$(iA) Else strp = strp + strT End If i=i+1 Loop Print strp 2.统计文本单词的个数 算法思路: (1)从文本(字符串)的左边开始,取出一个字符;设逻辑量 WT 表示所取字符是否是 单词内的字符,初值设为 False (2)若所取字符不是D空格‖,D逗号‖,D分号‖或D感叹号‖等单词的分隔符,再判断 WT 是否为 True,若 WT 不为 True 则表是新单词的开始,让单词数 Nw=Nw+1,让 WT=T (3)若所取字符是D空格‖,D逗号‖,D分号‖或D感叹号‖等单词的分隔符, 则表示字符不 是单词内字符,让 WT=F (4) 再依次取下一个字符,重得(2)(3)直到文本结束。 下面程序段是字符串 strI 中包含的单词数 Nw = 0: Wt = False nL = Len(RTrim(strI)) For i = 1 To nL strT = Mid$(strI, i, 1) '取第 i 个字符 Select Case strT Case & &, &,&, &;&, &!& Wt = False Case Else If Not Wt Then Nw = Nw + 1 Wt = True End If End Select Next i Print &单词数为:&, Nw八、穷举法穷举法(又称D枚举法‖)的基本思想是:一一列举各种可能的情况,并判断哪一种可能是符合要求的解, 这是一种D在没有其它办法的情况的方法‖, 是一种最D笨‖ 的方法, 然而对一些无法用解析法求解的问题往往能奏效, 通常采用循环来处理穷举问题。 例: 将一张面值为 100 元的人民币等值换成 100 张 5 元、1 元和 0.5 元的零钞,要求 每种零钞不少于 1 张,问有哪几种组合? Dim i%, j%, k% Print &5 元 1元 0.5 元& For i = 1 To 20 For j = 1 To 100 - i k = 100 - i - j If 5.0 * i + 1.0 * j + 0.5 * k = 100 Then Print i, j, k End If Next j Next i九、递归算法用自身的结构来描述自身,称递归 VB 允许在一个 Sub 子过程和 Function 过程的定义内部调用自己,即递归 Sub 子 过程和递归 Function 函数。递归处理一般用栈来实现,每调用一次自身,把当前参数 压栈,直到递归结束条件;然后从栈中弹出当前参数,直到栈空。 递归条件: (1)递归结束条件及结束时的值; (2)能用递归形式表示,且递归向终止 条件发展。 例:编 fac(n)=n! 的递归函数 Function fac(n As Integer) As Integer If n = 1 Then fac = 1 Else fac = n * fac(n - 1) End If End Function 第八讲数组-----静态数态 重点: 1、掌握数组的概念以及数组的定义和数组的结构 2、数组相关的函数和语句 3、数组元素的引用 4、数组元素的输入、输出和处理 8.1 数组的概念数组:是同类变量的一个有序的集合。 例:有 5 个学生的数学成绩, 若编程时这样存放: s1=50 s2=90 s3=80 s4=60 s5=70 则 5 个分数分别存放在 s1 s2 s3 s4 s5 简单变量中 若编程时这样存放: s(1)=89 s(2)=67 s(3)=42 s(4)=68 s(5)=97 则 5 个分数分别存放在一个 s 数组中。 一、数组命名、数组元素、数组的维数与数组的类型: 上例中: 数组名 s 命名规则同简单变量的命名规则。P45 数组元素:数组中的每个成员为一个元素。 如上例中 s 数组中有 5 个元素,分别为: s(1) s(2) s(3) s(4) s(5) 数组元素又称为下标变量。 其中: 1,2,3,4,5 称为下标。表示该元素在数组中排列的位置。 数组的维数: 一维数组:只有一个下标的数组称为一维数组。 二维数组:有两个下标的数组称为二维数组。 X(2,5) N 维数组:有 N 个下标的数组称为 N 维数组。 Score(1,3,5??) 数组的类型: (1) 固定大小数组:P85 (2) 动态数组: 二、数组定义:程序中的数组必须先定义,后使用。 ①数组说明语句一般格式:P85 Dim 数组名 1([&维界定义&])[ As &数据类型& ][,数组名 2(下标范围) As &数据类型&]…… 其中:维界定义的形式: [下界 1 to] 上界 1[,[下界 2 to] 上界 2]…… 例如:Dim a(1 to 5) As integer 本语句说明了一个 一维 a 数组,有 5 个元素,分别为 a(1),a(2),a(3),a(4),a(5) 又例如:Dim b(1 to 2,1 to 3) As Single,c(3) As Integer, d(3 to 5) 本语句说明了三个数组: 二维数组 b :有 2 行 3 列,6 个元素分别为: b(1,1) b(1,2) b(1,3) b(2,1) b(2,2) b(2,3) 一维数组 c :有 4 个元素:c(0) c(1) c(2) c(3) 一维数组 d :有 3 个元素:d(3) d(4) d(5) 使用说明: ? 下界缺省时,为 0。 ? 若在窗体或标准模块的所有过程之前书写下列语句: Option Base 1 则下界缺省值为 1 。 ? 下界 1 或下界 2 只能是常量,不允许是变量或其它表达式。8.27.2.1 数组元素的赋值 1.用赋值语句给数组元素赋值 例:P92 Dim Score(3) As Integer Dim Two(1,1 to 2)As Integer Score(0)=80 Score(1)=75 Score(2)=91 Score(3)=68 Two(0,1)= Score(0) Print Two(0, 1)数组的基本操作2通过循环逐一给数组元素赋值 例:Private Sub Form_Click() Dim A(6) As Integer, i As Integer Dim B(1 To 2, 1 To 2) As Integer, j As Integer For i = 0 To 6 '使用循环给一维数组赋值并输出 A(i) = Int(99 * Rnd) + 1 Print A(i) Next i Print For i = 1 To 2 '利用二重循环给二维数组赋值并输出 For j = 1 To 2 B(i, j) = i * 10 + j Print B(i, j); Next j Print Next i End Sub 3用 InputBox 函数给数组元素赋值Private Sub Form_Click() Dim A(6) As Integer, V As Variant For i = 0 To 6 A(i) = InputBox(&给数组元素赋值&, &数组 A 赋值&) Print A(i); Next i Print End Sub 用 Array 函数给数组赋值 Array 函数的一般使用形式如下: 〈变体变量名〉= Array([数据列表]) 功能:将一个数据集赋给一个 Variant 变量,并将该变量创建成一个一维数组。 例 P93 Option Base 1 Private Sub Form_Click() Dim A As Variant, I As Integer Dim B(4) As Variant A = Array(5, 4, 3, 2, 1) Print A(1); A(2); A(3); A(4); A(5) A = Array(1.5, 2.3, 3.6, 4.1) Print A(1); A(2); A(3); A(4) A = &NO Array& Print A ' B = Array(1, 2, 3, 4, 5, 6) ?注意 A 与 B 的区别 End Sub 5.2.2 数组元素的输出 例:一维数组的输出 二维数组的输出 P94 Option Explicit Option Base 1 Private Sub Form_click() Dim k As Integer, i As Integer Dim A(4, 5) As Integer, J As Integer, S As String '生成数组 k = 10 For i = 1 To 4 If i Mod 2 && 0 Then '处理奇数行 For J = 1 To 5 k=k+1 A(i, J) = k Next J 4 Else For J = 5 To 1 Step -1 k=k+1 A(i, J) = k Next J End If Next i '数组输出 If Check1.Value && 1 Then For i = 1 To 4 For J = 1 To 5 Picture1.Print A(i, J); Next J Picture1.Print Next i Else For i = 1 To 4 For J = 1 To 5 S = S & Str(A(i, J)) Next J S = S & Chr(13) & Chr(10) Next i Text1.Text = S End If End Sub '处理偶数行'输出到图片框'输出到多行文本框7.2.3 数组元素的引用 例 5-1 P95 Option Explicit Option Base 1 Private Sub Form_Click() Dim Compare(12) As Integer, i As Integer Dim Max As Integer, Min As Integer Randomize For i = 1 To 12 Compare(i) = Int(90 * Rnd) + 10 Print Compare(i); Next i Print Max = Compare(1): Min = Compare(1) For i = 2 To 12 If Compare(i) & Max Then Max = Compare(i) ElseIf Compare(i) & Min Then Min = Compare(i) End If Next i Print & 最大数是:&; Max Print & 最小数是:&; Min End Sub例 5-7 求裴波拉契数列。 Option Base 1 Option Explicit Private Sub Form_Click() Dim Fb(18) As Integer, I As Integer Fb(1) = 1: Fb(2) = 1 For I = 3 To 18 Fb(I) = Fb(I - 2) + Fb(I - 1) Next I For I = 1 To 18 Text1 = Text1 & Str(Fb(I)) & && Next I End Sub 例 5-8 : Option Explicit Private Sub Command1_ClicK() Dim St As String, Idx As Integer Dim A(0 To 25) As Integer Dim I As Integer, js As Integer Dim CH As String * 1, L As Integer St = Text1.Text L = Len(St) For I = 1 To L CH = Mid(St, I, 1) If CH &= &A& And CH &= &Z& Then Idx = Asc(CH) - Asc(&A&) A(Idx) = A(Idx) + 1 ElseIf CH &= &a& And CH &= &z& Then Idx = Asc(CH) - Asc(&a&) A(Idx) = A(Idx) + 1 End If Print A(Idx) Next I For I = 0 To 25 If A(I) && 0 Then js = js + 1 Text2 = Text2 & Chr(I + Asc(&A&)) & &:& & Str(A(I)) & && If js Mod 5 = 0 Then Text2 = Text2 & Chr(13) & Chr(10) End If Next I End Sub 第九讲数组-------动态数组与控件数组 重点: 1、掌握动态数组的定义与使用 2、熟悉控件数组的建立及使用 3、数组常用算法程序设计 1 动态数组的概念:程序在运行过程中,其元素个数(大小)可以改变的数组 2 动态数组说明的一般格式:(说明数组时不指明维数及下标范围) dim 数组名() [as 数据类型] 当可以确定数组元素大小时对动态数组再次说明,用如下重定义数组语句: ReDim [Preserve] 数组名(维界定义) [As 数据类型 ] 说明:当重新定义数组后,要保留原来数组中的数据,则选择 preserve 选项。 例如: Dim Pin() As Integer private Sub form_click() ReDim Pin(5) …… End Sub 详细说明动态数组定义格式中的每个参数的作用,并进行演示! 15 时间 接着用下面的例子来说明动态数组的作用! 以下的例子可根据需要在讲授时选择! 例 1:有一组数,以-999 结束,编程找出其中正数、负数、零的个数。 (-999 不作为 数据处理) 注:例 1 和例 3 两个中选择一个讲! Private Sub Form_click() Dim x() As Integer, n As Integer Dim n1 As Integer, n2 As Integer, n3 As Integer n=1 Do ReDim Preserve x(n) x(i) = InputBox(&请输入一个数&) Print x(i); If x(i) = -999 Then Exit Do If x(i) & 0 Then n1 = n1 + 1 ElseIf x(i) = 0 Then n2 = n2 + 1 Else n3 = n3 + 1 End If n=n+1 Loop Print Print &小于 0 的数据个数为:&; n1 Print &等于 0 的数据个数为:&; n2 Print &大于 0 的数据个数为:&; n3 End Sub 例 2:打印下面的图形:----------------------------- 选讲内容 ********* ******** ******* ****** ***** **** *** ** ** ** *** **** ***** * *** ***** ******* Private Sub Form_click() Dim i As Integer, j As Integer For i = 1 To 9 Print Tab(5); For j = 1 To 10 - i Print &*&; Next j Print Next i End Sub Private Sub Form_click() Dim i As Integer, j As Integer For i = 1 To 5 Print Tab(5); For j = 1 To i Print &*&; Next j Print Next i End SubPrivate Sub Form_click() Dim i As Integer, j As Integer For i = 1 To 4 Print Tab(9 - i); For j = 1 To 2 * i - 1 Print &*&; Next j Print Next i End Sub 例 3 从键盘输入任意个数,求出这些数的总和和平均值! Dim a() as integer Dim I as integer, sum as integer, avg as single, t as integer Do I=inputbox(D请输入一数!‖) If i=-1 then Exit do Else T=t+1 Redim preserve a(t) A(t)=i Sum=sum+i endif Loop Avg=sum/ubound(a) Print Dsum=‖;sum,‖avg=‖+cstr(avg) 例 4 编程实现随机生成 20 个互不相同的两位整数! Dim a() as integer ,I as integer, n as integer,j as integer Redim a(20) as integer For i=1 to 20 k= inputbox(D请输入 N 的值‖) for j=1 to i-1 if a(j)=k then exit for next j if j&i-1 then a(i)=k else i=i-1 endif next i 例 5 在一组有序数列中插入一个数,要求插入后的数还是有序数列! Dim a() as integer Dim I as integer , n as integer, k as integer For i=1 to 10 A(i)=10*i Next i N=inputboxa(D请输入要插入的数‖) 以下有两种方案 1 前插入 2 后插入(可以用班级中的同学进行示范教学) T=10 Redim preserve a(11) Do while n&a(t) A(t+1)=a(t) T=t-1 Loop A(t+1)=n For i=1 to 11 Print a(i); Next i 后插入法给学生讲清算法的原理,要求学生自己课后写出程代码!9.2 控件数组一、控件数组: 动态数组指在声明数组时未给出数组的大小(省略括号中的下标) ,当要使用该 数组时,随时可用 ReDim 语句重新定义数组的大小。使用动态数组的优点是:用户 可以根据需要有效地利用存储空间,它是在程序执行到 ReDim 语句时分配存储空间。 二、建立控件数组方法: 1 复制现存控件: 在窗体上绘制控件数组中第一个元素的控件→设置它的名称属性→右键单击此对 象→复制→右击窗体→粘贴。 (重复复制操作) 将已存在的控件组成一个数组。 (同一类型的控件) 确定第一个元素→选定要包含在控件数组中的其它对象→将它的名称属性设置成和 第一个元素相同。 (重复此操作) 说明:1 控件数组中的每个元素下标为此控件的 index 属性值(≤32767) 控件数组中的每个控件共享一个事件过程。 2 创建同名控件 在控件面板中直接添加相同类型的控件到窗体上,将它们的名子都命名为同一个 名子时,系统将会提示你创建一个控件数组 三、应用举例使用控件数组实现字体格式的设置! 9.3 数组应用例题(根据时间可以选择一个讲!) 根据需要,选择 1-2 道下面的题目,给学生讲清楚算 法的思想!1 排序例 5-3 选择排序法 直接排序法Option Explicit Option Base 1 Private Sub CmdSort_Click() Dim Sort(10) As Integer, Temp As Integer Dim I As Integer, J As Integer Randomize For I = 1 To 10 Sort(I) = Int(Rnd * (100 - 1)) + 1 Text1 = Text1 & Str(Sort(I)) Next I For I = 1 To 9 For J = I + 1 To 10 If Sort(I) & Sort(J) Then Temp = Sort(I) Sort(I) = Sort(J) Sort(J) = Temp End If Next J Text2 = Text2 & Str(Sort(I)) Next I Text2 = Text2 & Str(Sort(10)) End SubOption Explicit Option Base 1 Private Sub CmdSort_Click() Dim Sort(10) As Integer, Temp As Integer Dim I As Integer, J As Integer Dim Pointer As Integer Randomize For I = 1 To 10 Sort(I) = Int(Rnd * (100 - 1)) + 1 Text1 = Text1 & Str(Sort(I)) Next I For I = 1 To 9 Pointer = I For J = I + 1 To 10 If Sort(Pointer) & Sort(J) Then Pointer = J End If Next J If I && Pointer Then Temp = Sort(I) Sort(I) = Sort(Pointer) Sort(Pointer) = Temp End If Text2 = Text2 & Str(Sort(I)) Next I Text2 = Text2 & Str(Sort(10)) End Sub2 查找例:5-4 顺序查找程序 (界面见 P105) 先介绍 For Each Cnext 结构的语句: Option Explicit Option Base 1 Dim Search As Variant Private Sub Cmd 生成数组_Click() Dim I As Integer, Element As Variant Search = Array(34, 12, 56, 81, 59, 83, 91, 26, 47) For Each Element In Search ?for each-next 结构语句见 P90 Text1 = Text1 & Str(Element) Next Element End Sub Private Sub Cmd 查找_Click() Dim I As Integer, Find As Integer Text2 = && Find = InputBox(&输入要查找的数&) For I = 1 To UBound(Search) If Search(I) = Find Then Exit For Next I If I &= UBound(Search) Then Text2 = &要查找的数& & Str(Search(I)) & &是 Search(& & Str(I) & &)& Else Text2 = &在数列中没有找到& & Str(Find) End If End Sub 例 5-5 二分查找程序: Option Explicit Option Base 1 Dim Search As Variant Private Sub Cmd 二分查找_Click() Dim Left As Integer, Right As Integer Dim Mid As Integer, Flg As Boolean Dim Find As Integer Find = InputBox(&输入要查找的数&) Left = 1: Right = UBound(Search) Flg = False Do While Left &= Right Mid = (Left + Right) / 2 If Search(Mid) = Find Then Flg = True Exit Do ElseIf Find & Search(Mid) Then Left = Mid + 1 Else Right = Mid - 1 End If Loop If Flg Then Text2 = &要查找的数& & Str(Find) & &在 Search(& & Str(Mid) & &) 中& Else Text2 = Str(Find) & &不在数组中& End If End Sub Private Sub Cmd 生成数据_Click() Dim V As Variant Search = Array(12, 17, 23, 28, 30, 39, 41, 46, 57, 61, 78, 83, 85, 89, 93) For Each V In Search Text1 = Text1 & Str(V) Next V End Sub
更多搜索:
All rights reserved Powered by
文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 vb计时器代码 的文章

 

随机推荐