講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所.

Slides:



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

第二章 VB程序设计基础 第1节 Visual Basic 概述 1.1 Visual Basic简介 1.2 面向对象的程序设计概念
第 1 章 公共基础知识 第 2 章 Visual Basic程序开发环境 第 3 章 对象及其操作 第 4 章 数据类型及其运算
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
第4章 VB.NET程式與 網頁製作的應用 主講人: 姚奉緒 M
Demo-dataSource與DropDownList
ooxx這個遊戲程式,非常的簡單只要你小時候會玩井字遊戲即可把電腦打敗,可以說是一種考智力取勝的遊戲。
課程名稱:程式設計 授課老師:________
第四章 控制结构.
赋值语句与输入、输出语句.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
高中信息技术新课程探讨 算法与程序设计教学实践与探讨 江苏省新海高级中学  张丽.
南台科技大學 機械工程系 車輛一甲 學號:4A 學生:黃信成 老師:謝慶存
VB教学中游戏化教学案例设计.
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
Visual Basic 期中報告 組長:沈亞臻 組員:蔣佳育 張庭茹
Visual Basic 6.0之事件 事件(Event)?
算法和程序设计 第4课 分支结构的算法设计 •.
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
第三章 VB基本语言 3.1编程基础 3.2数据类型 3.3 变量与常量 3.4 运算符和表达式 3.5 内部函数 3.6 基本语句 3.7数组.
Chapter 7 Subroutine and Function
程式語言Visual Basic 變數的可視範圍
CH11.
Visual Basic快速入门 ADO数据控件与数据绑定控件 VB数据库编程举例 VB开发数据库应用系统实例分析
Visual Basic 2010 程式設計16堂特訓 第七堂 VB的迴圈流程控制.
課程名稱:程式設計 授課老師:________
第二章 Visual Basic语言基础.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第5章 数组 Visual Basic程序设计.
Visual Basic程序设计 第七章 数组
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
副程式 將可以重複使用的程式區塊獨立而成 寫在Private Sub 函數名稱() 副程式碼 End Sub 呼叫副程式
Visual Basic程序设计 第八章 过程 -子程序和函数
过程 第 7 章.
Visual Basic 程序设计 第四章 程序的输入和输出
初识Visual Basic.
Visual Basic程序设计基础 计算机科学学院.
第4章 程序控制结构与算法基础.
計算機程式 廖文淵 Department of Computer Science and Engineering
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
流程控制、陣列 台南市聖功女子高級中學 毛全良.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
程式語言Visual Basic 傳址與傳值
3.5 用递归法解决问题 黄学鸿.
第12章 VBA模块设计.
新觀念的 VB6 教本 第 6 章 資料型別.
第5章 Visual Basic控制结构 之 常用算法举例
第 8 章 过程.
Visual Basic程序设计.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
標籤、按鈕、工具列、狀態列 (Labels, Buttons, Tool Strips, and Status Strips)
程序设计基础 第 2 章 学习程序设计的基本方法: 多练 模仿.
VB程序设计语言 主讲教师:王 杨.
程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.
金融資訊管理 撰寫VBA的基本事項.
107學年度高一程式設計 上機考試 投影片 加減乘除.
小结 郭清溥.
程序基础 2019/4/25.
第五讲 VB语言基础(3).
程式設計 Visual Basic簡介 週次:4 建國技術學院 資管系 饒瑞佶 2003年10月18日.
Print方法和函数 2019/5/19.
第5章 数组 5.1 数组概述 5.2 静态数组和动态数组 5.3 数组的基本操作 5.4 控件数组 5.5 数组在自定义数据类型中的应用.
1、过程概述 2、函数过程 3、子过程 4、过程的使用 5、传递参数 6、过程的嵌套
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
VB语言基础 一、 常量 1 定义:在程序运行过程中不能发生改变的量 2 分类 整型常量: 整数 不带小数点的数 数值常量
程序调试与错误处理.
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

第五章 副程式與函式 副程式 函式 傳值與傳址 遞迴 訊息對話盒

為什麼要有副程式? 程式中有許多重覆的動作 如下頁的例子 思考方向: 將某獨立、常重覆的部份發包出去 營養午餐與外叫便當的例子

為什麼要有副程式?(cont’d) * ** *** **** For i=1 to 8 If (i<=4) Then For j=1 to i Print “*”; Next j Else For j=1 to 9-i End if Print Next i For i=1 to 8 If (i<=4) Then >>畫i個*<< Else >>畫9-i個*<< End if Print Next i 化簡

副程式-Subroutine 在程式編輯器輸入 Private Sub printStar() [Private|Public|Static] Sub 副程式名 ([參數]) 程式碼 End Sub 在程式編輯器輸入 Private Sub printStar()

副程式-Subroutine(cont’d) 使用工具列 選擇程式編輯器,按Tool/Add Procedure

第一個副程式 VB會自動宣告num Private Sub printStar (num As Integer) Dim i As Integer For i=1 to num Print “*”; Next I Print End Sub For i=1 to 8 If (i<=4) Then 1.[printStar i] 2.[Call printStar(i)] Else 1.[printStar 9-i] 2.[Call printStar(9-i)] End if Print Next i 副程式呼叫方式: Call 副程式名(參數) 副程式名 參數

函式-Function 函式:有傳回值的副程式 [Private|Public|Static] Function 函式名 _ ([參數]) [As] 型別 程式碼 End Function VB會自動宣告一變數,其名稱為函式名 Private Function Add _ (x As Integer, y As Integer) As Integer Add=x+y End Function

函式-Function(cont’d) Private Function Add _ (x As Integer, y As Integer) As Integer Add=x+y End Function 結果是? Private Sub Form_Click() print Add(1,2) End Sub 把函式當副程式 Add 1,2 Call Add(1,2)

遞迴-Recursion 在函式,呼叫自己 要確定程式會停止 Private Function A() A() End Function Private Function Sum ( x As Integer) As Integer If (x=1) then Sum=1 Else Sum=Sum(x-1)+x End If End Function 初始值的設定很重要!!

遞迴-Recursion(cont’d) Sum(5)=Sum(4)+5 Sum(4)=Sum(3)+4 Sum(3)=Sum(2)+3 Sum(2)=Sum(1)+2 Sum(1)=1 Sum(2)=1+2 Sum(3)=1+2+3 Sum(4)=1+2+3+4 Sum(5)=1+2+3+4+5

費式數列-Fibonacci Series 0, 1, 1, 2, 3, 5, 8, …… 請問第100項為多少? 用迴圈 用遞迴 1 1 2 3 5 8

費式數列-使用迴圈 Private Function Fab(x As Integer) As Integer Dim a,b,i As Integer a=0 b=1 If (x=0 Or x=1) then Fab=x Else For i=2 to x Fab=a+b a=b b=Fab Next i End If End Function

費式數列-使用遞迴 Private Function Fab(x As Integer) As Integer If (x=0 Or x=1) then Fab=x Else Fab=Fab(x-2)+Fab(x-1) End If End Function

階乘 離開副程式與函式 Exit Sub Exit Function 5!=1*2*3*4*5 求某數的階乘 使用迴圈 使用遞迴 試試看

參數傳遞 [Option][ByVal|ByRef][ParamArray] 變數名[()] As 型別 [預設值] ByVal (By Value) 傳值 ByRef (By Reference) 傳址 預設值

傳值v.s.傳址 Private Sub Form_Click() Dim y As Integer y=100 Print “執行test前,y=”;y test y Print “執行test後,y=”;y End Sub Private Sub test([ByRef|ByVal] x As Integer) x=10

傳值v.s.傳址(cont’d) ByVal ByRef 100 10 x x 100 y 100 100 100 y y y x x

預設值 Private Sub Form_Click() test 100 test 10 test End Sub Private Sub test(Optional x As Integer=1) Print x

預設值(cont’d) 如果使用Optional模式,之後的變數都要給定預設值 Private Sub test(Optional x As Integer=10, _ Optional y As Integer=20) Print x+y*2 End Sub Private Sub Form_Click() test 5,10 test 5 test test y:=10 test x:=5 test y:=10,x:=5

不確定個數的參數 使用ParamArray VB會產生一個名為陣列名的陣列,其每個成員的型別為Variant Private Sub test(ParamArray 陣列名()) 程式碼 End Sub

不確定個數的參數(cont’d) Private Sub test (ParamArray items()) Dim i As Integer For i=LBound(items) to UBound(items) Print items(i) Next i End Sub Private Sub Form_Click() test 1,2,3,4,5 test “a”,“b”,“c”,“d”

不確定個數的參數(cont’d) 注意 使用ParamArray時,其陣列成員的型別為Variant 不可和Optional同時使用

訊息對話盒 MsgBox(訊息,[風格],[標題],[……]) 標題 訊息內容 圖示 按鈕

訊息對話盒(cont’d) 按鈕的風格 vbOKOnly 確定 vbOKCancel 1 確定、取消 vbAbortRetryIgnore 確定 vbOKCancel 1 確定、取消 vbAbortRetryIgnore 2 中止、重試、忽略 vbYesNoCancel 3 是、否、取消 vbYesNo 4 是、否 vbRetryCancel 5 重試、取消

訊息對話盒(cont’d) 圖示 對話盒形式 vbCritical 16 vbQuestion 32 vbExclamation 48 vbInformation 64 vbApplicationModal 應用程式等級 vbSystemModal 4096 系統等級 很少用

訊息對話盒(cont’d) 風格 以副程式的方式使用 以函式的方式使用 按鈕風格+圖示+對話盒形式 vbOK+vbInformation+vbApplicationModal 以副程式的方式使用 MsgBox “訊息”…… Call MsgBox(“訊息”……) 以函式的方式使用 MsgBox(“訊息”……) 內定值,可不打

訊息對話盒(cont’d) 由傳回值得知使用者按下那個鍵 vbOK 1 vbCancel 2 vbAbort 3 vbRetry 4 vbIgnore 5 vbYes 6 vbNo 7

輸入對話盒 InputBox(“訊息”,[“標題”],[“預設值”]……) 回傳值是使用者輸入的字串

輸入對話盒(cont’d) 按一下 沒輸入字串 有輸入字串

習題 寫一程式利用InputBox輸入學生的平常成績、期中考成績、期末考成績,假設平常成績佔40%、期中考成績與期末考成績各佔30%,然後算出其學期成績,並以MsgBox顯示出來。