趙曉 王麗麗
摘 要: 目前“C++面向?qū)ο蟪绦蛟O(shè)計(jì)”課程的實(shí)驗(yàn)?zāi)J蕉酁轵?yàn)證型實(shí)驗(yàn),機(jī)械而乏味,難以激發(fā)學(xué)生的學(xué)生興趣。為此設(shè)計(jì)了一種多樣型實(shí)驗(yàn)?zāi)J?,包括?yàn)證型實(shí)驗(yàn)、設(shè)計(jì)型實(shí)驗(yàn)、創(chuàng)新性實(shí)驗(yàn)和綜合性實(shí)驗(yàn),給出了具體的實(shí)驗(yàn)內(nèi)容。這種多種實(shí)驗(yàn)形式并存的實(shí)驗(yàn)?zāi)J侥軌蛱岣邔W(xué)生的自主學(xué)習(xí)能力,培養(yǎng)其創(chuàng)新能力和綜合應(yīng)用能力。
關(guān)鍵詞: C++; 多樣型實(shí)驗(yàn); 自主學(xué)習(xí)能力; 創(chuàng)新能力
中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2013)07-46-02
0 引言
“C++面向?qū)ο蟪绦蛟O(shè)計(jì)”是計(jì)算機(jī)類(lèi)專(zhuān)業(yè)的專(zhuān)業(yè)基礎(chǔ)課,其主要目的是培養(yǎng)學(xué)生的基本編程能力、基本的軟件邏輯思維方法以及基本的面向?qū)ο笏季S方法[1-2]。該課程應(yīng)用性與實(shí)踐性較強(qiáng),這需要大量的實(shí)驗(yàn)教學(xué)環(huán)節(jié)。實(shí)驗(yàn)教學(xué)是高等院校教學(xué)不可或缺的重要組成部分,它在培養(yǎng)學(xué)生綜合素質(zhì)和創(chuàng)新能力方面所起到的重要作用是其他任何教學(xué)形式都無(wú)法替代的。目前的實(shí)驗(yàn)?zāi)J蕉酁轵?yàn)證型實(shí)驗(yàn),已經(jīng)無(wú)法滿足教學(xué)要求,它忽略了對(duì)學(xué)生創(chuàng)新和創(chuàng)造能力方面的培養(yǎng)[3-4],為此,本文設(shè)計(jì)了一種多種實(shí)驗(yàn)形式并存的多樣型實(shí)驗(yàn)?zāi)J?,以提高學(xué)生的自主學(xué)習(xí)能力,培養(yǎng)其創(chuàng)新能力和綜合應(yīng)用能力。
1 目前實(shí)驗(yàn)教學(xué)存在的問(wèn)題
目前該課程的教學(xué)模式是:課堂教學(xué)+上機(jī)實(shí)驗(yàn)。實(shí)驗(yàn)教學(xué)應(yīng)該在本課程的教學(xué)中占有重要的地位,但現(xiàn)在實(shí)驗(yàn)教學(xué)模式存在著許多弊端[5-6]:①實(shí)驗(yàn)內(nèi)容有限,實(shí)驗(yàn)教學(xué)內(nèi)容安排僅圍繞理論教學(xué)大綱開(kāi)展,無(wú)拓展性、開(kāi)放性;②實(shí)驗(yàn)?zāi)J揭则?yàn)證型實(shí)驗(yàn)為主,只是把書(shū)本上的例題或課后習(xí)題輸入計(jì)算機(jī)試一下,根本沒(méi)有真正認(rèn)識(shí)到程序設(shè)計(jì)的核心在于設(shè)計(jì),而不是抄現(xiàn)有的程序到計(jì)算機(jī)看結(jié)果,如此就談不上掌握面向?qū)ο笤O(shè)計(jì)思想了。
為使C++課程的實(shí)驗(yàn)教學(xué)達(dá)到預(yù)期目標(biāo),就必須重視實(shí)驗(yàn)教學(xué)內(nèi)容的豐富性,啟發(fā)性以及總體實(shí)驗(yàn)課題的系統(tǒng)性,本文針對(duì)C++實(shí)驗(yàn)環(huán)節(jié)中的問(wèn)題及原因,提出C++多樣型實(shí)驗(yàn)?zāi)J嚼砟?,?duì)原有的實(shí)驗(yàn)?zāi)J竭M(jìn)行改革。
2 多樣型實(shí)驗(yàn)的理念
“C++面向?qū)ο蟪绦蛟O(shè)計(jì)”課程實(shí)踐性較強(qiáng),既有理論體系,又注重實(shí)踐和應(yīng)用。它要求學(xué)生在掌握基礎(chǔ)知識(shí)和基本技能的同時(shí),不斷地提高程序設(shè)計(jì)能力,運(yùn)用所學(xué)知識(shí)去解決實(shí)際問(wèn)題。這就要求C++課程實(shí)驗(yàn)類(lèi)型的多樣性。只有包含多種實(shí)驗(yàn)類(lèi)型的實(shí)驗(yàn)才能滿足C++課程的需要。多樣型實(shí)驗(yàn)包括驗(yàn)證型實(shí)驗(yàn)、設(shè)計(jì)型實(shí)驗(yàn)、綜合型實(shí)驗(yàn)和創(chuàng)新型實(shí)驗(yàn)。
2.1 驗(yàn)證型實(shí)驗(yàn)
學(xué)習(xí)該課程只有掌握基本語(yǔ)法才能更好地理解面向?qū)ο蟮木幊趟枷爰皯?yīng)用C++解決實(shí)際問(wèn)題。為了讓學(xué)生能夠盡快的掌握基本語(yǔ)法,我們?cè)O(shè)計(jì)了包括C++語(yǔ)法的驗(yàn)證型實(shí)驗(yàn)。
驗(yàn)證型實(shí)驗(yàn)的目的:①通過(guò)實(shí)驗(yàn)掌握C++的基本語(yǔ)法及使用,建立C++語(yǔ)言的知識(shí)框架;②通過(guò)對(duì)類(lèi)和對(duì)象的應(yīng)用繼承和派生實(shí)現(xiàn)促使學(xué)生基本理解面向?qū)ο蟮木幊趟枷?,并培養(yǎng)學(xué)生規(guī)范化軟件設(shè)計(jì)的能力。
2.2 設(shè)計(jì)型實(shí)驗(yàn)
基于面向?qū)ο蟮某绦蛟O(shè)計(jì)主要任務(wù)就是設(shè)計(jì)合理的類(lèi)和對(duì)象,以及類(lèi)和對(duì)象的后續(xù)操作。選擇設(shè)計(jì)型實(shí)驗(yàn)的題目時(shí)需要注意以下幾個(gè)方面:①實(shí)驗(yàn)題目要接近真實(shí)生活,提高學(xué)生的興趣;②只要能夠滿足題目要求,答案可以不惟一,另外如果更接近于真實(shí)生活可以允許學(xué)生自己擴(kuò)充類(lèi)的成員。這樣能夠激勵(lì)學(xué)生不斷思考,促使學(xué)生在滿足題目要求的情況下能夠?qū)︻?lèi)和對(duì)象進(jìn)行優(yōu)化。
設(shè)計(jì)型實(shí)驗(yàn)的目的:①通過(guò)實(shí)驗(yàn),讓學(xué)生了解類(lèi)和對(duì)象的設(shè)計(jì)思路及分析方法;②激發(fā)學(xué)生的學(xué)習(xí)興趣,不斷思考,不斷優(yōu)化自己的設(shè)計(jì),培養(yǎng)學(xué)生解決實(shí)際問(wèn)題的能力。
2.3 創(chuàng)新性實(shí)驗(yàn)
創(chuàng)新型實(shí)驗(yàn)是創(chuàng)新人才培養(yǎng)體系中不可或缺的重要環(huán)節(jié),是培養(yǎng)學(xué)生實(shí)踐能力、創(chuàng)新意識(shí)和科研能力的基礎(chǔ)[7-8]。本課程重點(diǎn)設(shè)計(jì)了一個(gè)創(chuàng)新型實(shí)驗(yàn)項(xiàng)目。
創(chuàng)新型實(shí)驗(yàn)的目的:①培養(yǎng)學(xué)生獨(dú)立解決實(shí)際問(wèn)題的能力、研究性學(xué)習(xí)能力、創(chuàng)新能力;②讓學(xué)生對(duì)C++的類(lèi)庫(kù)有進(jìn)一步的了解,對(duì)C++有更全面的認(rèn)識(shí);③通過(guò)小程序的編寫(xiě),促使學(xué)生領(lǐng)會(huì)C++的復(fù)用性。
2.4 綜合型實(shí)驗(yàn)
學(xué)習(xí)一種開(kāi)發(fā)工具的最終目的是做出能夠完成一定功能的項(xiàng)目,綜合型實(shí)驗(yàn)就是讓學(xué)生嘗試一些功能簡(jiǎn)單的項(xiàng)目[9-10]。學(xué)生完成此項(xiàng)實(shí)驗(yàn)后就能對(duì)項(xiàng)目的開(kāi)發(fā)流程有更深一步的認(rèn)識(shí)。由于此實(shí)驗(yàn)會(huì)涉及到數(shù)據(jù)庫(kù)的知識(shí),該實(shí)驗(yàn)要求學(xué)生分組(3-4人/組),各司其職,分工合作。在完成后還要編寫(xiě)實(shí)驗(yàn)報(bào)告。
綜合型實(shí)驗(yàn)的目的:①培養(yǎng)學(xué)生的分析能力、思辨能力、團(tuán)隊(duì)合作能力;②讓學(xué)生對(duì)項(xiàng)目的開(kāi)發(fā)流程有一個(gè)大體的了解;③訓(xùn)練學(xué)生的問(wèn)題需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),調(diào)試分析,程序測(cè)試,文檔編寫(xiě)等軟件工程學(xué)的基本技能,培養(yǎng)學(xué)生分析與設(shè)計(jì)實(shí)際軟件的能力。
3 實(shí)驗(yàn)項(xiàng)目設(shè)計(jì)
根據(jù)各種實(shí)驗(yàn)類(lèi)型目的與要求,本文設(shè)計(jì)了一種多種實(shí)驗(yàn)形式并存的多樣型實(shí)驗(yàn)?zāi)J?,?shí)驗(yàn)項(xiàng)目表如表1所示。
由于驗(yàn)證型實(shí)驗(yàn)比較簡(jiǎn)單,并且教材已經(jīng)給出了詳細(xì)分析和源代碼,這里不再贅述,下面詳細(xì)介紹設(shè)計(jì)型實(shí)驗(yàn)、創(chuàng)新型實(shí)驗(yàn)和綜合型實(shí)驗(yàn)。
3.1 設(shè)計(jì)型實(shí)驗(yàn)
⑴ 數(shù)碼時(shí)鐘設(shè)計(jì)與實(shí)現(xiàn)
要求:利用所學(xué)知識(shí)實(shí)現(xiàn)數(shù)碼時(shí)鐘的設(shè)計(jì),能夠顯示當(dāng)前時(shí)間,包括時(shí)、分、秒,并能實(shí)現(xiàn)對(duì)時(shí)、分、秒的調(diào)節(jié)。
實(shí)現(xiàn)參考:先定義一個(gè)標(biāo)記變量,初值為0,然后調(diào)用時(shí)間函數(shù),實(shí)現(xiàn)一秒鐘對(duì)標(biāo)記變量置1。用循環(huán)語(yǔ)句檢測(cè)到標(biāo)記標(biāo)量變成1時(shí),將秒加1,達(dá)到最大值時(shí)置0,分加1;分和時(shí)方法相同,最后刷新顯示。
⑵ 簡(jiǎn)易計(jì)算器設(shè)計(jì)與實(shí)現(xiàn)
要求:輸入算式就可識(shí)別將要進(jìn)行的運(yùn)算并計(jì)算出結(jié)果,運(yùn)算包括四則運(yùn)算、整除、求余,能識(shí)別非法字符,能按照四則運(yùn)算的優(yōu)先順序以及先算括號(hào)內(nèi)的規(guī)則計(jì)算。
實(shí)現(xiàn)參考:可以定義參加運(yùn)算的前一個(gè)數(shù)值為類(lèi),并為此類(lèi)定義多種運(yùn)算作為函數(shù)成員,參與運(yùn)算的第二個(gè)數(shù)值作為函數(shù)成員的形參。這樣就實(shí)現(xiàn)了兩個(gè)數(shù)值之間的運(yùn)算,而對(duì)于多個(gè)數(shù)值的運(yùn)算,都是建立在此之上的。此外,還要注意括號(hào)以及運(yùn)算符號(hào)的先后順序?qū)\(yùn)算的影響。
3.2 創(chuàng)新型實(shí)驗(yàn)
大整數(shù)的四則運(yùn)算設(shè)計(jì)與實(shí)現(xiàn)。
要求:實(shí)現(xiàn)的范圍在-10150~10150之間大整數(shù)的四則運(yùn)算。
實(shí)現(xiàn)參考:①大整數(shù)的存放:可以定義一個(gè)類(lèi)來(lái)存放大整數(shù),該類(lèi)要定義一個(gè)布爾類(lèi)型的變量(標(biāo)記正負(fù))、一個(gè)字符竄類(lèi)型變量(存放大整數(shù)的絕對(duì)值),然后定義四則運(yùn)算以及計(jì)算大整數(shù)的位數(shù)的成員函數(shù)。②大數(shù)減法問(wèn)題:對(duì)于減法可以加減數(shù)加符號(hào)然后像二進(jìn)制那樣的方式取補(bǔ)(取補(bǔ)就是講大數(shù)的每一位都用9去減,然后個(gè)位數(shù)再加1),然后再計(jì)算。③大數(shù)加法的問(wèn)題:首先考慮兩個(gè)加數(shù)的符號(hào),若為同號(hào),可以將要計(jì)算的大數(shù)從高位到底位排序(由于一般的加法是低位對(duì)齊),然后兩大數(shù)就可高位對(duì)齊而低位沒(méi)有對(duì)齊,執(zhí)行加法操作,將結(jié)果再逆置去掉多余的0,就可得計(jì)算結(jié)果,最后符號(hào)為其中一個(gè)的符號(hào);若為異號(hào),則可以通過(guò)比較兩數(shù)的數(shù)值大小情況,總是用數(shù)值大的數(shù)來(lái)減數(shù)值小的數(shù),符號(hào)由較大者決定。④大數(shù)乘法問(wèn)題:大數(shù)乘法可以用多次加法來(lái)實(shí)現(xiàn)。⑤大數(shù)求商問(wèn)題:可以通過(guò)多次減法得到最終結(jié)果。
可以參考下面的示例代碼定義大整數(shù)類(lèi)。
Class StrInt {
private:
enum {BYTENUM = 200};//大整數(shù)位數(shù)上限常量
string _sign;//用于存放符號(hào)
string _num;//用于存放數(shù)值
public:
StrInt (const string& a=“0”);
friend StrInt add (const StrInt& a,const StrInt& b); //大數(shù)加
friend StrInt sub (const StrInt& a,const StrInt& b); //大數(shù)減
friend StrInt mul (const StrInt& a,const StrInt& b); //大數(shù)乘
friend StrInt div (const StrInt& a,const StrInt& b); //大數(shù)除
…… //其他的成員可自行添加
};
3.3 綜合型實(shí)驗(yàn)
學(xué)生學(xué)籍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。
要求:學(xué)生類(lèi)要包括學(xué)生的基本信息,系統(tǒng)能實(shí)現(xiàn)學(xué)生學(xué)籍的添加、刪除、修改、查詢(xún)。查詢(xún)可以實(shí)現(xiàn)按學(xué)號(hào)、姓名、班級(jí)、系別查詢(xún)。要通過(guò)文件操作或數(shù)據(jù)庫(kù)實(shí)現(xiàn)信息的長(zhǎng)期保存。
實(shí)現(xiàn)參考:定義學(xué)生類(lèi),可以定義姓名、性別、學(xué)號(hào)、系別、專(zhuān)業(yè)、班級(jí)、各科課程成績(jī)?yōu)閿?shù)據(jù)成員,定義查詢(xún)、修改為函數(shù)成員。對(duì)于刪除和添加可以通過(guò)定義函數(shù)實(shí)現(xiàn)。
4 結(jié)束語(yǔ)
通過(guò)對(duì)“C++面向?qū)ο笳n程設(shè)計(jì)”多樣型實(shí)驗(yàn)的研究與探索,深刻體會(huì)到教學(xué)的目的不僅僅是教學(xué)生知識(shí),還要教會(huì)學(xué)生思維方式以及學(xué)習(xí)的方法。本課程的多樣型實(shí)驗(yàn)?zāi)J降膭?chuàng)建,豐富了實(shí)驗(yàn)教學(xué)內(nèi)容,實(shí)驗(yàn)教學(xué)形式呈多樣化,提高了學(xué)生的學(xué)習(xí)興趣,調(diào)動(dòng)了他們的學(xué)習(xí)主動(dòng)性,從而取得了良好的教學(xué)效果。但創(chuàng)新性實(shí)驗(yàn)還有待進(jìn)一步完善。
參考文獻(xiàn):
[1] 彭召意,朱艷輝,周玉.C++面向?qū)ο蟪绦蛟O(shè)計(jì)課程的實(shí)踐教學(xué)研究[J].計(jì)算機(jī)教育,2010.5:151-154
[2] 陸貴榮,陳樹(shù)越.關(guān)于電子信息類(lèi)大學(xué)生創(chuàng)新實(shí)踐能力培養(yǎng)模式的思考[J].中國(guó)科技信息,2012.16:171
[3] 李玉順,武林,顧憶嵐.基于學(xué)習(xí)對(duì)象的教學(xué)資源設(shè)計(jì)及流程初探[J].中國(guó)電化教育,2012.1:78-85
[4] 錢(qián)能.C++程序設(shè)計(jì)教程(第二版)實(shí)驗(yàn)指導(dǎo)[M].清華大學(xué)出版社,2007.
[5] 董欣.創(chuàng)新型人才培養(yǎng)與實(shí)驗(yàn)教學(xué)改革的探索[J].實(shí)驗(yàn)技術(shù)與管理,2011.28(9):142-144
[6] Tom Boyle. Layered learning design: Towards an integration oflearning design and learning object perspectives[J].Computers & Education,2010.54:661-668
[7] 王曉明,易兵,徐瑞宇.基于創(chuàng)新創(chuàng)業(yè)能力培養(yǎng)的新型實(shí)驗(yàn)教學(xué)模式的構(gòu)建[J].實(shí)驗(yàn)技術(shù)與管理,2011.28(2):15-17
[8] Godin, Benoit. 'Innovation Studies': The Invention of a Specialty.Minerva: A Review of Science, Learning & Policy,2012.50(4):397-421
[9] 何飛,郭乃珠.C++教學(xué)中關(guān)于學(xué)習(xí)興趣的培養(yǎng)[J].考試周刊,2008.8:66-68
[10] 王美玲,付佳,肖烜.創(chuàng)新型實(shí)驗(yàn)項(xiàng)目-數(shù)字溫度計(jì)的設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2010.29(9):125-127