程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.

Slides:



Advertisements
Similar presentations
計算機程式及實習 Computer Program Design and Experiment) 期末報告 ppt 南台科技大學機械工程系 姓名 : 蔡中銘 學號 :4A 授課老師 : 謝慶存大帥哥.
Advertisements

題目:徽章之記憶 南台科技大學 機械系 車輛一乙 學號:4A 姓名:黃冠嘉 教師:謝慶存
第 1 章 公共基础知识 第 2 章 Visual Basic程序开发环境 第 3 章 对象及其操作 第 4 章 数据类型及其运算
計算機程式及實習 期末報告 題目:超級猜一猜
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
計算機程式及實習 期末報告 題目:商店結帳系統
Demo-dataSource與DropDownList
ooxx這個遊戲程式,非常的簡單只要你小時候會玩井字遊戲即可把電腦打敗,可以說是一種考智力取勝的遊戲。
課程名稱:程式設計 授課老師:________
第四章 控制结构.
赋值语句与输入、输出语句.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
南台科技大學 機械工程系 車輛一甲 學號:4A 學生:黃信成 老師:謝慶存
課程名稱:程式設計 授課老師:________
Visual Basic 期中報告 組長:沈亞臻 組員:蔣佳育 張庭茹
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
Visual Basic程序设计.
BLANK overview.
程式語言Visual Basic 變數的可視範圍
CH11.
Visual Basic 2010 程式設計16堂特訓 第七堂 VB的迴圈流程控制.
課程名稱:程式設計 授課老師:________
建立VB.NET應用程式 資管系 助理教授 詹曉苓.
第2章 建立Visual Basic應用程式.
第6章 数 组 6.1 一维数组 6.2 控件数组 6.3 二维数组.
第二章 Visual Basic语言基础.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第5章 数组 Visual Basic程序设计.
程式語言 -Visual Basic 變數、常數與資料型態.
副程式 將可以重複使用的程式區塊獨立而成 寫在Private Sub 函數名稱() 副程式碼 End Sub 呼叫副程式
Visual Basic程序设计 第八章 过程 -子程序和函数
过程 第 7 章.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
初识Visual Basic.
算法与程序设计.
Access VBA程序设计 本章重点 Access Basic编程语言 运算符、函数与表达式 Access Basic语句 模块的使用
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
流程控制、陣列 台南市聖功女子高級中學 毛全良.
Timer & Format.
程式語言Visual Basic 重複結構 黃瀧輝 老師 Long Hwai,Huang.
第十二章 多模組與多專案.
機器人-Robot Nobody 機器人.
6-1 For…Next迴圈敘述 6-2 While…End While迴圈敘述 6-3 Do…Loop迴圈敘述 6-4 巢狀迴圈敘述
程式語言Visual Basic 傳址與傳值
3.5 用递归法解决问题 黄学鸿.
第12章 VBA模块设计.
新觀念的 VB6 教本 第 6 章 資料型別.
Ch03 基本輸出入介面設計 視窗程式設計 授課教師:王大瑾.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
Visual Basic程序设计.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
題目:南台飲料店結帳系統 南台科技大學 機械工程系 車輛一甲 學號:4A
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
江西财经大学信息管理学院 《数据库应用》课程组2007
小结 郭清溥.
計算機程式及實習 Computer Program Design and Experiment) 期末報告ppt製作 南台科技大學 機械工程系 題目:南台電影城結帳系統 班級 : 車輛一甲 學號 : 4A 授教學生: 阮偉倫 授課老師: 謝慶存.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
程序基础 2019/4/25.
第二章、第三章错题分析.
第 11 章 功能表列與工具列的設計 & 第 10 章 檔案.
計算機程式及實習 Computer Program Design and Experiment) 期末報告ppt製作
程式設計 Visual Basic簡介 週次:4 建國技術學院 資管系 饒瑞佶 2003年10月18日.
1位选手参加了歌唱比赛,评委们的评分如下:
1、过程概述 2、函数过程 3、子过程 4、过程的使用 5、传递参数 6、过程的嵌套
算法与Visual Basic程序基础(二)
程序调试与错误处理.
Presentation transcript:

程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數

一、模組化設計的概念 模組通常是指一段具有某種 特定功能、大小適中、容易 閱讀及維護的程式 將程式切割成許多個子功能 後,便可分別撰寫成模組程 式 模組1 模組2 模組3 模組n 大型程式 …

二、模組設計的原則 設計功能單純的模組程式,以便提供給更多程式使用 儘量減少模組之間相互影響的程度,以使模組成為獨立的程式基本單元 將模組控制在適當的大小(例如不超過50行敘述),以方便閱讀與維護

三、使用模組的優點 模組可重覆使用 程式開發易於分工 程式易於測試與偵錯 可簡化維護的工作 模組A 模組B 模組F … 模組A' 呼叫 模組A 模組B 模組F … 模組A' 模組A具有檢查產品編號功能 產品編號的檢查規則改變時 只要修改模組A即可

四、模組設計的方法 在專案中加入空白模組檔,撰寫副程式或自定函數,以設計模組程式(如左下圖) 在專案中匯入某個專案中的模組檔(如右下圖) 表單檔 模組檔 程式專案P1 程式專案P2 匯入現有模組檔 撰寫模組程式

五、副程式(1/6) 副程式是一段具有特定功能的程式區塊;它通常必須透過主程式的呼叫才能被啟動起來執行 … …… ….. 呼叫 執行 返回 Call 副程式A 呼叫 Sub 副程式A End Sub … …… ….. 執行 返回 主程式 副程式

五、副程式(2/6) 語法: 《定義副程式的語法》 Sub 副程式名稱 ([形式參數1 [As 資料型別],   形式參數2 [As 資料型別], …]) 程式敘述區塊 End Sub 《呼叫副程式的語法》  Call 副程式名稱 ([實際參數1, 實際參數2, …])

五、副程式(3/6) 範例:計算家庭用電費與營業用電費 … … … Private Sub Form1_Activated…… 讀取用電類型 讀取用電量 If 用電類型為家庭用電 Then 呼叫副程式F_Expense( ) ElseIf 用電類型為營業用電 Then 呼叫副程式C_Expense( ) End If End Sub '計算家庭用電費 Sub F_Expense…… End Sub '計算營業用電費 Sub C_Expense…… … … … 主程式 副程式

五、副程式(4/6) 副程式F_Expense( ) Sub F_Expense(ByVal volume As Single) '計算家庭用電 110: Dim fee As Integer 120: If volume > 500 Then '用電量超過500度 130: fee = 110 * 2.1 + 390 * 2.875 + (volume - 500) * 3.6 140: ElseIf volume > 110 Then '用電量超過110度 150: fee = 110 * 2.1 + (volume - 110) * 2.875 160: Else '用電量在110度以內 170: fee = volume * 2.1 180: End If 190: MsgBox("電費為" & fee & " 元", , "電費試算") End Sub

五、副程式(5/6) 副程式C_Expense( ) Sub C_Expense(ByVal volume As Single) '計算營業用電費 200: Dim fee As Integer 210: Const rate As Single = 3.1 220: fee = rate * volume '計算電費 230: MsgBox("電費為" & fee & " 元", , "電費試算") End Sub

五、副程式(6/6) 主程式 Private Sub Form1_Activated(ByVal sender ……) Handles Me.Activated 10: Dim ecase As Short 20: Dim usage As Single 30: ecase = InputBox("請輸入用電類型:1)家庭用電 2)營業用電", _ "電費試算") 40: usage = InputBox("請輸入用電量,單位:度", "電費試算") 50: If ecase = 1 Then 60: Call F_Expense(usage) '呼叫副程式計算家庭用電費 70: Else 80: Call C_Expense(usage) '呼叫副程式計算營業用電費 90: End If 100: End End Sub

六、自定函數(1/3) 自定函數的功能與副程式類似;差別在於自定函數在執行結束後會產生一個傳回值給呼叫它的程式 1.呼叫 2.執行 主程式 Public Class Form1 X = 自定函數A( ) End Class 自定函數 Function 自定函數A( ) As Short 自定函數A = 100 End Function 3.返回並將值100傳回給變數X 2.執行 4.執行下一行程式敘述 … …

六、自定函數(2/3) 語法: 《定義自定函數的語法》 Function 自定函數名稱([形式參數1[As 資料型別], 形式參數2_ [As 資料型別], …]) As 資料型別 程式敘述區塊 自定函數名稱 = 傳回值 End Function 《呼叫自定函數的語法》 變數名稱 = 自定函數名稱([實際參數1, 實際參數2, …])

六、自定函數(3/3) 範例:華氏溫度換算為攝氏溫度 Function Convert_temp(ByVal F As Short) As Short 'F為形式參數 60: Convert_temp = (F - 32) * 5 / 9 '攝氏溫度= (華氏溫度- 32 ) * 5 / 9 End Function Private Sub Form1_Activated(ByVal sender …) Handles Me.Activated 10: Dim F_temp, C_temp As Short 20: F_temp = InputBox("請輸入華氏溫度:", "溫度換算") 30: C_temp = Convert_temp(F_temp) 'F_temp為實際參數 40: MsgBox("華氏" & F_temp & " 度= 攝氏" & C_temp & " 度", , _ "溫度換算") 50: End End Sub

隨機不重覆 Dim ck(4) As Short For i = 1 To 4 rnd_n = Int(Rnd() * 4) + 1 Dim rnd_n As Short Dim ck(4) As Short For i = 1 To 4 rnd_n = Int(Rnd() * 4) + 1 Do While ck(rnd_n) = 1 Loop N(i) = rnd_n ck(rnd_n) = 1 Next

副程式(版本一) Sub Generate_Random_Number() End sub Dim rnd_n As Short Dim ck(4) As Short For i = 1 To 4 rnd_n = Int(Rnd() * 4) + 1 Do While ck(rnd_n) = 1 Loop N(i) = rnd_n ck(rnd_n) = 1 Next End sub 使用方法:Call Generate_Random_Number()

副程式(版本二-加入模組) Sub Generate_Random_Number() End sub Dim rnd_n As Short Dim ck(4) As Short For i = 1 To 4 rnd_n = Int(Rnd() * 4) + 1 Do While ck(rnd_n) = 1 Loop Form1.N(i) = rnd_n ck(rnd_n) = 1 Next End sub 使用方法:1. 在專案中加入空白模組檔”Module1.vb” 2. Public N(4) as short 3. Call Generate_Random_Number()

副程式(版本三-加入參數) Sub Generate_Random_Number(ByVal num as short) End sub Dim rnd_n As Short Dim ck(4) As Short For i = 1 To num rnd_n = Int(Rnd() * num) + 1 Do While ck(rnd_n) = 1 Loop Form1.N(i) = rnd_n ck(rnd_n) = 1 Next End sub 使用方法:1. 在專案中加入空白模組檔”Module1.vb” 2. Public N(4) as short 3. Call Generate_Random_Number(4)

副程式(版本四-加入陣列參數) Sub Generate_Random_Number(ByVal k() as short, ByVal num as short) Dim rnd_n As Short Dim ck(4) As Short For i = 1 To num rnd_n = Int(Rnd() * num) + 1 Do While ck(rnd_n) = 1 Loop K(i)= rnd_n ck(rnd_n) = 1 Next End sub 使用方法:1. 在專案中加入空白模組檔”Module1.vb” 2. Public N(4) as short 3. Call Generate_Random_Number(4)

自定函數 使用方法: all_money = money(all_money, ans) Function money(ByVal all As Integer, ByVal ans As Boolean) As Integer Dim rate As Integer If RadioButton1.Checked = True Then rate = 1 ElseIf RadioButton2.Checked = True Then rate = 10 ElseIf RadioButton3.Checked = True Then rate = 100 ElseIf RadioButton4.Checked = True Then rate = 1000 End If If ans = True Then all = all + rate Else all = all - rate money = all End Function 使用方法: all_money = money(all_money, ans)