PowerPoint Presentation



Similar documents
Chapter 16 集合

IsPostBack 2

Microsoft Word - 小心翼翼的二十一點N.doc

untitled

untitled

PowerPoint 演示文稿

untitled



从 因 人 设 事 谈 起 一 部 文 学 作 品 ( 尤 其 是 长 篇 小 说 ) 的 结 构 至 关 重 要, 因 为 它 是 文 本 整 体 的 组 织 方 式 和 内 部 构 造, 既 是 形 式 又 是 内 容 ; 乃 是 表 达 主 题 最 有 效 的 艺 术 手 段 元 代 戏 曲

循经指压疗法

Microsoft Word - HERBRECIPES《中國藥膳》.doc

毛主席的猪

附件1.FIT)

北魏山东佛教文化个案研究


untitled

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

VB程序设计教程

MVB-1001.DOC

2010年3月计算机等级考试四级网络工程师笔试

(\244j\257d\276\307\274\351_ C.indd_70%.pdf)

Microsoft Word - 第3章.doc

多層次傳銷與獎金系統

05 CHAPTER Information.IsNumeric ( ) Information.IsDate ( ) True False Date Date True False Y Y Information.IsArray ( ) True False Y Information.IsErr

黑 龙 江 省 哈 尔 滨 市 规 划 局 与 黑 龙 江 汇 丰 实 业 发 展 有 限 公 司 行 政 处 罚 纠 纷 上 诉 案 中 华 人 民 共 和 国 最 高 人 民 法 院 行 政 判 决 书 (1999) 行 终 字 第 20 号 上 诉 人 ( 原 审 被 告 ) 黑 龙 江 省

2016年5月11日泉鲤政文【2016】46号(关于调整区政府行政权力和公共服务事项的通知).doc

一 总 体 要 求 一 ) 严 格 把 握 定 义 地 方 政 府 融 资 平 台 是 指 出 地 方 政 府 自 资 设 立 并 承 担 连 带 还 款 责 任 的 机 关 事 业 企.l 三 类 法 人 ( 二 ) 完 善 " 名 单 制 " 管 理 各 银 行 要 继 旗 完 善 融 资 平


6寸PDF生成工具

Visual Basic D 3D

上市公司运作的法律框架及董事会秘书的法律义务和法律责任.ppt

毕业生就业政策读本

Microsoft PowerPoint - VB14.ppt

Microsoft Word - 黃馨瑩.doc

自 從 五 十 七 年 國 立 台 灣 師 範 大 學 藝 術 系 畢 業 以 後, 除 了 教 學 之 鯀, 在 藝 海 中 浮 浮 沉 自 序 自 序 小 時 候, 我 喜 歡 讀 課 外 書 隨 著 歲 月 的 流 逝, 讓 我 對 中 國 的 詩 詞 歌 賦 產 生 了 一 點 興 趣, 但

ThreeDtunnel.doc

览 过 往 的 艺 术 成 就, 不 但 能 够 贴 近 文 化 脉 动 的 伏 流, 也 启 迪 探 究 未 来 世 界 的 动 力 对 于 台 湾 的 历 史 叙 事, 从 美 术 和 建 筑 等 方 面 讲 起, 也 许 是 一 个 较 好 的 角 度, 让 我 感 受 到 台 湾 历 史 叙

学 习 贯 彻 中 央 尧 省 尧 市 纪 委 全 会 精 神 专 栏 中 国 共 产 党 第 十 八 届 中 央 纪 律 检 查 委 员 会 第 六 次 全 体 会 议 公 报 渊 2016 年 1 月 14 日 中 国 共 产 党 第 十 八 届 中 央 纪 律 检 查 委 员 会 第 六 次

Microsoft Word - 临政办发12.doc

中共山东省委高校工委

标题

目 录 第 一 部 分 国 家 知 识 产 权 局 概 况 一 主 要 职 能 二 部 门 预 算 单 位 构 成 第 二 部 分 国 家 知 识 产 权 局 2016 年 部 门 预 算 表 一 财 政 拨 款 收 支 总 表 二 一 般 公 共 预 算 支 出 表 三 一 般 公 共 预 算 基

ᄐ↓ᅯᄎ2015ᅣ↑ᄇ﾿ᅢᅤᅯ녜 ̄

科学技术部2013年度部门预算

一、二○○二年学校工作的简要回顾

Microsoft Word - 白俄罗斯公司法汉语译文2015年7月15日修改版.docx

第 一 部 分 中 国 气 象 局 职 责 及 概 况 一 主 要 职 责 ( 一 ) 拟 定 气 象 工 作 的 方 针 政 策 法 律 法 规 发 展 战 略 和 长 远 规 划 ; 制 定 发 布 气 象 工 作 的 规 章 制 度 技 术 标 准 和 规 范 并 监 督 实 施 ; 承 担

数学与统计学院教师支部“两学一做”学习教育实施计划

无 锡 职 业 技 术 学 院 国 有 资 产 管 理 办 法 第 一 章 总 则 第 一 条 为 加 强 学 校 国 有 资 产 管 理, 合 理 配 置 和 有 效 使 用 国 有 资 产, 确 保 国 有 资 产 安 全 与 完 整, 保 障 和 促 进 学 校 各 项 事 业 发 展, 根

省安委会2015冬防工作方案.doc

南 昌 大 学 人 力 资 源 工 作 简 讯 2015 年 第 2 期 ( 总 第 27 期 ) 目 录 1 人 力 资 源 综 合 信 息 2 人 员 调 配 及 机 构 编 制 管 理 信 息 3 劳 资 工 作 信 息 4 师 资 管 理 信 息 5 高 层 次 人 才 及 队 伍 建 设

国家邮政局2010年部门预算

国家邮政局2010年部门预算

11韶关市人力资源和社会保障局权责清单

三亚市政府投资建设项目代建制管理工作介绍

<4D F736F F D20C9FABBB7B9FAD6D CBB6CABFB8B4CAD4B7BDB0B8312E646F63>

目 录 一 部 门 职 责... 1 二 预 算 编 报 范 围... 3 三 2013 年 部 门 预 算 报 表 及 情 况 说 明... 5 收 支 预 算 总 表 及 情 况 说 明... 5 收 入 预 算 表 及 情 况 说 明... 7 支 出 预 算 表 及 情 况 说 明... 1

标题

目 录 一 重 要 提 示... 3 二 公 司 主 要 财 务 数 据 和 股 东 变 化... 3 三 重 要 事 项... 6 四 附 录 / 22

目 录 引 言... 3 第 一 部 分 电 价 水 平 基 本 情 况...4 一 上 网 电 价...4 二 输 配 电 价...6 三 销 售 电 价...9 四 政 府 性 基 金 和 附 加...12 第 二 部 分 电 价 政 策 执 行 情 况...13 一 电 价 水 平 调 整 情

西安邮电学院本科教学工作简报

密 级:

市六届人大--次

目 录 前 言 第 一 章 近 年 来 合 同 行 政 监 管 及 相 关 工 作 改 革 创 新 情 况 第 二 章 2014 年 合 同 行 政 监 管 及 相 关 工 作 情 况 第 一 节 合 同 格 式 条 款 监 管 一 银 行 业 电 信 业 合 同 格 式 条 款 专 项 整 治 二

中国文联部门预算


( 十 ) 其 他 会 计 工 作 第 四 条 单 位 不 得 任 用 ( 聘 用 ) 不 具 备 会 计 从 业 资 格 的 人 员 从 事 会 计 工 作 不 具 备 会 计 从 业 资 格 的 人 员, 不 得 从 事 会 计 工 作, 不 得 参 加 会 计 专 业 技 术 资 格 考 试

附 件 : 顺 德 区 2015 年 高 中 阶 段 学 校 招 生 考 试 工 作 意 见 根 据 佛 山 市 顺 德 区 教 育 事 业 发 展 十 二 五 规 划 2015 年 顺 德 区 教 育 工 作 意 见 的 文 件 精 神 和 上 级 教 育 主 管 部 门 工 作 要 求, 结 合

<C1ACD6DDCAD0CAD0B3A1BCE0B6BDB9DCC0EDBED6C8A8D4F0C7E5B5A5A3A8B9ABCABEA3A92E786C73>

Microsoft Word - Future CEDAW C CHN 7-8.doc


国家发展改革委法治机关建设规划( 年)

烟台经济技术开发区政府采购竞争性磋商文件

<4D F736F F D20342E31332D C4EACCECBDF2CAD0C6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FABFBCCAD4B9A4D7F7B9E6B6A82DCEC4BCFEB8E52E646F63>

2014 年 12 月 16 日 广 西 春 茂 投 资 股 份 有 限 公 司 ( 原 名 广 西 汽 牛 农 业 机 械 股 份 有 限 公 司, 以 下 简 称 春 茂 股 份 挂 牌 公 司 公 司 ) 召 开 2014 年 第 五 次 临 时 股 东 大 会, 通 过 向 特 定 对 象

四、实施步骤

Microsoft Word - 面向合格投资者公开发行公司债券上市预审核反馈意见公告(截至2015年10月8日)

律 师 执 业 必 须 以 事 实 为 根 据, 以 法 律 为 准 绳 律 师 执 业 应 当 接 受 国 家 社 会 和 当 事 人 的 监 督 律 师 依 法 执 业 受 法 律 保 护, 任 何 组 织 和 个 人 不 得 侵 害 律 师 的 合 法 权 益 第 四 条 司 法 行 政 部

(Microsoft Word - \270t\270g\254\354\305\252\270g\274\372\300y\255p\271\ docx)

自 觉 实 践 科 学 发 展 观, 扎 实 推 进 管 理 服 务 工 作 四 川 大 学 档 案 馆 ( 校 史 办 公 室 )2007 年 上 半 年 工 作 总 结 2007 年 上 半 年, 四 川 大 学 档 案 馆 ( 校 史 办 公 室 ) 在 学 校 党 委 行 政 领 导 和 上

2014


第 一 部 分 广 州 市 广 播 电 视 大 学 概 况 一 学 校 的 主 要 任 务 和 业 务 范 围 根 据 市 编 委 的 批 复, 广 州 市 广 播 电 视 大 学 为 市 局 级 事 业 单 位, 归 口 市 教 育 局 管 理 主 要 承 担 以 下 任 务 : ( 一 ) 承

Microsoft Word - 关于印发《云南保险业高级管理人员任职资格考试办法》的通知

<4D F736F F D20CBD5D6DDBFC6BCBCD1A7D4BAB8DFB5C8D1A7D0A3BDCCCAA6D7CAB8F1C8CFB6A8B9A4D7F7CAB5CAA9D2E2BCFB2E646F63>

自评报告合成.doc

第一部分 界定和测量歧视


一 前 言 2 作 為 我 國 儒 家 經 典 及 十 三 經 之 一, 孟 子 流 傳 千 年 不 輟, 足 以 證 明 其 對 中 華 文 化 的 重 要 性 與 影 響 力, 除 了 道 德 文 化 意 識 的 開 發, 也 弘 揚 仁 政 王 道 的 政 治 觀, 大 多 數 人 都 肯 定

法 工 作 计 划 滨 州 市 安 全 生 产 监 督 管 理 局 2016 年 2 月 4 日 ( 此 件 主 动 公 开 ) 2


附件3

关于印发西北政法大学“十二五”

君泰所 稿纸

的 权 利 义 务, 依 照 本 法 在 基 金 合 同 中 约 定 基 金 管 理 人 基 金 托 管 人 依 照 本 法 和 基 金 合 同 的 约 定, 履 行 受 托 职 责 通 过 公 开 募 集 方 式 设 立 的 基 金 ( 以 下 简 称 公 开 募 集 基 金 ) 的 基 金 份

关 于 建 立 失 联 ( 异 常 ) 私 募 机 构 公 示 制 度 的 通 知 私 募 基 金 登 记 备 案 相 关 问 题 解 答

000545C.DOC

世界上最伟大的推销员.doc

Transcription:

Visual Basic 2005 學 習 範 本 第 7 章 陣 列 的 活 用

7-1 陣 列 當 我 們 需 要 處 理 資 料 時, 都 使 用 變 數 來 存 放 資 料 因 為 一 個 變 數 只 能 代 表 一 個 資 料, 若 需 要 處 理 100 位 同 學 的 成 績 時, 便 要 使 用 100 個 不 同 的 變 數 名 稱, 這 不 但 會 增 加 變 數 名 稱 命 名 上 的 困 擾, 在 處 理 這 些 變 數 時 也 會 增 加 程 式 的 長 度 以 及 造 成 程 式 維 護 以 及 偵 錯 上 的 困 難 所 幸,Visual Basic 語 言 另 外 提 供 - 陣 列 資 料 型 別 陣 列 (Array) 用 來 記 錄 一 群 同 性 質 的 資 料 透 過 陣 列 我 們 可 以 用 同 一 個 陣 列 名 稱 但 不 同 的 索 引 指 標 ( 或 稱 為 索 引 註 標 ), 分 別 來 代 替 同 性 質 不 同 的 變 數 陣 列 的 基 本 原 理 是 來 自 數 學 中 的 矩 陣 所 謂 陣 列 就 是 一 群 資 料 型 別 相 同 的 變 數, 在 主 記 憶 體 中 能 擁 有 連 續 存 放 空 間 的 集 合 7-2

例 如 : 我 們 想 記 錄 50 位 學 生 的 成 績, 便 宣 告 一 個 score(49) 的 整 數 陣 列, 其 中 score 是 陣 列 名 稱 此 時 在 主 記 憶 體 中 會 保 留 50 個 連 續 位 置 來 存 放 score(0)~score(49) 等 陣 列 元 素, 我 們 可 以 利 用 來 存 放 50 位 同 學 成 績 陣 列 中 每 個 元 素 相 當 於 一 個 變 數, 在 陣 列 中 存 取 變 數 只 需 要 指 定 索 引 指 標 就 可 以 通 常 為 方 便 程 式 處 理, 會 以 座 號 當 作 陣 列 的 索 引 指 標, 但 因 為 索 引 指 標 是 由 0 開 始, 所 以 要 記 得 減 1 由 於 陣 列 的 索 引 指 標 也 可 以 使 用 變 數 當 索 引 指 標 ( 如 score(x)), 因 此 配 合 計 數 For 廻 圈, 不 但 可 以 免 除 為 大 量 變 數 命 名 的 困 擾, 而 且 使 得 程 式 碼 的 撰 寫 將 更 簡 潔 而 有 效 率 7-2

7-2 陣 列 的 宣 告 與 使 用 一 一 般 陣 列 的 宣 告 方 法 陣 列 在 使 用 之 前 必 須 先 宣 告, 宣 告 的 目 的 在 決 定 主 記 憶 體 應 保 留 多 少 個 連 續 空 間 給 此 陣 列 使 用, 並 定 出 陣 列 中 每 一 個 元 素 的 資 料 型 別 陣 列 宣 告 完 畢 後, 才 能 透 過 索 引 指 標 來 存 取 陣 列 中 的 資 料 語 法 :Dim arrayname (index1 [, index2 [..]]) As type 功 能 : 宣 告 一 維 ( 二 維 ) 陣 列 並 指 定 陣 列 所 存 取 的 資 料 型 別 說 明 1. arrayname: 代 表 陣 列 名 稱, 其 命 名 方 式 和 識 別 字 命 名 一 樣 2. index: 為 索 引 指 標 可 為 常 數 變 數 或 運 算 式 等, 只 有 一 個 index 時 稱 為 一 維 陣 列 ; 若 有 二 個 index 時 稱 為 二 維 陣 列 ; 以 此 類 推 3.index 範 圍 由 0 ~ index 為 止 譬 如 :Dim a(5) As Integer, 可 定 義 出 a(0) a(1) a(2) a(3) a(4) a(5) 共 6 個 元 素 7-3

範 例 例 1 一 班 有 30 人, 使 用 整 數 陣 列 來 存 放 學 生 的 英 文 成 績 Dim score (29) As Integer 即 score(0) - score(29) 代 表 1-30 號 的 學 生 英 文 成 績 例 2 一 年 級 有 一 二 兩 班 各 30 人, 使 用 整 數 陣 列 來 存 放 英 文 學 期 成 績 Dim score (1, 29) As Integer 即 score(1,20) 代 表 二 班 21 號 的 學 生 英 文 成 績 7-3~4

範 例 例 3 一 班 有 30 人, 使 用 整 數 陣 列 來 存 放 學 生 的 英 文 成 績 共 有 三 個 年 級, 每 個 年 級 有 一 二 兩 班 各 30 人, 使 用 整 數 陣 列 來 存 放 英 文 的 學 期 成 績 Dim score (2, 1, 29) As Integer 即 score(1,0,15) 代 表 二 年 一 班 16 號 的 學 生 英 文 成 績 7-4

一 一 般 陣 列 的 宣 告 方 法 說 明 4. As type 宣 告 一 個 陣 列 的 資 料 型 別 是 很 重 要 的, 必 須 視 要 處 理 資 料 的 值 有 多 大, 再 宣 告 合 適 的 資 料 形 別 陣 列, 以 免 陣 列 佔 用 太 多 的 主 記 憶 體 空 間 As Integer: 將 該 陣 列 宣 告 為 整 數 陣 列, 也 就 是 說 該 陣 列 內 每 個 元 素 的 資 料 型 別 都 設 為 整 數 譬 如 :Dim score(30) As Integer 表 示 宣 告 一 個 名 稱 為 score 的 整 數 陣 列, 有 score(0)-score(30) 共 31 個 陣 列 元 素, 每 個 元 素 能 存 放 資 料 的 有 效 範 圍 介 於 - 2,147,483,648~2,147,483,647 之 間 的 整 數 As Single: 將 該 陣 列 宣 告 為 倍 精 確 度 陣 列 譬 如 :Dim score(30) As Single 宣 告 一 維 倍 精 確 度 陣 列, 可 處 理 含 有 小 數 的 資 料 As Double: 將 該 陣 列 宣 告 為 倍 精 確 度 陣 列 譬 如 :Dim score(30) As Double 宣 告 一 維 倍 精 確 度 陣 列, 可 處 理 含 有 小 數 的 資 料 As String: 將 該 陣 列 宣 告 為 字 串 陣 列, 也 就 是 說 該 陣 列 內 每 個 元 素 的 資 料 型 態 都 設 為 字 串 譬 如 :Dim s_name(2, 30) As String 宣 告 二 維 字 串 陣 列, 可 處 理 含 有 字 串 的 資 料 As Object: 將 該 陣 列 宣 告 為 物 件 陣 列 譬 如 :Dim s_name(2, 30) As Object 宣 告 二 維 Object 物 件 型 別 陣 列, 在 程 式 執 行 時, 陣 列 中 的 每 個 元 素 都 可 以 接 受 任 何 資 料 型 別 的 資 料 7-4~5

一 一 般 陣 列 的 宣 告 方 法 說 明 5. 陣 列 宣 告 後 若 未 賦 予 初 值, 則 數 值 陣 列 中, 所 有 的 元 素 預 設 值 皆 為 零 字 串 陣 列 中, 所 有 的 元 素 預 設 值 皆 為 空 字 串 物 件 (Object) 資 料 型 態 陣 列 中, 所 有 的 元 素 預 設 值 皆 為 空 值 (Empty) 6. 陣 列 的 元 素 亦 可 以 和 相 同 型 別 的 變 數 或 陣 列 元 素 做 各 種 運 算 如 : score (3) = score(2) + y 7. 陣 列 若 僅 在 自 己 所 屬 的 程 序 中 使 用, 只 要 在 使 用 前 在 該 程 序 內 先 宣 告 即 可, 如 此 該 陣 列 則 屬 區 域 陣 列 離 開 該 程 序 時 該 陣 列 自 動 釋 放 若 陣 列 需 要 給 同 一 表 單 中 所 有 的 程 序 共 用, 該 陣 列 就 必 須 在 表 單 檔 程 式 碼 最 上 方 宣 告, 如 此 該 陣 列 則 屬 全 域 陣 列 7-5

例 陣 列 宣 告 方 式 及 簡 單 使 用 情 形 Dim score(3) As Integer ' 宣 告 整 數 陣 列 Dim i, total As Integer Dim avg As Single score(0) = 97 : score(1) = 82 ' 設 定 陣 列 元 素 內 容 值 score(2) = 55 : score(3) = 67 total = 0 For i = 0 To 3 total += score(i) ' 累 計 陣 列 內 所 有 元 素 的 數 值 Next i avg = total / 4 ' 計 算 陣 列 內 所 有 元 素 內 容 平 均 值 7-6

二 指 定 初 值 的 陣 列 宣 告 方 式 陣 列 可 以 在 宣 告 陣 列 型 態 的 同 時, 一 併 設 定 各 陣 列 元 素 的 初 值 語 法 :Dim arrayname() As type = {initiationlist} 功 能 : 宣 告 陣 列 並 指 定 陣 列 元 素 的 初 值 說 明 initiationlist: 為 陣 列 元 素 初 值 設 定, 若 串 列 的 個 數 超 過 兩 個, 中 間 必 須 以 逗 號 分 隔 例 宣 告 s_name 為 字 串 陣 列 並 同 時 給 予 元 素 初 值 Dim s_name() As String = {" 張 三 ", " 李 四 ", " 王 五 ", " 周 六 "} 結 果 : s_name(0) = " 張 三 " s_name(1) = " 李 四 " s_name(2) = " 王 五 " s_name(3) = " 周 六 " 7-6

三 陣 列 索 引 指 標 的 上 下 界 值 宣 告 陣 列 時, 下 界 的 index 值 皆 由 0 開 始 算 起, 而 上 界 的 索 引 指 標 可 以 由 UBound 函 數 取 得, 語 法 如 下 : 語 法 :LBound (arrayname [, dimension]) 功 能 : 取 得 陣 列 之 某 一 維 的 索 引 指 標 下 界 值 語 法 :UBound (arrayname [, dimension]) 功 能 : 取 得 陣 列 之 某 一 維 的 索 引 指 標 上 界 值 說 明 1.LBound 函 數 的 傳 回 值 為 陣 列 某 一 維 的 索 引 指 標 下 界 值, 因 陣 列 的 下 界 索 引 指 標 均 由 0 開 始 算 起, 故 LBound 函 數 的 傳 回 值 恆 為 0 2.UBound 函 數 的 傳 回 值 為 陣 列 某 一 維 的 索 引 指 標 上 界 值 3.dimension( 維 數 ): 若 為 1 則 代 表 一 維 2 則 代 表 二 維, 若 省 略 此 參 數, 預 設 為 一 維 7-7

例 宣 告 Dim score(3, 15, 20) As String 後 UBound(score) 的 傳 回 值 為 3( 第 一 維 的 索 引 指 標 上 界 值 ) UBound(score, 2) 的 傳 回 值 為 15( 第 二 維 的 索 引 指 標 上 界 值 ) UBound(score, 3) 的 傳 回 值 為 20( 第 三 維 的 索 引 指 標 上 界 值 ) LBound(score) 的 傳 回 值 為 0 ( 第 一 維 的 索 引 指 標 下 界 值 ) 7-6

四 For Each...Next 陣 列 迴 圈 Visual Basic 提 供 For Each Next 陣 列 廻 圈, 透 過 陣 列 元 素 的 數 目, 電 腦 自 行 決 定 迴 圈 內 的 敘 述 區 段 重 覆 執 行 的 次 數 語 法 :For Each variable In arrayname [statements] ( 敘 述 區 段 ) [Exit For] [statements] ( 敘 述 區 段 ) Next 功 能 : 以 所 指 定 的 陣 列 元 素 數 目, 去 重 複 執 行 某 個 敘 述 區 段 說 明 1.variable: 是 用 來 逐 一 存 放 陣 列 元 素 內 容 的 變 數, 故 該 變 數 所 宣 告 的 資 料 型 別 要 和 陣 列 的 資 料 型 別 一 致 2. 陣 列 元 素 的 個 數 決 定 迴 圈 內 的 敘 述 區 段 (statements) 重 覆 執 行 的 次 數 3. 每 次 進 入 迴 圈, 陣 列 元 素 會 依 序 將 元 素 內 容 指 定 給 variable( 變 數 ), 當 所 有 元 素 皆 讀 完 後, 系 統 會 執 行 緊 接 在 Next 後 面 的 敘 述 例 將 money 陣 列 中 的 元 素 加 總 For Each m in money total += m Next 7-8

範 例 7_2_1 使 用 者 輸 入 國 文 英 文 數 學 社 會 自 然 等 五 科 成 績 後, 列 出 平 均 分 數 和 五 科 中 的 最 高 分 執 行 結 果 7-8

編 寫 程 式 碼 第 2 行 : 宣 告 subject 字 串 陣 列, 並 同 時 給 予 陣 列 初 始 值 第 3 行 : 宣 告 score 整 數 陣 列, 陣 列 大 小 為 5 第 5-7 行 : 使 用 For 迴 圈 將 使 用 者 輸 入 的 成 績, 依 序 存 入 score 陣 列 中 7-9 第 10-13 行 : 使 用 For Each 迴 圈 將 score 陣 列 的 元 素 依 序 取 出, 求 出 最 大 值 和 總 分 第 14 行 : 利 用 UBound 函 數 得 知 score 陣 列 索 引 指 標 的 上 界 值, 計 算 出 平 均 分 數

7-3 二 維 陣 列 一 個 陣 列 若 具 有 兩 個 索 引 稱 為 二 維 陣 列 ; 若 具 有 三 個 索 引 稱 為 三 維 陣 列 以 此 類 推 下 去 二 維 陣 列 的 應 用 十 分 廣 泛, 如 數 學 的 矩 陣 學 校 中 學 生 的 成 績 單 甚 至 貿 易 公 司 的 銷 售 業 績 表 股 票 行 情 表 等, 這 些 都 需 要 使 用 二 維 陣 列 來 處 理 我 們 可 以 將 二 維 陣 列 視 為 由 列 (Row) 和 欄 (Column) 組 合 而 成 的 資 料 表 (Data Table), 如 下 表 所 示, 代 表 某 個 公 司 北 中 南 三 個 分 公 司 每 個 營 業 處 的 銷 售 金 額 表, 其 中 第 1 列 第 2 欄 的 資 料 2300, 即 為 台 中 分 公 司 第 三 營 業 處 的 業 績 第 一 處 第 二 處 第 三 處 第 四 處 台 北 分 公 司 1000 2200 4300 4800 第 0 列 台 中 分 公 司 2000 5200 2300 1500 第 1 列 高 雄 分 公 司 4700 1300 800 2800 第 2 列 第 0 欄 第 1 欄 第 2 欄 第 3 欄 7-10

二 維 陣 列 分 別 以 列 和 欄 來 代 表 兩 個 索 引, 索 引 之 間 以, 號 分 開, 其 宣 告 方 式 如 下 : 語 法 :Dim arrayname (index1,index2) As type 功 能 : 宣 告 為 二 維 陣 列 例 1 Dim amt(2, 3) As Integer 例 2 Dim amt(,) As integer = {{1000, 2200, 4300, 4800}, _ {2000, 5200, 2300, 1500}, {4700, 1300, 800, 2800}} 7-10

第 一 處 第 二 處 第 三 處 第 四 處 台 北 分 公 司 1000 2200 4300 4800 第 0 列 台 中 分 公 司 2000 5200 2300 1500 第 1 列 高 雄 分 公 司 4700 1300 800 2800 第 2 列 第 0 欄 第 1 欄 第 2 欄 第 3 欄 上 表 中 分 公 司 各 營 業 處 使 用 amt 二 維 整 數 陣 列, 兩 索 引 指 標 由 0 開 始, 它 具 有 3*4=12 個 陣 列 元 素 陣 列 元 素 的 對 應 索 引 指 標 如 下 圖 所 示 : 第 一 處 第 二 處 第 三 處 第 四 處 台 北 分 公 司 amt(0,0) amt(0,1) amt(0,2) amt(0,3) 台 中 分 公 司 amt(1,0) amt(1,1) amt(1,2) amt(1,3) 高 雄 分 公 司 amt(2,0) amt(2,1) amt(2,2) amt(2,3) 其 中 amt(1,2) 的 內 容 表 示 台 中 分 公 司 第 三 營 業 處 的 銷 售 金 額, 即 amt(1,2)=2300 7-11

範 例 7_3_1 使 用 者 輸 入 兩 位 同 學 的 國 文 英 文 數 學 等 三 科 成 績 後, 列 出 同 學 的 各 科 成 績 和 總 分 結 果 7-11

編 寫 程 式 碼 第 4 行 : 宣 告 score(1, 3) 來 存 放 兩 人 三 科 和 總 分 成 績 第 6-10 行 : 用 巢 狀 迴 圈 讓 使 用 輸 入 成 績, 並 存 在 相 對 的 陣 列 元 素 中 第 12-18 行 : 計 算 個 人 成 績 總 和, 並 存 在 score(n,3) 陣 列 元 素 中 7-11~12

編 寫 程 式 碼 第 19-31 行 : 取 出 陣 列 元 素 來 顯 示 成 績 報 表, vbtab 可 以 讓 字 串 跳 到 下 一 個 定 位 點, 以 便 讓 表 格 中 資 料 對 齊 7-11~12

7-4 靜 態 陣 列 與 動 態 陣 列 陣 列 的 宣 告 方 式 有 兩 種 : 靜 態 陣 列 和 動 態 陣 列 若 是 使 用 靜 態 陣 列 的 宣 告 方 式, 系 統 會 在 主 記 憶 體 內 保 留 連 續 位 址 給 該 陣 列 使 用, 直 到 程 式 結 束 後 才 釋 放 記 憶 體 空 間 小 規 模 的 程 式 內 使 用 靜 態 陣 列, 對 程 式 或 系 統 不 會 造 成 影 響, 但 若 是 在 較 具 規 模 的 大 程 式 內 使 用 太 多 的 靜 態 陣 列, 會 增 加 記 憶 體 及 CPU 的 負 荷 嚴 重 時 會 影 響 的 電 腦 的 執 行 速 度 或 造 成 電 腦 當 機 要 避 免 陣 列 一 直 佔 用 記 憶 體, 就 得 使 用 動 態 陣 列 動 態 陣 列 是 指 該 陣 列 在 程 式 執 行 時 系 統 未 立 即 配 置 記 憶 空 間 給 該 陣 列, 而 是 等 到 程 式 的 流 程 到 需 要 使 用 該 陣 列 時, 系 統 才 配 置 記 憶 體 給 該 陣 列, 而 在 該 陣 列 使 用 完 畢 時, 也 可 以 將 該 陣 列 所 佔 用 的 記 憶 體 釋 放 掉, 以 供 其 他 資 料 使 用 7-13

一 宣 告 動 態 陣 列 宣 告 動 態 陣 列 的 方 法 有 下 列 兩 種 : 1. 在 程 序 中 以 Dim 來 宣 告 有 維 數 的 區 域 陣 列, 例 如 : Dim arr(10) As Integer 在 程 序 中 Dim 敘 述 不 可 對 同 一 陣 列 名 稱 重 複 宣 告 此 方 式 所 宣 告 的 陣 列, 在 該 程 序 被 執 行 時, 系 統 會 立 即 配 置 記 憶 體 給 該 陣 列, 一 旦 該 程 序 結 束 時, 系 統 立 即 釋 放 該 陣 列 所 佔 用 的 記 憶 體 2. 先 用 Dim 來 宣 告 大 小 為 0 的 陣 列, 然 後 用 ReDim 宣 告 陣 列 大 小, 例 如 : Dim st(0) As String 或 Dim st(0,0) As String 注 意 一 維 陣 列 的 宣 告 可 以 省 略 0, 如 : Dim st() As String ReDim st(3) 或 ReDim st(3,5) ReDim 敘 述 的 宣 告 方 法 與 Dim 敘 述 相 同 在 程 序 中 ReDim 敘 述 可 對 同 一 陣 列 名 稱 重 複 宣 告, 但 維 數 不 能 改 變, 只 能 改 變 重 新 配 置 陣 列 的 元 素 數 目 7-13~14

例 認 識 ReDim 的 使 用 方 法 : 1 Dim i, arr() As Integer ' 宣 告 一 維 的 動 態 陣 列 arr 2 ReDim arr(5) 配 置 6 個 元 素 ' 指 定 陣 列 元 素 內 容, 使 arr(0)~arr(5) 依 序 為 0 2 4 6 8 10 3 For i = 0 To UBound(arr) 4 arr(i) = i * 2 5 Next i 6 ReDim arr(10) ' 重 設 陣 列 大 小, 配 置 11 個 元 素, 每 個 元 素 預 設 值 為 0 7-13~14

二 保 留 陣 列 先 前 的 元 素 內 容 使 用 ReDim 來 重 新 設 定 動 態 陣 列 的 元 素 數 目 時, 系 統 會 先 將 陣 列 釋 放 掉 再 建 立, 造 成 原 來 存 放 在 陣 列 元 素 內 的 內 容 也 被 清 除 掉 了 若 在 使 用 ReDim 時, 加 入 Preserve 關 鍵 字, 則 可 保 留 相 同 索 引 指 標 的 元 素 內 容 Preserve 只 適 用 於 一 維 動 態 陣 列 例 了 解 Preserve 的 使 用 情 形 : 1 Dim i, arr(0) As Integer ' 宣 告 一 維 的 動 態 陣 列 arr 2 ReDim arr(5) 配 置 6 個 元 素 ' 指 定 陣 列 元 素 內 容, 使 arr(0)~arr(5) 依 序 為 0 2 4 6 8 10 4 For i = 0 To UBound(arr) 5 arr(i) = i * 2 6 Next i 7 ReDim Preserve arr(10) ' 重 設 陣 列 大 小, 配 置 11 個 元 素, 但 保 留 arr(0)~arr(5) 原 來 的 內 容 本 例 中 重 設 大 小 後 的 陣 列 元 素 內 容, 依 序 是 arr(0)=0 arr(1)=2 arr(2)=4 arr(3)=6 arr(4)=8 arr(5)=10, 但 arr(6)~arr(10) 的 內 容 皆 為 0 7-14

三 宣 告 靜 態 陣 列 在 宣 告 區 以 Static 來 宣 告 維 數 大 小 固 定 的 靜 態 陣 列, 如 : Static num(20) As Single 用 Static 所 宣 告 的 靜 態 陣 列, 在 程 式 執 行 期 間, 一 直 佔 用 被 配 置 的 記 憶 空 間, 所 以 下 一 次 再 呼 叫 同 一 程 序 中, 都 可 以 讀 取 該 陣 列 各 元 素 原 有 內 容 7-15

四 清 除 陣 列 程 式 執 行 時, 可 使 用 ReDim 敘 述 重 新 設 定 陣 列 的 大 小 並 清 除 陣 列 元 素 內 容, 但 清 除 陣 列 也 可 使 用 Erase 敘 述 Erase 語 法 如 下 : 語 法 :Erase arrayname 功 能 : 清 除 陣 列, 並 將 所 佔 據 之 記 憶 體 釋 放 掉 1.Erase 敘 述 將 陣 列 從 主 記 憶 體 中 完 全 清 除 2. 若 在 同 一 程 序 中 還 要 再 使 用 被 Erase 的 陣 列, 則 須 再 用 ReDim 來 宣 告 例 了 解 Erase 的 使 用 情 形 : 1 Dim arr(3) As Integer ' 宣 告 陣 列 arr 2 arr(2) = 100 3 Erase arr ' 清 除 陣 列 arr 4 ReDim arr(4) ' 重 新 宣 告 陣 列 arr 5 arr(4) = 200 7-15

範 例 7_4_1 比 較 用 Static 所 宣 告 的 靜 態 陣 列 x, 和 Dim 宣 告 的 動 態 陣 列 y 的 不 同 結 果 7-16

編 寫 程 式 碼 第 4-17 行 : 程 式 執 行 三 次, 每 次 都 重 新 宣 告 靜 態 陣 列 x 和 動 態 陣 列 y 第 8 行 : 設 靜 態 陣 列 x 值 為 原 值 加 上 i+1 第 13 行 : 設 動 態 陣 列 y 值 為 原 值 加 上 i+1 由 執 行 結 果 發 現, 靜 態 陣 列 重 新 宣 告 後 仍 會 保 留 原 陣 列 值 ; 而 動 態 陣 列 重 新 宣 告 後 元 素 值 歸 零 7-16~17

7-5 陣 列 的 常 用 方 法 每 個 陣 列 均 繼 承 自 System.Array 類 別,Array 類 別 提 供 一 些 有 用 的 方 法 可 以 處 理 陣 列, 下 面 介 紹 一 些 常 用 的 方 法 一 Sort 方 法 Sort 方 法 可 以 快 速 而 且 簡 單 地 將 一 維 陣 列 的 元 素, 由 小 排 列 到 大 排 序 語 法 :Array.Sort (arrayname) 功 能 : 將 指 定 一 維 陣 列 的 元 素 值 由 小 到 大 遞 增 排 列 例 有 一 score 整 數 陣 列, 使 用 Sort 方 法 排 序 Dim score () As Integer ={98,78,85,64} Array.Sort(score) 說 明 排 序 後 score 陣 列 值 為 {64,78,85, 98} 7-17

二 Reverse 方 法 Reverse 方 法 可 以 將 一 維 陣 列 的 元 素 反 轉 排 列, 也 就 是 第 一 個 變 成 最 後 一 個 元 素 如 果 先 用 Sort 方 法 排 序 再 用 Reverse 方 法, 就 可 以 達 到 降 冪 排 序 的 效 果 語 法 :Array. Reverse (arrayname) 功 能 : 將 指 定 一 維 陣 列 的 元 素 值 反 轉 排 列 例 有 一 score 陣 列, 使 用 Reverse Sort 方 法 排 列 Dim score () As Integer ={98,78,85,64} Array. Reverse (score) score={64,85,78,98 } Array.Sort(score) score={64,78,85,98 } Array. Reverse (score) score={98,85,78,64 } 7-18

三 IndexOf 方 法 IndexOf 方 法 可 以 由 一 維 陣 列 中, 由 指 定 的 索 引 指 標 元 素 開 始, 搜 尋 出 符 合 指 定 物 件 的 元 素, 並 傳 回 第 一 個 相 符 元 素 的 索 引 指 標 語 法 :Array. IndexOf (arrayname,object [,index]) 功 能 : 傳 回 一 維 陣 列 由 指 定 索 引 指 標 開 始, 符 合 指 定 物 件 的 元 素 索 引 指 標 說 明 index 可 以 省 略, 省 略 時 就 由 索 引 指 標 0 開 始 搜 尋 例 1 由 score 陣 列 中, 找 出 第 1 個 59 index = Array.IndexOf(score,59) 例 2 由 score 陣 列 中, 找 出 所 有 59 的 元 素 Do index = Array.IndexOf(score,59,index+1) Loop While index>=0 說 明 Array.IndexOf(score,59,index+1), 表 示 由 索 引 指 標 index+1 開 始 搜 尋 7-18~19

7-6 清 單 方 塊 ListBox 清 單 方 塊 (ListBox) 控 制 項 主 要 是 用 來 製 作 一 連 串 的 清 單 選 項, 以 供 使 用 者 從 清 單 中 選 取 所 要 的 項 目 一 建 立 清 單 方 塊 控 制 項 1. 在 工 具 箱 中 選 取 清 單 方 塊 工 具 2. 移 指 標 至 表 單, 按 住 滑 鼠 左 鍵 拖 曳 拉 出 適 當 大 小 後, 放 開 左 鍵 3. 在 屬 性 視 窗 中 Items 屬 性 的 鈕 上 按 一 下, 出 現 字 串 集 合 編 輯 器 對 話 方 塊 4. 在 輸 入 框 內 逐 行 輸 入 選 項, 每 輸 入 一 個 選 項 完 畢 就 按 Enter 鍵 移 到 下 一 行 繼 續 輸 入 下 一 個 項 目 5. 所 有 項 目 都 輸 入 完 畢 後, 按 確 定 鈕 就 完 成 ListBox 清 單 控 制 項 中 項 目 的 設 定 7-19

二 清 單 方 塊 常 用 的 屬 性 屬 性 說 明 Text 在 清 單 方 塊 中 被 選 取 的 選 項 文 字 SelectedIndex 在 清 單 方 塊 中 被 選 取 選 項 的 索 引 指 標 若 是 第 一 個 選 項, 則 索 引 指 標 為 0; 第 二 個, 為 1; 第 三 個, 為 2; Items 清 單 方 塊 內 所 有 選 項 內 容 之 集 合 體 Sorted 清 單 方 塊 內 的 選 項 以 字 母 順 序 排 序 MultiColumns SelectionMode 設 定 清 單 方 塊 內 選 項 是 否 多 欄 顯 示, 預 設 值 為 False 設 定 在 清 單 方 塊 中 選 取 選 項 的 方 式 : None- 沒 有 選 取 功 能 One- 只 能 選 取 其 中 一 個 選 項 ( 預 設 值 ) MultiSimple- 能 配 合 Ctrl 鍵 做 簡 單 的 多 重 選 擇 MultiExtended- 能 配 合 Ctrl Shift 鍵 做 複 雜 的 多 重 選 擇 7-20

三 Items 屬 性 的 用 法 所 謂 清 單 就 是 能 提 供 選 項 供 使 用 者 選 取, 而 清 單 方 塊 內 的 選 項 文 字 之 建 立 新 增 移 除 選 項 數 量 統 計 等 方 法, 皆 須 賴 Items 屬 性 來 完 成 1. 在 設 計 階 段 中 建 立 清 單 方 塊 內 的 選 項 文 字, 方 法 如 前 面 所 述 2. 在 執 行 階 段 中 新 增 清 單 方 塊 內 的 選 項, 其 語 法 如 下 : 語 法 :ListBoxname.Items.Add(string) 功 能 : 在 清 單 方 塊 選 項 後 面 再 新 增 選 項 說 明 string: 為 字 串 變 數 或 字 串 資 料 若 清 單 方 塊 內 尚 未 建 立 任 何 選 項 文 字, 則 所 新 增 的 選 項 會 成 為 清 單 內 的 第 一 個 選 項 例 在 ListBox1 清 單 方 塊 中 再 新 增 三 個 選 項, 其 寫 法 如 下 : Dim i As Integer Dim item_name() As String = {" 咖 啡 ", " 綠 茶 ", " 豆 漿 "} For i = 0 To 2 ListBox1.Items.Add(item_name(i)) Next i 7-21

三 Items 屬 性 的 用 法 3. 在 執 行 階 段 中 移 除 清 單 方 塊 內 指 定 的 選 項, 其 語 法 如 下 : 語 法 :ListBoxname.Items. Remove(string) 功 能 : 由 清 單 方 塊 選 項 中 移 除 指 定 選 項 說 明 string: 為 清 單 方 塊 內 的 選 項 內 容 例 1: 移 除 ListBox1 清 單 方 塊 中 選 項 內 容 為 汽 水 的 選 項, 其 寫 法 如 下 : ListBox1.Items.Remove( 汽 水 ) 例 2: 移 除 ListBox1 清 單 方 塊 中 目 前 選 取 的 選 項, 其 寫 法 如 下 : ListBox1.Items.Remove(ListBox1.SelectedItem) 7-21

三 Items 屬 性 的 用 法 4. 在 執 行 階 段 中 移 除 清 單 方 塊 內 全 部 的 選 項, 其 語 法 如 下 : 語 法 :ListBoxname.Items.Clear 功 能 : 由 清 單 方 塊 選 項 中 移 除 全 部 選 項 5. 在 執 行 階 段 中 取 得 清 單 方 塊 內 選 項 的 數 目, 其 語 法 如 下 : 語 法 :ListBoxname.Items.Count 功 能 : 取 得 清 單 方 塊 內 所 有 選 項 的 數 目 7-22

四 清 單 方 塊 常 用 的 事 件 - SelectedIndexChanged 事 件 清 單 方 塊 在 程 式 執 行 時, 得 提 供 使 用 者 選 取 選 項, 而 當 使 用 者 選 取 了 其 中 一 個 選 項 時, 就 會 觸 發 SelectedIndexChanged 事 件 因 此, 把 選 取 選 項 之 後 想 讓 系 統 做 出 反 應 動 作 的 程 式 敘 述, 可 寫 在 SelectedIndexChanged 事 件 程 序 中 7-22

範 例 7_6_1 從 清 單 方 塊 中 選 取 ListBox 的 常 用 屬 性, 會 顯 示 該 屬 性 的 簡 介 執 行 結 果 7-28

問 題 分 析 1. 可 以 在 程 式 執 行 階 段 用 Add 方 法 加 入 清 單 選 項 2. 先 使 用 陣 列 存 放 各 屬 性 的 簡 介, 清 單 方 塊 的 選 項 被 選 取 時 會 觸 動 SelectedIndexChanged 事 件, 在 該 事 件 中 指 定 文 字 方 塊 顯 示 陣 列 中 存 放 的 簡 介 文 字 7-23~24

介 面 設 計 屬 性 預 設 名 稱 Name ( 名 稱 ) Font/Size ( 字 骿 大 小 ) ListBox1 lstproperty ( 預 設 值 ) Label1 ( 預 設 值 ) ( 預 設 值 ) Label2 lblintroduce 12 7-23

編 寫 程 式 碼 第 1 行 : 設 introduce 為 字 串 全 域 陣 列, 並 設 定 初 值 第 4-8 行 : 用 Add 方 法 加 入 選 項 第 9 行 : 設 定 選 取 第 一 個 選 項 第 12 行 : 設 定 lblintroduce 顯 示 introduce 陣 列 相 對 的 元 素 7-23~24

7-7 下 拉 式 清 單 方 塊 ComboBox 下 拉 式 清 單 方 塊 (ComboBox) 控 制 項 包 含 清 單 方 塊 控 制 項 功 能, 而 且 另 外 還 提 供 了 可 輸 入 文 字 功 能 的 文 字 方 塊 下 拉 式 清 單 控 制 項 和 ListBox 清 單 控 制 項 大 致 相 同, 主 要 的 差 別 清 單 控 制 項 在 表 單 中 的 大 小 是 固 定, 至 於 下 拉 式 清 單 控 制 項 多 了 下 拉 鈕, 而 且 當 使 用 者 按 下 拉 鈕, 下 拉 式 清 單 控 制 項 才 顯 示 清 單 項 目, 如 此 可 以 節 省 版 面 空 間, 當 然 也 可 透 過 DropDownStyle 屬 性 設 為 固 定 式 7-24

一 建 立 下 拉 式 清 單 方 塊 控 制 項 1. 在 工 具 箱 中 選 取 下 拉 式 清 單 方 塊 工 具 2. 移 動 指 標 至 表 單, 按 住 滑 鼠 左 鍵 拖 曳 拉 出 適 當 大 小 後, 放 開 左 鍵 3. 加 入 選 項 的 方 法 和 ListBox 相 同 7-25

二 下 拉 式 清 單 方 塊 的 型 式 在 清 單 方 塊 中 一 些 常 用 的 屬 性 皆 通 用 於 下 拉 式 清 單 方 塊, 但 下 拉 式 清 單 方 塊 多 了 DropDownStyle 屬 性 DropDownStyle 屬 性 值 可 決 定 下 拉 式 清 單 方 塊 的 型 式, 共 分 為 三 種, 如 下 : 組 合 下 拉 式 清 單 方 塊 下 拉 式 清 單 方 塊 組 合 式 清 單 方 塊 DropDownStyle 屬 性 值 為 DropDown ( 預 設 值 ) DropDownStyle 屬 性 值 為 DropDownList DropDownStyle 屬 性 值 為 Simple 按 下 拉 鈕 會 顯 示 清 單 方 塊 可 直 接 在 文 字 方 塊 輸 入 選 項 文 字, 或 由 拉 出 清 單 方 塊 中 選 取 選 項 按 下 拉 鈕 會 顯 示 清 單 方 塊 只 能 從 清 單 方 塊 中 選 取 選 項, 無 法 由 文 字 方 塊 中 輸 入 文 字 執 行 時, 可 在 文 字 方 塊 輸 入 文 字 7-25

範 例 7_7_1 製 作 具 有 書 店 書 籍 進 售 價 查 詢 修 改 和 新 增 功 能 的 程 式 執 行 結 果 7-25~26

問 題 分 析 1. 宣 告 book_name book_money 和 book_sale 三 個 全 域 陣 列, 分 別 存 放 書 名 進 價 和 售 價 2. 使 用 者 選 取 要 查 詢 的 書 籍 選 項 後, 根 據 ComboBox 的 SelectedIndex 屬 性, 可 以 將 相 對 進 價 和 售 價 陣 列 元 素, 顯 示 在 文 字 方 塊 中 3. 如 果 書 籍 的 進 價 或 售 價 有 更 動 時, 按 修 改 鈕 時 會 存 入 相 對 陣 列 中 4. 如 果 在 下 拉 式 清 單 方 塊 中 輸 入 新 的 書 目, 按 修 改 鈕 時 用 ReDim Preserve 重 新 宣 告 陣 列 大 小, 然 後 將 資 料 存 入 相 對 陣 列 中 7-26

介 面 設 計 7-27

編 寫 程 式 碼 第 1-3 行 : 宣 告 全 域 陣 列, 其 中 字 串 陣 列 book_name 存 放 書 名 整 數 陣 列 book_money 存 放 書 本 進 價 整 數 陣 列 book_sale 存 放 售 價 第 8-10 行 : 用 Add 方 法 將 book_name 陣 列 元 素 逐 一 指 定 給 cbobook.items 第 11 行 : 預 設 選 取 第 1 個 選 項 7-27~28 第 13-16 行 : 當 清 單 內 的 選 項 被 選 取 時, 利 用 SelectedIndex 屬 性 將 選 取 書 本 的 進 價 與 售 價, 顯 示 在 對 應 的 文 字 方 塊 中

編 寫 程 式 碼 第 20-22 行 : 用 For 迴 圈 檢 查 cbobook.text 是 否 已 經 存 在 book_name 陣 列 中, 若 存 在 設 same 值 為 True 第 23-35 行 : 若 same 為 True, 只 存 修 改 的 進 價 和 售 價 到 陣 列 中 若 same 為 False, 就 要 將 陣 列 大 小 重 新 宣 告, 再 將 書 名 進 價 和 售 價 到 陣 列 中 第 28-30 行 : 重 新 宣 告 時 要 用 ReDim Preserve 敘 述, 才 能 保 存 原 值 7-28~29

7-8 ArrayList 類 別 動 態 陣 列 與 靜 態 陣 列, 這 兩 類 陣 列 都 有 一 個 共 同 面 對 的 問 題, 就 是 陣 列 的 元 素 數 目 均 為 固 定 Visual Basic 提 供 了 ArrayList 類 別, 可 以 建 立 一 個 元 素 數 目 不 固 定 陣 列 使 用 ArrayList 類 別 建 立 的 陣 列, 其 陣 列 中 的 每 一 個 元 素 內 容 可 存 放 任 何 型 別 的 資 料 7-29

一 宣 告 ArrayList 類 別 陣 列 語 法 :Dim arrayname As New System.Collections.ArrayList() 功 能 : 宣 告 用 ArrayList 類 別 所 建 立 的 陣 列 說 明 1.arrayname: 即 陣 列 名 稱, 其 命 名 方 式 和 變 數 一 樣 2. 此 類 陣 列 屬 Object 資 料 型 別, 宣 告 時 不 須 再 指 定 資 料 型 別 該 陣 列 的 元 素 可 存 放 任 何 型 別 的 資 料 7-30

二 ArrayList 類 別 陣 列 常 用 的 屬 性 屬 性 說 明 Count Item 記 錄 ArrayList 類 別 陣 列 的 元 素 數 目 記 錄 ArrayList 類 別 陣 列 的 元 素 內 容 7-30

三 ArrayList 類 別 陣 列 常 用 的 方 法 方 法 說 明 Add 新 增 一 個 元 素 到 已 宣 告 為 ArrayList 類 別 的 陣 列, 新 增 的 元 素 內 容 可 為 任 意 型 別 資 料 Clear 清 除 ArrayList 類 別 陣 列 內 的 所 有 元 素, 使 元 素 數 目 為 0 Contains IndexOf Insert 搜 尋 指 定 的 元 素 是 否 存 在 ArrayList 類 別 陣 列 中, 若 存 在 則 傳 回 True; 否 則 傳 回 False 搜 尋 指 定 的 元 素 是 否 存 在 ArrayList 類 別 陣 列 中, 若 存 在 則 傳 回 元 素 所 在 索 引 指 標 位 置 ; 否 則 傳 回 一 個 負 值 插 入 一 個 元 素 到 ArrayList 類 別 陣 列 的 指 定 索 引 指 標 位 置 索 引 指 標 由 0 開 始, 接 著 是 1 2 3 RemoveAt 移 除 ArrayList 類 別 陣 列 指 定 索 引 指 標 位 置 的 元 素 Reverse 將 ArrayList 類 別 陣 列 的 元 素 重 新 反 轉 排 列 Sort 將 ArrayList 類 別 陣 列 的 元 素 以 升 冪 方 式 重 新 排 列 7-30

範 例 7_8_1 利 用 ArrayList 類 別 陣 列 設 計 一 個 簡 易 的 醫 院 掛 號 系 統 按 新 增 鈕, 新 增 掛 號 姓 名, 將 號 碼 和 姓 名 顯 示 在 掛 號 清 單 上 按 插 入 鈕, 輸 入 欲 插 入 的 掛 號 號 碼 按 刪 除 鈕, 輸 入 就 診 號 可 以 刪 除 或 插 入 病 患 按 清 除 鈕, 清 除 全 部 掛 號 名 單 執 行 結 果 7-31

問 題 分 析 1. 因 為 ArrayList 可 以 任 意 增 刪 陣 列 中 元 素, 所 以 可 以 適 合 用 來 做 像 掛 號 系 統 不 斷 易 動 內 容 的 陣 列 宣 告 s_name 為 全 域 的 ArrayList 陣 列, 存 放 掛 號 病 患 姓 名 2. 按 新 增 鈕 時, 利 用 InputBox 輸 入 姓 名, 然 後 用 ArrayList 的 Add 方 法, 新 增 元 素 到 陣 列 中 3. 按 插 入 鈕 時, 利 用 InputBox 輸 入 就 診 號, 診 號 必 須 是 清 單 上 面 有 的 才 能 繼 續 輸 入 就 診 姓 名, 然 後 用 Insert 方 法, 插 入 元 素 到 陣 列 指 定 位 置 中 4. 按 刪 除 鈕 時, 利 用 InputBox 輸 入 就 診 號, 然 後 RemoveAt 方 法, 移 除 陣 列 中 指 定 的 元 素 5. 按 清 除 鈕 時, 利 用 ArrayList 的 Clear 方 法, 清 除 陣 列 中 所 有 元 素 7-31

介 面 設 計 屬 性 預 設 名 稱 Name ( 名 稱 ) Text ( 文 字 ) Multiline ( 多 行 ) ScrollBars ( 捲 軸 ) Label1 ( 預 設 值 ) VB 醫 院 掛 號 系 統 TextBox1 txtlist < 空 字 串 > Button1 btnadd 新 增 Button2 btnins 插 入 Button3 btndel 刪 除 Button4 btnclear 清 除 - True - - - - - Vertical - - - - 7-32

編 寫 程 式 碼 第 1 行 : 宣 告 s_name 為 ArrayList 類 別 陣 列 第 3-7 行 : 依 序 由 s_name 陣 列 讀 取 元 素, 在 txtlist 中 顯 示 病 患 名 單 第 13 行 : 呼 叫 Form1_load 程 序 顯 示 病 患 名 單 因 為 程 式 碼 相 同, 所 以 共 用 程 序 以 便 程 式 維 護 也 可 以 自 訂 Sub 程 序 來 共 用,Sub 程 序 會 在 第 9 章 介 紹 7-32~33

編 寫 程 式 碼 第 18-20 行 : 用 Do Loop 廻 圈 接 受 就 診 號, 直 到 輸 入 合 乎 範 圍 7-33

編 寫 程 式 碼 7-33~34