波利亞在《如何解題》里有一段話:
我們專注于預期的結果巷嚣,并將我們期望的最終結果可視化径密,然后思考:要達到最終的位置回梧,我們之前要達到哪個位置?
這是一種逆向思維闷串,從預期的結果反推所需的過程瓮钥、步驟、策略烹吵。在數(shù)學里常用這種方法解題碉熄,叫做倒推法。舉個例子:
甲肋拔、乙具被、丙三個小朋友共有畫片120張,如果甲給乙13張,乙給丙 23張后,他們每人的張數(shù)相等只损。原來三人各有畫片多少張?
思路解析:三人的畫片總數(shù)沒有變化一姿,最后還是120張,“他們每人的張數(shù)相等”,每人都有120÷3=40(張)跃惫,這是“最終的位置”叮叹。
接下來看看在到達最終位置,我們之前要達到哪個位置:
先看看甲的畫片張數(shù)的變化:“甲給乙13張”爆存,甲減少的13張蛉顽,應還回去,40+13=53(張),甲原來有53張畫片先较;
再看乙的畫片張數(shù)變化:“甲給乙13張携冤,乙給丙23張”∠猩祝“乙給丙23張”,乙減少的23張畫片應還回去40+23=63(張);“甲給乙13張”,乙增加的13張曾棕,應把它去掉,63--13=50(張),乙原來有50張畫片;
最后再看看丙的畫片張數(shù)的變化:“乙給丙23張”菜循,丙增加的23張翘地,應把它去掉,40-23=17(張),丙原來有17張畫片。*
在機器人課堂來里設計程序時癌幕,分解完任務之后衙耕,思考每一步具體如何實現(xiàn)時,最常用的方法就是這種逆向思維勺远。
首先需要明確的就是我這一步到底要干嘛橙喘,比如左轉。
一般孩子思考到這一步就覺得完事了胶逢,左轉嘛厅瞎,簡單:
A馬達速度0
B馬達速度50
結果就是小車轉彎轉個不停饰潜。
用逆向思維思考應該是怎么樣呢:
我這一步的目的是左轉到面向左邊為止,然后這一步結束磁奖。什么意思囊拜,就是當我轉到面向左邊的時候要停下來某筐,并且停止這一步的動作比搭。
發(fā)現(xiàn)沒,前面那個左轉是一個沒有結束的動作南誊,而下面那個有始有終身诺,代表了一個完整的事件過程。
還沒完抄囚,但孩子知道事件是會結束的時候霉赡,他就會接著思考,那要怎么知道我要轉到什么時候呢幔托,也就是終止狀態(tài)是什么穴亏。他們最容易想到的就是延時,然后停車重挑。
這個方法不是不行嗓化,而是有更好的。用延時控制什么時候停止谬哀,受到電池電量干擾比較大刺覆,每次的結果都是不確定的,這不是一個好的控制史煎,控制講究的是精確可控谦屑,我一定要知道我這一步能得到什么樣的效果。那這個更好的方法就是一個有較高確定性的結果篇梭,就是用光電去感應氢橙,當我光電感應到了黑線,我就知道恬偷,是時候展現(xiàn)真正的技術充蓝,啊不,是時候停止了喉磁。課上我稱這個時刻為“終止條件”谓苟。
這個終止條件把我們正在做的這一步一分為二,在到達終止條件之前协怒,跟到達終止條件之后涝焙。我給前后兩個狀態(tài)都取了名字,之前叫“這一步干啥”孕暇,之后叫“終止狀態(tài)”仑撞。到這里赤兴,就可以套用一個簡單的程序框架:如果否則。
這個就像填空題隧哮,如果后面一個空桶良,執(zhí)行后面一個空,否則后面一個空沮翔。分別填什么:終止條件陨帆,終止狀態(tài),這一步干啥采蚀。
如果:終止條件
執(zhí)行:終止狀態(tài)
否則:這步干啥
到這里其實分析的工作可以先告一段落疲牵,接下來就是要落實到程序了。
- 終止條件:光電遇黑榆鼠,那機器人怎么知道光電遇黑了呢纲爸,因為學到這一步的孩子基本都知道這個原理,這里就不多說了妆够,直接來:端口模擬值<1500(臨界值需要測試)识啦;
- 終止狀態(tài):停車,也就是馬達速度設為0神妹;
- 這一步干嘛:左轉呀颓哮,不好意思機器人聽不懂左轉,好的咯灾螃,A馬達速度0题翻,B馬達速度50(這速度也是要根據(jù)實際情況調整)。
最后再把這三個丟進如果否則里腰鬼。
如果:端口模擬值<1500
執(zhí)行:馬達A速度0
馬達B速度0
否則:馬達A速度0
馬達B速度50
搞定完事嵌赠,下載測試。
誒熄赡,為啥我的小車還是不停啊姜挺。
我們回到下載前,機器人知道要遇黑停車彼硫,可是它怎么知道它什么時候遇黑炊豪,所以讓它需要不斷檢測遇黑了沒有,關鍵詞“不斷檢測”拧篮,這就需要循環(huán)來幫忙了词渤。在運用逆向思維的過程中,一定要時刻牢記我們的預期結果是什么以及每一步推理條件的嚴謹串绩,我們的預期結果是停止缺虐,結束這一步動作。一旦加上循環(huán)礁凡,這一步就沒法結束了高氮,所以還要在終止狀態(tài)里加上中斷循環(huán)慧妄。
一直循環(huán)
如果:端口模擬值<1500
執(zhí)行:馬達A速度0
馬達B速度0
中斷循環(huán)
否則:馬達A速度0
馬達B速度50
好啦,這回下載剪芍,運行塞淹,成功。
上面這一個過程罪裹,一步一步從預期目標得到我們要的步驟策略饱普,這樣的一個過程也是在不斷踐行逆向思維的過程。
在《追求理解的教學設計》里提出課這樣一個概念坊谁,衡量“理解”的一個基本指標是能把所學的知識遷移到新的環(huán)境和挑戰(zhàn)中费彼,而不僅僅是知識的回憶和再現(xiàn)滑臊。孩子們如果能夠在機器人課堂把逆向思維反復的練習口芍,不管是能輕松完成各種任務,還是磕磕碰碰的前進雇卷,在我看來這都不重要鬓椭,重要的是他們能否可以把這樣的思維方式應用在機器人課堂外的地方,這樣的意義遠超機器人課堂上的表現(xiàn)关划。
寫了這么多小染,來一只貓鎮(zhèn)樓吧。