孔慶鋒
廣州市南沙潭山中學 廣東 廣州 511475
程序設計是初中信息技術課的一個重點、難點內容,其在幫助學生深入了解計算機工作原理,掌握基礎的編程方法,培養(yǎng)計算思維能力等方面起到重要作用。廣州市初中信息技術教材選用了常用、簡單、易學和使用廣泛的Python語言作為程序設計教學內容,其設計目的是希望通過Python程序的學習,培養(yǎng)學生的計算思維、抽象理解能力和設計思維。與傳統(tǒng)的Visual Basic相比,Python更加有好、靈活、有趣,擴展更多應用領域更廣,適合于個人興趣學習和自學深研。由于Python更靈活、擴展更多,在課堂教學中教師要更加注重教學的研究,充分發(fā)揮Python程序的優(yōu)勢,在培養(yǎng)學生計算思維上多下功夫。
計算思維是信息技術課程改革的重要目標,是信息技術學科核心素養(yǎng)的重要組成部分。它要求在學習過程中逐步形成運用計算機學科領域的思想方法解決實際問題的能力?!冻绦蛟O計初步》是廣州市初中信息技術科八年級的教學內容,教材從Python程序入手,以培養(yǎng)學生的計算思維為目的,讓學生掌握Python程序的設計方法,形成用Python解決實際問題的能力,讓學生效地思考與生活,促進終身發(fā)展。
計算思維有以下幾個特征:①算法思維——即處理問題的流程方法。②分解——把復雜的問題分解成不同組成部分,逐一分析解決,最后達到解問題的目的。③抽象建?!獜氖挛镏谐槿”举|性特征的過程。④概括——把抽象出來的事物的共同的本質特征綜合起來,以便推廣到同類事物的過程。⑤評估——從整體上評估解決方案是否為最佳[1]。
在國內,培養(yǎng)學生計算思維的研究大多集中在教學模式的研究。滲透計算思維的探究式教學模式、任務驅動教學模式和活動教學模式的研究為我們培養(yǎng)學生計算思維的問題上找到了一些合適的教學模式:探究式教學模式是根據學生的知識能力水平,把教學內容設計成幾個遞進的小問題,引導學生開展探究活動。任務驅動教學模式要求學生利用計算思維,完成教師提出的學習任務。活動教學模式把教學內容設計成活動的形式,增強學生學習的主動性和積極性。
計算機思維的培養(yǎng)要在科學的教學模式下實現,與學生天生具備的能力不同,它是學生在解決不同問題時形成的心理素質和思維能力。前面所說的這些教學模式的共同特點都是建立在建構主義理論的基礎上,把學生作為學習的主人而不是被動接受的人,主張鼓勵學生用已有的知識主動建構新的知識。通過獨立學習和小組學習的形式開展學習活動,把外部活動轉化為內在意識,促進問題解決意識的形成。這些教學模式的研究,很好地回答了在教學過程中,如何組織教學活動培養(yǎng)學生計算思維的問題,但在具體的操作中,我們還是缺乏可借鑒的教學方法和實例。
學生的主體作用發(fā)揮了,但教師的引導作用也很關鍵的。如何把培養(yǎng)學生計算思維的要求落到實處,關鍵還要看教師如何組織和引導,特別是具體操作。在教學方法方面我們研究得比較少,這是一個很有價值的研究方向。我認為,要培養(yǎng)學生的計算思維,需要教師轉變觀念,深刻理解和研究計算思維的內涵,以培養(yǎng)計算思維為目標導向,幫助學生樹立計算思維意識,掌握計算思維方法,培養(yǎng)計算思維能力。根據計算思維的特征,我們在Python程序教學過程中實現計算思維的培養(yǎng)可以通過情境引導、分解思維、抽象建模、算法思維、評估和概括五個方面來落實。
在Python程序教學過程中要注意做好教學情境的創(chuàng)設。建構主義理論認為:良好的學習活動應該與一定的教學情境相聯系。好的情境創(chuàng)設既可以為知識和技能的傳授提供支撐,又能調動學習興趣,促進學生主動探究問題、思考問題。教學情景的創(chuàng)設,還可以讓教師觀察學生的反應與解決問題的能力,為后繼續(xù)的教學方法的實施提供依據,提高教學方法的針對性和有效性。
創(chuàng)設教學情境時,教師要對學習內容進行特征分析,盡量運用生活化的、生動的和有教育意義的例子。很多時候學習起源于思考,而思考又起源于疑問。問題情景的創(chuàng)設可以引導學生產生疑問與思考,從而促進學習的開展。情景創(chuàng)設還要考慮學生已有知識經驗與實際問題之間的聯系,以便學生運用已有的知識與經驗去思考問題,促進新知識與新技能的建構。
準確分析問題是解決問題的前提條件,培養(yǎng)學生分析問題的能力很重要。教師作為引導者,要沿著學生思維方面適時進行啟發(fā)和引導。通過預設的問題,把學生從現有的發(fā)展水平引入新發(fā)展區(qū),培養(yǎng)學生分析解決問題的能力,幫助學生在學習活動中實現計算思維的建構。
當學生遇到問題時,教師要懂得如何引導學生分析問題,教會他們把大問題分解成多個可以解決的小問題的方法,通過小問題的解決最終達到解決大問題的目的,促進學生分解思維的形成。
例如:在100米的高度上有一個球體自由落下,第1次落地后反跳的高度為50米,第2次落地后反跳的高度為25米,如此類推……求這球體在第10次落地后反跳的高度?
這時,可以引導學生把問題拆分為以下個小問題:
師:球體不斷的自由落下、反跳,自由落下、反跳……這種情況我們該用什么程序結構?
生:應該用循環(huán)結構。
師:題目要求計算這個球體重復反跳多少次后的高度,該用什么循環(huán)?
生:求重復反跳10次后的高度,是可知次數的重復運動,應該用for循環(huán)。
師:如何表達循環(huán)10次?
生:用Python語言表達: for i in range(10):
師:這個球每次反跳的高度和反跳前的高度有什么關系,如何表達?
生:反跳高度是原來的1/2,可用h=h/2表示。
隨著4個小問題的解決,整個問題就自然解決了(代碼如下):
有人說:程序的靈魂是算法。好的算法能降低程序的開發(fā)成本,提高程序的運行效率。要有好的算法,離不開一個好的模型。抽象建模,就是從事物中抽取本質性特征并建立模型的過程。它是一種思考方式,是用數學符號、式子和圖像等模擬的現實問題的模型。建模是連接現實問題與抽象的編程世界的一座橋梁。
例如:在日常的生活中過馬路要看紅綠燈。
教師提問:同學們是怎樣過馬路的?
學生回答:要看交通燈,紅燈停,綠燈行。
師:這個過程是中是由什么因素決定的?
生:燈的信號。
師:可見,過馬路與否是有條件的。還有,過與不過這兩種狀態(tài)會同時存在嗎?
生:不會同時存在。根據燈選擇相應的停與行。
師:我們可以用數學的什么圖形表示出來?
生:可以用樹狀圖來示。
師:程序執(zhí)行的時候有時也像這個圖一樣,有條件地選擇不同的語句來執(zhí)行的,我們稱它為什么結構?
生:分支結構。
分枝結構的概念隱藏在具體問題情境中,師學生通過思考討論,找出事件的本質特征,把實際問題抽象為圖形,透過圖形表達從而理解選擇結構的概念,這就是一次建模的過程。
在程序設計的過程中,把解決問題的步驟詳細地描述出來叫作算法。算法思維即處理問題的流程方法,它具有非常鮮明的計算機科學特征。在引導學生設計算法的時候,首先要讓學生了解計算機解決問題的方法與日常生活習慣有什么不同。
例如:要計算兩個數的和,計算機執(zhí)行的步驟是:
Step1: 聲明變量a,b,n
Step2: 輸入第一個數 a
Step3: 輸入第二個數 b
Step4: 求出兩數的和 n=a+b
Step5: 把結果n的值在屏幕上顯示 print(“結果是:”,str(n))
其次,學生設計算法時必須以扎實的Python編程知識為基礎,能熟練掌握和運用Python編程語言才能準確表達算法,提高算法設計的效率。因此,教師必須重視Python編程基礎知識的教學,把基礎知識的教學落到實處,為學生打下堅實的知識基礎。
最后,開展小組合作學習是提高學生算法思維的有效途徑。小組學習可以為學生提供輕松自主的學習環(huán)境,在如何設計算法的問題上,小組內可以各抒己見,促進思維的碰撞;在不同小組之間可以互評、借鑒,提升算法思維水平。
3.5.1 評估。評估就是從整體上評估解決方案是否為最佳。引導學生對解決方案進行評價,結合自評和互評,在算法是否足夠簡化和優(yōu)化,運行是否高效等方面進行討論,既可提高學生參與學習的廣度和深度,又可以廣開思路促進計算思維的養(yǎng)成。例如:編寫密碼程序時,要實現功能:提示用戶輸入密碼,當輸入密碼正確時,打印“密碼正確”,跳出循環(huán)顯示“成功登錄”。否則打印“密碼錯誤”,要求重新輸入密碼,直到密碼正確為止。
同學們完成程序的編寫后,大致出現了兩類解決方案。
這時,教師可以組織學生針對兩種不同的解決方案,從運行效果、程序設計思路以及程序的最優(yōu)化等方面進行討論,評估哪個解決方案是最佳的。
在教師的引導下,學生通過積極的小組討論,熱烈的組間辯論,達成了共識:方案2為最佳。原因有三點:
第一,從運行效果來看,方案2更簡約,表達更清晰。(如圖下)
第二,從設計思路來看,方案1把所有的“輸入密碼”的操作都放到循環(huán)里進行。方案2則把第一次“輸入密碼”放在循環(huán)前,以后的“輸入密碼”均方在循環(huán)之中。
第三,從程序的最優(yōu)化來看,方案2比方案1更簡便、更高效。首先,方案2運用了二選一(if…else)條件語句,代替了方案1中兩次單選(if)條件語句,語法更簡單、合理。其次,方案2中只用一句password=int(input(“密碼錯誤,請再次輸入密碼:”)),一次性地把方案1中的print(“密碼錯誤”)、print(“請再次嘗試輸入密碼”)和 password=int(input(“請輸入密碼:”))代替了,表達更優(yōu)化,運行更高效。
3.5.2 概括。概括是把抽象出來的本質特征綜合起來,推廣到同類事物上的一種思維過程。在處理同類問題的時候,教師在分析教學內容的基礎上,可以用問題引領作為開展教學的切入點,以問題來激活和調動學生的思維,學會解決同類問題的解決方法,促進知識與能力的遷移與提升。
例如:學生完成1+2+3+4+……+n累加求和程序的研究后,對解決這類問題的方法有了一定的了解。這時,我們可以引入數學中階乘的概念,要求同學們編寫一段程序,計算一個大于0的整數的階乘。建議同學們參考累加求和程序解決方案。
面對問題,學生可能一時聯系不上,這時可以問:
師:計算1+2+3+3..+n的累加式子是怎樣的,計算n!的式子又是怎樣的?兩者的差別大嗎?
生:差距不大,只是“加號”換成“乘號”,其余一樣。
這時,學生很快就找到聯系、解決問題了。
培養(yǎng)學生計算思維的本意是對學生進行思維教育。開展思維教育,要立足于學生現有的思維水平和認知水平,符合學生思維形成規(guī)律。學生計算思維的培養(yǎng),要求教師進行教學改革,緊緊圍繞定位、定向、瘦身、科學的教學思路,突出學生在教學全過程中的主人地位、主體作用、主動精神,突出教學是師生互動、合作交流、自主探究、動態(tài)生成的過程。結合計算思維的特點,透過科學整合教材,優(yōu)化教學設計,突出計算思維與學科課堂教學的實質性結合。