張以文 金 瑩 李 煒 王愛平
【摘要】對(duì)現(xiàn)有《數(shù)據(jù)結(jié)構(gòu)》CAI軟件作了簡(jiǎn)要的分析,介紹了開發(fā)動(dòng)態(tài)交互式CAI課件的優(yōu)勢(shì),通過具體案例的設(shè)計(jì),說明交互式數(shù)據(jù)結(jié)構(gòu)CAI課件在教學(xué)方面的直觀性和趣味性,激發(fā)學(xué)生的開發(fā)熱情,提高教學(xué)效果。
【關(guān)鍵詞】數(shù)據(jù)結(jié)構(gòu);CAI
【中圖分類號(hào)】G420 【文獻(xiàn)標(biāo)識(shí)碼】B【論文編號(hào)】1009—8097(2009)10—0117—02
引言
“數(shù)據(jù)結(jié)構(gòu)”自上世紀(jì)六十年代形成一門獨(dú)立的課程以來,被視為計(jì)算機(jī)專業(yè)的核心課程之一[1]?!皵?shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)程序設(shè)計(jì)的重要理論和技術(shù)基礎(chǔ),它所涉及的內(nèi)容和方法,無論是對(duì)學(xué)習(xí)計(jì)算機(jī)領(lǐng)域的其他課程,還是對(duì)從事軟件項(xiàng)目的開發(fā)都有著重要的作用[2]。課程的學(xué)習(xí)目標(biāo)就是培養(yǎng)學(xué)生的數(shù)據(jù)抽象能力以及培養(yǎng)他們具備基本的、良好的程序設(shè)計(jì)技能,可以編制高效可靠的程序,為后續(xù)課程的學(xué)習(xí)如“操作系統(tǒng)”、“編譯原理”、“算法分析與設(shè)計(jì)”等奠定基礎(chǔ)。然而,“數(shù)據(jù)結(jié)構(gòu)”課程是大多學(xué)生學(xué)習(xí)過程中的攔路虎,該課程內(nèi)容豐富,學(xué)習(xí)量大,隱藏在各內(nèi)容中的方法和技術(shù)多,貫穿于全課程的鏈表存儲(chǔ)結(jié)構(gòu)和遞歸技術(shù)令大多學(xué)生望而生畏,概念抽象,難于理解[3]。如何提高“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)質(zhì)量一直是教育者研究的重要課題。在教學(xué)中通過合理使用現(xiàn)代化教學(xué)手段使教學(xué)效果更加直觀,編制多媒體教學(xué)課件和演示程序,使書本上靜態(tài)的內(nèi)容以生動(dòng)、形象、直觀的動(dòng)態(tài)形式展現(xiàn)在學(xué)生面前,充分發(fā)揮學(xué)生的觀察力、想象力,促進(jìn)學(xué)生的求知欲,增強(qiáng)教學(xué)的趣味性,提高學(xué)生的辨析能力,引導(dǎo)學(xué)生的學(xué)習(xí)興趣,激發(fā)學(xué)生的學(xué)習(xí)積極性,使學(xué)生更為輕松、愉快、高效地獲取知識(shí),發(fā)展思維,形成能力,可以讓本來抽象的內(nèi)容變得很容易理解,既消除了學(xué)生的畏難情緒,也提高了學(xué)生的學(xué)習(xí)興趣,強(qiáng)化教學(xué)效果。
一 CAI課件設(shè)計(jì)分析
“數(shù)據(jù)結(jié)構(gòu)”課程的CAI課件的研究與制作已經(jīng)得到了很多教育工作者的高度重視,也研制出了較多的CAI資源,但是,現(xiàn)有的CAI資源也暴露了其自身的諸多問題:
(1) 現(xiàn)有的CAI資源大多是針對(duì)“數(shù)據(jù)結(jié)構(gòu)”課程中的部分章節(jié),或是針對(duì)某章節(jié)中的固定問題,數(shù)據(jù)預(yù)先設(shè)定,演示過程中學(xué)生不能更改演示數(shù)據(jù),演示呆板,效果不佳;
(2) 雖然現(xiàn)有的CAI資源對(duì)學(xué)生理解固定算法有一定的幫助作用,但演示時(shí)間過長(zhǎng)會(huì)分散學(xué)生的注意力,可能會(huì)使“上課”變成了“看課”;
(3) 現(xiàn)有的CAI資源內(nèi)容分散,各有側(cè)重,資源整合程度不高等。
因此,“數(shù)據(jù)結(jié)構(gòu)”課程CAI資源的整合和高水平的軟件制作顯得尤其重要。在我們前期的工作中,已經(jīng)積累了良好的基礎(chǔ),研究制作的多媒體高教軟件《數(shù)據(jù)結(jié)構(gòu)-排序》獲得了省高教多媒體教學(xué)軟件一等獎(jiǎng),得到了同行的認(rèn)可,為我們后續(xù)的工作奠定了很好的理論和實(shí)踐基礎(chǔ)。
動(dòng)態(tài)交互式CAI課件的優(yōu)點(diǎn)體現(xiàn)在以下幾個(gè)方面:
(1) 動(dòng)畫演示中用到的所有數(shù)據(jù),學(xué)生可以任意輸入,根據(jù)不同的數(shù)據(jù)特點(diǎn),學(xué)生可以進(jìn)一步理解算法的內(nèi)在原理;
(2) 所有演示動(dòng)畫演示過程都是可以自主控制的,可以根據(jù)課程安排合理安排演示時(shí)間和進(jìn)度;
(3) 所有動(dòng)畫都有源程序,因?yàn)閯?dòng)畫本身就是用所演示算法的核心代碼來實(shí)現(xiàn)的,可以實(shí)現(xiàn)資源共享,學(xué)生在欣賞動(dòng)畫幫助理解算法原理同時(shí),可以在“數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)”實(shí)驗(yàn)課程中進(jìn)一步來分析相應(yīng)算法,既加深學(xué)生的理解又激發(fā)學(xué)生自己動(dòng)手開發(fā)的熱情;
(4) 動(dòng)畫設(shè)計(jì)我們選用了flash軟件,算法實(shí)現(xiàn)采用flash Action Script腳本語(yǔ)言加以實(shí)現(xiàn),學(xué)生在實(shí)驗(yàn)過程中,即可以對(duì)動(dòng)畫本身涉及的算法加以實(shí)現(xiàn)或驗(yàn)證,還可以進(jìn)一步理解面向?qū)ο蟪绦蛟O(shè)計(jì)的概念和基本原理,有利于分層實(shí)驗(yàn)教學(xué),為接受能力較強(qiáng)的學(xué)生提供了進(jìn)一步展示才華的機(jī)會(huì)等。
因此,動(dòng)態(tài)交互式CAI軟件的設(shè)計(jì)不僅可以幫助學(xué)生理解“數(shù)據(jù)結(jié)構(gòu)”課程中的算法本身,也可以刺激學(xué)生主動(dòng)開發(fā)的熱情,提高學(xué)生編寫代碼的能力,也符合現(xiàn)代計(jì)算機(jī)教育課程改革的要求。
二 數(shù)據(jù)結(jié)構(gòu)CAI案例設(shè)計(jì)
1 軟件環(huán)境
軟件環(huán)境選用Macromedia公司的flash,該軟件的優(yōu)點(diǎn)不言而喻:向量繪圖、簡(jiǎn)易的動(dòng)畫制作、無縫的Web結(jié)合和強(qiáng)大的Action Script腳本語(yǔ)言。
2 案例分析-快速排序
快速排序(Quick Sort)是一種有效的排序算法[4]。雖然算法在最壞的情況下運(yùn)行時(shí)間為O(n2),但由于平均運(yùn)行時(shí)間為O(nlogn),并且在內(nèi)存使用、程序?qū)崿F(xiàn)復(fù)雜性上表現(xiàn)優(yōu)秀,尤其是對(duì)快速排序算法進(jìn)行隨機(jī)化的可能,使得快速排序在一般情況下是最實(shí)用的排序方法之一。
(1) 數(shù)據(jù)登陸界面設(shè)計(jì)
登陸界面設(shè)計(jì)力求美觀簡(jiǎn)潔,通過設(shè)計(jì)動(dòng)態(tài)文本框來輸入書本示例數(shù)據(jù)或自定義數(shù)據(jù)。排序動(dòng)畫展示過程中可以控制動(dòng)畫進(jìn)度,正常演示時(shí)間約為3分鐘,數(shù)據(jù)錄入界面如圖1所示。
在該動(dòng)畫的實(shí)現(xiàn)算法中,start按鈕事件的主要代碼如下:
On(release)
{
text = new String();
text = inputtextvalue://inputtextvalue為動(dòng)態(tài)輸入文本框
datearray = new Array();
datearray = text.split(“,”);
//用戶輸入數(shù)據(jù)分離保存到數(shù)組datearray中,輸入數(shù)據(jù)間用“,”分隔
count = datearray.length;//count存儲(chǔ)輸入元素個(gè)數(shù)
}
(2) 課本源碼執(zhí)行過程動(dòng)畫演示設(shè)計(jì)
通過動(dòng)畫演示課本算法源碼執(zhí)行次序以及中間臨時(shí)變量的產(chǎn)生和釋放過程,幫助學(xué)生進(jìn)一步理解算法的原理,隨著動(dòng)畫演示的進(jìn)行,高亮陰影會(huì)隨著代碼的執(zhí)行而移動(dòng)到相應(yīng)的代碼后面,臨時(shí)變量中值的變化也隨之動(dòng)態(tài)變化。如圖2所示。
(3)快速排序算法主要 Action Script
在實(shí)驗(yàn)課程中通過向?qū)W生展示和共享Action Script腳本源碼,可以激發(fā)學(xué)生的開發(fā)熱情,Action Script腳本實(shí)現(xiàn)的本身就是快速排序算法的實(shí)現(xiàn),但有別于課本源碼,在開發(fā)過程中引入了動(dòng)態(tài)文本框、按鈕、指針等對(duì)象的概念,有助于幫助學(xué)生對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)理論的理解。部分主要的Action Script腳本代碼如下:
// Action script
i = 1;
j = _root.count;
//初始化指針變量
if (tempval2 >= tempval1)//后向和前向指針?biāo)笇?duì)象的值
{
_root.copy.value = “≤”;
if (i < j)
{
gotoAndPlay(23); //指針移動(dòng)演示動(dòng)畫
}
else
{
gotoAndPlay(102);// j = j – 1同時(shí)修改各節(jié)點(diǎn)坐標(biāo)值
}
}
else
{
_root.copy.value = “>”;
gotoAndPlay(28);// 改變基準(zhǔn)節(jié)點(diǎn)
}
if (i < j)
{
_root.copy.value = "";
_root. Notice = “以i為指針從左向右進(jìn)行掃描”;
with (_root.jiedian0)
{
gotoAndPlay(4);//初始化基準(zhǔn)節(jié)點(diǎn)
}
tellTarget("_root.jiedian" + i)//指向影片剪輯對(duì)象_root.jiedian+i
{
gotoAndPlay(4);
_root.cmp.cpx1 = _x;
_root.cmp.tempvalue1 = value;
} // End of TellTarget
gotoAndPlay(60);
}
else
{
gotoAndPlay(106);
coordx = cpx = cpx2;
_root.Notice = "i==j基準(zhǔn)記錄已定位";
}
三 總結(jié)
在現(xiàn)今計(jì)算機(jī)教育改革的大環(huán)境下,CAI系統(tǒng)將顯示出越來越重要的作用?!皵?shù)據(jù)結(jié)構(gòu)”交互式CAI課件實(shí)現(xiàn)了用戶可任意輸入數(shù)據(jù),自主控制演示進(jìn)度等功能,具有良好的交互性,在教學(xué)中具有較高的應(yīng)用價(jià)值。在以后的研制工作中將進(jìn)一步完善設(shè)計(jì),在教學(xué)過程中加以運(yùn)用并跟蹤調(diào)查教學(xué)效果,期望能夠啟發(fā)學(xué)生開發(fā)思維,激發(fā)學(xué)生開發(fā)熱情。
參考文獻(xiàn)
[1] 殷人昆,鄧俊輝.清華大學(xué)”數(shù)據(jù)結(jié)構(gòu)”精品課程建設(shè)[J].計(jì)算機(jī)教育,2007,(5):19-20.
[2] 楊桂芝.”數(shù)據(jù)結(jié)構(gòu)”教學(xué)方法探索與實(shí)踐[J].計(jì)算機(jī)教育,2007,(3):7-8.
[3] 劉玉蘭.數(shù)據(jù)結(jié)構(gòu)輔助教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代教育技術(shù),1998,(4):19-20.
[4] 嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2005:274-277.