IOS/Swift入門開發(fā)從"白吃"到大神,全球最易懂高镐,最全面溉旋,最前沿,最詳細(xì)嫉髓,一看就會(huì)教程之一观腊!

f2da63e17923fd0a18be1c90b948eb43.jpg

序言

本文為入門教程:主要針對(duì)無(wú)任何編程基礎(chǔ)或是想了解IOS/Swfit編程開發(fā)的小伙伴。
若本文讓你感到任何不適算行,頭暈想吐等癥狀梧油,嘿嘿嘿···本人概不負(fù)責(zé)!V菪稀儡陨!

傳送門

由于本教程是連載類型,為了各位看客老爺跟加直觀的欣賞。
第一課:http://www.reibang.com/p/8e8ff60121c4
第二課:http://www.reibang.com/p/8cdabd470f6f
第四課: http://www.reibang.com/p/55ca9d54a610

概述

學(xué)習(xí)一門新的語(yǔ)言迄委,首先肯定要先學(xué)習(xí)它的語(yǔ)法褐筛,結(jié)構(gòu)类少。Swift和C或其他語(yǔ)言的語(yǔ)法有很多差異叙身,在Swift不用聲明庫(kù)函數(shù),不用寫main函數(shù)硫狞,也不用在每句話的結(jié)束寫分號(hào)····

語(yǔ)法

1.如果我們想在屏幕上打印"Hello,Word!"這句話信轿,我可以直接在編譯器中寫這行代碼。
print("Hello,Word!")

不用做更多的操作残吩,就可以得到結(jié)果

2.定義變量和常量财忽。
let myConstant = 14 //定義一個(gè)常量為myConstant = 14 常量是不可改變的量
var myVariable = 13
myVariable = 14 //定義一個(gè)變量為myVariable = 13 然后改變它的值,將14賦給myVariable。現(xiàn)在myVariable的值為14泣侮。
3.字符串插值

字符串插值的意思是在你print的過(guò)程中即彪,將你定義的常量或變量插入你要輸出的字符串中,我們用第一點(diǎn)的print("Hello,Word!")和第二點(diǎn)定義的變量做試驗(yàn)活尊。

print("Hello,\(myConstant)Word!")
print("Hello,Word!\(myVariable)")
屏幕快照 2016-08-06 下午4.18.28.png

以上是程序運(yùn)行結(jié)果

4.注釋和其他語(yǔ)言相同隶校,在同一行代碼中 不用書寫分號(hào)。
5.類型推斷

在swift中 如果可以的話 盡可能省略類型標(biāo)記蛹锰,讓swift自己推斷類型

6.關(guān)于Swift中類型int深胳,float,double相關(guān)的
let three = 3
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine

Double(three) 和C語(yǔ)言的強(qiáng)制轉(zhuǎn)換有很大區(qū)別
Double(three) swift 中是將three這個(gè)數(shù)據(jù)的值取出來(lái)铜犬,從新定義一個(gè)Double類型的變量舞终,并將Three的值賦這個(gè)變量。

7.元組

元組是用一個(gè)變量或常量癣猾,保存多項(xiàng)數(shù)據(jù)

let http404Error = (404, "Not Found")
// http404Error is of type (Int, String), and equals (404, "Not Found")

下劃線的意思 忽略這一項(xiàng)

let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
// Prints "The status code is 404
8.運(yùn)算符

運(yùn)算符 可以分為一元運(yùn)算符敛劝,二元運(yùn)算符,三元運(yùn)算符纷宇。

一元運(yùn)算符

數(shù)字前面代表數(shù)字正負(fù)的正負(fù)號(hào)是唯一的一元運(yùn)算符 eg: -8,-14,+8(正數(shù)我們一般省略前面的正號(hào)寫為:8)

二元運(yùn)算符

1.賦值運(yùn)算符

let b = 10
var a = 5
a = b
// a is now equal to 10

2.關(guān)系運(yùn)算符

1 == 1  
2 != 1   
2 > 1    
1 < 2    
1 >= 1   
2 <= 1 

3.算術(shù)運(yùn)算符:加減乘除取余

1 + 2       // equals 3
5 - 3       // equals 2
2 * 3       // equals 6
10.0 / 2.5  // equals 4.0 
9 % 2       // equals 1
三元運(yùn)算符

讓c 取a 和b中較小的值
let a =5 , b=10
let c = a < b ? a : b

問(wèn)號(hào)前面是一個(gè)產(chǎn)生Bool類型的變量攘蔽,常量或表達(dá)式

9.Parentheses 圓括號(hào)的作用

可以使用圓括號(hào)改變運(yùn)算順序 , 如果不清楚運(yùn)算的執(zhí)行程序也可以直接使用圓括號(hào)來(lái)改變運(yùn)算順序呐粘。

10.容器類型-數(shù)組

數(shù)組是一個(gè)有序的集合

var threeDoubles = [Double](count: 3, repeatedValue: 0.0)
var array1 = [Int]()
var array2: [Int] = []
var array3 = [99,12,34,156,7]
var array4 = [Int](count: 100, repeatedValue: 1)


var arrayString1 = [String]()
var arrayString2: [String] = []
var arrayString3 = ["abc","def","ghi","apple","orange"]
var arrayString4 = [String](count: 100, repeatedValue: "")

兩個(gè)數(shù)組可以相加

var anotherThreeDoubles = [Double](count: 3, repeatedValue: 2.5)
// anotherThreeDoubles is of type [Double], and equals [2.5, 2.5, 2.5]
 
var sixDoubles = threeDoubles + anotherThreeDoubles
// sixDoubles is inferred as [Double], and equals [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]
向數(shù)組中添加元素的方法
shoppingList.append("Flour")
//可以使用append這個(gè)函數(shù)
shoppingList += ["Baking Powder"]
// shoppingList now contains 4 items
shoppingList += ["Chocolate Spread", "Cheese", "Butter"]
//也可以用+=向數(shù)組中添加一個(gè)或多個(gè)元素

數(shù)組的第一個(gè)元素的下標(biāo)是從0開始的 而不是1

對(duì)數(shù)組進(jìn)行遍歷(迭代)
let shoppingList = ["Six egg","Milk","Flour","Baking Powder","Bananas"]
for item in shoppingList {
    print(item)
}
for (index, value) in shoppingList.enumerate() {
    print("Item \(index + 1): \(value)")
}
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
// Item 4: Baking Powder
// Item 5: Bananas”

控制流程

控制流程
1.順序結(jié)構(gòu)
程序按正常順序執(zhí)行满俗。
2.分支結(jié)構(gòu)
3.循環(huán)結(jié)構(gòu)

//循環(huán)
 //第一種循環(huán)
import Foundation
var i = 1
while i <= 10  {
    print("\(i)")
    print("Hello, World!")
    i += 1//i++
}

 //第二種循環(huán)  這種循環(huán)和上一種循環(huán)主要的區(qū)別是  --repeat循環(huán)至少執(zhí)行一次
var i = 1
repeat{
    print("\(i).Hello,Word")
    i += 1
}while i <= 100

 //第三種循環(huán)
for i in 1...10{
    print("\(i).Hello,World!")
}
// 不想用循環(huán)變量 i可以使用 _ 來(lái)省略i

這三個(gè)結(jié)構(gòu)包括了所有的代碼結(jié)構(gòu)

為了幫助我們理解上述的控制流程,我們來(lái)做幾個(gè)練習(xí)作岖。廢話不多說(shuō)唆垃,直接上干貨。

1.猜數(shù)字

題目要求:書寫一段Swift代碼實(shí)現(xiàn)痘儡,隨機(jī)出現(xiàn)一個(gè)1-100的數(shù)字辕万,讓用戶猜這個(gè)數(shù)字是幾,每次提示用戶猜的數(shù)字是比實(shí)際數(shù)字大還是小,直到用戶猜中為止渐尿。

let answer = Int(arc4random_uniform(100)) + 1
var thyAnswer:Int
var counter = 0
repeat{
    counter += 1
    print("請(qǐng)輸入你猜的數(shù)字:",terminator:"")
    thyAnswer = inputInt()

    if thyAnswer > answer{
        print("猜小一點(diǎn)")
    }
    else if thyAnswer < answer{
        print("猜大一點(diǎn)")
    }
    else{
        print("恭喜你猜對(duì)了醉途!您一共猜了\(counter)次")
    }

}while thyAnswer != answer
if counter > 7{
    print("你的智商該充值了!W┤住隘擎!")
}
2.得出1-100的素?cái)?shù)
//得出1-100的素?cái)?shù)

func isPrime(n: Int) -> Bool{
    var i = 2
    while i <= Int(sqrt(Double(n))){
        if n % i == 0{
            return false
        }
        i += 1
    }
    //如果上面的循環(huán)沒(méi)有返回false 就說(shuō)明在2到n開根號(hào)之間沒(méi)有n的因子 因此返回true 表示n是素?cái)?shù)
    return true
}

for n in 1...100{
    if isPrime(n){
        print(n)
    }
}

這段代碼并不難,主要的是代碼優(yōu)化凉夯,我開始在While是做了n次循環(huán)货葬,經(jīng)過(guò)優(yōu)化后只用做根號(hào)n次的循環(huán),大大減少了循環(huán)的數(shù)量劲够,加快了程序執(zhí)行的時(shí)間震桶。

3.百錢白雞

題目要求:現(xiàn)在有100塊錢,公雞5塊一只征绎,母雞3塊一只蹲姐,小雞1塊三只,現(xiàn)在要用這100塊買100只雞人柿,問(wèn)公雞柴墩,母雞,小雞各有多少只顷扩?

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

    }
}
// GET:窮舉法(窮盡所有的可能性直到正確答案)
4.搖色子游戲

題目要求:現(xiàn)有兩人拐邪,一個(gè)玩家,一個(gè)莊家隘截。玩家搖兩個(gè)色子扎阶,如果第一次搖到7,11點(diǎn)玩家勝婶芭,搖到2东臀,3,12莊家勝犀农,搖到其他點(diǎn)數(shù)記住這個(gè)點(diǎn)數(shù)并繼續(xù)搖下一次惰赋;以后每次玩家搖色子的點(diǎn)數(shù)和第一次記住的點(diǎn)數(shù)相同玩家勝,搖到7點(diǎn)莊家勝呵哨。用swift代碼實(shí)現(xiàn)以上要求

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 fristPoint = roll() + roll()
    print("玩家搖出了\(fristPoint)")
    switch fristPoint{
    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)")
        if currentPoint == 7 {
            money -= debt
            print("莊家勝!!!")
            needsGoOn = false
        }
        else if currentPoint == fristPoint{
            money += debt
            print("玩家勝!!!")
            needsGoOn = false
        }
    }
}while money > 0
print("你破產(chǎn)了A薇簟!C虾Α拒炎!")
5.排序選擇

題目要求:一個(gè)數(shù)組中無(wú)序的數(shù)字,使用簡(jiǎn)單選擇排序法排序挨务。ps:簡(jiǎn)單選擇排序:每次從剩下元素中找最小的元素放到對(duì)應(yīng)的位置

var array = [27,45,78,58,44,89,12,5]
for i in 0..<array.count - 1{
    var mindex = i
    for j in i+1..<array.count{
        if array[j] < array[mindex]{
            mindex = j
        }
    }
(array[i],array[mindex]) = (array[mindex],array[i])
}
print(array)
6.冒泡排序

題目要求:一個(gè)數(shù)組中無(wú)序的數(shù)字击你,使用冒泡排序法排序玉组。ps:冒泡排序:兩個(gè)數(shù)字排序?qū)⒋蟮臄?shù)字排在后面。

var array = [27,45,78,58,44,89,12,5]
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 // if !swapped
    {
        break
    }
}
print(array)
還有很多練習(xí)例子丁侄,比如完美數(shù)惯雳,水仙花數(shù),約瑟夫環(huán)等等鸿摇,也可以去練習(xí)一下石景。
還記得大一的時(shí)候,有位大師級(jí)的教授告訴我們户辱,只要學(xué)會(huì)了重復(fù)和判斷鸵钝,就可以完成你想完成的所有事情糙臼。簡(jiǎn)單說(shuō)最要的部分就是循環(huán)和分支庐镐。
本次教程到處就要結(jié)束了,如果你有什么更好的建議和想法变逃,可以聯(lián)系我必逆,讓我們一同進(jìn)步。

未完待續(xù)····每周日更新新的教程揽乱,敬請(qǐng)期待名眉!88····

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凰棉,隨后出現(xiàn)的幾起案子损拢,更是在濱河造成了極大的恐慌,老刑警劉巖撒犀,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件福压,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡或舞,警方通過(guò)查閱死者的電腦和手機(jī)荆姆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)映凳,“玉大人胆筒,你說(shuō)我怎么就攤上這事≌┩悖” “怎么了仆救?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)矫渔。 經(jīng)常有香客問(wèn)我彤蔽,道長(zhǎng),這世上最難降的妖魔是什么蚌斩? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任铆惑,我火速辦了婚禮范嘱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘员魏。我一直安慰自己丑蛤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布撕阎。 她就那樣靜靜地躺著受裹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虏束。 梳的紋絲不亂的頭發(fā)上棉饶,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音镇匀,去河邊找鬼照藻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛汗侵,可吹牛的內(nèi)容都是我干的幸缕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼晰韵,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼发乔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起雪猪,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤栏尚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后只恨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體译仗,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年坤次,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了古劲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缰猴,死狀恐怖产艾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滑绒,我是刑警寧澤闷堡,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站疑故,受9級(jí)特大地震影響杠览,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纵势,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一踱阿、第九天 我趴在偏房一處隱蔽的房頂上張望管钳。 院中可真熱鬧,春花似錦软舌、人聲如沸才漆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)醇滥。三九已至,卻和暖如春超营,著一層夾襖步出監(jiān)牢的瞬間鸳玩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工演闭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留不跟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓船响,卻偏偏與公主長(zhǎng)得像躬拢,于是被迫代替她去往敵國(guó)和親躲履。 傳聞我的和親對(duì)象是個(gè)殘疾皇子见间,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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