SlideShare une entreprise Scribd logo
1  sur  106
Télécharger pour lire hors ligne
 你的程式開發初體驗	
  (Swift)	
  
講師:彼得潘	
  
[08/15]
彼得潘簡介
App程式設計⼊入⾨門:iPhone.iPad
Swift程式設計⼊入⾨門
正職: 作家
副業: 專欄作家,⼯工程師,講師,顧問,家教,創業家
20幾款APP
相關教學資源
http://www.facebook.com/iphone.peterpan
http://deeploveapple.blogspot.tw
apppeterpan@gmail.com
https://github.com/AppPeterPan/It-s-all-about-
App/wiki/It's-all-about-App
FB粉絲團
blog
iOS學習資源wiki
http://deeploveiossdk.tumblr.com英⽂文wiki
email
medium
https://medium.com/@apppeterpan
http://swiftbook.strikingly.com
程式語⾔言是什麼?
⼈人類和電腦溝通的語⾔言
利⽤用程式語⾔言,命令電腦做事
切記: 電腦智⼒力100,運動0分,

它可以計算和林志玲表⽩白成功的機率,
卻無法幫我們跑腿買便當
其實
電腦只懂 0 & 1
程式語⾔言最後會被轉換為0 & 1
⼆二進位
程式執⾏行
CPU讀取記憶體中的程式碼執⾏行
程式執⾏行時,資料暫存於記憶體
永久保存的資料需寫⼊入檔案
為什麼學Swift
https://blog.alphacamp.co/2015/07/27/for-swift-beginners/
開發前的準備
硬體上的準備
• Mac
• PC上裝破解的Mac作業系統 (不建議)
Macbook Air
Mac Mini
記憶體愈多愈好
CPU影響程式編譯速度
$:⼀一萬多
Xcode
App StoreFree
Apple ID登⼊入
https://itunes.apple.com/app/xcode/id497799835
Xcode
https://developer.apple.com/xcode/downloads/
搶先下載尚未公開的最新beta版
可直接下載,無需登⼊入
Xcode playground
Swift練功的秘密花園
建⽴立playground
⽅方法⼀一
⽅方法⼆二
設定名稱和平台
playground主畫⾯面
程式碼編輯區塊 結果即時顯⽰示區塊
整數和浮點數
⼼心算⼗十段的數學神童
數學神算
加減乘除 整數和浮點數 負數
結果⾏行⾏行對應
練習
1的平⽅方加2的平⽅方,⼀一路加到9的平⽅方
字串
中英⽇日樣樣通的語⾔言奇才
語⾔言天才
字串相加以" " 包含字串內容
Emoji & Symbols
錯誤字串
發現錯誤: 紅⾊色驚嘆號
遇錯即停下腳步的膽⼩小
playground
不會執⾏行
由上⽽而下執⾏行,遇錯即中斷
變數
說變就變的記憶⼤大師
宣告變數儲存資料
可變
關鍵字: var
age佔據某個記憶體空間
記憶體位址落落⻑⾧長,沒⼈人記得起來,
所以我們需要好記的變數名稱
⼤大⼩小寫有差
變數名不能重覆
儲存不同的型別資料
專⼀一
⼀一⽣生只愛某⼀一型
沒結果就是事情⼤大條了 !
age只能儲存Int
更安全
報錯的Console Output
像柯南⼀一樣聰明
⾃自動推理型別
明明⽩白⽩白我的型別
內建型別: Int,String,Double
還有許許多多不同的型別,可儲存不同資料
甚⾄至還可以⾃自⼰己發明新的型別
練習
宣告3個變數,分別儲存⾃自⼰己⾼高中聯考的數學,英⽂文,國⽂文分數
分數相加除以3求平均
字串置換⼤大法
(變數名 )
http://margaret1122.pixnet.net/blog/post/39111405-【台北好咖啡】台灣最貴的咖啡茶館?
國⽗父紀
練習
我的名字是xxx,年齡xxx,⾝身⾼高xxx,...
宣告變數
以字串置換⾃自我介紹:
如果你是我的傳說
真的還是假的 (if else)
擇偶條件
⽐比較運算⼦子
<
<=
>
>=
==
!=
else
else if
多個條件,多層if
擇偶條件怎麼可能只有⼀一個
&&: 全部滿⾜足,缺⼀一不可
||: 知⾜足,只要⼀一個滿⾜足就好
判斷順序: 由左⽽而右
改變順序
⽐比較字串是否⼀一樣
變數⽣生存的區間
message只存在 { } 裡
練習
以if else描述⾃自⼰己的擇偶條件
需⽤用到else,多層if,&&, ||
認真研讀penny的擇偶條件歌詞,以程式表達
http://mojim.com/twy105574x1x1.htm
迴圈
反覆練習的好學⽣生
1+2+3,⼀一路加到
1000
加到1000 ? 全部打完可以下課了 !
不能說的秘密: 愈厲害的⼯工程師,其實愈懶惰
for迴圈
⼀一千次
初始條件 繼續執⾏行的條件
每⼀一次的變化
for迴圈
i = 1, i<= 1000
i = 2, i<= 1000
i = 1000, i<= 1000 sum = sum + 1000
sum = sum + 1
sum = sum + 2
i = 1001, i<= 1000 不成⽴立
顯⽰示結果的⼤大眼睛
折線圖
移動折線圖上顯⽰示結果的點
顯⽰示結果的⼤大眼睛
最終結果
歷史記錄
漂亮的內嵌顯⽰示
不同的變化條件
無間道的無間地獄
無窮迴圈
佛曰:「受身無間者永遠不死,壽長乃無間地獄中之⼤大劫。︒」
無窮迴圈
永遠不回頭,永遠不結束
App閃退
while迴圈
while後設定繼續執⾏行的條件
練習
1. 計算1的平⽅方加2的平⽅方,⼀一路加到100的平⽅方,分別以for &
while實作
2. 計算2的平⽅方加4的平⽅方,⼀一路加到100的平⽅方,分別以for &
while實作 (偶數的平⽅方)
函數
重覆利⽤用的懶⼈人法寶
沒有function的苦⽇日⼦子
定義和呼叫function
func 名稱 ( ) { 程式碼區塊 }+ + +
function裡的變數,只存在 { }裡
定義
呼叫 function名稱 + ( )
定義不完的function
接受參數的function
參數名
: 型別+ +
更彈性
接受多個參數的function
回傳資料的function
Swift Standard Library Function
內建function
練習
定義function,接受3個參數,起始值,最⼤大值和每次累加值,
回傳運算結果
例⼦子: 起始值 10, 最⼤大值 20,每次累加值3
10 + 13 + 16 + 19 = 58
類別和物件
沒有物件的凌亂世界
許許多多的變數記錄寶寶們的資訊
類別和物件
不⽤用懷胎⼗十⽉月,也能⽣生出寶寶物件
類別: class
物件的誕⽣生
定義屬性
愈多屬性,佔據愈多記憶體
讀取物件屬性
變數名 屬性名
.+ +
修改物件屬性
變數名 屬性名
.+ + = 新值+ +
練習
⽣生了n個寶寶 (可以是真的,也可以是幻想的)
設定每個寶寶的名字,星座,體重,⾝身⾼高,年齡
定義寶寶類別,包含名字,星座,體重,⾝身⾼高,年齡等屬性
定義物件能⼒力的⽅方法
(method)
其實是function,只是住在類別 { } 裡
呼叫⽅方法
呼叫⽅方法時需包含參數名稱 (第⼀一個參數例外)
Swift 2.0時,function也採取⼀一樣的規則
物件變
數名 (
.+ + )⽅方法名 參數+ + +
需透過物件呼叫
為何要包含參數名 ->
增加可讀性
700克 ? 700元?
如何判斷是呼叫⽅方法或
存取屬性
有( ): 呼叫⽅方法
無( ): 存取屬性
⽅方法裡可存取物件⾃自⼰己
的屬性
self: 物件⾃自⼰己
指到物件的屬性
彼得潘養的可愛兔⼦子⽩白彼得
• 看到的按鈕,圖⽚片都是物件
• 物件的播放⾳音樂method,

使得App可以播放⾳音樂
• 歌名是⿊黑⾊色,是因為物件的

⽂文字顏⾊色屬性設為⿊黑⾊色
• iOS SDK定義各式各樣不同功

能的類別,⽐比⽅方顯⽰示地圖,

播放⾳音樂,顯⽰示網⾴頁

App裡的物件
練習
在前⾯面練習定義的寶寶類別裡定義function
建⽴立寶寶物件並呼叫其function
陣列和字典
收藏眾多資料的置物箱
沒有array,變數超多的
悲慘世界
100個⼥女朋友名字變數
100個學⽣生分數變數
找出班上第⼀一名
課堂練習
領取號碼牌,乖乖排隊的
array
[ 開始, ] 結尾, , 分隔, 容納無限多的成員
以號碼存取成員,號碼從0開始
不存在的號碼
當掉 !Array index out of range
修改array成員
⼼心太軟,為了⼈人⼈人及格,調⾼高學⽣生分數
新增array成員
補考,新增學⽣生分數
append:
insert:
加到尾巴
加到某個特定位置
array是struct
struct類似類別,也有屬性和⽅方法
移除array成員
退學
array成員個數
array和for的結合
找出班上第⼀一名
練習
array和for的結合
找出班上第⼀一名
找出最後⼀一名
array和for in的結合
找出班上第⼀一名
練習
定義學⽣生類別,包含名字和分數2個屬性
建⽴立包含5個學⽣生物件的array
建⽴立包含5個學⽣生物件的array
1. 利⽤用for in,算出平均分數和找出分數最⾼高學⽣生的名字和分數
2. 將array排序,學⽣生物件照分數由⼤大排到⼩小

(假設原本的array,學⽣生分數並未由⼤大排到⼩小)
利⽤用for in,算出平均分數和找出分數最⾼高學⽣生的名字
和分數
class Student {
var grade = 60
var name = "peter"
}
var student1 = Student()
var student2 = Student()
student2.grade = 80
student2.name = "Jack"
var student3 = Student()
student3.grade = 90
student3.name = "penny"
var students = [student1, student2, student3]
var maxGrade = 0
var maxName = ""
var sum = 0
for student in students {
sum = sum + student.grade
if student.grade > maxGrade {
maxGrade = student.grade
maxName = student.name
}
}
maxGrade
maxName
var average = sum/students.count
array排序
像字典⼀一樣⽅方便搜尋的
dictionary
array不⽅方便搜尋,要利⽤用迴圈從頭開始找
像字典⼀一樣⽅方便搜尋的
dictionary
nil : 查不到資料
key (索引) 和 value (值)
dictionary的修改和新增

Contenu connexe

En vedette

如何變成iOS App開發魔法師
如何變成iOS App開發魔法師如何變成iOS App開發魔法師
如何變成iOS App開發魔法師彼得潘 Pan
 
Standford 2015 week9
Standford 2015 week9Standford 2015 week9
Standford 2015 week9彼得潘 Pan
 
iOS 入門教學
iOS 入門教學iOS 入門教學
iOS 入門教學Steven Shen
 
打造你的第一個iPhone APP
打造你的第一個iPhone APP打造你的第一個iPhone APP
打造你的第一個iPhone APP彼得潘 Pan
 
Standford 2015 week8
Standford 2015 week8Standford 2015 week8
Standford 2015 week8彼得潘 Pan
 
Developer sharing about xing
Developer sharing about xingDeveloper sharing about xing
Developer sharing about xingSteven Shen
 
Standford 2015 week6
Standford 2015 week6Standford 2015 week6
Standford 2015 week6彼得潘 Pan
 
Standford 2015 week3: Objective-C Compatibility, Property List, Views
Standford 2015 week3: Objective-C Compatibility, Property List, ViewsStandford 2015 week3: Objective-C Compatibility, Property List, Views
Standford 2015 week3: Objective-C Compatibility, Property List, Views彼得潘 Pan
 
Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...
Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...
Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...彼得潘 Pan
 
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCsStandford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs彼得潘 Pan
 
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...彼得潘 Pan
 
第一次程式親密接觸
第一次程式親密接觸第一次程式親密接觸
第一次程式親密接觸彼得潘 Pan
 
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...彼得潘 Pan
 
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...彼得潘 Pan
 
不能承受的感動 - iOS App實機測試
不能承受的感動 - iOS App實機測試不能承受的感動 - iOS App實機測試
不能承受的感動 - iOS App實機測試彼得潘 Pan
 
Travis and fastlane
Travis and fastlaneTravis and fastlane
Travis and fastlaneSteven Shen
 
跨平台開發從測試到架構
跨平台開發從測試到架構跨平台開發從測試到架構
跨平台開發從測試到架構Chris Jeng
 
iOS Coding Best Practices
iOS Coding Best PracticesiOS Coding Best Practices
iOS Coding Best PracticesJean-Luc David
 
程式設計首日封
程式設計首日封程式設計首日封
程式設計首日封政斌 楊
 

En vedette (20)

如何變成iOS App開發魔法師
如何變成iOS App開發魔法師如何變成iOS App開發魔法師
如何變成iOS App開發魔法師
 
Standford 2015 week9
Standford 2015 week9Standford 2015 week9
Standford 2015 week9
 
iOS 入門教學
iOS 入門教學iOS 入門教學
iOS 入門教學
 
打造你的第一個iPhone APP
打造你的第一個iPhone APP打造你的第一個iPhone APP
打造你的第一個iPhone APP
 
Standford 2015 week8
Standford 2015 week8Standford 2015 week8
Standford 2015 week8
 
為愛打造App
為愛打造App為愛打造App
為愛打造App
 
Developer sharing about xing
Developer sharing about xingDeveloper sharing about xing
Developer sharing about xing
 
Standford 2015 week6
Standford 2015 week6Standford 2015 week6
Standford 2015 week6
 
Standford 2015 week3: Objective-C Compatibility, Property List, Views
Standford 2015 week3: Objective-C Compatibility, Property List, ViewsStandford 2015 week3: Objective-C Compatibility, Property List, Views
Standford 2015 week3: Objective-C Compatibility, Property List, Views
 
Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...
Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...
Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...
 
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCsStandford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
 
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...
Standford 2015 week7: 1. Unwind Segues, Alerts, Timers, View Animation 2. Dyn...
 
第一次程式親密接觸
第一次程式親密接觸第一次程式親密接觸
第一次程式親密接觸
 
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...
 
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...
 
不能承受的感動 - iOS App實機測試
不能承受的感動 - iOS App實機測試不能承受的感動 - iOS App實機測試
不能承受的感動 - iOS App實機測試
 
Travis and fastlane
Travis and fastlaneTravis and fastlane
Travis and fastlane
 
跨平台開發從測試到架構
跨平台開發從測試到架構跨平台開發從測試到架構
跨平台開發從測試到架構
 
iOS Coding Best Practices
iOS Coding Best PracticesiOS Coding Best Practices
iOS Coding Best Practices
 
程式設計首日封
程式設計首日封程式設計首日封
程式設計首日封
 

Similaire à 你的程式開發初體驗 (以Swift為例)

App教學上的應用-教室篇
App教學上的應用-教室篇App教學上的應用-教室篇
App教學上的應用-教室篇Soone Lin
 
解讀App新趨勢,運用App贏得更多商機!
解讀App新趨勢,運用App贏得更多商機!解讀App新趨勢,運用App贏得更多商機!
解讀App新趨勢,運用App贏得更多商機!Leo Lin
 
如何打造品牌热门App案例篇
如何打造品牌热门App案例篇如何打造品牌热门App案例篇
如何打造品牌热门App案例篇Mary Yang
 
20140109 evernote taiwan meetup
20140109 evernote taiwan meetup20140109 evernote taiwan meetup
20140109 evernote taiwan meetupRex Chen
 
墊子傷物facebook api
墊子傷物facebook api墊子傷物facebook api
墊子傷物facebook apiKelvin Lin
 
myapp 幫助您增加 Facebook 粉絲團 粉絲專頁 粉絲數
myapp 幫助您增加 Facebook 粉絲團 粉絲專頁 粉絲數 myapp 幫助您增加 Facebook 粉絲團 粉絲專頁 粉絲數
myapp 幫助您增加 Facebook 粉絲團 粉絲專頁 粉絲數 ime io
 
橘子会 有米广告陈第 app营销
橘子会 有米广告陈第  app营销橘子会 有米广告陈第  app营销
橘子会 有米广告陈第 app营销宁 阮
 
網路社群與行動社群 Facebook與Line-三星統計謝章升-20130905
網路社群與行動社群 Facebook與Line-三星統計謝章升-20130905網路社群與行動社群 Facebook與Line-三星統計謝章升-20130905
網路社群與行動社群 Facebook與Line-三星統計謝章升-20130905Beckett Hsieh
 
行動社群與網路社群Line與Facebook-三星統計謝章升20130904
行動社群與網路社群Line與Facebook-三星統計謝章升20130904行動社群與網路社群Line與Facebook-三星統計謝章升20130904
行動社群與網路社群Line與Facebook-三星統計謝章升20130904Beckett Hsieh
 
Swift girls 2nd_workshop2018060910_day1
Swift girls 2nd_workshop2018060910_day1Swift girls 2nd_workshop2018060910_day1
Swift girls 2nd_workshop2018060910_day1雅方 鄭
 
Efte是个啥玩意儿
Efte是个啥玩意儿Efte是个啥玩意儿
Efte是个啥玩意儿Jason Song
 

Similaire à 你的程式開發初體驗 (以Swift為例) (13)

App教學上的應用-教室篇
App教學上的應用-教室篇App教學上的應用-教室篇
App教學上的應用-教室篇
 
解讀App新趨勢,運用App贏得更多商機!
解讀App新趨勢,運用App贏得更多商機!解讀App新趨勢,運用App贏得更多商機!
解讀App新趨勢,運用App贏得更多商機!
 
如何打造品牌热门App案例篇
如何打造品牌热门App案例篇如何打造品牌热门App案例篇
如何打造品牌热门App案例篇
 
以人為本:響應式字型設計與應用
以人為本:響應式字型設計與應用以人為本:響應式字型設計與應用
以人為本:響應式字型設計與應用
 
20140109 evernote taiwan meetup
20140109 evernote taiwan meetup20140109 evernote taiwan meetup
20140109 evernote taiwan meetup
 
墊子傷物facebook api
墊子傷物facebook api墊子傷物facebook api
墊子傷物facebook api
 
Hp8 Talk
Hp8 TalkHp8 Talk
Hp8 Talk
 
myapp 幫助您增加 Facebook 粉絲團 粉絲專頁 粉絲數
myapp 幫助您增加 Facebook 粉絲團 粉絲專頁 粉絲數 myapp 幫助您增加 Facebook 粉絲團 粉絲專頁 粉絲數
myapp 幫助您增加 Facebook 粉絲團 粉絲專頁 粉絲數
 
橘子会 有米广告陈第 app营销
橘子会 有米广告陈第  app营销橘子会 有米广告陈第  app营销
橘子会 有米广告陈第 app营销
 
網路社群與行動社群 Facebook與Line-三星統計謝章升-20130905
網路社群與行動社群 Facebook與Line-三星統計謝章升-20130905網路社群與行動社群 Facebook與Line-三星統計謝章升-20130905
網路社群與行動社群 Facebook與Line-三星統計謝章升-20130905
 
行動社群與網路社群Line與Facebook-三星統計謝章升20130904
行動社群與網路社群Line與Facebook-三星統計謝章升20130904行動社群與網路社群Line與Facebook-三星統計謝章升20130904
行動社群與網路社群Line與Facebook-三星統計謝章升20130904
 
Swift girls 2nd_workshop2018060910_day1
Swift girls 2nd_workshop2018060910_day1Swift girls 2nd_workshop2018060910_day1
Swift girls 2nd_workshop2018060910_day1
 
Efte是个啥玩意儿
Efte是个啥玩意儿Efte是个啥玩意儿
Efte是个啥玩意儿
 

你的程式開發初體驗 (以Swift為例)