999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2007-12-31 00:00:00李駿揚(yáng)陳漢武
計(jì)算機(jī)教育 2007年16期

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

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

中圖分類號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:A

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

1引言

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

2教學(xué)中遇到的困難

2.1C++課程特點(diǎn)

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

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

2.2C++語言的特點(diǎn)

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

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

2.3C++學(xué)習(xí)的困難和誤區(qū)

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

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

3學(xué)習(xí)的目標(biāo)

3.1語法的學(xué)習(xí)

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

3.2算法的學(xué)習(xí)

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

3.3對(duì)復(fù)雜問題的分析能力

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

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

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

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

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

3.4工程化思想的融入

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

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

4教學(xué)方法

4.1案例與實(shí)例分析

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

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

4.2現(xiàn)場編程

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

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

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

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

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

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

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

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

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

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

4.5MSDN和各類參考

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

5結(jié)束語

筆者認(rèn)為,C++本身是一個(gè)開發(fā)工具,將C++作為一個(gè)工具來對(duì)待,在教學(xué)中注重其實(shí)用性,注重學(xué)生的編程能力、分析能力、學(xué)習(xí)能力等綜合素質(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

參考文獻(xiàn)

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

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

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

作者介紹:

李駿揚(yáng),男,東南大學(xué)自動(dòng)化學(xué)院,jupiter@seu.edu.cn,13357701017

陳漢武,男,東南大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,教授,博士生導(dǎo)師,hw_chen@seu.edu.cn

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

主站蜘蛛池模板: 国产精品久久久免费视频| 国产在线拍偷自揄拍精品| 国产91透明丝袜美腿在线| 久久亚洲中文字幕精品一区| 精品综合久久久久久97超人该| 日本国产一区在线观看| 一级毛片在线播放免费观看| 久久久久久久97| 国产欧美精品午夜在线播放| 97在线公开视频| 狠狠色香婷婷久久亚洲精品| 日韩成人午夜| 日韩资源站| a级毛片视频免费观看| 性色在线视频精品| 久久这里只精品热免费99| 亚洲码一区二区三区| 波多野结衣国产精品| 色欲国产一区二区日韩欧美| 91精品国产91久无码网站| 国产中文在线亚洲精品官网| 在线观看热码亚洲av每日更新| 国产真实乱人视频| 欧美va亚洲va香蕉在线| 手机在线国产精品| 亚洲日韩第九十九页| 香蕉色综合| 日韩高清在线观看不卡一区二区| 国产欧美日韩va另类在线播放| 午夜综合网| 亚洲国产中文精品va在线播放| 91亚瑟视频| 毛片久久网站小视频| 一级毛片在线播放| 天天婬欲婬香婬色婬视频播放| 久久99精品久久久久久不卡| 2021精品国产自在现线看| 国产在线欧美| 人人看人人鲁狠狠高清| 亚洲第一成人在线| 97影院午夜在线观看视频| 久久美女精品| 首页亚洲国产丝袜长腿综合| 男人天堂亚洲天堂| 91精品国产无线乱码在线| 欧美另类精品一区二区三区| 色婷婷天天综合在线| 亚洲成年网站在线观看| 91丝袜在线观看| 免费看av在线网站网址| 波多野结衣爽到高潮漏水大喷| 欧美爱爱网| 亚洲欧美成人网| 99伊人精品| 亚洲色图欧美激情| 精品撒尿视频一区二区三区| 欧美另类一区| 免费啪啪网址| 国产拍揄自揄精品视频网站| 日韩av资源在线| 国产乱子伦精品视频| 狠狠躁天天躁夜夜躁婷婷| 欧美激情福利| 久久久久久久蜜桃| 白浆视频在线观看| 国产午夜看片| 日韩欧美网址| 亚洲精品自拍区在线观看| 国产噜噜噜| 亚洲男人的天堂网| 18禁影院亚洲专区| 久久永久视频| 丝袜国产一区| 成年A级毛片| 亚洲欧美天堂网| 欧美成人第一页| 国产av无码日韩av无码网站| 永久免费无码成人网站| 午夜爽爽视频| 一区二区午夜| 91人妻日韩人妻无码专区精品| 午夜国产大片免费观看|