編程與機(jī)器人

臺(tái)灣有一所大學(xué)定義了學(xué)生在校四年學(xué)習(xí),畢業(yè)前必須具備三種”語(yǔ)言”能力,包括中文、英文和程序設(shè)計(jì)語(yǔ)言,這自然是呼應(yīng)現(xiàn)今社會(huì)發(fā)展需求的產(chǎn)物。前兩者是純粹的語(yǔ)言能力,做為與人溝通以及文化理解的主要工具。程序設(shè)計(jì)語(yǔ)言同樣是溝通與理解的工具,只不過(guò)對(duì)象是計(jì)算機(jī),它是對(duì)應(yīng)高度科技化社會(huì)發(fā)展下,工作職涯所應(yīng)具備的基本知能。

大學(xué)規(guī)定學(xué)生必會(huì)的三種語(yǔ)言

程序設(shè)計(jì)語(yǔ)言做為與計(jì)算機(jī)溝通與理解的工具,它的溝通功能主要體現(xiàn)在”命令”計(jì)算機(jī)按指令辦事。計(jì)算機(jī)就像〈一千零一夜〉故事中的神燈一樣,它有強(qiáng)大的能耐,但阿拉丁得用它聽(tīng)得懂的語(yǔ)言來(lái)下命令給它,萬(wàn)能的神燈才能完成各項(xiàng)神奇任務(wù)。

能與計(jì)算機(jī)溝通,更重要的是要能理解,理解計(jì)算機(jī)是怎么做事的,學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言和編程來(lái)讓計(jì)算機(jī)動(dòng)作的過(guò)程,就是最好的理解計(jì)算機(jī)的方法。

在「淺談兒童編程教育」一文介紹了最簡(jiǎn)單的兒童程序設(shè)計(jì)語(yǔ)言L(fǎng)ogo,并用Logo寫(xiě)了簡(jiǎn)短的程序來(lái)讓小海龜在屏幕上畫(huà)圖。其實(shí)像Logo、Scratch或是可程序操控機(jī)器人Dash&Dot組合等,向前(Forward)、向后(Back)、右轉(zhuǎn)(Right)、左轉(zhuǎn)(Left)等幾乎都是最基礎(chǔ)的指令(instruction),也許是因?yàn)槭艿脚善仗匾婚_(kāi)始開(kāi)發(fā)Logo語(yǔ)言就有這些指令的影響,但最根本原因是要讓學(xué)習(xí)者學(xué)會(huì)操控程序設(shè)計(jì)的主角(在Logo是小海龜,Scratch是貓,Dash&Dot則是能移動(dòng)的Dash機(jī)器人),并且可以立即看到操控的結(jié)果。在一般的程序語(yǔ)言中反而是看不到這些基本指令的。

不像Logo和Scratch只能在計(jì)算機(jī)屏幕上看到程序執(zhí)行結(jié)果,若能對(duì)機(jī)器人編程來(lái)控制它執(zhí)行各項(xiàng)任務(wù),學(xué)習(xí)程序設(shè)計(jì)的興趣會(huì)更高,效果也會(huì)更好。Dash&Dot就是這么一個(gè)風(fēng)靡全球的可程序控制機(jī)器人組合,它得到蓋茲與瑪琳達(dá)基金會(huì)的推薦,并曾進(jìn)入美國(guó)白宮讓奧巴馬總統(tǒng)和小朋友一起學(xué)習(xí)編程,因而被認(rèn)證為最適合16歲以下學(xué)生學(xué)習(xí)編程的機(jī)器人玩具。

Wonder機(jī)器人包括Dash和Dot兩個(gè)不同特性的機(jī)器人

Dash&Dot主要透過(guò)手機(jī)或平板等移動(dòng)終端來(lái)操控,移動(dòng)終端上有5個(gè)不同功能的應(yīng)用(APP),透過(guò)藍(lán)牙技術(shù)和Dash或Dot連結(jié)。在這5個(gè)APP中Blockly和Wonder都內(nèi)建任務(wù)挑戰(zhàn),它們事實(shí)上是一份完整的程序設(shè)計(jì)教材,每一個(gè)任務(wù)關(guān)卡都是在訓(xùn)練編程來(lái)操控機(jī)器人的方法。通過(guò)這些任務(wù)挑戰(zhàn)后,可以創(chuàng)建自己的項(xiàng)目(project),讓機(jī)器人按照自己的想法做事情。

Dash和Dot透過(guò)5個(gè)APP操控

下面我們就用一個(gè)實(shí)際項(xiàng)目范例來(lái)了解計(jì)算機(jī)的運(yùn)作以及對(duì)應(yīng)的程序應(yīng)該如何設(shè)計(jì),這個(gè)項(xiàng)目就是讓Dash扮演一個(gè)巡邏機(jī)器人:一開(kāi)始Dash會(huì)靜止不動(dòng),直到按下頭上按鈕才開(kāi)始像衛(wèi)兵一樣前后走動(dòng)巡邏,在巡邏過(guò)程中,聽(tīng)到有人說(shuō)話(huà),就停下來(lái),眼睛轉(zhuǎn)動(dòng)3圈,最后回答「你好!」。

首先要分析項(xiàng)目的內(nèi)容,并把它畫(huà)成流程圖,圖中會(huì)標(biāo)出程序執(zhí)行時(shí)的每一個(gè)步驟。整個(gè)項(xiàng)目分成三個(gè)部分:
? Dash機(jī)器人靜止等待啟動(dòng)鍵被按下
? Dash機(jī)器人不斷向前走50公分后右轉(zhuǎn)180度,直到聽(tīng)到有人說(shuō)話(huà)才停止
? Dash機(jī)器人向上看,眼珠子轉(zhuǎn)3圈,然后說(shuō)”嗨”

巡邏衛(wèi)兵機(jī)器人項(xiàng)目流程圖

第?部分的程序是讓機(jī)器人處于靜止的狀態(tài),一直到一個(gè)特定事件發(fā)生,這個(gè)事件就是機(jī)器人上的啟動(dòng)鍵被按下。在Blockly應(yīng)用中編程時(shí)應(yīng)該使用下面這個(gè)指令:

讓Dash機(jī)器人等待按鍵的指令

第?部分的程序是讓機(jī)器人判斷是否聽(tīng)到說(shuō)話(huà)聲,如果沒(méi)有聽(tīng)到說(shuō)話(huà)聲,則Dash執(zhí)行向前走和右轉(zhuǎn)兩個(gè)指令。在這里要使用程序語(yǔ)言中的回圈與判斷指令,回圈內(nèi)部是一段指令,計(jì)算機(jī)會(huì)從回圈起始處開(kāi)始執(zhí)行,一直到回圈結(jié)尾,再回到起始處繼續(xù)執(zhí)行。由于程序會(huì)在回圈中重復(fù)不斷地執(zhí)行,因此必須加入一個(gè)條件判斷,當(dāng)條件被滿(mǎn)足時(shí)就跳出回圈外面,繼續(xù)執(zhí)行下面的指令。對(duì)照流程圖和下面的程序片段可以幫助了解程序的撰寫(xiě)方法。

重復(fù)執(zhí)行回圈直到符合判斷條件為止的程序片段

第?部分程序中也有一個(gè)回圈,但這個(gè)回圈只會(huì)執(zhí)行指定的次數(shù)就離開(kāi)回圈內(nèi)部,跳到外面繼續(xù)執(zhí)行下面的指令?;厝?nèi)部的兩個(gè)指令看起來(lái)一模一樣,它們的差別在于”自定義”的內(nèi)容。編寫(xiě)指令時(shí)按下”眼燈模式”指令會(huì)跳出一個(gè)設(shè)定Dash機(jī)器人眼燈的畫(huà)面,可以控制在這個(gè)指令中眼睛的哪幾個(gè)燈要點(diǎn)亮,只要把前后兩個(gè)”眼燈模式”的內(nèi)容設(shè)定為錯(cuò)開(kāi)點(diǎn)亮,例如先偶數(shù)號(hào)燈點(diǎn)亮,下一個(gè)指令變成奇數(shù)號(hào)燈,連續(xù)執(zhí)行時(shí)看起來(lái)就像眼睛在轉(zhuǎn)圈圈的效果。

回圈執(zhí)行3次后離開(kāi)

把這三個(gè)部分的程序片段連接起來(lái),就成為完整的巡邏機(jī)器人控制程序了。

巡邏衛(wèi)兵機(jī)器人的完整程序

按左下角的程序執(zhí)行鍵,就會(huì)看到Dash機(jī)器人來(lái)來(lái)回回的走,聽(tīng)到有人說(shuō)話(huà)時(shí)會(huì)停下來(lái),轉(zhuǎn)轉(zhuǎn)眼珠子,然后說(shuō)”嗨”結(jié)束。每一個(gè)指令左側(cè)都有一個(gè)指示燈,當(dāng)程序執(zhí)行到該指令時(shí),這個(gè)指示燈會(huì)亮綠色,可以一邊看著機(jī)器人執(zhí)行程序,一邊對(duì)照程序執(zhí)行到哪一個(gè)指令。


巡邏衛(wèi)兵機(jī)器人的執(zhí)行結(jié)果

學(xué)習(xí)程序設(shè)計(jì)時(shí),事件驅(qū)動(dòng)、重復(fù)執(zhí)行和條件判斷是很重要的概念。所謂事件驅(qū)動(dòng)是指計(jì)算機(jī)在其所處狀態(tài)下(例如靜止不動(dòng)),接收到一個(gè)外部來(lái)的動(dòng)作(例如某個(gè)按鍵被按下或接收到聲音等)后,驅(qū)使計(jì)算機(jī)改變?cè)鹊臓顟B(tài)。

重復(fù)執(zhí)行在程序設(shè)計(jì)上常以回圈的形式表示,回圈會(huì)”包住”一個(gè)程序片段,當(dāng)把回圈內(nèi)指令全部執(zhí)行完就會(huì)計(jì)數(shù)一次?;厝Ψ殖蓛煞N類(lèi)型,一種是有限次數(shù)的回圈,另一種則是無(wú)限回圈。有限次數(shù)回圈需要一個(gè)計(jì)數(shù)器,當(dāng)計(jì)數(shù)器數(shù)值達(dá)到設(shè)定數(shù)目才會(huì)跳出回圈,否則就依序執(zhí)行回圈內(nèi)的指令;無(wú)限回圈則是讓計(jì)算機(jī)不斷地執(zhí)行回圈內(nèi)指令,但這樣計(jì)算機(jī)就不會(huì)停下來(lái),因此通常會(huì)加上一個(gè)條件判斷,當(dāng)條件被滿(mǎn)足時(shí)就跳出回圈,不再執(zhí)行回圈內(nèi)的指令。其實(shí)這兩種回圈類(lèi)型可說(shuō)是一樣,都需要一個(gè)終止回圈執(zhí)行的條件判斷,只不過(guò)有限回圈是單純的以計(jì)數(shù)器來(lái)控制回圈執(zhí)行次數(shù)。也因?yàn)橛袟l件判斷式,才讓計(jì)算機(jī)(或機(jī)器人)感覺(jué)上有一點(diǎn)智慧,表現(xiàn)得好像懂得外來(lái)刺激一樣。

程序設(shè)計(jì)的訓(xùn)練就是在培養(yǎng)運(yùn)算思維,學(xué)習(xí)者會(huì)學(xué)習(xí)到將一個(gè)復(fù)雜問(wèn)題分解、規(guī)劃解決每一個(gè)分解后問(wèn)題的步驟、使用適當(dāng)策略解決困難的問(wèn)題,并能熟練地編程與計(jì)算機(jī)(或機(jī)器人)溝通。而搭配機(jī)器人來(lái)學(xué)習(xí)程序設(shè)計(jì),可以提高學(xué)習(xí)者的興趣,并加深學(xué)習(xí)的效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容