程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計

Slides:



Advertisements
Similar presentations
编程加工 信息的. 趣味导入拓展提升大显身手总结反思学以致用 传说古代印度有个国王叫舍罕,他很迷恋棋类,而 宰相达依尔是个聪明的大臣,发明了国际象棋。国王玩 得爱不释手,决定奖赏宰相。达依尔说:陛下,我别无 他求,请你在这张棋盘的第一个格子里赏我 1 粒麦子; 在第二个格子里赏我 2 粒麦子;在第三个格子里赏我.
Advertisements

第2章 Visual Basic 6.0编程基础 (第一部分)
第 1 章 公共基础知识 第 2 章 Visual Basic程序开发环境 第 3 章 对象及其操作 第 4 章 数据类型及其运算
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
第10章 处理图形 Visual Basic 程序设计教程.
ooxx這個遊戲程式,非常的簡單只要你小時候會玩井字遊戲即可把電腦打敗,可以說是一種考智力取勝的遊戲。
課程名稱:程式設計 授課老師:________
赋值语句与输入、输出语句.
高中信息技术新课程探讨 算法与程序设计教学实践与探讨 江苏省新海高级中学  张丽.
客户端用Net-Library和SQL SERVER连接
Visual Basic 期中報告 組長:沈亞臻 組員:蔣佳育 張庭茹
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
Visual Basic程序设计.
程式語言Visual Basic 變數的可視範圍
VB內建函數與應用.
Visual Basic快速入门 ADO数据控件与数据绑定控件 VB数据库编程举例 VB开发数据库应用系统实例分析
課程名稱:程式設計 授課老師:________
建立VB.NET應用程式 資管系 助理教授 詹曉苓.
第2章 建立Visual Basic應用程式.
数组 第 6 章.
第5章 数组 Visual Basic程序设计.
Visual Basic 程式設計基礎(一)
程式語言 -Visual Basic 變數、常數與資料型態.
1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例
副程式 將可以重複使用的程式區塊獨立而成 寫在Private Sub 函數名稱() 副程式碼 End Sub 呼叫副程式
Visual Basic程序设计 第八章 过程 -子程序和函数
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
过程 第 7 章.
初识Visual Basic.
第一章 VB概述 本章重点和难点 1.1 VB 概述 1.2 面向对象的程序设计方法基础
Visual Basic程序设计基础 计算机科学学院.
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
计算机程序设计强化复习 Visual Basic 6.0.
Visual Basic 程序设计 教师:王 杨 电话:
第十二章 多模組與多專案.
程式設計 Visual Basic簡介 週次:1 建國技術學院 資管系 饒瑞佶 2003年9月17日.
程式語言Visual Basic 傳址與傳值
3.5 用递归法解决问题 黄学鸿.
第12章 VBA模块设计.
RWM600 (13.56MHz) Reader Antenna.
RWM600 (13.56MHz) Reader Antenna.
新觀念的 VB6 教本 第 6 章 資料型別.
Visual Basic 6.0 ——程序设计.
第 8 章 过程.
Visual Basic程序设计.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
程序设计基础 第 2 章 学习程序设计的基本方法: 多练 模仿.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
金融資訊管理 撰寫VBA的基本事項.
VB语言程序设计教程.
107學年度高一程式設計 上機考試 投影片 加減乘除.
小结 郭清溥.
程序基础 2019/4/25.
第二章、第三章错题分析.
选择结构设计 第 4 章 程序流程有三种最基本的控制结构,即顺序结构、选择结构和循环结构。
计算机应用基础 潍坊学院 计算机工程学院 主讲人:丁素英.
程式設計 Visual Basic簡介 週次:4 建國技術學院 資管系 饒瑞佶 2003年10月18日.
1位选手参加了歌唱比赛,评委们的评分如下:
1、过程概述 2、函数过程 3、子过程 4、过程的使用 5、传递参数 6、过程的嵌套
算法与Visual Basic程序基础(二)
信息的加工 Word中查找和替换、自动更正、批注、修订 Excel中公式和函数、排序和筛选、图表的建立和编辑 字符识别OCR.
程序调试与错误处理.
Presentation transcript:

程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計

一、結構化程式設計的概念 (1) 主程式 : 呼叫副程式a 呼叫副程式b 副程式a : End a 副程式b : End b goto b c goto d b goto e d goto a e goto c 主程式 : 呼叫副程式a 呼叫副程式b 副程式a : End a 副程式b : End b 未使用結構化程式設計的程式 使用結構化程式設計的程式

一、結構化程式設計的概念 (2) 未使用結構化程式設計的缺點: 個人的設計風格 隨意使用GoTo敘述

一、結構化程式設計的概念 (3) 結構化程式設計的原則: 遵循由上到下的程式設計 模組化的程式設計 使用程式基本結構

二、由上到下的程式設計 由整個程式的主要功能開始設計,然後再依序往下設計各個子功能 … 檢查 記錄

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

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

五、使用模組的優點 模組可重覆使用 程式開發易於分工 程式易於測試與偵錯 可簡化維護的工作

六、使用程式基本結構

七、副程式(1) 副程式(subprogram)是一段可用來執行特定功能的程式敘述,它通常必須透過主程式(main program)的呼叫才能被啟動起來執行

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

七、副程式(3) 範例:華氏溫度換算為攝氏溫度 Sub Change_temp(F As Integer) 'F為形式參數 Dim C As Integer C = (F - 32) * 5 / 9 MsgBox "華氏 " & F & " 度 = 攝氏 " & C & " 度", , "溫度換算" End Sub Private Sub Form_Activate( ) Dim F_temp As Integer F_temp = InputBox("請輸入華氏溫度:", "溫度換算") Call Change_temp(F_temp) 'F_temp為實際參數

七、副程式(4) 在Sub敘述中的參數,稱為形式參數 在Call敘述中的參數,稱為實際參數 若兩者參數的資料型別不符,VB會以形式參數的資料型別為準 形式參數 Sub Sum_x(x As Integer) For I=1 to x … End Sub Private Sub Command1_Click() Call Sum_x(10) … End Sub 實際參數

八、函數 函數 (function) 的功能與副程式類似;不同的是,函數在執行結束後會產生一個傳回值給呼叫它的程式 VB 的函數種類: 內建的函數(build-in function) :例如 Input() 函數、Rnd() 函數、Str() 函數 自定函數 (user-defined function) :即依實際需要所自行撰寫函數

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

九、自定函數(2) 範例:計算圓面積 Function Cal_Circle(r As Single) As Single 'r為形式參數 Const pi = 3.14159 Cal_Circle = r ^ 2 * pi End Function Private Sub Form_Activate( ) Dim X As Single Dim area As Single X = InputBox("請輸入圓的半徑:", "計算圓面積") area = Cal_Circle(X) 'X為實際參數 MsgBox "半徑為 " & X & " 的圓面積 = " & area, , "計算圓面積" End Sub

十、參數的傳遞(1) 在呼叫副程式或函數時,VB 會將實際參數傳給副程式或函數並由形式參數承接 VB 提供傳址 (pass by reference) 與傳值 (pass by value) 兩種傳遞參數的方式

十、參數的傳遞(2) 傳址呼叫是一種形式參數與實際參數佔用同一個記憶體位址的參數傳遞方式 若要以傳址的方式來呼叫副程式或函數,可在副程式或函數參數前加上 "ByRef" 由於傳址的方式是 VB 預設參數的傳遞方式,因此 "ByRef" 可省略不寫

十、參數的傳遞(3)    5→25 輸入數值5並按確定鈕,啟動Click事件程序 Private Sub Command1_Click( ) 10 Dim a As Single 20 a = Text1.Text 30 Label1.Caption = a 40 Call cal(a) 50 Label4.Caption = a End Sub Sub cal(ByRef x As Single) 60 Label2.Caption = x 70 x = x ^ 2 80 Label3.Caption = x 輸入數值5並按確定鈕,啟動Click事件程序 副程式由位址0006,取用實際參數a的值(5),經運算後變為25 右側程式行號: 30執行結果 60執行結果 80執行結果 50執行結果    5→25 記憶體內容 記憶體位址 實際參數a 形式參數x 佔用同一個記憶體位址(0006) 呼叫副程式,將實際參數a的位址(0006)傳遞給副程式

十、參數的傳遞(4) 傳值呼叫是一種形式參數與實際參數佔用不同記憶體位址的參數傳遞方式 若要以傳值的方式來呼叫副程式或函數,可使用下列兩種方法來設定: 在形式參數前加上 "ByVal" 在實際參數前後加上小括號

十、參數的傳遞(5)    輸入數值5並按確定鈕,啟動Click事件程序 Private Sub Command1_Click( ) 呼叫副程式,a的值(5)會傳遞給副程式,並複製到形式參數X中 Private Sub Command1_Click( ) 10 Dim a As Single 20 a = Text1.Text 30 Label1.Caption = a 40 Call cal(a) 50 Label4.Caption = a End Sub Sub cal(ByVal x As Single) 60 Label2.Caption = x 70 x = x ^ 2 80 Label3.Caption = x 輸入數值5並按確定鈕,啟動Click事件程序 副程式運算後,形式參數X的值改變為25 右側程式行號: 30執行結果 60執行結果 80執行結果 50執行結果    記憶體內容 記憶體位址 5→25 5 實際參數a 形式參數x

十、參數的傳遞(6) 傳址 傳值 參數傳遞方式的設定 在形式參數前加上ByRef 或不加 在形式參數前加上 ByVal 或在實際參數前後的加上小括號 機制 將實際參數所在的記憶體位址傳至形式參數中,然後副程式或函數使用該位址上的值 將實際參數的值複製至形式參數中,然後副程式或函數使用形式參數的值 副程式和函數對實際參數的影響 實際參數的內容可被副程式及函數改變 實際參數的內容不會被副程式和函數改變 陣列參數的使用 可使用整個陣列或陣列元素 只可使用陣列元素 應用範例 如商品要調整售價時,可使用傳址的方式呼叫調價副程式,在副程式中更新商品售價,使主程式中的商品售價隨之改變 如要將商品售價顯示成他國幣值,可使用傳值的方式,呼叫可根據各國匯率計算不同商品幣值售價的副程式,但主程式的商品售價仍為本國幣值且價格不會更改 參數傳遞方式 比較項目

十一、VB模組的種類 表單模組: 用來設計程式的視窗外觀。其可包含變數的宣告、副程式、函數、控制物件的事件程序及屬性設定等。副檔名為 *.frm 一般模組: 通常用來撰寫會被共同使用的變數宣告、副程式或函數等 (無法撰寫事件程序)。副檔名為*.bas 物件類別模組: 可用來定義新的物件類別,並自定其屬性、方法及事件等。副檔名為 *.cls

十二、模組中的程序活動範圍(1) 程序依其在專案中的活動範圍,可分為私有程序及公有程序兩種 在 VB 中,凡程序前加上保留字 Private的程序,即稱為私有程序。該程序只能被同一模組中的其它程序呼叫 在 VB 中,凡程序前加上保留字 Public (或不加任何保留字) 的程序,即稱為公有程序

十二、模組中的程序活動範圍(2) 呼叫公有程序時,需注意下列幾點: 呼叫同模組間的公有程序時,可直接使用程序名稱;若其他模組中亦有相同名稱的程序,則 VB 會優先呼叫同模組中的程序 跨模組呼叫表單模組中的公有程序時,需在程序名稱前加上表單模組的名稱 跨模組呼叫一般模組中的公有程序時,若在不同模組中有相同名稱的程序時,則需在程序名稱前加上一般模組的名稱

十二、模組中的程序活動範圍(3) 《程式》     ╳ Public Sub Show1( ) Label1(0).Caption = "F" End Sub Private Sub Show2( ) Label1(1).Caption = "F" Private Sub Command1_Click( ) Call Show1 Call Show2 Call Module1.Show1 Call Module1.Show2 Form1.Label1(2).Caption = "M" Private Sub show2( ) Form1.Label1(3).Caption = "M" 表單模組(Form1) 一般模組(Module1)     ╳

十二、模組中的程序活動範圍(4)  《執行結果》     按開始鈕,執行Command1_Click事件程序 在一般模組中的Show2( )為私有程序,故無法被表單模組中的Command1_ Click事件程序呼叫    

十三、變數的活動範圍(1) 在 VB 中,變數所能被使用的範圍稱為變數的活動範圍 (scope) 依照活動範圍區分,可將變數分為: 全域變數 (global variable) 區域變數 (local variable)

十三、變數的活動範圍(2) 在 VB 的三種模組中都可宣告全域變數 全域變數的活動範圍為整個專案,其可被專案中的任何程式敘述使用 宣告全域變數的語法如下: Public 變數名稱 As 資料型別 例:Public grade As Integer

十三、變數的活動範圍(3) 區域變數可以宣告在模組的一般宣告區或程序中。其中模組區域變數的活動範圍為宣告它的模組;而程序區域變數的活動範圍則為宣告它的程序 宣告區域變數的語法如下: 模組區域變數 (宣告於模組的一般宣告區中) Private (或 Dim) 變數名稱 As 資料型別 程序區域變數 (宣告於程序中) Dim 變數名稱 As 資料型別

十四、變數的生命週期(1) 變數從開始佔用記憶體到釋放記憶體的這段期間,稱之為變數的生命期 凡宣告於模組一般宣告區中的全域變數及區域變數,其生命期從宣告敘述至應用程式執行結束 凡宣告於副程式、函數或事件程序中的區域變數,其生命期從宣告敘述至程序執行結束

十四、變數的生命週期(2) 為了讓程序區域變數在宣告它的程序執行結束後還能保有其值,我們可以將其宣告為靜態變數,使其生命期延長至應用程式執行結束 宣告靜態變數的語法如下: Static 變數名稱 As 資料型別 例:Static i As Integer

十四、變數的生命週期(3) 宣告位置 VB 模組的一般宣告區 VB 模組中的程序 宣告型態 Public Dim Private Static 變數類型 全域變數 模組區域變數 靜態變數 程序區域變數 活動範圍 整個專案 宣告它的模組 宣告它的程序 生命期 生 變數宣告敘述執行時 滅 應用程式執行結束時 程序執行結束