張明
大約在1500年前,我們的老祖宗寫了一本數(shù)學奇書《孫子算經(jīng)》(這“孫子”可不是是那個提出“知彼知己”的軍事家孫子),下卷第31題記載了一個很好玩的數(shù)學問題:“今有雉兔同籠,上有三十五頭,下有九十四足,問雉兔各幾何?”
這道題就是后世“雞兔同籠”的始祖,如今已被義務教育課程標準實驗教科書人教版數(shù)學五年級上冊選為補充教材并且在部分五到六年級的課外習題所用。
關于這道題的解法有很多種,這一次我們試著用編程軟件《Scratch》求出了答案,并錄制了完整的解題過程,希望幫助大家更好地理解如何運用編程解決簡單、有趣的數(shù)學問題。
不過在開始之前,需要先明白一個問題:我們?yōu)槭裁匆獙W數(shù)學,它和編程有何關系?
中科院院士、數(shù)學教授李大潛給出了答案———數(shù)學能夠提高我們的素質(zhì)和能力,這些素質(zhì)和能力包括:嚴密的邏輯思維能力、高度的抽象思維能力、自覺形成數(shù)量觀念和讓我們變得更細心。
數(shù)學和編程關系緊密,具備數(shù)學+編程的人優(yōu)勢會更大,這和它們之間的聯(lián)系密切相關。
數(shù)學和編程的關系
1.編程所需要的很多能力和數(shù)學是相通的。比如邏輯思維、模式識別等?,F(xiàn)在機器學習用到的算法,其本質(zhì)還是數(shù)學模型計算問題。
2.編程能夠幫助孩子更好地理解數(shù)學抽象概念。孩子們可以通過編程將抽象的數(shù)學概念轉(zhuǎn)化為看得見的、會動的圖像。例如最常用的函數(shù),書本上的概念理解起來很抽象,通過編程就可以在計算機上展示出來。
Sin和Cos在三角形上的運用如下圖。
3.編程能夠強化孩子的數(shù)學能力。如果孩子想用代碼建造飛機,那就要用到各種各樣的數(shù)學知識,并且還要調(diào)用抽象思維的能力。
想清楚了這兩個問題哦,我們再看編程解決數(shù)學問題的過程收獲會更多。
開始,需要搞清楚編程解決數(shù)學問題的邏輯:我們要解出的數(shù)學答案是什么(求兔子和雞的數(shù)量)-梳理出這個問題的邏輯-確定用怎樣的公式計算-在草稿紙上畫出流程圖-將這個順序轉(zhuǎn)化為代碼語言-輸入計算機得出結(jié)果。
下面一步步細分:
第一步:添加角色
在角色區(qū)添加角色,分別是公雞、兔子、籠子各一個:
第二步:設置邏輯運算
1.籠子角色的腳本要根據(jù)已知條件算出結(jié)果,并在界面顯示出結(jié)果(白框里的文字),我們輸入題目中已知條件:
我們要求雞和兔子的數(shù)目,就是要解出兩個未知數(shù),把它轉(zhuǎn)化為代碼語言,這就需要創(chuàng)建兩個變量來代表這兩個未知數(shù)(兔子和雞)。
現(xiàn)在根據(jù)已知條件輸入兔+雞=35,兔×4+雞×2=94,注意左邊的綠色框,里面包含了很多邏輯關系:“且”“或”等等。孩子在這一步要思考:這兩個式子是缺一不可還是滿足一個就行呢?這就是對孩子邏輯思維最好的訓練。
接著輸入變量(發(fā)散下思維:分析一個問題時,教會孩子找出它的變量,問題就會好解決很多)。
完整代碼如下。
雞和兔要執(zhí)行的任務是:當它們接受到“計算雞兔多少只”這個指令時,就要分別“喊出”結(jié)果,兔子和雞的代碼如下圖所示。
最后的結(jié)果如下圖所示。
我們求出了答案,孩子在過程中對邏輯關系“且”“或”等有了更深的了解,對變量也會有初步認識,這些收獲都能給孩子一些啟示,有助于孩子以后高效地處理任何問題。
這就是數(shù)學+編程的強大之處。
關于編程學習,最后分享一些學習編程的建議:
學習編程的前提是孩子一定要對編程感興趣。孩子有興趣了,就可以選擇合適的編程語言。
目前比較流行的編程語言有Python、C++以及Java等,而適合小朋友學習的主要是圖形化編程Scratch、Python、以及面向NOIP競賽的C++語言,Python已經(jīng)成為浙江2018年高考內(nèi)容。
對于零基礎、年滿7歲的孩子,這里建議從《Scratch》這款由美國麻省理工研發(fā)的圖形化編程軟件開始學習,簡單、有趣、易上手,用積木塊代替了枯燥的代碼,孩子短時間內(nèi)就能學會它。