Ch07. 函式.

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第 4 章 PHP 基本語法.
Introduction 基本概念 授課老師:蕭志明
Loops.
AI人工智慧報告 黑白棋 班級:資工四乙 學號:498G0009 姓名:盧冠妤.
TQC+ 物件導向程式認證-JAVA.
上課囉 職場甘苦談 小資男孩向錢衝 育碁數位科技 呂宗益/副理.
14 JavaScript语言基础 JavaScript是一种轻量级、解释型的Web开发语言。所谓轻量级,就是语言的体系结构不是很庞杂,例如,没有C、Java等语言中的类、内存管理、系统管理等高深的知识范畴;所谓解释型,就是语言在浏览器或服务器等环境中直接被解释执行,不需要对源代码进行编译操作。
第 5 章 流程控制 (一): 條件分支.
Chapter 4 流程控制.
程設一.
第二章 JAVA语言基础.
程設一.
Q1: 追蹤程式: 印出結果? 搶答 while (i<=n) { p=p*i; i=i+2; }
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
Introduction to the C Programming Language
第一章 C语言概述.
課程名稱:程式設計 授課老師:________
Visual Basic 6.0 學習範本 第三章 基本資料型態.
物件導向程式設計 (Object-Oriented rogramming)
第二章 C# 基础知识.
陳維魁 博士 儒林圖書公司 第七章 參數的傳遞 陳維魁 博士 儒林圖書公司.
Ch10 函式 網頁程式設計.
Chapter 5 Verilog 硬體描述語言
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
If … else 選擇結構 P27.
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
本單元介紹何謂變數,及說明變數的宣告方式。
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
Function.
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
Introduction to the C Programming Language
Chap 3 分支结构 3.1 简单的猜数游戏 3.2 四则运算 3.3 查询自动售货机中商品的价格.
数据集合体.
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
計數式重複敘述 for 迴圈 P
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
第11章 指称语义的原理与应用 指称语义学是Christopher Strachey和Dana Scott在1970年提出的。指称语义学是Christopher Strachey和Dana Scott在1970年提出的。指称语义学是Christopher Strachey和Dana Scott在1970年提出的。
第三章 C# 基础知识.
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
實作輔導 2 日期: 3/24(星期六) 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
Chapter 2 & Chapter 3.
Ch09 在網頁之間傳遞資訊 網頁程式設計.
程式結構&語法.
Speaker: Liu Yu-Jiun Date: 2009/4/29
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
CH10. 屬性與方法.
Introduction to the C Programming Language
程式的時間與空間 Time and Space in Programming
計算機概論 跨越講義 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 結構化VS物件導向程式設計
Ch02.變數、常數以及資料型態.
參數 實際參數(Actual parameter)與形式參數(Formal parameter)
資料結構簡介 綠園.
本节内容 Lua基本语法.
Introduction to the C Programming Language
Ch16. 協定.
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
第二章 Java基本语法 讲师:复凡.
Go 语言编程 —— 平台研发部 吴植民.
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
Ch06. 聚集型態.
判斷(選擇性敘述) if if else else if 條件運算子.
變數與資料型態  綠園.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
1.2.3 循环语句.
Presentation transcript:

Ch07. 函式

7.1 定義與呼叫函式 假設要輸出小時候每人必須背的九九乘法表,如下表所示: 7.1 定義與呼叫函式 假設要輸出小時候每人必須背的九九乘法表,如下表所示: ************************************************** 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81 ************************************************

範例程式 import Foundation func printStar() { for _ in 1...50 { print("*", terminator: "") } print(" ") func multiply() { for i in 1...9 { for j in 1...9 { print(String(format: " %4d", (i*j)), terminator: "") printStar() multiply()

7.1.1 函式的參數 上一範例程式輸出50個 *。若要讓使用者決定多少個 * 時,則可 以在呼叫函式printStar給予參數 (parameter),以決定 * 的數目。

範例程式 import Foundation func printStar(starNumber: Int) { for _ in 1...starNumber { print("*", terminator: "") } print("") func multiply() { for i in 1...9 { for j in 1...9 { print(String(format: " %4d", (i*j)), terminator: "") printStar(starNumber: 50) multiply()

7.1.2 函式的回傳值 若函式有回傳值,則必須加以設定回傳值的資料型態。

範例程式 func sum(number: Int) -> Int { var total = 0 for i in 1...number { total += i } return total let i = 100 let tot = sum(number: i) print("1+2+...+\(i) = \(tot)")

輸出結果 1+2+…+100 = 5050

7.1.3 回傳多個值 可使用tuple型態回傳多個值。 tuple是有序的成員集合。

範例程式 // return multiple value func sumAndMean() -> (sum: Int, mean: Int) { let data = [1, 2, 3, 4, 5, 6, 7, 8 ,9, 10] var sum = 0, mean = 0 for i in data { sum += i } mean = (sum) / (data.count) return (sum, mean) let counter = sumAndMean() print("sum = \(counter.sum), mean = \(counter.mean)")

輸出結果 sum = 55, mean = 5

7.2 函式的參數名稱 函式的參數名稱在 Swift有一些變革,如參數有區域與外部參數名 稱之分、預設參數值、可變的參數個數,以及inout參數。

7.2.1 外部參數名稱 一般函式的參數名稱基本是屬於區域參數名稱 (local parameter name) 。

範例程式 // function parameter func sum(n1: Int, n2: Int) -> Int { var total = 0 for i in n1...n2 { total += i } return total let calculate = sum(n1: 1, n2: 100) print(calculate)

輸出結果 5050

7.2.2 預設參數值 參數當中可以先預設其值,好比C++ 的多載函式(function overloading) 。 7.2.2 預設參數值 參數當中可以先預設其值,好比C++ 的多載函式(function overloading) 。 預設的參數值一定要從後面的參數開始設定,不可以第一個是預 設參數而第二個參數不是預設。

範例程式 // default parameter value func sum3(from: Int, to: Int = 100) -> Int { var total = 0 for i in 1...to { total += i } return total let calculate4 = sum3(from: 1) print("1加到100的和為: ", terminator: "") print(calculate4) let calculate5 = sum3(from: 1, to: 10) print("1加到10的和為: ", terminator: "") print(calculate5)

輸出結果 1加到100的和為: 5050 1加到10的和為: 55

7.2.3 可變的參數個數 若要傳給參數的個數是不定數的話,Swift 提供所謂的可變參數 (variadic parameters),這可讓參數的個數更加的有彈性。

範例程式 // variadic parameters func sum(numbers: Int...) -> Int { var total = 0 for i in numbers { total += i } return total let data1 = sum(numbers: 1, 2, 3, 4, 5) print("data1 = \(data1)") let data2 = sum(numbers: 1, 2, 3) print("data2 = \(data2)")

輸出結果 data1 = 15 data2 = 6

7.2.4 參數的型態 參數型態可分為常數 (constant)、變數 (variable) 與inout型態。 7.2.4 參數的型態 參數型態可分為常數 (constant)、變數 (variable) 與inout型態。 前面所談的參數型態皆為常數型態 。 變數型態的參數則可以在函式內更改,這少掉在函式要再宣告另 一變數的好處。

範例程式 // parameter type func left(str: String, count: Int, repChar: Character) -> String { var str = str let amountReplaced = count - str.characters.count for _ in 1 ... amountReplaced { str = str + String(repChar) } return str let originalString = "Swift" let repString = left(str: originalString, count: 12, repChar: "*") print(originalString) print(repString)

輸出結果 Swift Swift*******

7.3 函式型態 函式的型態有許多種,一為無參數也無回傳值型態。 當有參數和回傳值時,就必需加以寫出。

7.3.1 函式型態當做變數的型態 可以將變數的型態宣告為函式的型態,即表示變數將參考到某一 函式 。

範例程式 //有一參數且有回傳值 func evenOrOdd(num: Int) -> Bool { if num % 2 == 0 { return true } else { return false } var evenYesOrNo: (Int) -> Bool = evenOrOdd if evenYesOrNo(5) { print("5 is Even") print("5 is Odd")

輸出結果 5 is Odd

7.3.2 函式型態當做參數的型態 將函式型態當做變數的型態以外,也可以將函式型態當做是函式 的參數型態。

範例程式 func mean(data1: Int, data2: Int) -> Double { return Double(data1+data2) / 2 } func printMean(meanFunction: (Int, Int) -> Double, a: Int, b: Int) { print("(\(a) + \(b)) / 2 is \(meanFunction(a, b))") printMean(meanFunction: mean, a: 8, b: 7)

輸出結果 (8 + 7) / 2 is 7.5

7.3.3 函式型態當做回傳值的型態 func incremental(input: Int) -> Int { 7.3.3 函式型態當做回傳值的型態 func incremental(input: Int) -> Int { return input + 1 } func decremental(input: Int) -> Int { return input - 1 上述定義了兩個函式,分別為incremental和decremental,而且函式 的型態皆為 (Int) -> Int

撰寫一函式chooseFunction,它有一參數increment用以判斷要呼叫incremental或是 decremental函式。 func chooseFunction(increment: Bool) -> (Int)-> Int { if increment { return incremental } else { return decremental }

範例程式 func incremental(input: Int) -> Int { return input + 1 } func decremental(input: Int) -> Int { return input - 1 func chooseFunction(increment: Bool) -> (Int)-> Int { if increment { return incremental } else { return decremental var number = 6 let moveToZero = chooseFunction(increment: number < 0) while number != 0 { print("\(number) ", terminator: "") number = moveToZero(number) print(0) print("end")

輸出結果 6 5 4 3 2 1 0 end

7.4 巢狀函式 若一函式內又包含。其它函式,則稱此函式為巢狀函式 (nested function) 。

範例程式 //nested function func chooseFunction(increment: Bool) -> (Int)-> Int { func incremental(input: Int) -> Int { return input + 1 } func decremental(input: Int) -> Int { return input - 1 if increment { return incremental } else { return decremental

7.5 區域與全域變數 定義在函式內部的變數稱為區域變數(local variable)。 7.5 區域與全域變數 定義在函式內部的變數稱為區域變數(local variable)。 定義在函式外面的變數稱之為全域變數(global variable)。

範例程式 // global or local variable var i = 100 func globalOrLocal() { let i = 200 print("local i = \(i)") } globalOrLocal() print("global i = \(i)")

輸出結果 local i = 200 global i = 100