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