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

邂逅Swift

學(xué)習(xí)Swift拧揽,我們遇到的第一個程序:

print("Hello,world!")

在Swift中踱卵,我們不需要單獨創(chuàng)建一個主函數(shù)main,在項目創(chuàng)建的過程中,系統(tǒng)會自動生成一個叫"main.swift"的文件失受,我們將主函數(shù)中的代碼寫在其中趴樱。

屏幕快照 2016-08-06 上午10.57.51.png

變量和常量

常量:

常量是在程序運行時,不能被修改的量尚卫;常量有不同的類型归榕,常見的有整數(shù)型ex:1,2,3; 浮點數(shù)型ex:0.0,1.1; 字符串型ex:"orange","lemon","litch"等,常量一般從其字面形式就可以判斷類型,這種常量稱為直接常量或字面常量。

let constant: Int
let constant = 10

變量:

變量來源于數(shù)學(xué),是計算機語言中能存儲計算結(jié)果或表示值抽象概念余寥。變量可以通過變量名訪問,在程序運行過程中特石,同一個變量的值可能不變,也可能會不斷的變化鳖链。

var a = 1
var b = 1
 a = a + b 
print(a)

此程序的運算結(jié)果為:


屏幕快照 2016-08-06 上午10.45.44.png

其中我們可以看到姆蘸,變量a的值是隨著程序運行而變化的。


運算符

常見的一元運算符為: "+"芙委、"-"
在Swift中逞敷,最常見的幾種二元運算符依然是加、減灌侣、乘推捐、除

print("請輸入第一個數(shù):")
let a = inputDouble()
print("請輸入第二個數(shù):")
let b = inputDouble()

print("\(a) + \(b) = \(a + b)")
print("\(a) - \(b) = \(a - b)")
print("\(a) * \(b) = \(a * b)")
print("\(a) / \(b) = \(a / b)")
print("\(a) % \(b) = \(a % b)")

在進行加、減侧啼、乘牛柒、除運算左右兩邊類型必須一致。
在Swift中痊乾,小數(shù)的表示方法為:

// 兩種小數(shù)的表示方法
let x: Double = 321
let y = 123.0
print(x * y)
print(x / y)

在運算過程中皮壁,值得注意的是:
整數(shù)除以0產(chǎn)生運行時異常;
小數(shù)除以0可能的結(jié)果是inf/-inf/nan
inf: infinity
nan: not a number
在Swift中符喝,還有常用的二元運算符 "%"、"&&"甜孤、"||"
% - 模運算协饲,對參數(shù)求余數(shù)(求模)
&& - 短路與運算
|| - 短路或運算

let year = 2016
if year % 4 == 0 && year % 100 != 0||year % 400 == 0 {
    print("\(year)年是閏年")
}
else {
    print("\(year)年不是閏年")
}

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


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

順序結(jié)構(gòu)的程序雖然能解決計算把夸、輸出等問題而线,但不能做判斷再選擇。對于要先做判斷再選擇的問題就要使用分支結(jié)構(gòu)。分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑膀篮,而不是嚴(yán)格按照語句出現(xiàn)的物理順序嘹狞。分支結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句誓竿。

分支結(jié)構(gòu)中磅网,最簡單的是單一分支結(jié)構(gòu),其結(jié)構(gòu)的基本構(gòu)成為:

if (條件語句) {
}
else {
}

另外除了這種if - else的基本結(jié)構(gòu)筷屡,當(dāng)遇到分支結(jié)構(gòu)有多種情況時涧偷,還可以使用switch - case ,而且這個結(jié)構(gòu)與if - else結(jié)構(gòu)還可以嵌套使用:

print("請輸入你的月薪:",terminator: "")
let salary = inputInt() * 13
if salary >= 0 {
    switch salary {
    case 0:
        print("你丫就是個無業(yè)游民")
    case 1...30000:
        print("你是一個小碼畜")
    case 30001...60000:
        print("你是一個小碼奴")
    case 60001...100000:
        print("你是一個臭碼農(nóng)")
    case 100001...200000:
        print("你是一個IT民工")
    case 200001...500000:
        print("你是一個優(yōu)秀的IT工程師")
    case 500001..<10000000:
        print("你是IT精英")
    case 10000000..<100000000:
        print("你是IT大哥,我服!")
    default:
        print("你是頭上有光環(huán)的IT領(lǐng)袖毙死,求帶")
    }
}
else {
    print("你丫輸入錯誤燎潮!")
}

通過以上結(jié)構(gòu)可以看出,在處理不同的條件判斷與不同的情況選擇的時候扼倘,可以靈活的選擇不同的分支結(jié)構(gòu)進行判斷與處理确封。


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

循環(huán)結(jié)構(gòu)可以很大程度減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題唉锌,這是程序中最能發(fā)揮計算機特長的結(jié)構(gòu)隅肥。
在Swift中,基本的循環(huán)結(jié)構(gòu)有三種類型:
for循環(huán):

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

while循環(huán):

var i = 1
while i <= 10 {
    print("\(i)Hello, World!")
    i += 1
}

repeat - while循環(huán):

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

循環(huán)結(jié)構(gòu)可以看成是一個條件判斷語句和一個向回轉(zhuǎn)向語句的組合袄简。另外腥放,循環(huán)結(jié)構(gòu)的三個要素:循環(huán)變量、循環(huán)體和循環(huán)終止條件绿语。循環(huán)結(jié)構(gòu)在程序框圖中是利用判斷框來表示秃症,判斷框內(nèi)寫上條件,兩個出口分別對應(yīng)著條件成立和條件不成立時所執(zhí)行的不同指令吕粹,其中一個要指向循環(huán)體种柑,然后再從循環(huán)體回到判斷框的入口處。
用循環(huán)結(jié)構(gòu)可以處理某些復(fù)雜的邏輯問題匹耕,將自己并不知道結(jié)果的復(fù)雜計算交給計算機處理聚请,例如,使用窮舉法:
用窮舉法處理100元錢買100只雞的問題稳其,其中驶赏,公雞5元一只,母雞3元一只既鞠,小雞1元三只:

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)")
        }
    }
}

最后煤傍,我們通過運行程序,得到了所有滿足條件的結(jié)果:


屏幕快照 2016-08-06 下午2.51.49.png

數(shù)組

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

所謂數(shù)組嘱蛋,就是相同數(shù)據(jù)類型的元素按一定順序排列的集合蚯姆,就是把有限個類型相同的變量用一個名字命名五续,然后用編號區(qū)分他們的變量的集合,這個名字稱為數(shù)組名龄恋,編號稱為下標(biāo)疙驾。組成數(shù)組的各個變量稱為數(shù)組的分量,也稱為數(shù)組的元素篙挽,有時也稱為下標(biāo)變量荆萤。

var array1 = [String]()
var array2: [String] = []
var array3 = ["red", "yellow", "orange", "green", "blue"]
var array4 = [String](count: 100, repeatedValue: "")

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

print(array1.count)
print(array2.count)
print(array3.count)
print(array4.count)

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

for i in 0..<array3.count {
    // []是對數(shù)組進行下標(biāo)運算(取出指定位置的元素)
    print(array3[i])
    if i == 1 {
        array3[i] = "litch"
    }
}
// 只讀循環(huán)(在循環(huán)過程中不能改變數(shù)組元素)
for str in array3 {
    print(str)
}

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

// append   追加
// insert   插入
array1.append("strawberry")
array1.append("pear")
array1.insert("waxberry", atIndex: 0)
array1.insert("watermelon", atIndex: 2)
array1.insert("lenmon", atIndex: array1.count)  //用insert加到最后,等效于append
print(array1)

5.刪除數(shù)組中的元素

array1.removeAtIndex(2)
print(array1)
array1.removeFirst()
print(array1)
array1.removeAll()
print(array1)

6.數(shù)組的復(fù)制

var array5 = array3
array5[0] = "pitaya"
print(array3)
print(array5)
var array6 = array3[1...3]
print(array6)

for (index, value) in array3.enumerate() {
    print("\(index),\(value)")
}

7.對數(shù)組中元素進行排序:

1.Swift中程序自帶的排序方法:

var array = [29, 98, 35, 12, 47, 66, 53, 79]
let  newArray = array.sort(>)
print(array)
print(newArray)

array.sortInPlace()
print(array)

var array1 = ["apple", "orange" , "watermelon" , "lemon"]
let newArray1 = array1.sort(>)
print(array1)
print(newArray1)

array1.sortInPlace()
print(array1)

2.簡單選擇排序:

var array = [29, 98, 35, 12, 47, 66, 53, 79]
for i in 0..<array.count {
    var minIndex = i
    for j in i + 1..<array.count {
        if array[j] < array[minIndex] {
            minIndex = j
        }
    }
    (array[i],array[minIndex]) = (array[minIndex],array[i])
}
print(array)

3.冒泡排序:

var array = [29, 98, 35, 12, 47, 66, 53, 79]
for i in 0..<array.count - 1 {
    var swapped = false
    for j in 0..<array.count - 1 - i {
        if array[j] > array[j + 1] {
            (array[j],array[j + 1]) = (array[j + 1],array[j])
            swapped = true
        }
    }
    if swapped == false {
        break
    }
}
print(array)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铣卡,一起剝皮案震驚了整個濱河市链韭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌煮落,老刑警劉巖敞峭,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蝉仇,居然都是意外死亡旋讹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門轿衔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沉迹,“玉大人,你說我怎么就攤上這事害驹”夼唬” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵宛官,是天一觀的道長葫松。 經(jīng)常有香客問我,道長底洗,這世上最難降的妖魔是什么腋么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮亥揖,結(jié)果婚禮上珊擂,老公的妹妹穿的比我還像新娘。我一直安慰自己费变,他們只是感情好摧扇,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胡控,像睡著了一般扳剿。 火紅的嫁衣襯著肌膚如雪旁趟。 梳的紋絲不亂的頭發(fā)上昼激,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天庇绽,我揣著相機與錄音,去河邊找鬼橙困。 笑死瞧掺,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凡傅。 我是一名探鬼主播辟狈,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼夏跷!你這毒婦竟也來了哼转?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤槽华,失蹤者是張志新(化名)和其女友劉穎壹蔓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猫态,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡佣蓉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了亲雪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勇凭。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖义辕,靈堂內(nèi)的尸體忽然破棺而出虾标,到底是詐尸還是另有隱情,我是刑警寧澤终息,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布夺巩,位于F島的核電站,受9級特大地震影響周崭,放射性物質(zhì)發(fā)生泄漏柳譬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一续镇、第九天 我趴在偏房一處隱蔽的房頂上張望美澳。 院中可真熱鬧,春花似錦摸航、人聲如沸制跟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雨膨。三九已至,卻和暖如春读串,著一層夾襖步出監(jiān)牢的瞬間聊记,已是汗流浹背撒妈。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留排监,地道東北人狰右。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像舆床,于是被迫代替她去往敵國和親棋蚌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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