




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 数组与过程 学习目标: u 掌握数组和过程的概念 u 掌握数组的定义和应用 u掌握sub过程和function过程的应用 u掌握过程的参数传递与过程的作用域 u了解shell函数 第4章 数组与过程 教学内容: 4.1 数组 4.2 过程 4.3 shell函数 4.1 数组数组的概念 u数组用于保存大量的、逻辑上有联系的数据 u数组的特点: 数据中的元素在类型上是一致的 数组元素在内存空间上是连续存放的 数组元素的引用可通过下标进行 数组在使用前必须要定义(声明) 返回目录 4.1 数组一维数组的定义和使用 1. 数组的定义(声明) dim 数组名(下界 to 上界) as 数据类型 例如: dim data(1 to 40) as integer 定义数组可以使用类型符 例, dim data%(1 to 40) 下界的默认值为0 例,dim salary(1000) as currency 通过数组名和下标可引用数组中的元素 例, data(25)=95 form1.print data(25) 返回目录 4.1 数组一维数组的定义和使用 说明-1: u数组定义后的初值:数值型数组各元素为0,逻辑型数组 各元素为false,字符串数组各元素为空串(“)。 u可同时声明几个数组,用逗号分隔,例如 dim a%(10 to 100), b(800) as long u定义数组时,下标的下界和上界值只能是常数或常数表 达式。下例的定义是错误的 n=100 : dim data(n) as integer u定义时,数组的上界值不得超出长整型范围,且数组的 上界值不得小于下界值。 返回目录 4.1 数组一维数组的定义和使用 说明-2: u数组的元素个数称为数组长度。 ulbound()、ubound()函数可测定数组的下界与上界值 例如: private sub form_click() dim a%(12 to 24) print lbound(a), ubound(a) end sub u用option base n可设定数组的默认下界 n的取值只能是0或1 设定方法:在代码窗口的通用声明段中输入 option base 0 或 option base 1 返回目录 4.1 数组一维数组的定义和使用 2. 数组元素的使用 通过数组名和下标 例4.1 private sub command1_click() dim data(5) as integer dim sum, i as integer for i = 1 to 5 输入5个数据到数组中 data(i) = inputbox(“输入第“ if i mod 5 = 0 then print next i end sub 返回目录 4.1 数组一维数组应用例题 例4.4 输入一组不重复的数据,找出最大值及其位置 private sub form_click() const length = 5 定义常量length作为数组最大下标 dim test%(length), i%, max%, l% for i = 1 to length 通过键盘输入给数组赋值 test(i) = inputbox(“输入第“ i = i + 1 next j print 打印换行 loop end sub 返回目录 接 上 页 for i = 1 to 100 print data(i); if i mod 7 = 0 then print next i 4.1 数组一维数组应用例题 例4.10 统计成绩分布 private sub form_click() dim n(10) as integer, i as integer, x as integer const m = 10 for i = 1 to m x = inputbox(“请输入“ + str(i) + “个学生的成绩“) x = int(x / 10) 也可写成x=x10 n(x) = n(x) + 1 next i print 100; “-“; 100; n(10) for i = 9 to 0 step -1 print 10 * i; “-“; 10 * i + 9; n(i) next i end sub 返回目录 4.1 数组排序问题 1. 选择法排序(n个数据升序) 先假设第1个数据最小,依次同第2、第3、第n个 数据进行比较,一旦第1个数据大于其它值则交换。这样, 第1轮比较完毕,找出了最小数据作为第1个数据。 以第2个数据为最小数据,依次同第3、第4、第n 个数据进行比较,若第2个数据大于其它值则交换。这样, 第2轮交换完毕,则找出第二小的数据作为第2个数据。 依此类推,第n-1轮比较将找出第n-1小的数据,剩下 的一个数据就是最大数,排列在最后。以6个数据为例: 返回目录 原始序列:30, 20, 10, 90, 50, 60 第1轮比较结果:10 | 30, 20, 90, 50, 60 第2轮比较结果:10, 20 | 30, 90, 50, 60 第3轮比较结果:10, 20, 30 | 90, 50, 60 第4轮比较结果:10, 20, 30, 50 | 90, 60 第5轮比较结果:10, 20, 30, 50, 60 | 90 4.1 数组排序问题 例4.11 用选择法完成10个随机数据的升序排序。 const n = 10 : dim d(n) as integer, i%, j%, t% randomize timer for i = 1 to n d(i) = rnd * 100: print d(i); 排序前的数据序列 next i print: print for i = 1 to n - 1 挑出前n-1个小的数 for j = i + 1 to n if d(i) d(j) then 数据元素交换 t = d(i) : d(i) = d(j) : d(j) = t end if next j next i for i = 1 to n 输出排序结果 print d(i); next i 返回目录 找最小数据作为第1个数据: i = 1 for j = 2 to n 这里2等价i+1 if d(1) d(j) then t = d(1): d(1) = d(j): d(j) = t end if next j 4.1 数组排序问题 2. 冒泡法排序(n个数据升序) 1)第1轮比较:从第1个元素开始,两两相邻比较到n-1,值 大的放在后面。比较完毕,最大的数成为第n个元素(沉底)。 2)第2轮比较:从第1个元素开始,两两相邻比较到n-2,值大 的放在后面。比较完毕,最大的数成为第n-1个元素。 3)依此类推,直至最后一次比较。 返回目录 第1轮比较: 原序列:30, 20, 10, 90, 50, 60 第1次比较结果:20, 30, 10, 90, 50, 60 第2次比较结果:20, 10, 30, 90, 50, 60 第3次比较结果:20, 10, 30, 90, 50, 60 第4次比较结果:20, 10, 30, 50, 90, 60 第5次比较结果:20, 10, 30, 50, 60, 90 第2轮比较: 原序列:20, 10, 30, 50, 60, 90 第1次比较结果:10, 20, 30, 50, 60, 90 第2次比较结果:10, 20, 30, 50, 60, 90 第3次比较结果:10, 20, 30, 50, 60, 90 第4次比较结果:10, 20, 30, 50, 60, 90 4.1 数组排序问题 例4.12 用冒泡法完成10个随机数的升序排序 const n = 10 : dim d(n) as integer, i%, j%, t% randomize timer for i = 1 to n d(i) = rnd * 100: print d(i); next i print: print for i = n - 1 to 1 step -1 大数逐个“沉底“ for j = 1 to i if d(j) d(j + 1) then t = d(j): d(j) = d(j + 1): d(j + 1) = t end if next j next i for i = 1 to n 输出排序结果 print d(i); next i 返回目录 4.1 数组排序问题 例4.13 private sub form_click() dim s_name(7) as string, s_age(7) as integer dim i%, j%, n% n = 7 s_name(1) = “李大明“ : s_age(1) = 18 s_name(2) = “王超“ : s_age(2) = 21 s_name(3) = “张弓“ : s_age(3) = 20 s_name(4) = “陈卫国“ : s_age(4) = 24 s_name(5) = “马太原“ : s_age(5) = 25 s_name(6) = “吴济贫“ : s_age(6) = 19 s_name(7) = “戴天“ : s_age(7) = 18 返回目录 对字符串数组s_name 和s_age赋值 转 下 页 4.1 数组排序问题 for i = 1 to n - 1 用选择法排序 for j = i + 1 to n if s_age(i) element(j) then t = element(i) element(i) = element(j) element(j) = t end if next j next i end sub 4.2 过程作用域 u变量的作用域指定义的变量能有效发挥其作用的范围。 u变量按其作用域可分为局部变量(过程级)、模块变量(模块 级)和全局变量(全局级) u对过程而言,也有模块级过程和全局级过程之分 1. 模块级过程 在一个窗体模块中以private定义的过程为模块级过程,可为 模块内的各个过程引用。 2. 全局级过程 在一个窗体模块中以public定义的过程为全局级过程,其他 窗体可通过“窗体模块名.过程名”引用;在标准模块中定义的全 局过程可直接通过过程名引用。 返回目录 4.2 过程作用域 例4.26 在标准模块中建立可将窗口居中安放的全局级过程, 窗体启动时即调用该过程。 (1) “工程添加模块”,添加标准模块 (2) 在标准模块代码窗口建立全局过程centeronsetupform 返回目录 4.2 过程作用域 (3) 编写form1窗体的load事件响应代码:一启动即调用过 程。 centeronsetupform 返回目录 4.3 shell函数 u作用:运行一个windows或dos可执行程序。如果程序存 在并且执行成功,则返回一个标识号(id),否则返回0。 u语法格式:shell(路径名,窗口方式) 例如, private sub command1_click() x = shell(“c:windowspbrush.exe“, 1) end sub 返回目录 见教材表4.1 上机内容: u练习:第四章课件例题 4.1 4.3 4.4 4.8 4.11 4.12 4.15 4.19 4.21 u网上提交作业: 1,生成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教师招聘之《幼儿教师招聘》题库高频难、易错点100题模拟试题及答案详解【新】
- 渔业养殖保险服务创新创业项目商业计划书
- 网络安全事件响应团队创新创业项目商业计划书
- 乳品品牌营销创新创业项目商业计划书
- 2025年教师招聘之《小学教师招聘》试题一及完整答案详解(易错题)
- 2025内蒙古呼伦贝尔陆港国际有限公司市场化选聘总经理、副总经理备考及1套参考答案详解
- 教师招聘之《小学教师招聘》考前冲刺分析及完整答案详解【网校专用】
- 押题宝典教师招聘之《小学教师招聘》模考模拟试题附参考答案详解【典型题】
- 2025年教师招聘之《幼儿教师招聘》每日一练试卷附参考答案详解(典型题)
- 反诈考试题库及答案
- 2025年市级科技馆招聘笔试重点
- 2025西电考试题及答案
- 泡茶的步骤课件
- 2025年先兆流产的护理查房
- 人教版(2024)八年级上册数学全册教案
- 2025年部编版新教材语文九年级上册教学计划(含进度表)
- (高清版)DB11∕T 2440-2025 学校食堂病媒生物防制规范
- GB/T 7324-2010通用锂基润滑脂
- 土地管理法(1986年版)
- 动物遗传学第十章遗传病的传递方式.ppt
- 延期缴纳税款申请报告申请延期缴纳税款报告2p.doc
评论
0/150
提交评论