朱立平
摘要:本文針對(duì)程序設(shè)計(jì)課程的特點(diǎn),提出了以“自主體驗(yàn)”的方式展開(kāi)課堂教學(xué)內(nèi)容,采用“講練結(jié)合,邊講邊練”的教學(xué)手段,構(gòu)建“實(shí)驗(yàn)導(dǎo)學(xué)型”課堂教學(xué)模式,探尋以計(jì)算思維訓(xùn)練為核心的自我體驗(yàn)式教學(xué)方法和策略。
關(guān)鍵詞:實(shí)驗(yàn)導(dǎo)學(xué);計(jì)算思維;程序設(shè)計(jì)
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
1引言
程序設(shè)計(jì)課程的教學(xué)已逐漸舍棄傳統(tǒng)的“填鴨式”教學(xué)模式,由“知識(shí)傳授型”向“能力訓(xùn)練型”轉(zhuǎn)化。教學(xué)要以學(xué)以致用為目的,以培養(yǎng)學(xué)生的學(xué)習(xí)能力、思維能力和自我約束能力為重點(diǎn),構(gòu)建以“學(xué)生為中心”的教學(xué)模式。筆者集多年程序設(shè)計(jì)課程教學(xué)體驗(yàn),以C語(yǔ)言程序設(shè)計(jì)為例,構(gòu)建“實(shí)驗(yàn)導(dǎo)學(xué)型”課堂教學(xué)模式,探尋以計(jì)算思維訓(xùn)練為核心的自我體驗(yàn)式教學(xué)方法和策略。在傳授基礎(chǔ)知識(shí)的同時(shí),調(diào)動(dòng)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生分析問(wèn)題、思考問(wèn)題和解決問(wèn)題的能力,使學(xué)生由被動(dòng)接受知識(shí)變?yōu)橹鲃?dòng)獲取知識(shí),以更好地適應(yīng)社會(huì)對(duì)人才的需求。
2從計(jì)算思維到程序設(shè)計(jì)
J.M.Wing教授在《Computational Thinking(計(jì)算思維)》一文中指出:計(jì)算思維是建立在計(jì)算過(guò)程的能力和限制之上的,不管這些過(guò)程是由人還是由機(jī)器執(zhí)行的。計(jì)算方法和模型給了我們勇氣去處理那些原本無(wú)法由任何個(gè)人獨(dú)自完成的問(wèn)題求解和系統(tǒng)設(shè)計(jì)。計(jì)算思維涉及運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念去求解問(wèn)題、設(shè)計(jì)系統(tǒng)和理解人類的行為,它涵蓋了反映計(jì)算機(jī)科學(xué)之廣泛性的一系列思維活動(dòng)。
從計(jì)算機(jī)的發(fā)展和普及來(lái)看,計(jì)算機(jī)已經(jīng)成為適合于每一個(gè)人的“一種普遍的認(rèn)識(shí)和一類普適的技能”。這在一定程度上意味著計(jì)算機(jī)科學(xué)從前沿高端到基礎(chǔ)普及的轉(zhuǎn)型,因此,計(jì)算思維也被視為是每個(gè)人應(yīng)當(dāng)具備的基本技能。而對(duì)程序設(shè)計(jì)課程而言,編程能力是計(jì)算思維和技能化知識(shí)的綜合體現(xiàn),如何培養(yǎng)學(xué)生的計(jì)算思維能力,是課程教學(xué)改革的一項(xiàng)重要內(nèi)容。
計(jì)算機(jī)最初是作為一種計(jì)算工具問(wèn)世的,計(jì)算機(jī)高級(jí)語(yǔ)言的理論基礎(chǔ)和基本方法都源于數(shù)學(xué),而程序設(shè)計(jì)是求解一系列具體的問(wèn)題的方法和過(guò)程。因此,在程序設(shè)計(jì)課程的教學(xué)設(shè)計(jì)和實(shí)施過(guò)程中,必須明確以培養(yǎng)和提高學(xué)生的計(jì)算思維能力為最終目的,而具體的程序設(shè)計(jì)只是實(shí)現(xiàn)這個(gè)目的—種手段。
3基于計(jì)算思維訓(xùn)練的“實(shí)驗(yàn)導(dǎo)學(xué)型”教學(xué)模式的構(gòu)建
近年來(lái),由于C程序設(shè)計(jì)課程教學(xué)的總學(xué)時(shí)數(shù)削減為64學(xué)時(shí)(理論學(xué)時(shí)與實(shí)驗(yàn)學(xué)時(shí)比為3∶1),實(shí)驗(yàn)學(xué)時(shí)明顯不足,不利于實(shí)際編程能力的系統(tǒng)訓(xùn)練與提高。改變傳統(tǒng)的課堂教學(xué)模式,從單純性的課堂理論教學(xué)轉(zhuǎn)入互動(dòng)式機(jī)房實(shí)踐教學(xué),以“自主體驗(yàn)”的方式展開(kāi)課堂教學(xué)內(nèi)容,可以利用有限的學(xué)時(shí),使學(xué)生充分領(lǐng)會(huì)程序設(shè)計(jì)的基本思想與方法,提升運(yùn)用計(jì)算機(jī)求解實(shí)際問(wèn)題的能力。因此,我們?cè)谡n堂教學(xué)環(huán)節(jié)中集中體現(xiàn)“以學(xué)生為中心”的教學(xué)理念,以計(jì)算思維訓(xùn)練為目的,精講多練;利用機(jī)房環(huán)境營(yíng)造自主體驗(yàn)式教學(xué)氛圍;以案例為線索,采用“講練結(jié)合,邊講邊練”的教學(xué)手段,融合知識(shí)重點(diǎn),構(gòu)建四種體驗(yàn)型實(shí)驗(yàn)導(dǎo)學(xué)內(nèi)容。
3.1模仿型實(shí)驗(yàn)
模仿型實(shí)驗(yàn)是學(xué)習(xí)者采用“臨摹”手段來(lái)體驗(yàn)編寫(xiě)程序的過(guò)程。俗語(yǔ)說(shuō):像不像,三分樣。對(duì)于學(xué)寫(xiě)程序而言,可以像小時(shí)學(xué)寫(xiě)字時(shí)的“描紅”一樣,首先將現(xiàn)有的案例程序讀懂,然后嘗試著寫(xiě)出類似的程序。通過(guò)模仿型實(shí)驗(yàn)的訓(xùn)練,達(dá)到初步認(rèn)識(shí)程序的目的。
模仿型實(shí)驗(yàn)的構(gòu)建原則是:以“案例”介紹基本語(yǔ)句和語(yǔ)法,經(jīng)過(guò)舉一反三的練習(xí)學(xué)習(xí)編程的方法和技巧,學(xué)會(huì)用程序設(shè)計(jì)思維方式分析和解決問(wèn)題。構(gòu)建模仿型實(shí)驗(yàn)主要針對(duì)簡(jiǎn)單程序的體驗(yàn)學(xué)習(xí)。模仿型實(shí)驗(yàn)示例如表1所示。
3.2驗(yàn)證型實(shí)驗(yàn)
對(duì)于程序設(shè)計(jì)的初學(xué)者來(lái)說(shuō),驗(yàn)證型實(shí)驗(yàn)是一種最直接、最有效的體驗(yàn)方式。當(dāng)學(xué)生還對(duì)程序“懵懂不清”的時(shí)候,為他們開(kāi)啟程序設(shè)計(jì)的大門(mén)。通過(guò)驗(yàn)證型實(shí)驗(yàn)的訓(xùn)練,學(xué)生盡快學(xué)會(huì)并建立起程序設(shè)計(jì)的思維方式,了解編程基本思路和方法,掌握基本語(yǔ)句的使用及程序的執(zhí)行過(guò)程。
驗(yàn)證型實(shí)驗(yàn)的構(gòu)建原則是:根據(jù)案例提出的問(wèn)題,通過(guò)分析問(wèn)題提出解決方案,并給出全部程序代碼及測(cè)試數(shù)據(jù),由學(xué)生對(duì)程序運(yùn)行編譯運(yùn)行,觀察并驗(yàn)正運(yùn)行結(jié)果。構(gòu)建驗(yàn)證型實(shí)驗(yàn)主要針對(duì)基本語(yǔ)法、語(yǔ)句及程序基本結(jié)構(gòu)的進(jìn)行體驗(yàn)學(xué)習(xí)。
以下是驗(yàn)證型實(shí)驗(yàn)的一個(gè)實(shí)例:計(jì)數(shù)問(wèn)題。
在解決某個(gè)具體問(wèn)題時(shí),要綜合運(yùn)用程序設(shè)計(jì)中的三種基本結(jié)構(gòu),特別是循環(huán)與分支結(jié)構(gòu)的組合搭建。例如:設(shè)計(jì)驗(yàn)證實(shí)驗(yàn),從鍵盤(pán)輸入若干個(gè)學(xué)生成績(jī),分別統(tǒng)計(jì)不同分?jǐn)?shù)段(即:90~100、80~89、70~79、60~69、0~59)的人數(shù)。通過(guò)本實(shí)驗(yàn),在掌握程序結(jié)構(gòu)與基本語(yǔ)句的同時(shí),學(xué)會(huì)使用“循環(huán)結(jié)構(gòu)中含分支”的常見(jiàn)解題方法及程序結(jié)構(gòu),測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果如圖1所示。驗(yàn)證程序的代碼如下:
#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); // 讀入第一個(gè)成績(jī)
while(sc!=-1) // 成績(jī)sc不為-1時(shí),執(zhí)行循環(huán)
{
switch(sc/10) // 提取十位上的數(shù)值
{ // 分別統(tǒng)計(jì)各分?jǐn)?shù)段的人數(shù)
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); // 讀入下一個(gè)成績(jī)
}
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改裝型實(shí)驗(yàn)
改裝型實(shí)驗(yàn)是學(xué)習(xí)者獨(dú)自解決實(shí)際問(wèn)題的開(kāi)始。學(xué)生對(duì)較復(fù)雜的問(wèn)題進(jìn)行解析,將已學(xué)的知識(shí)、算法和技能進(jìn)行重新組合,尋求解決問(wèn)題的具體方法。通過(guò)改裝型實(shí)驗(yàn)的訓(xùn)練,學(xué)生在鞏固已學(xué)的知識(shí)的同時(shí)提高了綜合應(yīng)用知識(shí)的技能。
改裝型實(shí)驗(yàn)的構(gòu)建原則是:針對(duì)“案例”提出的問(wèn)題分析并提出解題方案,引導(dǎo)學(xué)生用已掌握的算法和技巧為較復(fù)雜的問(wèn)題搭建出解題方案。改裝型實(shí)驗(yàn)主要是針對(duì)常用算法和復(fù)雜程序的體驗(yàn)學(xué)習(xí)。
以下是改裝型實(shí)驗(yàn)的一個(gè)實(shí)例:批量數(shù)據(jù)的處理問(wèn)題。
對(duì)批量數(shù)據(jù)的處理通常采用數(shù)組存儲(chǔ)的形式,除了輸入和輸出外,對(duì)數(shù)組中數(shù)據(jù)的操作還包括:在指定位置處插入或刪除、查找指定的數(shù)據(jù),按次序排列等常用操作。例如:設(shè)計(jì)改裝型實(shí)驗(yàn),在數(shù)組中查找指定的數(shù)據(jù),并對(duì)查找到的數(shù)據(jù)進(jìn)行刪除處理。提出解題方案:先用“查找”算法找到指定數(shù)據(jù)所處的位置,若找到,則執(zhí)行“刪除”算法,若未找到,顯示“數(shù)據(jù)未找到!”的回饋信息。通過(guò)本實(shí)驗(yàn),學(xué)生將掌握數(shù)組的基本操作和對(duì)批量數(shù)據(jù)的綜合處理方法。
3.4獨(dú)創(chuàng)型實(shí)驗(yàn)
獨(dú)創(chuàng)型實(shí)驗(yàn)是構(gòu)建“學(xué)思統(tǒng)一”思維教學(xué)空間的關(guān)鍵環(huán)節(jié)。要培養(yǎng)聰明的學(xué)習(xí)者,就要給學(xué)生提供足夠的思維空間,設(shè)法激勵(lì)和引導(dǎo)學(xué)生自主思維,并加強(qiáng)綜合訓(xùn)練,擴(kuò)展學(xué)生思維發(fā)展的學(xué)習(xí)空間。
獨(dú)創(chuàng)型實(shí)驗(yàn)的構(gòu)建原則是:提出實(shí)際問(wèn)題及具體要求,引導(dǎo)學(xué)生正確地思考,并通過(guò)對(duì)問(wèn)題的分析和討論設(shè)計(jì)出恰當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)及解題算法,最后獨(dú)立完成編碼及程序的調(diào)試。
以下是獨(dú)創(chuàng)型實(shí)驗(yàn)的一個(gè)實(shí)例:中值濾波器模擬處理問(wèn)題。
中值濾波是圖像處理技術(shù)之一,即根據(jù)輸入圖像中對(duì)應(yīng)像素鄰域內(nèi)灰度的“中值”確定輸出圖像對(duì)應(yīng)像素的灰度值。具體操作步驟是:
(1) 設(shè)定一個(gè)n×n的模板,讓其在圖像中漫游,并將模板中心與圖中的某個(gè)像素位置重合
(2) 讀取模板下所對(duì)應(yīng)的像素灰度值,并將這些灰度值從小到大排成一列
(3) 找出排在中間的灰度值,稱為“中值”
(4) 將“中值”賦給對(duì)應(yīng)于模板中心位置的像素
解決此問(wèn)題時(shí),采用二維數(shù)組描述圖像的像素灰度值。對(duì)于數(shù)組中的每個(gè)元素(灰度值),按n×n模板提取鄰域內(nèi)的元素值(灰度值),經(jīng)排序確定“中值”,修正元素值,完成濾波處理。通過(guò)本實(shí)驗(yàn),學(xué)生可以充分理解二維數(shù)組的結(jié)構(gòu)特點(diǎn)以及它在實(shí)際問(wèn)題中的應(yīng)用。
4結(jié)束語(yǔ)
程序設(shè)計(jì)是實(shí)現(xiàn)計(jì)算思維的—種手段,程序設(shè)計(jì)課程的教學(xué)重點(diǎn)是幫助學(xué)生獲得解決問(wèn)題的途徑與經(jīng)驗(yàn)。實(shí)驗(yàn)導(dǎo)學(xué)型課堂教學(xué)模式體現(xiàn)了“以學(xué)生為中心”的教學(xué)理念,自我體驗(yàn)式的學(xué)習(xí)氛圍有助于引導(dǎo)學(xué)生正確的思維,使學(xué)生由被動(dòng)接受知識(shí)變?yōu)橹鲃?dòng)獲取知識(shí),自我發(fā)展,成為一個(gè)聰明的學(xué)習(xí)者。在教學(xué)中,教師應(yīng)加強(qiáng)對(duì)計(jì)算思維能力的培養(yǎng),使學(xué)生學(xué)會(huì)用程序設(shè)計(jì)的方式進(jìn)行思考,給學(xué)生提供足夠的思維空間,設(shè)法激勵(lì)與引導(dǎo)學(xué)生去思維,主動(dòng)去獲取和建構(gòu)知識(shí),使學(xué)習(xí)變得輕松、高效,教學(xué)效果得到真正提高。
參考文獻(xiàn):
[1] 王飛躍.從計(jì)算思維到計(jì)算文化[J].中國(guó)計(jì)算機(jī)學(xué)會(huì)通訊,2007,3(11).
[2] J.M.Wing. Computational Thinking[J].Communications of ACM,2006,49(3).
[3] 董榮勝,古天龍.計(jì)算思維與計(jì)算機(jī)方法論[J].計(jì)算機(jī)科學(xué),2009(1).