自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為孩子寫(xiě)一本編程書(shū)系列:學(xué)習(xí)函數(shù) 將命令打包

開(kāi)發(fā) 開(kāi)發(fā)工具
雖然只是在Playground中將moveFoward()、collectGem()、toggleSwitch()這些簡(jiǎn)單的命令進(jìn)行組合并執(zhí)行,但看得出,在每一次完成一項(xiàng)編程挑戰(zhàn)游戲的過(guò)程中,孩子的編程思維也正被逐漸地構(gòu)建起來(lái)。而在這一節(jié)里,我們將介紹編程學(xué)習(xí)中另一個(gè)重要工具——函數(shù)。

在上一節(jié)中,小Ian已經(jīng)熟悉了使用命令來(lái)解決一些簡(jiǎn)單的編程挑戰(zhàn)。雖然只是在Playground中將moveFoward()、collectGem()、toggleSwitch()這些簡(jiǎn)單的命令進(jìn)行組合并執(zhí)行,但看得出,在每一次完成一項(xiàng)編程挑戰(zhàn)游戲的過(guò)程中,孩子的編程思維也正被逐漸地構(gòu)建起來(lái)。而在這一節(jié)里,我們將介紹編程學(xué)習(xí)中另一個(gè)重要工具——函數(shù)。

認(rèn)識(shí)函數(shù)

在我們的日常生活中,即使是一個(gè)最簡(jiǎn)單的任務(wù),也是由由一系列步驟,按照一定的順序組合而成的。比如,我們每天都會(huì)做的系鞋帶這個(gè)動(dòng)作,也可以將它分成三個(gè)步驟來(lái)完成。

每雙鞋都有兩只,因此同樣的過(guò)程,我們需要重復(fù)執(zhí)行兩遍。想象一下,如果我們用上一節(jié)學(xué)過(guò)的命令方式,去讓計(jì)算機(jī)完成系鞋帶這個(gè)任務(wù)的話,是不是應(yīng)該需要輸入下面這6條命令呢?

但想一想,當(dāng)我們穿鞋時(shí),其實(shí)并不是按照這些指令來(lái)完成穿鞋這個(gè)任務(wù)的。在我們的腦子里只是記住了系鞋帶的步驟,然后每次需要穿鞋系鞋帶時(shí),就將這些步驟從腦袋里拿出來(lái),應(yīng)用到穿每一只鞋子上。那么,同樣的,有沒(méi)有一種方法能夠讓計(jì)算機(jī)記住這些步驟,并在需要的時(shí)候去使用它呢?這里,我們就需要用到一個(gè)新的工具——函數(shù)。

函數(shù)能夠?qū)⒁唤M命令打包,并給它賦予一個(gè)名稱(chēng)。而這一組命令便可以在需要時(shí)通過(guò)這個(gè)函數(shù)的名字進(jìn)行調(diào)用。

定義函數(shù)

讓我們?nèi)砸韵敌瑤槔纯慈绾瓮ㄟ^(guò)定義函解的方式,讓計(jì)算機(jī)記住系鞋帶的步驟:

  • 首先我們通過(guò) func 關(guān)鍵字來(lái)聲明一個(gè)函數(shù)
  • func后面跟著的便是我們給函數(shù)起的名字,上面這個(gè)函數(shù)的名字叫做tieMyShoe——系我的鞋帶,和之前提到的命令一樣,我們也在函數(shù)的名稱(chēng)后面加上一對(duì)括號(hào)。
  • 我們使用一對(duì) 花括號(hào){} 來(lái)定義函數(shù)所包含的內(nèi)容,我們也稱(chēng)它為 函數(shù)體。通過(guò)將命令添加到函數(shù)體中,便能給這個(gè)函數(shù)添加我們所希望的行為。

調(diào)用函數(shù)

我們定義函數(shù)之后,計(jì)算機(jī)并不會(huì)自動(dòng)地去執(zhí)行它。而是需要我們明確地告訴計(jì)算機(jī)在何時(shí)何地去調(diào)用它。我們通過(guò)函數(shù)名來(lái)調(diào)用并執(zhí)行它所打包的那一組命令。這里,我們便通過(guò)調(diào)用兩次tieMyShoe()函數(shù),完成給兩只鞋系鞋帶的任務(wù)。

[[185529]]

Tips:理解函數(shù)的定義和調(diào)用之間的關(guān)系非常重要,函數(shù)用來(lái)打包命令,但在定義后并不會(huì)被直接執(zhí)行,只有在通過(guò)函數(shù)的名字調(diào)用它們時(shí),函數(shù)體內(nèi)的命令才會(huì)被執(zhí)行。

通過(guò)函數(shù)簡(jiǎn)化問(wèn)題解決

函數(shù)是程序員們編程時(shí)最常使用的工具,但對(duì)于初學(xué)者來(lái)說(shuō),他們卻往往難以判斷什么時(shí)候應(yīng)該使用函數(shù),因?yàn)?,大部分情況下我們同樣能通過(guò)組合命令來(lái)解決問(wèn)題。下面是那些最常見(jiàn)的函數(shù)使用場(chǎng)景,而其中第二點(diǎn)又是這些場(chǎng)景中最常見(jiàn)的:

  • 當(dāng)需要通過(guò)組合已有的命令,來(lái)創(chuàng)造出新的或更復(fù)雜的行為時(shí)
  • 當(dāng)某一行為可能被重復(fù)或多次使用時(shí)
  • 當(dāng)某一行為變得太過(guò)復(fù)雜時(shí),也會(huì)將它分解成多個(gè)更小的行為

下面還是讓我們回到Ian最喜歡的Playground中,去看看我們?nèi)绾瓮ㄟ^(guò)函數(shù)去解決那些復(fù)雜問(wèn)題。在這個(gè)挑戰(zhàn)游戲中,我們需要幫助Byte抓到全部4顆寶石,并打開(kāi)4個(gè)開(kāi)關(guān)。

[[185530]]

Ian一眼就看出了這個(gè)迷宮的規(guī)律,4個(gè)寶石和4個(gè)開(kāi)關(guān),平均分布在迷宮的4條邊上。每一條邊上的寶石和開(kāi)關(guān)都在相同的位置上。因此,我們只要定義一個(gè)函數(shù)去解決一條邊上的寶石和開(kāi)關(guān),然后重復(fù)調(diào)用四次便可以完成這個(gè)編程挑戰(zhàn)了。讓我們?yōu)檫@個(gè)函數(shù)起個(gè)名字,就叫它resolveRow()吧。

瞧,我們剛剛成功完成了這個(gè)編程挑戰(zhàn),比起我們光用命令去實(shí)現(xiàn)所需要的27條命令,使用函數(shù)的方式是不是簡(jiǎn)明了很多呢?上面的這個(gè)編程挑戰(zhàn),并不是Playground中函數(shù)這一小節(jié)的***個(gè)編程挑戰(zhàn),但我們?cè)谶@個(gè)挑戰(zhàn)游戲中所運(yùn)用的方法,卻像極了那些程序員們?cè)谌粘9ぷ髦校鉀Q問(wèn)題時(shí)所普遍采用的思路:

  1. 首先明確任務(wù)的目標(biāo):抓到所有寶石、打開(kāi)所有開(kāi)關(guān)
  2. 分析問(wèn)題,盡可能地通過(guò)識(shí)別模式,將較大的問(wèn)題分解為一個(gè)個(gè)小問(wèn)題:這里的小問(wèn)題就是解決一條邊上的寶石與開(kāi)關(guān)。
  3. 為每一個(gè)獨(dú)立的小問(wèn)題找到解決方法:通過(guò)定義函數(shù)resolveRow()來(lái)處理一條邊上的寶石與開(kāi)關(guān)。
  4. 通過(guò)將這些小問(wèn)題的解決組合起來(lái),解決整個(gè)任務(wù)所包含的大問(wèn)題:通過(guò)調(diào)用4次resolveRow()函數(shù),完成挑戰(zhàn)。

Tips:這種解決問(wèn)題的思路和方法,不僅在編程中普遍應(yīng)用,也同樣適用于幾乎所有學(xué)科和領(lǐng)域。孩子們?cè)趯W(xué)習(xí)編程的過(guò)程中,實(shí)際也是在學(xué)習(xí)問(wèn)題識(shí)別、分解和解決的方法,這對(duì)他們盡早培養(yǎng)起獨(dú)立解決問(wèn)題的能力非常有幫助

小節(jié)

通過(guò)這一節(jié)的學(xué)習(xí),我們認(rèn)識(shí)了編程中的函數(shù),通過(guò)定義函數(shù),我們用一個(gè)名字來(lái)指代一組命令所包含的行為。并在需要時(shí),通過(guò)對(duì)這個(gè)函數(shù)名的調(diào)用,告訴計(jì)算機(jī)去執(zhí)行這一組命令。另外,我們還學(xué)習(xí)了如何將大問(wèn)題進(jìn)行分解,并通過(guò)定義和調(diào)用函數(shù)來(lái)解決問(wèn)題的方法,這一方法將始終貫穿于我們?nèi)蘸蟮木幊虒?shí)踐當(dāng)中。在下一節(jié),我們將會(huì)學(xué)習(xí)編程中的一個(gè)重要控制邏輯For循環(huán)。

練習(xí)

請(qǐng)大家完成Playground中,F(xiàn)uncations這一節(jié)中的其他編程挑戰(zhàn),它們包括:定義一個(gè)新的函數(shù);在函數(shù)中添加命令以創(chuàng)建新的行為;函數(shù)間的嵌套調(diào)用;通過(guò)函數(shù)解決復(fù)雜問(wèn)題等等。完成這些練習(xí)后,你將會(huì)對(duì)函數(shù)的使用有更深入的理解,這也將是你未來(lái)構(gòu)建更強(qiáng)大應(yīng)用的基礎(chǔ)。

【本文是51CTO專(zhuān)欄作者“陳逸鶴”的原創(chuàng)文章,如需轉(zhuǎn)載請(qǐng)聯(lián)系作者本人(微信公眾號(hào):techmask】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2017-03-15 15:43:08

編程書(shū)初學(xué)者資源

2017-03-15 15:52:22

學(xué)習(xí)編程教學(xué)

2017-03-15 16:17:20

學(xué)習(xí)命令計(jì)算機(jī)

2020-07-10 14:04:17

編程開(kāi)發(fā)書(shū)

2015-10-09 09:21:01

程序員寫(xiě)書(shū)

2020-04-22 15:22:23

編程開(kāi)源代碼

2013-07-04 09:42:47

測(cè)試軟件測(cè)試如何測(cè)試軟件

2022-06-06 10:55:51

本地服務(wù)鴻蒙

2020-05-26 21:17:28

函數(shù)式編程純函數(shù)

2020-05-26 16:27:58

函數(shù)孩子編程

2016-12-26 14:56:33

戴爾

2017-01-16 11:09:44

Linux

2016-06-01 16:03:39

emoji圣經(jīng)

2010-09-01 08:58:20

讓喬布

2018-08-03 19:49:00

編程

2018-06-28 11:35:04

Linux開(kāi)源編程

2018-01-19 15:31:36

戴爾

2012-07-20 09:18:22

黑客

2012-05-21 15:48:59

證析

2009-12-17 13:53:47

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)