首頁 現(xiàn)實

程序媛養(yǎng)成計劃

第三十四章 老君煉丹記(下)

程序媛養(yǎng)成計劃 任煦之秋 2079 2020-05-07 22:01:22

  「函數(shù)?」

  我和小弦子兩臉懵逼,對這個從來沒有聽說過的詞匯充滿了疑問。

  「也別想太復(fù)雜,函數(shù)其實就是實現(xiàn)了某個功能的代碼段。當我們要使用這個功能的時候,只需要調(diào)用函數(shù)就行了,而不是再寫一段相似的代碼。就好比說故事中的煉丹爐,太上老君在煉丹之前只需要把煉丹相關(guān)的程序設(shè)定好就行了,而不是每次都自己動手,去進行繁瑣復(fù)雜的事情。

  再舉個簡單的例子,奶奶使用電飯煲煮飯你看到過吧?現(xiàn)在煮飯只需要三個步驟:淘米摻水、上電、按煮飯按鈕。在老爹小時候,煮飯可不是一件容易的事情,你得自己先燒一鍋水,等水開了之后淘米,倒進鍋里,然后一邊燒火保持鍋內(nèi)的水沸騰,一邊還要頻繁攪拌,不讓米粒沉降在鍋底。

  等到米粒五六分熟的時候,還要用筲箕將它們?yōu)r干,最后再用甑子把半生夾熟的米粒蒸熟。

  而現(xiàn)在煮飯這個功能已經(jīng)電飯煲實現(xiàn)了,所以我們現(xiàn)在煮飯只需要調(diào)用電飯煲的煮飯功能就行了,快捷又方便。

  函數(shù)的本質(zhì)作用就和煉丹爐、電飯煲一樣,是實現(xiàn)了某種功能代碼段,至于要實現(xiàn)什么功能,這就要靠我們程序員來定義了?!?p>  有兩個例子做分析論證,我慢慢理解了為什么要使用函數(shù),以及函數(shù)是什么。既然我都明白了,小弦子肯定也早就悟得其真諦。

  「既然已經(jīng)知道why和what了,那么接下來就應(yīng)該學(xué)習(xí)how,如何使用?其實不管是學(xué)習(xí)編程也好,還是學(xué)習(xí)其他的東西,你只要按照這個套路來,基本上不會出岔子。

  在學(xué)習(xí)如何使用的過程中,我們依然用煉丹爐和電飯煲這兩個例子來說明。

  要使用函數(shù),那咱們得先定義函數(shù)。你要煉丹,沒有煉丹爐怎么煉?煮飯沒有電飯煲怎么煮。所以我們?nèi)绻褂媚硞€函數(shù),必須得先定義。

  當然了,不是所有函數(shù)都需要自己的定義,有可能別人已經(jīng)給你定義好了,就像是printf()函數(shù),這個是C語言函數(shù)庫,也就是開發(fā)C語言的那些科學(xué)家已經(jīng)定義好了的,咱們直接拿來使用就行了。

  你們想啊,咱們沒有電飯煲的時候總不能自己造一個吧,可以去商店里面買一個,因為別人已經(jīng)造好了。

  好了,閑話休提,言歸正傳。

  要定義個函數(shù),實現(xiàn)一個功能,你總得給它起個名字吧?雖然這個名字只要符合之前講過的其名法則即可,但是我們還是盡量讓它貼近功能。你看煉丹爐、電飯煲這兩個名字,人一聽就知道是用來干什么的。

  起名可是頭等大事,不能含糊,名字起好了問題就解決一半了!當然這是不可能的,哪有那么便宜的事情。

  接下來就是要完成這個功能,需要一些什么條件因素了。如果要煉丹,你總得準備草藥啊什么的吧?要煮飯總得要米、水這些東西吧。

  當然了,也不絕對。你們看,按照理論上來說煉丹爐和電飯煲都還有一些不需要任何東西的功能,比如說給孫悟空煉火眼金睛的時候,不就什么都沒有放么?

  然后就是這個功能要得到什么東西,你看,煉丹煉丹,最后得到的是仙丹,煮飯煮飯,最后得到的時候米飯。

  所以我們的函數(shù)也可以得到一些東西,當然了也不是絕對的。如果煉丹爐就那么燒著玩兒,也不會得到仙丹是吧?

  最后一步,就是具體功能的實現(xiàn)過程了,這個需要我們來做。

  以上在C語言中都有它們專業(yè)的叫法,起的名字叫做函數(shù)名,需要的元素叫做參數(shù),得到的結(jié)果叫做返回值。

  上面的內(nèi)容總結(jié)起來,一個函數(shù)的聲明格式如下:

  返回值函數(shù)名稱(參數(shù)列表)

  {

  實現(xiàn)功能的代碼;

  return 返回值;

  }

  其中有幾個地方需要注意返回值可以是某種具體數(shù)據(jù)類型,如byte、short、int、long、float、double、char這樣的基本數(shù)據(jù)類型,也可以是我們以后要學(xué)的結(jié)構(gòu)體、枚舉等類型。如果一個函數(shù)沒有返回值,就需要聲明為void,這個單詞是『空』的意思。

  同樣的,參數(shù)列表也可以是這些數(shù)據(jù)類型,如果有多個參數(shù),則需要用英文狀態(tài)下的逗號隔開。若是沒有輸入?yún)?shù),則也聲明為void。

  最后說一下那個return,這個關(guān)鍵字會結(jié)束一個函數(shù),如果在聲明函數(shù)的時候返回值不為void的話,這個時候return后面就必須跟聲明的返回值類型?!?p>  聽著老爹講了一通,我完全不明所以。就連一向聰明絕頂?shù)男∠易右彩且活^霧水。

  「我知道,這些概念聽來有些難以理解,那么我們用實際的代碼來說明一個函數(shù)的定義。」

  老爹微微一笑,似乎我和小弦子的反應(yīng)完全在他的意料范圍之內(nèi)。

  「嗯,首先我們來一個對兩個int型數(shù)值做加法的函數(shù),假設(shè)函數(shù)名字叫做add,也就是加法的意思,表名我們這個函數(shù)是要做加法。

  然后呢,我們這個加法函數(shù)需要兩個int型參數(shù),分別是a和b,代表兩個加數(shù)。

  最后咱們還要計算得到的結(jié)果返回出來。

  那么,要實現(xiàn)這個函數(shù),其代碼如下:

  int add(int a,int b)

  {

   int sum = a + b;

   return sum;

  }

  這樣我們就定義好了一個做加法的函數(shù)了。既然函數(shù)一定定義好了,接下來就是如何使用的問題了。

  比如說我們要計算10+20的結(jié)果,那么就可以這樣:

  int sum = add(10,20);

  這樣add函數(shù)的返回值就會賦值給變量sum,這個時候sum里面的值就是30?!?p>  「任叔叔,玥玥給我的教學(xué)文檔上說過,C語言里面給變量起名字的時候不能出現(xiàn)一樣的,現(xiàn)在add函數(shù)里面和外面都有一個名字叫sum的變量,這不是和你之前的說法互相矛盾么?」

  小弦子不解地問道。

  竟他這么一提問,我也意識到了這個問題。

  「不錯不錯,看來你們果然對之前的知識掌握得不錯。我之所以會這樣寫,就是為了引出這個問題,如果你們沒有發(fā)現(xiàn)我也會主動拋出這個問題。

  不管怎么樣,你們先在嘗試寫我剛才定義的函數(shù),然后運行一下看看會不會報錯再說?!?p>  老爹笑瞇瞇地說道。

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進入下一章  按 “空格鍵” 向下滾動
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁
返回書頁
指南