• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      C++面向?qū)ο蟪绦蛟O(shè)計教學探討

      2014-07-18 00:18:30熊啟軍寧彬屈俊峰曹文平
      電腦知識與技術(shù) 2014年13期
      關(guān)鍵詞:面向?qū)ο?/a>程序設(shè)計教學改革

      熊啟軍 寧彬 屈俊峰 曹文平

      C++面向?qū)ο蟪绦蛟O(shè)計教學探討

      熊啟軍,寧彬,屈俊峰,曹文平

      (湖北文理學院 數(shù)學與計算機科學學院 湖北 襄陽 441053)

      摘要:《C++面向?qū)ο蟪绦蛟O(shè)計》課程承擔著培養(yǎng)程序設(shè)計能力和面向?qū)ο笏季S能力的作用,而C++語言自身的特點繁多,且通常是學生學習面向?qū)ο蟮牡谝婚T語言,使得教學存在很大困難。從課程內(nèi)容的選擇和組織、教學方法、考核方式、學習方法等角度出發(fā)進行改革和研究,運用于實際教學之中具有顯著提高教學效果的作用。

      關(guān)鍵詞:C++語言;面向?qū)ο?;程序設(shè)計;教學方法;教學改革

      中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2014)13-3037-03

      Discussion for C++ & Oriented Object Programming

      XIONG Qi-jun, NING Bin, QU Jun-feng, CAO Wen-ping

      (College of Mathematics & Computer Science HuBei University of Arts and Science, Xiangyang 441053, China)

      Abstract: "C++ object-oriented programming" course undertakes training in programming and object-oriented thinking, and many features of the C++ language, and it is often the first course to learn object-oriented languages, so that teaching is very difficult. Reform and research from the selection and organization of course content, teaching methods, exam methods, learning methods, these can improve teaching effectiveness.

      Key words: C++ language; Oriented Object; Programming; Teaching Method; Teaching Reform

      隨著計算機編程語言的蓬勃產(chǎn)生和發(fā)展、編程語言適用的領(lǐng)域、應(yīng)用型軟件的巨大需求,程序員必須掌握C++的時代已經(jīng)過去。但是,在學校里,C++仍是計算機及相關(guān)專業(yè)的必修課。《C++面向?qū)ο蟪绦蛟O(shè)計》既要講述語言本身,又要講述面向?qū)ο蟮闹R,還要通過C++來實現(xiàn)面向?qū)ο蟮奶卣?,因而存在?nèi)容多、難度大、程序冗長、調(diào)試困難等問題,進而教學越來越困難、教學效果越來越差。因此,針對該課程的教學改革勢在必行。

      1 課程內(nèi)容

      1.1計算機語言間的關(guān)系

      在地方院校的計算機類專業(yè)的教學計劃中,一般是先講授過程化的C語言,主要包括基本的語法規(guī)則、算法和程序調(diào)試技巧;再講述面向?qū)ο蟮腃++語言;最后講述高度集成和封裝的C#或Java語言。顯然,C++語言在其中承擔了承上啟下的角色,承擔了鞏固基礎(chǔ)、培養(yǎng)計算思維、熟練調(diào)試技能的角色,承擔了由過程化的程序設(shè)計思想向面向?qū)ο蟪绦蛟O(shè)計思想轉(zhuǎn)換的角色。每個角色的主要作用雖不相同,但都是主角,都是不可缺少的。

      圖1 語言間關(guān)系

      1.2教學內(nèi)容間的關(guān)系

      《C++面向?qū)ο蟪绦蛟O(shè)計》課程在教學中不僅地位和作用重要,而且其涉及的教學內(nèi)容廣泛。其教學內(nèi)容概括起來包括三個部分:一是C++語言的基本語法,二是面向?qū)ο蟮乃拇筇卣骷盎纠碚?,三是使用C++語言來實現(xiàn)面向?qū)ο蟮奶卣鱗1]。對于學習過C語言的來說,第一部分內(nèi)容只需關(guān)注與C語言不同的地方,第二部分是“死板”的理論知識,第三部分既是重點也是難點,也是當前教學改革、研究的重點。

      圖2 是《C++面向?qū)ο蟪绦蛟O(shè)計》中第三部分的主要教學內(nèi)容及相互關(guān)系。

      2 教學改革

      2.1改革教學內(nèi)容

      由于大學教育的大眾化,對該課程的教學目標、教學內(nèi)容當然應(yīng)該“因校而異”。

      1)教學目標存在差異

      我校對該課程的主要教學目標是以C++語言為工具載體,向同學們講述面向?qū)ο蟮奶匦约捌鋵崿F(xiàn),為后續(xù)的面向?qū)ο蟮某绦蛟O(shè)計語言、對象的分析、面向?qū)ο蟮脑O(shè)計、測試等學習做必要的理論鋪墊。

      2) C++語言的特異性

      由于C++是一種誕生較早的語言,是一種半面向?qū)ο蟮恼Z言[2],因而存在一些“人為的缺陷”。

      個人認為“為了達到使用某種功能的目的,創(chuàng)造了一些關(guān)鍵詞、概念、表示方法、理論等”,這種特異性使得學習、使用C++變得困難、容易產(chǎn)生混淆。

      譬如:Const修飾一個常指針,使用1個或2個Const的差別(Const的位置不同);使用構(gòu)造函數(shù)來定義對象,在定義對象的格式上存在巨大差異(使用默認構(gòu)造函數(shù)定義對象不能帶括號,使用全是缺省值的構(gòu)造函數(shù)定義對象不能帶括號,使用其它構(gòu)造函數(shù)定義對象必須帶括號);靜態(tài)數(shù)據(jù)成員必須在類外初始化;常數(shù)據(jù)成員只能通過構(gòu)造函數(shù)的初始化列表進行初始化;常對象和常函數(shù)的訪問限制;拷貝構(gòu)造函數(shù)的功能、調(diào)用時機及缺陷性(含有指針型的成員變量時);在多重繼承時,為了保留祖先特征的一個副本,避免二義性,提出了虛基類的概念;虛函數(shù)與純虛函數(shù)在函數(shù)首部上的細小差別;運算符重載;友元等。這些死板的規(guī)則大大增加了學習的難度,并且離開了C++,不能照搬到其他語言之上。

      面向?qū)ο蟮闹饕卣靼ǔ橄?、封裝、繼承、多態(tài)。雖然不同的面向?qū)ο笳Z言在這幾個特征上理論是相同的,但是在實現(xiàn)上存在差異。

      譬如:C++是一種半面向?qū)ο蟮某绦蛟O(shè)計語言,但Java是一種完全面向?qū)ο蟮恼Z言;C++中有friend關(guān)鍵詞,標示了友元函數(shù)或友元類,Java中沒有這個關(guān)鍵詞,也不會允許外部的函數(shù)訪問另一個類的私有成員;C++中存在命名空間的概念、Java中存在包的概念,二者之間具有一定的相似性,但在實現(xiàn)繼承時,繼承的權(quán)限上有很大的不同;C++允許類的多繼承,Java不存在類的多繼承;都具有多態(tài)性,但在多態(tài)性的體現(xiàn)上存在著差距;內(nèi)存管理上存在差異……。

      正因為不同的程序設(shè)計語言存在差異,我們在教學時,求同存異,著重抓住共性,堅持“理論夠用,重在實踐”的原則,對于C++的特異性不渲染,不深究。

      3) 編程風格存在差別

      教師在編寫函數(shù)時,各自的風格不同。譬如:在定義成員函數(shù)的首部時,函數(shù)的參數(shù)可以是普通的值類型、可以是指針類型、可以是引用型、可以是const型,不同的教師或者著書者可能鐘情于某種表達方式、或者這幾種方式的結(jié)合體。定義方式不同導致功能不同,而學生不能立即領(lǐng)會其中的差異,給學習、理解增加了難度。因此,在組織教學時,盡可能使用相對固定的、簡潔的參數(shù)形式。

      4)教學內(nèi)容的取舍

      各校的層次不同、選用的教材不同、教學目標不同、教學內(nèi)容當然可以不同。

      根據(jù)我校實際,對“C++實現(xiàn)面向?qū)ο筇卣鳌边@部分的教學內(nèi)容進行了取舍,其中,粗體部分的知識點為重點內(nèi)容,斜體部分為略講內(nèi)容。如圖2所示。

      對該課程的教學內(nèi)容進行適當?shù)娜∩?,對知識點的講授注意與其它語言的異同性,緊緊把握“重在共性、去粗取精”的原則。

      2.2重視算法

      絕大多數(shù)程序設(shè)計語言,在語法上大同小異,在算法上總是高度一致的。

      雖然C++語言在類的抽象、封裝上是面向?qū)ο蟮?,但是在成員函數(shù)的實現(xiàn)上仍然是面向過程的。因此,可以將數(shù)據(jù)結(jié)構(gòu)中的部分算法搬到C++來實現(xiàn)、練習,特別是線性結(jié)構(gòu)的知識。譬如:集合的并交差運算、多項式的表示、2個多項式相加等。既用C語言實現(xiàn),又用C++來實現(xiàn),這樣做,既讓學生感受到了面向過程與面向?qū)ο蟮牟顒e,也讓學生領(lǐng)會到了算法的一致性。領(lǐng)悟到語言只是工具,算法才是靈魂。

      2.3 教學方法

      任何一種教學方法都不是孤立的,總是與其他教學方法配合使用、取長補短,力求發(fā)揮最大的效力、達到最好的教學效果[3]。

      1)案例式教學

      正由于C++所特有的性質(zhì)和使用限制,教學中單純的理論說教只能是讓學生枯燥乏味、昏昏入睡,只有通過活生生的實例才能引人入勝,寓教于樂、“寓理于例”之中,因為它既有強烈的示范作用也給了學生思考的空間和時間[4]。通過“理論——案例——演示——總結(jié)”的方式來組織教學,起到“照葫蘆畫瓢、照貓畫虎”的效果,真正做到了有理、有例、有結(jié),也符合知識的“記憶、模仿、應(yīng)用”的認知規(guī)律。

      2) 框架式教學

      類的定義具有相對固定的框架,體現(xiàn)在兩個方面:

      一是成員變量的聲明在前、且是私有的,成員函數(shù)的聲明在后、且是公共的;

      二是成員函數(shù)的種類和格式是固定的。成員函數(shù)包括構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)、輸出函數(shù)、其它處理函數(shù)。在定義這些函數(shù)時,遵循一定的次序和原則,譬如:所有的類都必須顯式地擁有缺省參數(shù)的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、數(shù)據(jù)成員的get、set函數(shù)、輸出數(shù)據(jù)成員值的函數(shù)等。一個類遵循這樣的框架來組織和定義,在創(chuàng)建對象、使用成員時可以避免一些錯誤,而且是一種良好的編程習慣。

      3) 漸進式教學

      知識點之間是相互聯(lián)系的,講授時遵循由易到難的次序講授。如講述構(gòu)造函數(shù)時,從系統(tǒng)提供的默認構(gòu)造函數(shù)到自定義默認構(gòu)造函數(shù),到帶參數(shù)的構(gòu)造函數(shù),到帶默認值的構(gòu)造函數(shù),到構(gòu)造函數(shù)的重載、歧義,到帶子對象的構(gòu)造函數(shù);從函數(shù)模板到類模板;從單繼承到多繼承,從多繼承到虛基類的引出等,存在明顯的漸進關(guān)系。

      以虛基類的引出為例。在三層結(jié)構(gòu)的繼承中,存在多重繼承,(圖3重復繼承)出現(xiàn)了孫類中存在祖先的2個副本,如何訪問呢?只能通過作用域來區(qū)分(對象名.類名::成員名),但這種訪問格式上總顯得特別別扭、不倫不類,怎么實現(xiàn)只保留一份副本呢?因此,引入了虛基類的概念。這種“提出問題、解決問題”的方式也是一種漸進的思想。

      圖3 重復繼承

      2.4考核方式

      改變單一的考核方式為多樣的考核方式[5][6]。譬如:取消統(tǒng)一的卷面考試,取而代之的是課程設(shè)計,按照軟件工程的流程完成一個小型項目,且以答辯驗收的方式來評價學習效果,考核學生的綜合應(yīng)用能力;取消集中統(tǒng)一的考核,取而代之的是以題庫為基礎(chǔ)的機考,隨到隨考,直到通過為止。

      3 學習方法

      對于程序設(shè)計語言的學習,始終把握“三動”的方法,即動眼、動腦、動手(閱讀、思考、上機實踐)。

      C++程序的代碼一般都較長,閱讀時先從主函數(shù)開始,看看定義了哪些對象,使用了哪些函數(shù),再有目的地去閱讀相應(yīng)的函數(shù)代碼。這樣才能目標明確、抓住重點、理清思路、理解題意。

      在課外,看著教材的目錄,回憶課堂上講述的知識點、例子,是否能清晰的再現(xiàn)。否則,趕緊翻開書閱讀、理解、思考。

      “三動”學習法中最重要的就是“動手”。上機實踐是檢驗學習效果最準確的方式。這一點是不言而喻的。

      4 結(jié)束語

      總的來說,《C++面向?qū)ο蟪绦蛟O(shè)計》課程的教學應(yīng)該首先培養(yǎng)學習興趣、調(diào)動學習的主動性;其次是培養(yǎng)計算思維的思想,增強學生的動手能力;最后是教學內(nèi)容、教學方法和手段的改革。這些教學改革措施是筆者經(jīng)過反復的實踐教學總結(jié)得出的,并已經(jīng)在程序設(shè)計類課程教學中運用,取得了良好的教學效果。同時,教學改革和研究必須與時俱進,需要廣大師生不斷探索、豐富和實踐。 參考文獻:

      [1] 游洪躍.C++面向?qū)ο蟪绦蛟O(shè)計教程[M].北京:清華大學出版社,2012.

      [2] 黃平牧,肖波.面向?qū)ο蠓椒ê虲++程序設(shè)計[M].北京:北京郵電大學出版社,2010.

      [3] 郭艷燕,任滿杰,賀利堅,張樹粹.C++程序設(shè)計課程中多種教學方法的配合使用[J].計算機教育,2012(8):78-80.

      [4] 胡楓.《C語言程序設(shè)計》的案例式教學的設(shè)計[J].青海師范大學學報(自然科學版),2010(4):49-50.

      [5] 季耀君.面向?qū)ο蟪绦蛟O(shè)計與C++教學對策研究[J].西南農(nóng)業(yè)大學學報(社會科學版),2013(8):168-169.

      [6] 孫庚.項目教學法在“C++程序設(shè)計”課程教學中的實踐[J].計算機教育,2008(2):52-53.

      面向?qū)ο蟮闹饕卣靼ǔ橄蟆⒎庋b、繼承、多態(tài)。雖然不同的面向?qū)ο笳Z言在這幾個特征上理論是相同的,但是在實現(xiàn)上存在差異。

      譬如:C++是一種半面向?qū)ο蟮某绦蛟O(shè)計語言,但Java是一種完全面向?qū)ο蟮恼Z言;C++中有friend關(guān)鍵詞,標示了友元函數(shù)或友元類,Java中沒有這個關(guān)鍵詞,也不會允許外部的函數(shù)訪問另一個類的私有成員;C++中存在命名空間的概念、Java中存在包的概念,二者之間具有一定的相似性,但在實現(xiàn)繼承時,繼承的權(quán)限上有很大的不同;C++允許類的多繼承,Java不存在類的多繼承;都具有多態(tài)性,但在多態(tài)性的體現(xiàn)上存在著差距;內(nèi)存管理上存在差異……。

      正因為不同的程序設(shè)計語言存在差異,我們在教學時,求同存異,著重抓住共性,堅持“理論夠用,重在實踐”的原則,對于C++的特異性不渲染,不深究。

      3) 編程風格存在差別

      教師在編寫函數(shù)時,各自的風格不同。譬如:在定義成員函數(shù)的首部時,函數(shù)的參數(shù)可以是普通的值類型、可以是指針類型、可以是引用型、可以是const型,不同的教師或者著書者可能鐘情于某種表達方式、或者這幾種方式的結(jié)合體。定義方式不同導致功能不同,而學生不能立即領(lǐng)會其中的差異,給學習、理解增加了難度。因此,在組織教學時,盡可能使用相對固定的、簡潔的參數(shù)形式。

      4)教學內(nèi)容的取舍

      各校的層次不同、選用的教材不同、教學目標不同、教學內(nèi)容當然可以不同。

      根據(jù)我校實際,對“C++實現(xiàn)面向?qū)ο筇卣鳌边@部分的教學內(nèi)容進行了取舍,其中,粗體部分的知識點為重點內(nèi)容,斜體部分為略講內(nèi)容。如圖2所示。

      對該課程的教學內(nèi)容進行適當?shù)娜∩幔瑢χR點的講授注意與其它語言的異同性,緊緊把握“重在共性、去粗取精”的原則。

      2.2重視算法

      絕大多數(shù)程序設(shè)計語言,在語法上大同小異,在算法上總是高度一致的。

      雖然C++語言在類的抽象、封裝上是面向?qū)ο蟮模窃诔蓡T函數(shù)的實現(xiàn)上仍然是面向過程的。因此,可以將數(shù)據(jù)結(jié)構(gòu)中的部分算法搬到C++來實現(xiàn)、練習,特別是線性結(jié)構(gòu)的知識。譬如:集合的并交差運算、多項式的表示、2個多項式相加等。既用C語言實現(xiàn),又用C++來實現(xiàn),這樣做,既讓學生感受到了面向過程與面向?qū)ο蟮牟顒e,也讓學生領(lǐng)會到了算法的一致性。領(lǐng)悟到語言只是工具,算法才是靈魂。

      2.3 教學方法

      任何一種教學方法都不是孤立的,總是與其他教學方法配合使用、取長補短,力求發(fā)揮最大的效力、達到最好的教學效果[3]。

      1)案例式教學

      正由于C++所特有的性質(zhì)和使用限制,教學中單純的理論說教只能是讓學生枯燥乏味、昏昏入睡,只有通過活生生的實例才能引人入勝,寓教于樂、“寓理于例”之中,因為它既有強烈的示范作用也給了學生思考的空間和時間[4]。通過“理論——案例——演示——總結(jié)”的方式來組織教學,起到“照葫蘆畫瓢、照貓畫虎”的效果,真正做到了有理、有例、有結(jié),也符合知識的“記憶、模仿、應(yīng)用”的認知規(guī)律。

      2) 框架式教學

      類的定義具有相對固定的框架,體現(xiàn)在兩個方面:

      一是成員變量的聲明在前、且是私有的,成員函數(shù)的聲明在后、且是公共的;

      二是成員函數(shù)的種類和格式是固定的。成員函數(shù)包括構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)、輸出函數(shù)、其它處理函數(shù)。在定義這些函數(shù)時,遵循一定的次序和原則,譬如:所有的類都必須顯式地擁有缺省參數(shù)的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、數(shù)據(jù)成員的get、set函數(shù)、輸出數(shù)據(jù)成員值的函數(shù)等。一個類遵循這樣的框架來組織和定義,在創(chuàng)建對象、使用成員時可以避免一些錯誤,而且是一種良好的編程習慣。

      3) 漸進式教學

      知識點之間是相互聯(lián)系的,講授時遵循由易到難的次序講授。如講述構(gòu)造函數(shù)時,從系統(tǒng)提供的默認構(gòu)造函數(shù)到自定義默認構(gòu)造函數(shù),到帶參數(shù)的構(gòu)造函數(shù),到帶默認值的構(gòu)造函數(shù),到構(gòu)造函數(shù)的重載、歧義,到帶子對象的構(gòu)造函數(shù);從函數(shù)模板到類模板;從單繼承到多繼承,從多繼承到虛基類的引出等,存在明顯的漸進關(guān)系。

      以虛基類的引出為例。在三層結(jié)構(gòu)的繼承中,存在多重繼承,(圖3重復繼承)出現(xiàn)了孫類中存在祖先的2個副本,如何訪問呢?只能通過作用域來區(qū)分(對象名.類名::成員名),但這種訪問格式上總顯得特別別扭、不倫不類,怎么實現(xiàn)只保留一份副本呢?因此,引入了虛基類的概念。這種“提出問題、解決問題”的方式也是一種漸進的思想。

      圖3 重復繼承

      2.4考核方式

      改變單一的考核方式為多樣的考核方式[5][6]。譬如:取消統(tǒng)一的卷面考試,取而代之的是課程設(shè)計,按照軟件工程的流程完成一個小型項目,且以答辯驗收的方式來評價學習效果,考核學生的綜合應(yīng)用能力;取消集中統(tǒng)一的考核,取而代之的是以題庫為基礎(chǔ)的機考,隨到隨考,直到通過為止。

      3 學習方法

      對于程序設(shè)計語言的學習,始終把握“三動”的方法,即動眼、動腦、動手(閱讀、思考、上機實踐)。

      C++程序的代碼一般都較長,閱讀時先從主函數(shù)開始,看看定義了哪些對象,使用了哪些函數(shù),再有目的地去閱讀相應(yīng)的函數(shù)代碼。這樣才能目標明確、抓住重點、理清思路、理解題意。

      在課外,看著教材的目錄,回憶課堂上講述的知識點、例子,是否能清晰的再現(xiàn)。否則,趕緊翻開書閱讀、理解、思考。

      “三動”學習法中最重要的就是“動手”。上機實踐是檢驗學習效果最準確的方式。這一點是不言而喻的。

      4 結(jié)束語

      總的來說,《C++面向?qū)ο蟪绦蛟O(shè)計》課程的教學應(yīng)該首先培養(yǎng)學習興趣、調(diào)動學習的主動性;其次是培養(yǎng)計算思維的思想,增強學生的動手能力;最后是教學內(nèi)容、教學方法和手段的改革。這些教學改革措施是筆者經(jīng)過反復的實踐教學總結(jié)得出的,并已經(jīng)在程序設(shè)計類課程教學中運用,取得了良好的教學效果。同時,教學改革和研究必須與時俱進,需要廣大師生不斷探索、豐富和實踐。 參考文獻:

      [1] 游洪躍.C++面向?qū)ο蟪绦蛟O(shè)計教程[M].北京:清華大學出版社,2012.

      [2] 黃平牧,肖波.面向?qū)ο蠓椒ê虲++程序設(shè)計[M].北京:北京郵電大學出版社,2010.

      [3] 郭艷燕,任滿杰,賀利堅,張樹粹.C++程序設(shè)計課程中多種教學方法的配合使用[J].計算機教育,2012(8):78-80.

      [4] 胡楓.《C語言程序設(shè)計》的案例式教學的設(shè)計[J].青海師范大學學報(自然科學版),2010(4):49-50.

      [5] 季耀君.面向?qū)ο蟪绦蛟O(shè)計與C++教學對策研究[J].西南農(nóng)業(yè)大學學報(社會科學版),2013(8):168-169.

      [6] 孫庚.項目教學法在“C++程序設(shè)計”課程教學中的實踐[J].計算機教育,2008(2):52-53.

      面向?qū)ο蟮闹饕卣靼ǔ橄?、封裝、繼承、多態(tài)。雖然不同的面向?qū)ο笳Z言在這幾個特征上理論是相同的,但是在實現(xiàn)上存在差異。

      譬如:C++是一種半面向?qū)ο蟮某绦蛟O(shè)計語言,但Java是一種完全面向?qū)ο蟮恼Z言;C++中有friend關(guān)鍵詞,標示了友元函數(shù)或友元類,Java中沒有這個關(guān)鍵詞,也不會允許外部的函數(shù)訪問另一個類的私有成員;C++中存在命名空間的概念、Java中存在包的概念,二者之間具有一定的相似性,但在實現(xiàn)繼承時,繼承的權(quán)限上有很大的不同;C++允許類的多繼承,Java不存在類的多繼承;都具有多態(tài)性,但在多態(tài)性的體現(xiàn)上存在著差距;內(nèi)存管理上存在差異……。

      正因為不同的程序設(shè)計語言存在差異,我們在教學時,求同存異,著重抓住共性,堅持“理論夠用,重在實踐”的原則,對于C++的特異性不渲染,不深究。

      3) 編程風格存在差別

      教師在編寫函數(shù)時,各自的風格不同。譬如:在定義成員函數(shù)的首部時,函數(shù)的參數(shù)可以是普通的值類型、可以是指針類型、可以是引用型、可以是const型,不同的教師或者著書者可能鐘情于某種表達方式、或者這幾種方式的結(jié)合體。定義方式不同導致功能不同,而學生不能立即領(lǐng)會其中的差異,給學習、理解增加了難度。因此,在組織教學時,盡可能使用相對固定的、簡潔的參數(shù)形式。

      4)教學內(nèi)容的取舍

      各校的層次不同、選用的教材不同、教學目標不同、教學內(nèi)容當然可以不同。

      根據(jù)我校實際,對“C++實現(xiàn)面向?qū)ο筇卣鳌边@部分的教學內(nèi)容進行了取舍,其中,粗體部分的知識點為重點內(nèi)容,斜體部分為略講內(nèi)容。如圖2所示。

      對該課程的教學內(nèi)容進行適當?shù)娜∩?,對知識點的講授注意與其它語言的異同性,緊緊把握“重在共性、去粗取精”的原則。

      2.2重視算法

      絕大多數(shù)程序設(shè)計語言,在語法上大同小異,在算法上總是高度一致的。

      雖然C++語言在類的抽象、封裝上是面向?qū)ο蟮?,但是在成員函數(shù)的實現(xiàn)上仍然是面向過程的。因此,可以將數(shù)據(jù)結(jié)構(gòu)中的部分算法搬到C++來實現(xiàn)、練習,特別是線性結(jié)構(gòu)的知識。譬如:集合的并交差運算、多項式的表示、2個多項式相加等。既用C語言實現(xiàn),又用C++來實現(xiàn),這樣做,既讓學生感受到了面向過程與面向?qū)ο蟮牟顒e,也讓學生領(lǐng)會到了算法的一致性。領(lǐng)悟到語言只是工具,算法才是靈魂。

      2.3 教學方法

      任何一種教學方法都不是孤立的,總是與其他教學方法配合使用、取長補短,力求發(fā)揮最大的效力、達到最好的教學效果[3]。

      1)案例式教學

      正由于C++所特有的性質(zhì)和使用限制,教學中單純的理論說教只能是讓學生枯燥乏味、昏昏入睡,只有通過活生生的實例才能引人入勝,寓教于樂、“寓理于例”之中,因為它既有強烈的示范作用也給了學生思考的空間和時間[4]。通過“理論——案例——演示——總結(jié)”的方式來組織教學,起到“照葫蘆畫瓢、照貓畫虎”的效果,真正做到了有理、有例、有結(jié),也符合知識的“記憶、模仿、應(yīng)用”的認知規(guī)律。

      2) 框架式教學

      類的定義具有相對固定的框架,體現(xiàn)在兩個方面:

      一是成員變量的聲明在前、且是私有的,成員函數(shù)的聲明在后、且是公共的;

      二是成員函數(shù)的種類和格式是固定的。成員函數(shù)包括構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)、輸出函數(shù)、其它處理函數(shù)。在定義這些函數(shù)時,遵循一定的次序和原則,譬如:所有的類都必須顯式地擁有缺省參數(shù)的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、數(shù)據(jù)成員的get、set函數(shù)、輸出數(shù)據(jù)成員值的函數(shù)等。一個類遵循這樣的框架來組織和定義,在創(chuàng)建對象、使用成員時可以避免一些錯誤,而且是一種良好的編程習慣。

      3) 漸進式教學

      知識點之間是相互聯(lián)系的,講授時遵循由易到難的次序講授。如講述構(gòu)造函數(shù)時,從系統(tǒng)提供的默認構(gòu)造函數(shù)到自定義默認構(gòu)造函數(shù),到帶參數(shù)的構(gòu)造函數(shù),到帶默認值的構(gòu)造函數(shù),到構(gòu)造函數(shù)的重載、歧義,到帶子對象的構(gòu)造函數(shù);從函數(shù)模板到類模板;從單繼承到多繼承,從多繼承到虛基類的引出等,存在明顯的漸進關(guān)系。

      以虛基類的引出為例。在三層結(jié)構(gòu)的繼承中,存在多重繼承,(圖3重復繼承)出現(xiàn)了孫類中存在祖先的2個副本,如何訪問呢?只能通過作用域來區(qū)分(對象名.類名::成員名),但這種訪問格式上總顯得特別別扭、不倫不類,怎么實現(xiàn)只保留一份副本呢?因此,引入了虛基類的概念。這種“提出問題、解決問題”的方式也是一種漸進的思想。

      圖3 重復繼承

      2.4考核方式

      改變單一的考核方式為多樣的考核方式[5][6]。譬如:取消統(tǒng)一的卷面考試,取而代之的是課程設(shè)計,按照軟件工程的流程完成一個小型項目,且以答辯驗收的方式來評價學習效果,考核學生的綜合應(yīng)用能力;取消集中統(tǒng)一的考核,取而代之的是以題庫為基礎(chǔ)的機考,隨到隨考,直到通過為止。

      3 學習方法

      對于程序設(shè)計語言的學習,始終把握“三動”的方法,即動眼、動腦、動手(閱讀、思考、上機實踐)。

      C++程序的代碼一般都較長,閱讀時先從主函數(shù)開始,看看定義了哪些對象,使用了哪些函數(shù),再有目的地去閱讀相應(yīng)的函數(shù)代碼。這樣才能目標明確、抓住重點、理清思路、理解題意。

      在課外,看著教材的目錄,回憶課堂上講述的知識點、例子,是否能清晰的再現(xiàn)。否則,趕緊翻開書閱讀、理解、思考。

      “三動”學習法中最重要的就是“動手”。上機實踐是檢驗學習效果最準確的方式。這一點是不言而喻的。

      4 結(jié)束語

      總的來說,《C++面向?qū)ο蟪绦蛟O(shè)計》課程的教學應(yīng)該首先培養(yǎng)學習興趣、調(diào)動學習的主動性;其次是培養(yǎng)計算思維的思想,增強學生的動手能力;最后是教學內(nèi)容、教學方法和手段的改革。這些教學改革措施是筆者經(jīng)過反復的實踐教學總結(jié)得出的,并已經(jīng)在程序設(shè)計類課程教學中運用,取得了良好的教學效果。同時,教學改革和研究必須與時俱進,需要廣大師生不斷探索、豐富和實踐。 參考文獻:

      [1] 游洪躍.C++面向?qū)ο蟪绦蛟O(shè)計教程[M].北京:清華大學出版社,2012.

      [2] 黃平牧,肖波.面向?qū)ο蠓椒ê虲++程序設(shè)計[M].北京:北京郵電大學出版社,2010.

      [3] 郭艷燕,任滿杰,賀利堅,張樹粹.C++程序設(shè)計課程中多種教學方法的配合使用[J].計算機教育,2012(8):78-80.

      [4] 胡楓.《C語言程序設(shè)計》的案例式教學的設(shè)計[J].青海師范大學學報(自然科學版),2010(4):49-50.

      [5] 季耀君.面向?qū)ο蟪绦蛟O(shè)計與C++教學對策研究[J].西南農(nóng)業(yè)大學學報(社會科學版),2013(8):168-169.

      [6] 孫庚.項目教學法在“C++程序設(shè)計”課程教學中的實踐[J].計算機教育,2008(2):52-53.

      猜你喜歡
      面向?qū)ο?/a>程序設(shè)計教學改革
      基于Visual Studio Code的C語言程序設(shè)計實踐教學探索
      計算機教育(2020年5期)2020-07-24 08:52:56
      從細節(jié)入手,談PLC程序設(shè)計技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      面向?qū)ο蟮挠嬎銠C網(wǎng)絡(luò)設(shè)計軟件系統(tǒng)的開發(fā)
      電子測試(2018年15期)2018-09-26 06:01:34
      面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
      高職高專院校C語言程序設(shè)計教學改革探索
      基于人才培養(yǎng)的技工學校德育實效性研究
      成才之路(2016年25期)2016-10-08 09:51:08
      現(xiàn)代信息技術(shù)在高職數(shù)學教學改革中的應(yīng)用研究
      科技視界(2016年20期)2016-09-29 12:59:03
      以職業(yè)技能競賽為導向的高職單片機實踐教學改革研究
      科技視界(2016年20期)2016-09-29 11:20:38
      微課時代高等數(shù)學教學改革的實踐與探索
      科技視界(2016年20期)2016-09-29 11:16:19
      面向?qū)ο骔eb開發(fā)編程語言的的評估方法
      广东省| 青冈县| 青河县| 嘉义市| 集贤县| 广东省| 许昌县| 达孜县| 固安县| 安溪县| 平江县| 会昌县| 淮滨县| 高邑县| 开封市| 吴忠市| 高安市| 邯郸市| 响水县| 丹阳市| 阳新县| 闽侯县| 通海县| 清新县| 天全县| 左云县| 衡阳县| 水富县| 涟源市| 黄山市| 安吉县| 昭觉县| 梅州市| 越西县| 西乌| 佳木斯市| 浏阳市| 青海省| 军事| 伊宁市| 天柱县|