Issuu on Google+

宣告 我們在 『NSLog( )函式』的教學裡,簡單地使使用了 NSLog( )函式來做輸出 的工作。是否對函式有了初步的印象了呢?現在就讓我們更進一步的來了解函 式架構吧。 打開 Xcode,在選單列 File 裡選擇 New Project(新專案) 選擇 Mac OS X 下的 Application 的 Cocoa Application

專案名稱就取 HelloWorld 吧 選擇好自己喜好的位置,按下 save


讓我們來回憶一下在『NSLog( )函式』教學裡的例子吧 例1: #import <Foundation/Foundation.h> int

main () { float x, y; x = 30.5; y = x * 2 + 1; NSLog(@"所以y共有%f元",y); return 0;

//1.4 //1.5 //1.6 //1.7 //1.8

}

之前我們提過 一個完整的程式碼結構在格式上可以分成三大部分 分別為:標頭、註解、述句 我們現在可以分辨出標頭跟註解了 那是否其它的部份就是所謂的述句了呢? 嗯~這們說並不完全正確喔 這個部分是我們一個程式碼裡最重要的函式 真正的述句是指在 int main () { }中,大括號裡的所有句子 也就是//1.4到//1.8的部份 述句就是我們要對電腦說的話 最大的特徵就是每句述句的末端都有個分號 這個分號可是非常重要的呦 他告訴了我們的電腦每個句子斷句的地方 例2:

例3: #import <Foundation/Foundation.h>

#import <Foundation/Foundation.h> int

}

main () { float x, y x = 30.5 y = x * 2 + 1 NSLog(@"所以y共有%f元",y) return 0

int main () { float x, y; x = 30.5; y = x * 2 + 1; //3.7 NSLog(@"所以y共有%f元",y); return 0; }

仔細觀察例2跟例3 我們可以發現例二中的述句全都沒有加上分號 而例3在//3.7的地方被我們空了一行 猜猜這兩個例子在編譯後會怎樣呢?


結果例2生了錯誤 而例3的卻跟例1完全一樣 很奇怪嗎? 原來我們可以輕易地靠換行來分辨斷句 但我們的電腦卻不行 所以它並不在乎例3中//3.7的斷行 例2的那五句述句更是被當成了一句 理所當然的會出現錯誤囉 所以千萬別忘了為每一句述句的末端加上分號 回到今天的主題 先說說函式是啥? 簡單的說 函式是一個程式的主體 是我們對電腦下指令的地方 所謂的函式就是一連串的指令 而我們所下的指令即是述句 一個程式可以包含多個函式 為了分辨這些不同的函式 我們得為它們一一命名 所以函式是有名字的 而我們一直沒做這個命名的動作是因為電腦幫我們做好了 我們一直在使用著名為 main 的函式 讓我們瞧瞧 main 的函式的完整格式: 例4:

函式的型別

函式的名稱

int main () { ... return 0 }

輸入引數的地方

函式的主體 回傳值

函式的名字,可以是任何字 但是一個程式中 必須有一個、且僅有一個名叫 main 的函式 整個程式就是從 main( ) 函式的第一個指令開始執行 至於回傳值的部份 我們現在暫時就先理解 main( )函式按慣例會傳回一個整數值給我們的電腦 傳回 0 是表示函式執行順利沒有問題


往後我們會在詳細的解說之 現在回想一下我們在例1中對 main( ) 函式下的指令是什麼 例5:

float x, y; x = 30.5; y = x * 2 + 1; NSLog(@"所以y共有%f元",y); return 0;

//5.1 //5.2 //5.3 //5.4 //5.5

這是一個給 x 值,算 y 值的簡單四則運算 //5.4跟//5.5我們都知道是啥了 //5.2跟//5.3很明顯就是計算的部份 那//5.1的float x, y;是什麼呢? 我們先把這行指令刪去 然後編譯看看有什麼不一樣吧

嗯~出現了兩個錯誤 為什麼會這樣呢? 原因很簡單 因為我們的電腦(編譯器)認不得 x 跟 y 這兩個字 所以我們必須告訴它這兩個字到底是什麼鬼東東 而//5.1就是在做這個動作啦 這樣的動作叫做宣告(declare) 而在數學中我們稱 x 跟 y 為代數 在C語言裡我們則換它們為變數(Variable)


或許你會問 既然編譯器不懂得 x 跟 y,那他怎會懂得30.5跟其他的數字呢? 好問題 在C語言裡的數字跟在數學上都一樣被稱作常數(constant) 每次使用這些常數都得做宣告是非常惱人且痛苦的 所以編譯器很貼心地天生就認得這些常數 而且除了常數外 我們一直在使用的加減乘除、分號、逗號、各式的括號等等 它都認識 另外它還認得一些特定的字 像是int、float及return還有其他很多很多字都是 這些呈現紫色的字叫做保留字(reserved words) 保留字是有特定意義的 例如float就是浮點數(也就是小數)的意思 所以//5.1就是告訴我們的編譯器(即是宣告)x 跟 y 這兩個數是小數 現在我們的電腦已經能夠清楚的認識 x 跟 y 這兩個字了 自然也就能夠輕鬆地完成我們要求它做計算的指令啦


宣告