蔣克鳳
【摘要】以Python語言解決數(shù)學問題為例,探討利用Python語言進行教學的方式,建立學生的計算思維。
【關鍵詞】Python語言;數(shù)學;計算思維
計算思維被定義為人的思維活動,需要依托在計算機上,并對計算機進行充分應用,借助其解決問題、系統(tǒng)設計以及進一步理解人的行為的一項活動。周以真在2010年進一步將計算思維定義為:“通過將問題和解決方法抽象處理,以達到解決問題目的的思維過程,在這個過程中,計算思維的核心是解決問題。”周以真教授這一概念的提出,對計算思維有了更具體完整的認識。人們也都對這種說法廣泛認可。同時也有越來越多人開始參與研究這一概念。
一、Python語言與計算思維的關聯(lián)
1.Python程序是計算思維的載體。抽象的思維必須依托一定的實物也就是載體才能具體表現(xiàn),計算思維同樣如此。計算思維在現(xiàn)代信息技術社會,要能體現(xiàn)智能化作用,體現(xiàn)現(xiàn)代化特點,Python程序是個較佳的載體。學習者在應用不同算法的過程中,可以依托于Python程序,先進行閱讀,幫助我們了解程序體現(xiàn)的思維過程后可以嘗試編寫,編寫時編寫者的思維可以再次體現(xiàn)在程序中,進而不斷探索問題的求解過程,實現(xiàn)計算思維的發(fā)展。也就是說,計算思維可以通過對Python程序的編寫來實現(xiàn),Python程序就是計算思維發(fā)展的載體。
2.Python語言和計算思維的核心相同。Python語言簡單易懂、可移植性強、可擴展性廣、可嵌入性高,有豐富的庫、具有極佳的可讀性。初學者學Python,不但入門容易,而且將來深入學習后還可以編寫復雜的程序。通過Python語言的學習,能對不同的問題進行客觀描述、過程設計、最后求解。計算思維的核心元素:分解問題、模式識別、抽象、算法設計。Python語言和計算思維一樣,都需要經(jīng)過抽象、算法、歸納、分解等操作來實現(xiàn)。所以,Python語言和計算思維具有一樣的核心內(nèi)容,即解決問題。
3.Python程序和計算思維密不可分。學習者在學習Python程序的過程中,面對問題不可能一下子就能知道怎么去編寫,怎么解決問題。必須要經(jīng)過一定的操作步驟,才能找到解決問題的思路,需要經(jīng)由一定的過程才能不斷提高自己的解題能力,在這個過程中必然離不開學習者的計算思維。通過一次次的解題練習,學習者的計算思維得到顯著提升,能熟練應用程序工具解決問題,還能對程序進行再創(chuàng)造。由此可見,學習者Python程序操作能力的增強和計算思維能力的提升密切相關。
二、面向數(shù)學問題的Python基礎語言學習
在本次教學案例中,我結合“變量與表達式”內(nèi)容,設計從基礎到復雜的數(shù)學問題,要求學生發(fā)散數(shù)學思維,應用Python求解,獲得正確的答案。
1.求解基礎數(shù)學題,形成抽象和形象化表達思維。對于我們學校的學生來說,學科基礎知識不牢固,學習力比較弱,他們只具備基礎的運算能力和基礎的數(shù)學思維能力。所以我首先為學生設計四道簡單且相互關聯(lián)的數(shù)學題,讓學生在解釋器窗口計算。第一道比較簡單。題目:假設你在操場內(nèi)挖出了一個裝著20枚金幣的袋子。第二天,你偷偷跑到操場的創(chuàng)新工作室,把這些金幣放進了復制機里,幾個小時后,它產(chǎn)出10枚閃閃發(fā)光的新的金幣來。
問題1:如果在過去的一年里,你每天都這樣做一遍的話,你的財寶箱里會有多少金幣?
問題2:如果校園的流浪狗發(fā)現(xiàn)你藏在宿舍的金幣,每周都能成功偷走3枚,那一年結束時你還剩多少金幣?
問題3:假如你在宿舍門口放了條板凳,這回流浪狗只能偷到兩枚金幣,那么一年結束后還剩多少?
問題4:如果在復制機復制金幣時猛敲一下它,每次會多吐出3枚金幣,那一年后你將得到多少金幣?
我們可以發(fā)現(xiàn)這是幾個非常簡單的數(shù)學題,如果在程序代碼中直接讓程序進行計算,不僅使得程序看起來有點怪,可讀性不強,還有可能會因為后續(xù)數(shù)值變化及數(shù)據(jù)的重復使用而造成程序計算的結果出現(xiàn)錯誤。此時,我提出了一個觀點:既然數(shù)值會變,有沒有不變的方法呢?拋出變量和表達式的知識點,引導學生自主學習變量和表達式的知識。而后,舉例幫助學生加深理解變量和表達式。如何設定變量和書寫表達式才能使程序簡單易懂,同時表達簡單且正確。于是,我們需要對程序進行一定的改變,增加變量與表達式。
這時告訴學生要設定具體的變量,注意程序代碼的書寫情況。比如可以設找到的金幣的程序代碼為:found_coin,賦值的金幣:copy_coin,偷走的金幣:stolen_coin。運行以后,我們能得到相同的答案。不同的是,面對隨時可能會發(fā)生變化的數(shù)字,我們不需要再一次重新計算,只需要對變量賦值進行改變即可。
2.求解經(jīng)典數(shù)學題,強化變量與表達式的使用。在學生計算并初步掌握了變量與表達的使用之后,我繼續(xù)拋出問題,要求學生“求梯形面積”及“計算歌手得分”,由此達到鞏固基礎概念的目的。在“求梯形面積”的過程中,學生可從問題中找到變量及運算方法,進而可以獨立完成該程序的設計,并正確解答問題。在“計算歌手得分”過程中,解題的流程同上,但這個題相對于梯形面積求解會稍微復雜一些。問題中多次出現(xiàn)“平均分”,怎么理解這么多“平均分”呢?我們首先要理解在不同情況下“平均分”的含義,歌手的平均分有僅僅去掉最高分或者去掉最低分的情況,還有同時去掉最高分和最低分的情況,所以要分多種情況來思考,再引導學生思考用變量和表達式怎么表述這個流程。當然,在表述這個問題的過程中,流程圖能起到非常直觀的作用。可以先用流程圖描述思維過程,在流程圖中確定好變量,再用程序代碼來表述,這樣變量與表達式才能描述得更清晰。最后學生通過程序設計實現(xiàn)了問題的求解。
通過上面這兩類數(shù)學問題的學習,我們把它們引入Python中進行表達,引導學生逐步應用計算思維解決問題,不僅滿足了學生螺旋式上升的學習規(guī)律,還達到了培養(yǎng)其計算思維的目的。最后,在程序的運行中,要引導學生多去總結如何定義變量、如何書寫表達式、如何清晰地展示結果等。引導學生總結出規(guī)律,才會對學生后面的學習產(chǎn)生推動作用。
3.歸納程序設計中抽象與形象化表達。通過上面幾節(jié)課的講解,學生對程序設計有了新的認知。學生知道了要解決一個問題,應該先找到問題的根源,再找出相應的“變量”。學生在這個過程中相應的知識框架和技能得到了進一步完善,也體會到了程序設計中變量的作用。
隨后我給出了另一個例題:有個牧場,牧場上長滿牧草,每天牧草都勻速生長。這片牧場里的草可供10頭牛吃20天,可供15頭牛吃10天。問可供25頭牛吃幾天?這片牧場每天新生的草量可供幾頭牛吃1天?
在數(shù)學課上,可以引導學生簡化這類題,讓學生把復雜問題簡單化。根據(jù)例題可知每頭牛每天的吃草量是不變的。所以,我們就把每頭牛每天的吃草量簡單地假設為單位1,這樣問題就簡化為:add_grass=總草的量-原有的草量。
牧場20天內(nèi)長出的草加上原有的草grass_20共有:10*20=200。
牧場10天內(nèi)長出的草加上原有的草grass_10共有:15*10=150。
牧場10天內(nèi)新長出的牧草add_grass為:200-150=50。
牧場10天中,每天長草的量speed_grass:50/(20-10)=5。
求出原有牧草yuanlai_grass:200-5*20=100。
25頭牛吃的天數(shù)days:100/(25-5)=5。
在這種思路下,學生就可以更加清晰地看到在計算過程中,10*20*1表示從開始到結束20天的總草量(grass_20),15*10*1表示從開始到結束10天的總草量(grass_10),兩個關系式之間存在的差值就是10天的新增加的草量。這樣,學生對解答這類問題的畏難情緒便會得到改善,解題思路也變得清晰明了了。
面對看似很難的數(shù)學問題,應用計算機輔助解題就會變得簡單,這就是Python程序的魅力。同時,在應用的過程中學生還必須要合理正確地使用變量,通過掌握多樣的解題方式,不斷提高學生的計算思維,將問題分析轉化為高效的算法設計,最終學生Python程序的學習就會達到較好的效果。
【參考文獻】
[1]中華人民共和國教育部.普通高中信息技術課程標準[S].北京:人民教育出版社,2017.
[2]賈瑞鳳,馬曾,侯春龍.以Python為工具培養(yǎng)學生計算思維[J].電腦知識與技術, 2018(02).
[3]鄭戟明.Python程序設計課程中計算思維的應用[J].大學教育,2016(08).
(基金項目:本文系海南省小課題“新課程背景下提高學生學習信息技術積極性的實踐研究”的研究成果之一,課題編號:A418-2021009)