朱立平
摘要:本文針對程序設計課程的特點,提出了以“自主體驗”的方式展開課堂教學內容,采用“講練結合,邊講邊練”的教學手段,構建“實驗導學型”課堂教學模式,探尋以計算思維訓練為核心的自我體驗式教學方法和策略。
關鍵詞:實驗導學;計算思維;程序設計
中圖分類號:G642 文獻標識碼:B
1引言
程序設計課程的教學已逐漸舍棄傳統的“填鴨式”教學模式,由“知識傳授型”向“能力訓練型”轉化。教學要以學以致用為目的,以培養學生的學習能力、思維能力和自我約束能力為重點,構建以“學生為中心”的教學模式。筆者集多年程序設計課程教學體驗,以C語言程序設計為例,構建“實驗導學型”課堂教學模式,探尋以計算思維訓練為核心的自我體驗式教學方法和策略。在傳授基礎知識的同時,調動學生的學習興趣,培養學生分析問題、思考問題和解決問題的能力,使學生由被動接受知識變為主動獲取知識,以更好地適應社會對人才的需求。
2從計算思維到程序設計
J.M.Wing教授在《Computational Thinking(計算思維)》一文中指出:計算思維是建立在計算過程的能力和限制之上的,不管這些過程是由人還是由機器執行的。計算方法和模型給了我們勇氣去處理那些原本無法由任何個人獨自完成的問題求解和系統設計。計算思維涉及運用計算機科學的基礎概念去求解問題、設計系統和理解人類的行為,它涵蓋了反映計算機科學之廣泛性的一系列思維活動。
從計算機的發展和普及來看,計算機已經成為適合于每一個人的“一種普遍的認識和一類普適的技能”。這在一定程度上意味著計算機科學從前沿高端到基礎普及的轉型,因此,計算思維也被視為是每個人應當具備的基本技能。而對程序設計課程而言,編程能力是計算思維和技能化知識的綜合體現,如何培養學生的計算思維能力,是課程教學改革的一項重要內容。
計算機最初是作為一種計算工具問世的,計算機高級語言的理論基礎和基本方法都源于數學,而程序設計是求解一系列具體的問題的方法和過程。因此,在程序設計課程的教學設計和實施過程中,必須明確以培養和提高學生的計算思維能力為最終目的,而具體的程序設計只是實現這個目的—種手段。
3基于計算思維訓練的“實驗導學型”教學模式的構建
近年來,由于C程序設計課程教學的總學時數削減為64學時(理論學時與實驗學時比為3∶1),實驗學時明顯不足,不利于實際編程能力的系統訓練與提高。改變傳統的課堂教學模式,從單純性的課堂理論教學轉入互動式機房實踐教學,以“自主體驗”的方式展開課堂教學內容,可以利用有限的學時,使學生充分領會程序設計的基本思想與方法,提升運用計算機求解實際問題的能力。因此,我們在課堂教學環節中集中體現“以學生為中心”的教學理念,以計算思維訓練為目的,精講多練;利用機房環境營造自主體驗式教學氛圍;以案例為線索,采用“講練結合,邊講邊練”的教學手段,融合知識重點,構建四種體驗型實驗導學內容。
3.1模仿型實驗
模仿型實驗是學習者采用“臨摹”手段來體驗編寫程序的過程。俗語說:像不像,三分樣。對于學寫程序而言,可以像小時學寫字時的“描紅”一樣,首先將現有的案例程序讀懂,然后嘗試著寫出類似的程序。通過模仿型實驗的訓練,達到初步認識程序的目的。
模仿型實驗的構建原則是:以“案例”介紹基本語句和語法,經過舉一反三的練習學習編程的方法和技巧,學會用程序設計思維方式分析和解決問題。構建模仿型實驗主要針對簡單程序的體驗學習。模仿型實驗示例如表1所示。
3.2驗證型實驗
對于程序設計的初學者來說,驗證型實驗是一種最直接、最有效的體驗方式。當學生還對程序“懵懂不清”的時候,為他們開啟程序設計的大門。通過驗證型實驗的訓練,學生盡快學會并建立起程序設計的思維方式,了解編程基本思路和方法,掌握基本語句的使用及程序的執行過程。

驗證型實驗的構建原則是:根據案例提出的問題,通過分析問題提出解決方案,并給出全部程序代碼及測試數據,由學生對程序運行編譯運行,觀察并驗正運行結果。構建驗證型實驗主要針對基本語法、語句及程序基本結構的進行體驗學習。
以下是驗證型實驗的一個實例:計數問題。
在解決某個具體問題時,要綜合運用程序設計中的三種基本結構,特別是循環與分支結構的組合搭建。例如:設計驗證實驗,從鍵盤輸入若干個學生成績,分別統計不同分數段(即:90~100、80~89、70~79、60~69、0~59)的人數。通過本實驗,在掌握程序結構與基本語句的同時,學會使用“循環結構中含分支”的常見解題方法及程序結構,測試數據與運行結果如圖1所示。驗證程序的代碼如下:

#include
void main()
{
int sc;
int a=0,b=0,c=0,d=0,e=0;
printf("Input score,with -1 to End:");
scanf("%d",&sc); // 讀入第一個成績
while(sc!=-1) // 成績sc不為-1時,執行循環
{
switch(sc/10) // 提取十位上的數值
{ // 分別統計各分數段的人數
case 10:
case 9: a++; break;
case 8: b++; break;
case 7: c++; break;
case 6: d++; break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: e++; break;
default: printf("Input Error! ");
}
scanf("%d",&sc); // 讀入下一個成績
}
printf("90~100:%4d ",a);
printf("80~89 :%4d ",b);
printf("70~79 :%4d ",c);
printf("60~69 :%4d ",d);
printf("0~50:%4d ",e);
}
3.3改裝型實驗
改裝型實驗是學習者獨自解決實際問題的開始。學生對較復雜的問題進行解析,將已學的知識、算法和技能進行重新組合,尋求解決問題的具體方法。通過改裝型實驗的訓練,學生在鞏固已學的知識的同時提高了綜合應用知識的技能。
改裝型實驗的構建原則是:針對“案例”提出的問題分析并提出解題方案,引導學生用已掌握的算法和技巧為較復雜的問題搭建出解題方案。改裝型實驗主要是針對常用算法和復雜程序的體驗學習。
以下是改裝型實驗的一個實例:批量數據的處理問題。
對批量數據的處理通常采用數組存儲的形式,除了輸入和輸出外,對數組中數據的操作還包括:在指定位置處插入或刪除、查找指定的數據,按次序排列等常用操作。例如:設計改裝型實驗,在數組中查找指定的數據,并對查找到的數據進行刪除處理。提出解題方案:先用“查找”算法找到指定數據所處的位置,若找到,則執行“刪除”算法,若未找到,顯示“數據未找到!”的回饋信息。通過本實驗,學生將掌握數組的基本操作和對批量數據的綜合處理方法。
3.4獨創型實驗
獨創型實驗是構建“學思統一”思維教學空間的關鍵環節。要培養聰明的學習者,就要給學生提供足夠的思維空間,設法激勵和引導學生自主思維,并加強綜合訓練,擴展學生思維發展的學習空間。
獨創型實驗的構建原則是:提出實際問題及具體要求,引導學生正確地思考,并通過對問題的分析和討論設計出恰當的數據結構及解題算法,最后獨立完成編碼及程序的調試。
以下是獨創型實驗的一個實例:中值濾波器模擬處理問題。
中值濾波是圖像處理技術之一,即根據輸入圖像中對應像素鄰域內灰度的“中值”確定輸出圖像對應像素的灰度值。具體操作步驟是:
(1) 設定一個n×n的模板,讓其在圖像中漫游,并將模板中心與圖中的某個像素位置重合
(2) 讀取模板下所對應的像素灰度值,并將這些灰度值從小到大排成一列
(3) 找出排在中間的灰度值,稱為“中值”
(4) 將“中值”賦給對應于模板中心位置的像素
解決此問題時,采用二維數組描述圖像的像素灰度值。對于數組中的每個元素(灰度值),按n×n模板提取鄰域內的元素值(灰度值),經排序確定“中值”,修正元素值,完成濾波處理。通過本實驗,學生可以充分理解二維數組的結構特點以及它在實際問題中的應用。
4結束語
程序設計是實現計算思維的—種手段,程序設計課程的教學重點是幫助學生獲得解決問題的途徑與經驗。實驗導學型課堂教學模式體現了“以學生為中心”的教學理念,自我體驗式的學習氛圍有助于引導學生正確的思維,使學生由被動接受知識變為主動獲取知識,自我發展,成為一個聰明的學習者。在教學中,教師應加強對計算思維能力的培養,使學生學會用程序設計的方式進行思考,給學生提供足夠的思維空間,設法激勵與引導學生去思維,主動去獲取和建構知識,使學習變得輕松、高效,教學效果得到真正提高。
參考文獻:
[1] 王飛躍.從計算思維到計算文化[J].中國計算機學會通訊,2007,3(11).
[2] J.M.Wing. Computational Thinking[J].Communications of ACM,2006,49(3).
[3] 董榮勝,古天龍.計算思維與計算機方法論[J].計算機科學,2009(1).