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. 對(duì)數(shù)組中的元素進(jìn)行遍歷

for (index, value) in array3.enumerate() {
    // (index)是對(duì)數(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ù)組的排序

  • 簡單選擇排序:每次從剩下的元素中找最小的元素放到對(duì)應(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("請(qǐng)下注:",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("玩家勝4锿獭!荒典!")
    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("莊家勝8苍恪!遮咖!")
            needsGoOn = false
        }
        else if currentPoint == firstPoint {
            money += debt
            print("玩家勝L沧帧!御吞!")
            needsGoOn = false
        }
    }
}while money > 0
print("你破產(chǎn)了B蠊俊!陶珠!")

抄家伙内列,開始干吧!還等什么1陈省;扒啤!(づ ̄ 3 ̄)づ


my.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寝姿,一起剝皮案震驚了整個(gè)濱河市交排,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饵筑,老刑警劉巖埃篓,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異根资,居然都是意外死亡架专,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門玄帕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來部脚,“玉大人,你說我怎么就攤上這事裤纹∥酰” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锡移。 經(jīng)常有香客問我呕童,道長,這世上最難降的妖魔是什么淆珊? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任夺饲,我火速辦了婚禮,結(jié)果婚禮上施符,老公的妹妹穿的比我還像新娘往声。我一直安慰自己,他們只是感情好操刀,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布烁挟。 她就那樣靜靜地躺著,像睡著了一般骨坑。 火紅的嫁衣襯著肌膚如雪撼嗓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天欢唾,我揣著相機(jī)與錄音且警,去河邊找鬼。 笑死礁遣,一個(gè)胖子當(dāng)著我的面吹牛斑芜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祟霍,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼杏头,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了沸呐?” 一聲冷哼從身側(cè)響起醇王,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎崭添,沒想到半個(gè)月后寓娩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呼渣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年棘伴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屁置。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡焊夸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缰犁,到底是詐尸還是另有隱情淳地,我是刑警寧澤怖糊,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布帅容,位于F島的核電站颇象,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏并徘。R本人自食惡果不足惜遣钳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望麦乞。 院中可真熱鬧蕴茴,春花似錦、人聲如沸姐直。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽声畏。三九已至撞叽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間插龄,已是汗流浹背愿棋。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留均牢,地道東北人糠雨。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像徘跪,于是被迫代替她去往敵國和親甘邀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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