亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        工科專業(yè)C++語言教學目標與方法的探討

        2007-12-31 00:00:00李駿揚陳漢武
        計算機教育 2007年16期

        摘要:C++語言是學生未來科研或工作中一種實用的工具,也可以成為學習其他語言的基礎(chǔ)。本文從對學生綜合能力培養(yǎng)的角度出發(fā),提出在工科領(lǐng)域,C++的教學應(yīng)注重其實用性,不拘泥于語法,學生要學會寫程序,學會對復雜問題的分解,并能寫出規(guī)范化的程序。教師在教學實踐中,可以利用實例教學、現(xiàn)場編程等各種方法,引導學生寫好程序,鼓勵學生克服困難。

        關(guān)鍵字:計算機語言教學;C++教學;程序設(shè)計

        中圖分類號:G642文獻標識碼:A

        文章編號:1672-5913(2007)16-0016-03

        1引言

        長期以來,C++語言被認為是較難學習的開發(fā)語言。在教學過程中,筆者逐步發(fā)現(xiàn),C++是一門實踐性很強的課程,有些教師在教學中注重各個知識點,卻忽略了對學生綜合能力的培養(yǎng)。筆者從軟件開發(fā)實踐和對學生綜合能力培養(yǎng)的角度出發(fā),對C++的教學目標和方法作了一些分析和研究,并在教學實踐中取得了較好的效果。

        2教學中遇到的困難

        2.1C++課程特點

        C++課程在我校作為一門公共基礎(chǔ)課程開設(shè),安排在大學本科一年級學習。C++是一門特殊的課程,編寫程序的思維方式和學生在高中時期所學習數(shù)學物理完全不同,這可能是學生學習C++語言遇到的第一個難題。

        C++是一門實踐的課程。如果與C++同時開設(shè)的課程,如果高等數(shù)學,大學物理等都是理論教學為主,那么C++幾乎可以說是學生進入大學最早遇到的以實踐為主的課程。我們在教學中,應(yīng)該把C++作為一門實踐課程,而非理論課程來對待。

        2.2C++語言的特點

        目前,比較流行的開發(fā)語言有:C++、Java、VB、Delphi、VB.NET、C# 等,比較這些語言,雖然C++關(guān)鍵字的個數(shù)并不算多,但是C++的語法靈活,這些靈活性往往帶來一些負面效應(yīng)。例如,C++中的case語句中不一定需要break,而C# 中,break是必須的,除非多個case直接連用。這些情況會導致很多難以覺察的陷阱,即使熟練的程序員也未必能夠幸免。

        C++雖然運行效率高,但是很多商用應(yīng)用程序卻不會選擇C++來開發(fā),因為C++對數(shù)據(jù)庫以及其他組件拼接過于繁瑣,頭文件的存在也使得C++不適合作為腳本。目前,C++語言被主要使用在硬件驅(qū)動的開發(fā),或者對運算效率非常敏感的場合(如實時圖像處理)。

        2.3C++學習的困難和誤區(qū)

        C++語言自身的特點給學生的學習帶來一定的難度,在編程和運行過程中容易出現(xiàn)許多難以察覺的錯誤,這些挫折也使得學生感到學習C++的難度倍增。

        也由于語法靈活,有些教師在教學中往往過多的注重語法,似乎只有完全掌握語法才能寫出好的程序,于是,C++題目中常常出現(xiàn)復雜的表達式分析,沒有實際功能的程序分析。這些缺乏可讀性的程序不僅沒有實際意義,還會大大降低學生對C++課程的認同感。當授課的重心偏向于語法,就會導致忽略對實際編程能力的培養(yǎng),使學生失去學習C++的興趣和信心。

        3學習的目標

        3.1語法的學習

        我們學習自然語言時,語法是基礎(chǔ),目標是和別人進行交流。同樣的,在學習計算機語言時,語法也也是基礎(chǔ),并使用計算機語言類編寫出程序。對于大多數(shù)理工科專業(yè)的學生來說,計算機語言和英語一樣,是將來研究工作中的一個工具(有別于研究的對象),所以我們應(yīng)當把計算機語言當作一個工具去學習,要注重其實用性,而不是工具內(nèi)部實現(xiàn)細節(jié),或者繁瑣的語法現(xiàn)象。在語法之外,我們還應(yīng)當學習怎么寫程序,如何寫好程序,以及學習如何去學習新的領(lǐng)域。語法不是全部,一位熟練的程序員學習一門新的計算機語言的語法,也許只要2個小時,但是要熟練掌握這門語言,特別是當這門語言有獨特的類庫,那么就必須閱讀類庫參考和例程,并進行大量的練習。所以,在C++教學過程中,要讓學生了解常用的語法現(xiàn)象,但不拘泥于語法。

        3.2算法的學習

        學生應(yīng)當掌握一些基本的算法。雖然其他的課程(如數(shù)據(jù)結(jié)構(gòu))中會詳細探討各類算法,但算法是編寫程序中必須的。通過C++的學習,學生們應(yīng)該掌握最常用的經(jīng)典算法。但是僅掌握這些經(jīng)典算法是不夠的。我們還是希望通過C++的學習,使學生掌握從算法到程序代碼的轉(zhuǎn)化,能夠?qū)⒁粋€陌生的,描述詳細的算法轉(zhuǎn)化為切實可行的代碼。

        3.3對復雜問題的分析能力

        無論是一個陌生的算法,還是一個新的用戶需求,學生在將其變成可以運行之前,都必須對其進行分析。這種分析包含兩層含義:算法的分析和程序結(jié)構(gòu)的分析。

        一個看似復雜的算法,都是由一系列簡單的算法問題的邏輯組合。例如,雙向鏈表的操作對于很多學生來說,似乎是一個復雜的問題。圖3.1描述了在雙向列表中插入新節(jié)點的過程,該過程被分解為若干的步驟,其中每個步驟都不復雜。圖中的每一個步驟都可以進一步分解。如步驟4,在鏈表中插入新節(jié)點,該問題又可以由以下幾個基本步驟組成:找到插入點左邊的節(jié)點P1;找到插入點右邊的節(jié)點P2;通過四個賦值語句建立和新節(jié)點P的連接。

        在程序結(jié)構(gòu)上,學生也應(yīng)當具有一定的分析能力。C++的思想在于面向?qū)ο?。但是要讓學生真正的了解面向?qū)ο髤s是不容易的。要理解面向?qū)ο蟮膬?nèi)涵,不僅需要了解封裝、繼承、多態(tài)的概念,還需要具有將這些概念運用到程序中去的能力,這些能力體現(xiàn)在對類的結(jié)構(gòu)、繼承關(guān)系的分析,以及對類的成員的設(shè)置、如何使用虛函數(shù)的分析。

        例如,一段描述樹結(jié)構(gòu)的程序,其至少具有以下幾個類:CTree表示整個樹,CNode表示節(jié)點,CNodeCollection表示節(jié)點的集合,用雙向鏈表實現(xiàn)??紤]個各類的公有成員,各個類的靜態(tài)結(jié)構(gòu)如下:

        然后考慮個各類內(nèi)部的實現(xiàn)方式。比如,上圖中,比較復雜的結(jié)構(gòu)是CNodeCollection。可以采用一個鏈表來實現(xiàn)。它既可以從一個現(xiàn)有的鏈表類派生,也可以將一個鏈表作為其私有成員。

        3.4工程化思想的融入

        如果將一個學生寫的作業(yè)和一位專業(yè)程序員編寫的代碼放在一起,就不難看出其中的差別。從代碼上來看,學生的作業(yè)普遍缺乏注解,變量或函數(shù)名混亂,吝惜空格和換行;從結(jié)構(gòu)上講,由于程序缺乏良好的分析過程,類的類成員的結(jié)構(gòu)混亂;從功能上講,程序功能簡單,缺乏異常處理。

        所以,我們應(yīng)當引導學生,在編寫程序的過程中,注重程序風格,使程序規(guī)范化,工程化,這需要學生在編寫程序的過程中注意很多細節(jié)問題。這些問題包括:良好的程序結(jié)構(gòu),統(tǒng)一的程序風格,清晰的程序注解,周全的特殊情況處理,精確的異常處理,方便快捷且美觀的用戶界面等等。

        4教學方法

        4.1案例與實例分析

        案例和實例是有所區(qū)別的。案例應(yīng)當貼近現(xiàn)實,有較為完整的需求,程序必須具有一定的容錯性和良好的用戶界面,案例教學需要學生充分的發(fā)表自己的觀點,而不僅僅是教師的灌輸。但是,限于學生知識的能力和教學任務(wù),真正的案例教學在目前的環(huán)境下是很難實現(xiàn)的。而實例更接近于普通的例題,但是這類例題更貼近于現(xiàn)實需求,是案例的簡化。筆者在實際授課中,主要采用實例教學,并借鑒案例教學中的一些方法。

        在實例的選擇上,應(yīng)選擇更貼近現(xiàn)實需求,或者帶有趣味性的問題。有的實例講究算法,有的實例沒有很復雜的算法,但是有比較復雜的功能,講究對程序整體結(jié)構(gòu)的把握。在實例講解的過程中,首先進行需求和核心算法分析,程序的總體框架設(shè)計,類靜態(tài)結(jié)構(gòu)設(shè)計,最后,依據(jù)教學要求有選擇的分段實現(xiàn)程序。

        4.2現(xiàn)場編程

        作者在近幾年的C++教學中,一直堅持在課堂上直接編寫示例程序,并取得了非常好的教學效果。

        現(xiàn)場編可以讓學生了解編寫程序過程中所出現(xiàn)的各種困難和陷阱,著重講解編程時需要注意的細節(jié)問題。在講解完主要的語法和算法時,教師給出例題,分析例題的核心算法、類的靜態(tài)結(jié)構(gòu)等或函數(shù)構(gòu)造等。然后開始編寫程序,整個程序的編寫時間不宜超過15分鐘。教師一邊編寫,一邊講解,控制編程節(jié)奏,讓學生緊跟教師的思維;在編程的過程中,時而發(fā)問,與學生互動。

        教師在編寫程序的過程中,可以讓學生直觀的看到編譯環(huán)境是如何工作的。教師應(yīng)當教會學生熟練的使用編譯環(huán)境,如File View和Class View視圖,Work Space和Project的含義與兩者的區(qū)別等等。

        教師應(yīng)該具有良好的編寫風格,如標識符的命名、注解、甚至換行。與書本、試卷上的題目相比較,教師寫的程序具有更強的示范作用,教師自身良好的編程習慣對學生編程習慣的培養(yǎng)具有重要意義。

        教師必須具有良好的編程功底,能現(xiàn)場解決大多數(shù)編程時遇到的問題,并現(xiàn)場調(diào)試運行。在容易犯錯的環(huán)節(jié),可以采用試錯法,讓學生分析錯誤的原因;講解編譯器常見的錯誤和警告信息的原因和處理方法,教會學生如何調(diào)試。

        4.3調(diào)試技術(shù)

        C++學習中,學生遇到的較大的困難之一,就是在調(diào)試過程中經(jīng)常遇到各種錯誤,例如編譯器報告了上百個錯誤,運行時死循環(huán),或者運行時彈出內(nèi)存只讀的對話框。這些挫折會使學生失去學習的動力和信心。所以,應(yīng)當讓學生學會一些調(diào)試方法,并且更多的鼓勵學生,克服困難。

        要解決程序運行中的各種錯誤,調(diào)試技術(shù)是非常必要的。恰當?shù)恼{(diào)試可以讓學生在最短的時間內(nèi)找到錯誤的原因。僅僅是一行一行的看程序是很難找到問題的。在VC6的環(huán)境下,工科的學生應(yīng)當學會使用F10、F11、Shift+F11等快捷鍵來進行單步跟蹤,使用F9來設(shè)置斷點,使用“Watch”和“Variables”工具來查看變量的值。此外,對于能力較強的學生,學會使用“Call Stack”和“Memory”工具也是相當必要的。

        4.4鼓勵和戰(zhàn)勝困難

        對于初學C++語言者,尤其是對那些沒有其他計算機語言基礎(chǔ)的學生來說,C++的入門是比較一個艱難的過程。所以,盡可能多地鼓勵也是相當?shù)谋匾.攲W生在調(diào)試過程中遇到困難時,需要耐心的調(diào)試,教導學生,編寫程序所遇到的挫折是不可避免的,也是他們所必須經(jīng)歷的。學習C++應(yīng)當具有耐心、細心和堅持不懈百折不撓的精神。

        4.5MSDN和各類參考

        授之以魚,不如授之以漁。在學習過程中,掌握如何從網(wǎng)絡(luò)上獲得幫助,如何查閱MSDN,學會閱讀各類Reference文檔,掌握如何學習的能力,對學生將來的發(fā)展具有重要的意義。

        5結(jié)束語

        筆者認為,C++本身是一個開發(fā)工具,將C++作為一個工具來對待,在教學中注重其實用性,注重學生的編程能力、分析能力、學習能力等綜合素質(zhì)的培養(yǎng)。

        Exploration on the Orentation and Technics of teaching C++ in Technology Major

        Li Junyang, Chen Hanwu

        Abstract: C++ is the pratical tool for students in their future career and research, and it is the basis of learning other programming languages as well. This paper is written in the perspective ofconstructing comprehensive ability for students of technology major, proposing that the C++ teaching should pay more attention to practical application, while with less emphysis on the syntatic of C++. Students should learn how to programme, decompose complex problems and finally develop formalized programs. Teachers may use technics such as introducing real example and instant programming when teaching so as to help students master the right programming technic and encourage them to get over problems.

        Keywords: Computer Language Teaching, C++ Teaching, Programming

        參考文獻

        [1] 劉建華. 計算機語言類課程教學模式初探[J]. 高教論壇,2005,2(1).

        [2] 劉傳平.“C++語言程序設(shè)計”課程教學改革的探討[J]. 中國科技信息,2005,(11).

        [3] 趙志升,李靜羅,德林. “問題解決”教學模式及其在計算機教學中的應(yīng)用[J]. 教育與職業(yè),2006,11(32).

        作者介紹:

        李駿揚,男,東南大學自動化學院,jupiter@seu.edu.cn,13357701017

        陳漢武,男,東南大學計算機科學與工程學院,教授,博士生導師,hw_chen@seu.edu.cn

        通信地址:南京市玄武區(qū)四牌樓2號 郵編:210096

        av永远在线免费观看| 欧美成人片一区二区三区| 久久棈精品久久久久久噜噜| 一区二区韩国福利网站| 国内偷拍第一视频第一视频区| 丝袜美腿在线观看一区| 国产真实乱对白精彩久久老熟妇女 | 久久亚洲色一区二区三区| 日韩电影一区二区三区| 日本高清一区二区不卡视频| 亚洲午夜福利在线视频| 国产亚洲亚洲精品777| 一区二区三区国产精品| 精品少妇一区二区三区免费| 中文字幕乱码亚洲精品一区| 在线综合网| 精品一区二区三区不老少妇| 精品人妻va一区二区三区| 亚洲国产精品第一区二区| 夜夜被公侵犯的美人妻| 风流少妇一区二区三区91| 亚洲国产精品日本无码网站| 无码国产69精品久久久孕妇| 日本道免费精品一区二区 | 肥老熟女性强欲五十路| 亚洲免费网站观看视频| 中文不卡视频| 国产精品丝袜美女久久| 欧美xxxx做受欧美88| 中文无码制服丝袜人妻av| 久久婷婷国产综合精品| 久久精品不卡一区二区三区| 日韩人妻无码精品久久免费一| 免费看奶头视频的网站| 中文字幕精品久久一区二区三区 | 亚洲中国精品精华液| 性久久久久久久| 亚洲性爱区免费视频一区| 亚洲中文字幕剧情类别| 免费人成视频xvideos入口| 国内久久婷婷精品人双人|