前面兩個步驟我們已經(jīng)把問題分解成具體的細節(jié),接下來只要按照具體流程的分析結(jié)果來寫程序就好了撬陵,這一步也是將具體內(nèi)容抽象化的一個過程江耀,很多孩子分析問題時頭頭是道,可是到了這一步就卡住了昂利,沒法在分析結(jié)果跟程序之間搭起橋梁。
我課堂觀察發(fā)現(xiàn)有這么幾個原因:
1.抽象能力不足铁坎;
2.不知道機器人能聽懂什么蜂奸;
3.對常用的編程概念不理解;
抽象能力不足
對于第一點硬萍,這是孩子們生理發(fā)展特性導(dǎo)致扩所,按照皮亞杰的認(rèn)知發(fā)展理論,7-11歲的孩子門正處于具體運算階段朴乖,這個階段的孩子只能把運算圖式應(yīng)用到真實的或者可以想象得到的物體祖屏、情景或者事件上。所以對于抽象能力不足的孩子买羞,我們可以從兩個方面入手:
一個是通過具像化袁勺,讓他們把每一個程序語句跟機器人的動作一一對應(yīng),具體在機器人能聽懂什么里講畜普;
其次呢期丰,更多的接觸,更多的鏈接,讓他們有更多的練習(xí)的機會钝荡。通過每節(jié)課制作不同的作品街立,或者多去科學(xué)館逛逛,更高級的是家長的言傳身教埠通,在生活中處處有驚喜赎离。有個二年級的學(xué)生,做的機器人作品連四年級的孩子都不一定有他好端辱,給我最大的感觸就是他在家里每天都會跟爸爸討論各種物件背后的原理蟹瘾,現(xiàn)在暑假了,媽媽又帶他去北京的各種博物館掠手。
不知道機器人能聽懂什么
最常見的是在前沖的時候一直前進
我們在分析的時候,這個任務(wù)也是隱藏了停止的意思:前沖到光電離開黑線后停止狸捕。如果沒有注意到這個喷鸽,程序就是
馬達A速度50
馬達B速度50
就會導(dǎo)致機器人一直前進。真正的程序應(yīng)該是:
馬達A速度50
馬達B速度50
延時300ms
馬達A速度0
馬達B速度0
寫程序的時候我們必須清晰的解釋機器人執(zhí)行任務(wù)的每一項具體步驟灸拍,而不是我們以為的做祝。
同樣我們常說的左轉(zhuǎn)或者右轉(zhuǎn)也是。
不過左轉(zhuǎn)有兩種情況鸡岗,一種是我們上節(jié)課分析的那樣混槐,有光電遇黑作為條件,這種比較清晰轩性,不會有什么問題声登。另一種就是簡單的用延時來控制的,就會出現(xiàn)跟前面前沖任務(wù)一樣的問題揣苏。
對常用的編程概念不理解
編程的概念按道理應(yīng)該分在機器人能聽懂什么里悯嗓,但是這部分內(nèi)容較多,又太重要了卸察,所以單獨拎出來講脯厨。
常見的編程概念有循環(huán)、順序坑质、條件合武、變量。順序這個概念其實在之前這么多內(nèi)容里是強調(diào)最多的涡扼,所以就不在贅述稼跳。
- 循環(huán)
最開始看學(xué)生寫程序的時候真的很搞笑,總是不管三七二十一的先拿一個循環(huán)出來吃沪,問他們放這個循環(huán)是干嘛用的岂贩,回答我的是一臉茫然。
我們前面說要必須清晰的解釋機器人執(zhí)行任務(wù)的每一項具體步驟,有時候我們會遇到很多任務(wù)不僅繁瑣而且重復(fù)萎津,比如讓機器人圍著一個正方形跑到運行卸伞,就意味著流程是這樣的:
前進--》左轉(zhuǎn)--》前進--》左轉(zhuǎn)--》前進--》左轉(zhuǎn)--》前進--》左轉(zhuǎn)
這樣是走了一圈,如果想要走好幾圈锉屈,那就要:
前進--》左轉(zhuǎn)--》前進--》左轉(zhuǎn)--》前進--》左轉(zhuǎn)--》前進--》左轉(zhuǎn)--》
前進--》左轉(zhuǎn)--》前進--》左轉(zhuǎn)--》前進--》左轉(zhuǎn)--》前進--》左轉(zhuǎn)--》
荤傲。。颈渊。反正就是要走多少圈遂黍,就要寫多少的程序。繁瑣俊嗽!重復(fù)雾家!
我們知道編程語言設(shè)計的初衷就是為了便捷高效,那么就一定存在能避免重復(fù)指令的書寫绍豁。
循環(huán)是能夠使重復(fù)指令的編寫變得更為有效的結(jié)構(gòu)芯咧。我們生活中參與者各種循環(huán),:地球圍繞太陽轉(zhuǎn)竹揍,每365天重復(fù)一次敬飒;小一點的,地球每24小時自轉(zhuǎn)一周芬位。只要有事物在重復(fù)无拗,就有循環(huán)存在。
還是上面那個例子昧碉,圍繞桌子走一圈:
重復(fù)循環(huán)4次:
前進
左轉(zhuǎn)
如果是一直繞圈
重復(fù)循環(huán):
前進
左轉(zhuǎn)
怎么樣英染,瞬間簡潔了。
出了這個被饿,在機器人編程中最常用到循環(huán)的是税迷,重復(fù)檢測。
因為機器人需要用傳感器來接受外部環(huán)境的變化锹漱,用上節(jié)課的左轉(zhuǎn)為例箭养。
機器人需要檢測是否光電遇黑,如果只是判斷的程序:
如果:光電值<1500
執(zhí)行:馬達A速度0
馬達B速度0
否則:馬達A速度0
馬達B速度50
程序一下子就執(zhí)行完了哥牍,等到后面遇到黑線了毕泌,也不會停下來,為啥嗅辣,因為從機器人開始左轉(zhuǎn)到遇到黑線這個過程中撼泛,程序就在最開始判斷了一次,后面就沒有然后了澡谭。所以愿题,我們需要重復(fù)檢測,需要循環(huán):
一直循環(huán):
如果:光電值<1500
執(zhí)行:馬達A速度0
馬達B速度0
否則:馬達A速度0
馬達B速度50
一直循環(huán)意味著用不停歇,這也不是我們想要的潘酗,為啥杆兵?因為這樣我們就會在左轉(zhuǎn)這個步驟中迷失,無法結(jié)束仔夺,那后面的步驟也就沒有機會完成了琐脏。所以當(dāng)斷則斷,到了終止條件的時候缸兔,跳出循環(huán)日裙。
一直循環(huán):
如果:光電值<1500
執(zhí)行:馬達A速度0
馬達B速度0
中斷循環(huán)
否則:馬達A速度0
馬達B速度50
- 條件
目前為止,學(xué)生最難真正理解的概念還是條件跟變量惰蜜,真要講昂拂,每個都可以花上一節(jié)課,所以留著下周開個單章來細說抛猖。
好啦格侯,今天就到這里,我要去超市買菜樟结,晚上給老婆做飯了。
老規(guī)矩精算,可子鎮(zhèn)樓瓢宦。