大 綱 0.VB 能 做 什 麼? CH1 VB 基 本 認 識 1.VB 歷 史 與 版 本 2.VB 環 境 簡 介 3. 即 時 運 算 視 窗 1
0.VB 能 做 什 麼? Visual Basic =>VB=> 程 式 設 計 語 言 => 設 計 程 式 設 計 你 想 要 的 功 能 的 程 式 自 動 化 資 料 庫 計 算 模 擬 遊 戲 網 路 監 控 實 驗 輔 助 自 動 控 制 病 毒 間 諜 程 式 => 讓 電 腦 化 身 為 各 種 功 能 VB 的 優 點 => 快 速 容 易 上 手 30 秒 示 範 一 個 程 式 設 計 ( 先 有 一 個 基 本 概 念 ) => 化 身 為 時 鐘 ( 我 的 第 一 個 VB 程 式 ) 2
第 一 個 程 式 -- 時 鐘 程 式 開 啟 新 專 案 按 工 具 列 的 textbox, 到 Form1 拉 出 一 個 框 選 一 個 時 鐘 拉 到 Form1 按 F4 改 變 Interval 為 1000 ms 點 兩 下 Form1 的 時 鐘 輸 入 Text1 = Format(Now(), "hh:mm:ss") Run 程 式 3
更 好 看 的 時 鐘 字 型 調 整 (F4: 改 變 屬 性 ) 顯 示 日 期 (Format 函 數 功 能 ) 擅 用 help => F1 日 曆 ( 專 案 => 設 定 引 用 元 件 =>Calendar) 圓 形 的 時 鐘 鬧 鐘 行 事 曆 etc 4
10 秒 鐘 完 成 一 個 日 曆 5
VB 的 歷 史 從 BASIC 語 言 開 始 1964 年 美 國 Dartmouth 大 學 教 授 John G. Kemeny and Thomas E. Kurtz 指 導 研 究 生 所 開 發 的 語 言 BASIC (Beginner's All-purpose Symbolic Instruction Code) 當 初 設 計 者 希 望 用 BASIC 使 大 學 生 可 以 在 電 腦 輸 入 簡 單 的 指 令 後, 直 接 得 到 答 案, 促 進 學 生 對 較 通 用 的 FORTRAN or ALGOL 語 言 的 興 趣 6
Bill Gates and BASIC Bill Gates(1955 生 ) 13 歲 開 始 學 電 腦 ( 私 立 中 學 ) 1968: 第 一 份 工 作 : 幫 Lakeside 中 學 校 長 寫 一 個 時 間 管 理 的 程 式 (Timetable organizer) 中 學 暑 假 : 寫 程 式 賺 4200 美 金 14 歲 寫 交 通 號 誌 計 算 程 式 (Traf-O-Data): 賺 20000 美 元 1973 進 入 哈 佛 唸 prelaw( 法 律 預 科 ) 1975 年 Bill Gates and Paul Allen 在 Altair 上 開 發 出 BASIC 語 言, 僅 有 4K 大 小, 並 將 BASIC 語 言 推 廣 到 各 種 電 腦, 大 三 時 Bill Gates 決 定 休 學 成 立 Microsoft 7
http://mason.gmu.edu/~montecin/computer-hist-web.htm 8
早 期 的 BASIC 100 PRINT "Program starting 110 INPUT H, W 130 IF H > 40 GOTO 400 140 PRINT "Paycheck is ";H*W;" with no overtime." 150 GOTO 500 400 V = H - 40 405 H = H - 40 410 PRINT "Paycheck is ";V*(W*1.5)+H*W;" with "; 420 PRINT V;" hours overtime." 500 PRINT "Program done!" 510 END 沒 有 結 構 化, 只 是 一 些 程 序 的 組 合 結 構 化 => 發 展 大 程 式 9
BASIC 發 展 版 本 BASIC-A, GW-BASIC, QuickBasic, TurboBasic, PowerBasic 隨 著 DOS 發 展 =>Windows BASIC=>Visual Basic 1.0 VB 之 父 Alan Cooper http://www.cooper.com/alan/father_of_vb.html Tripod( 視 窗 式 工 具 form) => 賣 給 Microsoft=>Ruby=>Quickbasic =>Thunder=> 改 名 Visual Basic 1.0(1991 年 ) =>VB2.0=>VB3.0=>VB4.0=>VB5.0 =>VB6.0( 近 似 物 件 導 向 語 言 OOP) =>VB.net( 真 正 物 件 導 向 語 言 ) 10
VB 發 展 2002 年 Visual Basic.NET 2002 (v7.0) 問 世 2003 年 Visual Basic.NET 2003 (v7.1) 問 世, 2005 年 11 月 7 日 Visual Basic 2005 (v8.0) 問 世 2005 年 同 時 間 推 出 Visual Basic 2005 的 免 費 簡 化 版 本 Visual Basic 2005 Express Edition 給 Visual Basic 初 學 者 及 學 生 使 用 原 定 免 費 使 用 期 限 一 年, 之 後 微 軟 宣 佈 Express 版 本 永 久 免 費 11
VB 發 展 環 境 簡 介 封 裝 暨 部 署 精 靈 : 將 程 式 包 裝 成 套 裝 軟 體 的 程 式 Microsoft Visual Basic 6.0: 開 始 執 行 VB API (Application Programming Interface ) 檢 視 員 : 輔 助 VB 使 用 API 函 數 ( 控 制 windows 本 身 動 作 的 各 種 函 數 )( 略 ) 12
13
VB 基 本 架 構 專 案 (Project) 主 要 包 括 : 表 單 (form): 有 圖 形 化 使 用 者 介 面 內 有 副 程 式 及 變 數 模 組 (module): 只 包 含 副 程 式 及 變 數 開 新 專 案 => 各 種 不 同 的 程 式 應 用 樣 本 => 可 設 計 出 不 同 應 用 所 需 的 VB 程 式 ( 一 般 用 標 準 執 行 檔 ) 14
15
示 範 開 新 專 案 VB 環 境 介 紹 ( 各 個 設 計 視 窗 ) 表 單 工 具 列 專 案 總 管 屬 性 ( 每 一 個 工 具 ( 物 件 )=> 屬 性 ) 表 單 配 置 ( 示 範 很 多 表 單 時 如 何 配 置 ) 主 視 窗 ( 執 行 監 控 存 檔 ) 程 式 碼 編 輯 視 窗 ( 事 件 ) 即 時 運 算 視 窗 (Print 指 令 示 範 ) 架 構 你 的 VB 環 境 好 用 的 F1 說 明 ( 安 裝 MSDN Lib) 16
開 發 VB 程 式 四 大 基 本 步 驟 設 計 你 要 的 使 用 者 介 面 在 表 單 上 放 工 具 物 件 指 定 工 具 物 件 適 當 的 屬 性 在 物 件 屬 性 的 事 件 程 序 中, 發 展 適 當 的 程 式 碼 執 行 程 式 除 錯 (debug) 回 憶 一 下 時 鐘 程 式 工 具 列 中 的 物 件 主 要 包 括 1. 屬 性 property 2. 方 法 method 3. 事 件 event 17
即 時 視 窗 :VB 數 學 運 算 +-*/: 加 減 乘 除 \ 表 示 商 的 整 數 eg. 19\3=6 Mod 餘 數 : 19 mod 3 =1 先 乘 除 後 加 減, 括 號 內 先 算 (2+3)*2 次 方 ^: 2^3 =>2 3 Print 可 用? 取 代 可 用 冒 號 : 分 開 不 同 指 令 數 學 函 數 ( 參 考 help) 18
常 用 數 學 函 數 Abs 函 數 Atn 函 數 Cos 函 數 Exp 函 數 Log 函 數 Rnd 函 數 Sgn 函 數 Sin 函 數 Sqr 函 數 Tan 函 數 Fix 函 數 Int 函 數 arctangent e 的 次 方 自 然 對 數 Ln 0~1 的 亂 數 傳 回 數 字 的 正 負 符 號 開 根 號 取 整 數 的 函 數 注 意 三 角 函 數 有 缺 19 需 要 用 Atn 或 tan, cos, sin 導 之
CH2 VB 的 初 步 印 象 20
BASIC 的 組 織 架 構 字 元 集 保 留 字 敘 述 運 算 運 算 的 優 先 順 序 21
字 元 集 (Charater set) Charater( 字 元 ): 電 腦 記 憶 體 上 的 基 本 資 料 是 byte(8 bit), 因 此 需 由 人 為 定 義 每 一 個 byte 對 應 的 應 文 字 或 符 號 目 前 通 用 為 ASCII 標 準 22
Charater Set( 部 分 ) 8 9 10 和 13 分 別 代 表 backspace tab 換 行 和 復 位 字 元 23
保 留 字 (Reserved Words) 保 留 特 殊 的 英 文 單 字, 作 為 指 令 用 例 如 :Function End Integer Single For Next Do Loop While Select Case Sin Cos Print Private Pub Dim As Open Input IF. 主 要 是 設 定 變 數 時, 避 開 這 些 字 為 妙 ( 有 誤 用 時, 通 常 VB 會 自 動 提 醒 ) 24
敘 述 (Statement) 控 制 程 式 的 進 行 的 指 令 例 如 : print 2+3 便 是 一 個 敘 述 ( 其 實 便 是 指 令 ) 25
運 算 主 要 包 括 數 學 或 字 串 ( 文 字 ) 的 運 算 數 字 運 算 : + - * / mod \ ^ 數 字 以 0~9. E 表 示 2E-3 => 2*10-3 字 串 : &(or +) 其 餘 是 函 數 型 態 字 串 要 加 上 雙 引 號 2+3*2 表 示 為 字 串 即 時 運 算 視 窗 print 2+3 => 5 print 2+3 => 2+3 26
優 先 順 序 比 較 的 優 先 順 序 都 一 樣, 因 此 是 由 左 而 右 27
即 時 運 算 視 窗? 1+2*3 + 123? 1+10/2/5? -2^2? -2*-2? -2? 1+2*3 +123 示 範 最 保 險 => 用 括 號 強 制 優 先 28
常 犯 錯 誤 忘 了 加 分 別 出 字 串 print hello 打 錯 指 令 primt 2+3 忘 了 打 運 算 子 print 2(2+3) 2 5 29
問 題 如 何 表 示 3 2 + 4 2 3 2 10 10 9 10 n= 1 n 30
常 用 符 號 等 號 = 字 串 排 版 用 ;( 緊 接 ),( 跳 格 ) print ABC, XYZ => ABC XYZ print ABC ; XYZ => ABCXYZ 如 何 列 印 雙 引 號 用 連 續 兩 個 print ABC => ABC print ABC XYZ ABC XYZ print A 分 號 : 一 行 多 指 令 註 解 符 號 : 單 引 號 在 其 後 皆 為 註 解 31
變 數 與 常 數 變 數 : 資 料 內 容 會 變 動 的 A B C I j k 常 數 : 資 料 內 容 固 定 123 windso 019 0.19 0.19 常 數 宣 告 ( 以 後 會 提 到 ) const pi=3.1415926( 不 能 用 於 即 時 視 窗 ) 使 用 變 數 ==> 可 使 程 式 變 化 更 大 32
運 用 變 數 傳 統 BASIC 的 變 數 可 以 隨 時 隨 地 設 與 C 等 語 言 有 明 顯 不 同 ( 變 數 必 須 宣 告 ) 隨 意 宣 告 => 最 後 容 易 搞 混 => 為 了 模 組 化 VB 可 以 選 擇 要 不 要 檢 查 宣 告 變 數 工 具 => 選 項 Option explicit 變 數 使 用 : 中 文 數 字 與 a~z( 不 分 大 小 寫 ) _ 組 成 首 字 必 須 是 英 文 字 母 ( 避 開 保 留 字 ) 或 中 文 A2 a2s assd I j k m s s1 s2 printing 寬 身 高 變 數 有 許 多 型 別 (type) 如 整 數 可 變 變 數 字 串 布 林 代 數 單 精 度 實 數., 如 不 宣 告 可 變 變 數 Variable( 給 什 麼 就 是 什 麼 ) 33
34
VB 安 裝 好 後 記 得 到 微 軟 網 站 抓 取 VB 更 新 Service Pack 若 用 到 舊 版 VB4.0 版 控 制 項 的 程 式 => 安 裝 舊 板 控 制 項 http://support.microsoft.com/default.aspx?scid=kb;en-us;172193 設 定 變 數 強 制 宣 告 設 定 存 檔 提 醒 35
示 範 X=9 y=9 z=10 x*y*z=? A=x+y a=? 電 腦 變 數 運 算 類 似 於 數 學 運 算 但 電 腦 運 算 只 是 單 純 把 等 號 右 邊 的 數 算 好 再 放 入 右 邊 的 變 數, 沒 有 代 數 的 意 義 A=A+2 => 把 A 原 本 的 數 目 加 2 再 放 入 A A+2=A+3 錯 誤 的 指 令 36
回 到 時 鐘 工 具 列 上 的 元 件 : 屬 性 事 件 方 法 Form Clock Textbox 學 習 VB => 學 習 元 件 的 使 用 37
開 發 VB 程 式 四 大 基 本 步 驟 設 計 你 要 的 使 用 者 介 面 在 表 單 上 放 工 具 物 件 指 定 工 具 物 件 適 當 的 屬 性 在 物 件 屬 性 的 事 件 程 序 中, 發 展 適 當 的 程 式 碼 執 行 程 式 除 錯 (debug) 回 憶 一 下 時 鐘 程 式 工 具 列 中 的 物 件 主 要 包 括 1. 屬 性 property 2. 方 法 method 3. 事 件 event 38
常 用 屬 性 Caption: 標 題 Text: 文 字 Enabled: 啟 用 Tooltiptext: 小 提 示 Tag: 標 記 ( 隨 意 自 己 放 變 數 用 ) 39
常 用 函 數 Now(): 傳 回 目 前 時 間 的 值 Format 數 字 format(2.11, 0.000 ) format(2.11, 0.## ) 時 間 format (now(), yymmddhhmmss ) 如 果 m 是 直 接 跟 在 h 或 hh 之 後, 那 麼 顯 示 的 將 是 分 而 非 月 40
光 電 整 合 控 制 與 VB 使 用 者 介 面 Form 介 面 配 合 介 面 要 求 寫 程 式 碼 功 能 => 元 件 事 件 中 輸 入 程 式 碼 41
HW 練 習 時 鐘 程 式 及 基 本 環 境 並 將 時 鐘 程 式 編 譯 成 exe 檔 包 裝 成 可 安 裝 程 式 (Setup) Read ch3&4 42