Swift第一周學(xué)習(xí)總結(jié)

[TOC]


Swift.jpg

初識(shí)Swift

print("Hello, swift")

第一次給我的四大印象

  1. Swift是一種面向?qū)ο蟮挠?jì)算機(jī)編繪語言
  2. Swift不需要引入頭文件或?qū)懺趍ain()內(nèi),也不需要在每一句加上分號(hào)(當(dāng)然,若你保有使用某些其他語言的習(xí)慣,如Java、C等加上分號(hào)結(jié)尾亦不會(huì)報(bào)錯(cuò))
  3. Swift有著強(qiáng)大的類型推斷功能
  4. Swift簡單的三個(gè)字符的關(guān)鍵字定義一個(gè)變量(var)或常量(let)

SWIFT_百度百科

標(biāo)識(shí)符的命名規(guī)則

-1. 字母(Unicode)字符,數(shù)字,下劃線,數(shù)字不能開頭
-2. 大小寫敏感
-3. 不能使用關(guān)鍵字做標(biāo)識(shí)符
-4. 駝峰命名法 - 第一個(gè)單詞全小寫以后每個(gè)單詞首字母大寫-
-5. 見名知意

程序設(shè)計(jì)(Program design)

  • 程序是一系列指令的集合
  • 程序設(shè)計(jì)是給出解決特定問題程序的過程,是軟件構(gòu)造活動(dòng)中的重要組成部分

變量和常量(Constants and Variables)

簡單的使用規(guī)范

  • 使用let來聲明常量,使用var來聲明變量

let myConstant = 2016
var myVariable = 2016

- 常量的值只能賦值一次,但能使用多次
```swift
myVariable = 20160806
  • Swift是一個(gè)靜態(tài)類型語言,在程序運(yùn)行中不能改變變量的類型(Java也是)
  • 類型推斷,在Swift中如果可以的話盡可能省略類型標(biāo)記,讓編譯器自動(dòng)推斷變量或常量的類型
constant.png
variable.png
  • 如果初始值沒有提供足夠的信息(或者沒有初始值),那你需要在變量后面聲明類型
var year: String
  • 值永遠(yuǎn)不會(huì)被隱式轉(zhuǎn)換為其它類型,若要將值轉(zhuǎn)換成字符串可以利用字符串差值的方法
// 顯示轉(zhuǎn)換
year = "今年是" + String(myVariable) + "年"
// 字符串插值
year = "今年是\(myConstant)年"

運(yùn)算符(Terminology)

運(yùn)算符類型 表達(dá)式 簡單的舉例
一元運(yùn)算符(Unary) -, !... -a, !false
二元運(yùn)算符(Binay) + ,- ,* ,/ ,% ... 2 + 3
三元運(yùn)算符(Ternary) a ? b : c ... 1 == 2 ? true : false

復(fù)合賦值運(yùn)算(Compound Assignment Operators)

var a = 1
a += 2   // 等同于 a = a + 2
// 類似的還有:-=, *=, /=

求模運(yùn)算(Remainder Operator)

RemainderOperator.png
a = 9 % 4 // a = 1

分支結(jié)構(gòu)(Branching construct)

  • if. . .else. . . 類型

if question {
    answer1 // 條件滿足question,則執(zhí)行answer1
} else {
    answer2 // 反之,則執(zhí)行answer2
}
// 等同于 question ? answer1 : answer2
  • switch. . .case. . . 類型

let question = 1
switch question {
case 1:
    answer1
default:
    answer2
}

循環(huán)結(jié)構(gòu)(Cycle structure)

1. while. . .循環(huán)

++*有可能一次都不執(zhí)行++

while i <= 10 {
    print(“Hello, world")
    i += 1
}

2. repeat. . .while. . .循環(huán)

++*至少執(zhí)行一次++

repeat {
    print(“Hello, world")
    i += 1
} while i <= 10

3. for. . .循環(huán)

++*依次執(zhí)行++

for i in 1...10 {
    print(“Hello, world")
}

數(shù)組(Array)

數(shù)組將相同類型的值儲(chǔ)存在一個(gè)有序的列表中,相同的值可以多次出現(xiàn)在一個(gè)數(shù)組的不同位置。

1. 創(chuàng)建數(shù)組

var array1 = [Int]()
var array2: [Int] = []
var array3 = [99, 12, 34, 7]
var array4 = [Int](count: 100, repeatedValue: 1) // 一百元素,值為0

2. 獲取數(shù)組元素的個(gè)數(shù)

print(array3.count)
print(array4.count)

3. 對數(shù)組中的元素進(jìn)行遍歷

for (index, value) in array3.enumerate() {
    // (index)是對數(shù)組進(jìn)行索引運(yùn)算(取出指定位置的元素)
    print("\(index). \(value)")
    // 可以修改數(shù)組元素 
    if i == 1 {
        array3[i] = 777
    }
}
// 只讀循環(huán)(在循環(huán)過程中不能修改數(shù)組元素)- str是String類型
for str in array3 {
    print(str)
}

4. 向數(shù)組中添加元素

// append - 追加(添加在數(shù)組的最后)
array3.append(25)
array3.append(4)
// insert - 插入(atIndex的值從0開始)
array1.insert(78, atIndex: 2)
array1.insert(78, atIndex: array1.count)

5. 數(shù)組的其它操作

array1.removeAll() // 刪除所有
var array5 = array3 // 數(shù)組的完全復(fù)制
var array5 = array3[1…3] // 自定義復(fù)制位置
var array5 = array1 + array5 // 數(shù)組的加法
let newArray = array.sort(>) // 升序排列后重新生成一個(gè)數(shù)組
array5.sortInPlace() // 排序后代替原數(shù)組

簡單的綜合實(shí)例代碼

1. 數(shù)組的排序

  • 簡單選擇排序:每次從剩下的元素中找最小的元素放到對應(yīng)的位置

var array = [29, 48, 23, 55, 5, 9, 86]
print(array)
// i從第一個(gè)元素循環(huán)到第n-1個(gè)元素
for i in 0..<array.count - 1 {
    // 每次循環(huán)開始假設(shè)第一個(gè)元素為最小值(將第一個(gè)元素的索引號(hào)賦給minIndex)
    var minIndex = i
    // j從i后面一位元素循環(huán)到最后一個(gè)元素
    for j in i + 1..<array.count {
        // 每次循環(huán)找到更小的元素后將索引賦值給minIndex
        if array[j] < array[minIndex] {
            minIndex = j
        }
    }
    // 利用元組的方式把最的小元素交換到每次循環(huán)的最前面
    (array[i], array[minIndex]) = (array[minIndex], array[i])
}
print(array)
  • 冒泡排序:兩兩比較,前面的元素比后面的大就交換位置

// i從第一個(gè)元素循環(huán)到第n-1個(gè)元素
for i in 0..<array.count - 1 {
    var swapped = false //當(dāng)前未發(fā)生兩兩交換
    // i每循環(huán)一次j就少一次循環(huán)
    for j in 0..<array.count - 1 - i {
        // 將更大的數(shù)交換到后面
        if array[j] > array [j + 1] {
            (array[j], array[j + 1]) = (array[j + 1], array[j])
            swapped = true // 發(fā)生交換,繼續(xù)循環(huán)
        }
    }
    // 循環(huán)若未發(fā)生兩兩交換,因此該數(shù)組已經(jīng)排好,則跳出循環(huán)
    if !swapped {
        break
    }
}
print(array)

2. 百元百雞(公雞5元/只,母雞3元/只,小雞3只/元)

// 窮舉法(窮盡所有的可能性直到找到正確答案)
for x in 0...20 {
    for y in 0...33 {
        let z = 100 - x - y
        if 5 * x + 3 * y + z / 3 == 100 && z % 3 == 0 {
            print("??\(x)只,??\(y)只,??\(z)只")
        }
    }
}

3. Craps(雙骰子游戲)

func roll() -> Int {
    return Int(arc4random_uniform(6)) + 1
}
var money = 1000

repeat {

    print("玩家總資產(chǎn):¥\(money)元")
    var debt: Int
    repeat {
        print("請下注:",terminator:"")
        debt = inputInt()
    }while debt <= 0 || debt > money


    var needsGoOn = false
    let firstPoint = roll() + roll()
    print("玩家第一次搖出了\(firstPoint)點(diǎn)")
    switch firstPoint {
    case 7, 11:
        money += debt
        print("玩家勝?。?!")
    case 2, 3, 12:
        money -= debt
        print("莊家勝?。?!")
    default:
        needsGoOn = true // 游戲繼續(xù)
    }
    while needsGoOn {
        let currentPoint = roll() + roll()
        print("玩家搖除了\(currentPoint)點(diǎn)")
        if currentPoint == 7 {
            money -= debt
            print("莊家勝?。?!")
            needsGoOn = false
        }
        else if currentPoint == firstPoint {
            money += debt
            print("玩家勝?。?!")
            needsGoOn = false
        }
    }
}while money > 0
print("你破產(chǎn)了?。。?)

抄家伙,開始干吧!還等什么?。?!(づ ̄ 3 ̄)づ


my.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評(píng)論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評(píng)論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評(píng)論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,779評(píng)論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評(píng)論 1 330
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評(píng)論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,287評(píng)論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評(píng)論 1 338
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,515評(píng)論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,750評(píng)論 1 375
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,933評(píng)論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評(píng)論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,492評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,703評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容