文章編號(hào):1672-5913(2008)18-0105-02
摘要:本文在分析了C語(yǔ)言程序設(shè)計(jì)課程的教學(xué)現(xiàn)狀和教學(xué)困境的基礎(chǔ)上,對(duì)比自然語(yǔ)言和程序設(shè)計(jì)語(yǔ)言的共性以及C語(yǔ)言的特殊性,提出了“從概念入手,側(cè)重程序閱讀和程序設(shè)計(jì)能力培養(yǎng)”而非“語(yǔ)法研究”的教學(xué)角度。
關(guān)鍵詞:C語(yǔ)言;程序設(shè)計(jì);教學(xué)內(nèi)容;教學(xué)角度
中圖分類(lèi)號(hào):G64 文獻(xiàn)標(biāo)識(shí)碼:A
1教學(xué)現(xiàn)狀
在高等學(xué)校的本科教育中,“C語(yǔ)言程序設(shè)計(jì)”幾乎成了所有專(zhuān)業(yè)的必開(kāi)課程,從計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程、網(wǎng)絡(luò)工程等相關(guān)專(zhuān)業(yè),到電子信息類(lèi)理工科各專(zhuān)業(yè),乃至理工科院校的所有非計(jì)算機(jī)專(zhuān)業(yè),有的是專(zhuān)業(yè)基礎(chǔ)課,有的是公共必修基礎(chǔ)課,有的是“非計(jì)算機(jī)專(zhuān)業(yè)的計(jì)算機(jī)基礎(chǔ)課”。只是課程名稍有差異,常見(jiàn)的有“C語(yǔ)言程序設(shè)計(jì)”、“高級(jí)語(yǔ)言程序設(shè)計(jì)”、“C語(yǔ)言”、“C程序設(shè)計(jì)”、“結(jié)構(gòu)化程序設(shè)計(jì)”等。無(wú)論叫什么樣的課程名,也無(wú)論是哪類(lèi)專(zhuān)業(yè),其課程的教學(xué)要求和教材選用卻無(wú)太大差別,只是課時(shí)分配差異較大。
從網(wǎng)絡(luò)調(diào)查的16所不同類(lèi)型高校的“C語(yǔ)言程序設(shè)計(jì)”教學(xué)大綱看,普遍都包含“通過(guò)本課程的學(xué)習(xí),使學(xué)生了解有關(guān)程序設(shè)計(jì)的基本概念、術(shù)語(yǔ)及C語(yǔ)言的特點(diǎn),掌握C語(yǔ)言基本數(shù)據(jù)類(lèi)型、語(yǔ)法規(guī)則、程序控制結(jié)構(gòu)、常用的標(biāo)準(zhǔn)庫(kù)函數(shù),培養(yǎng)學(xué)生的程序設(shè)計(jì)技能,初步積累編程經(jīng)驗(yàn)”的教學(xué)基本要求;約百分之八十左右的“C語(yǔ)言程序設(shè)計(jì)”課程都選用由譚浩強(qiáng)主編、清華大學(xué)出版社出版的“C程序設(shè)計(jì)”作為主教材;課時(shí)分配從30~108課時(shí)不等,其中80課時(shí)以上的多為應(yīng)用型本科院校的計(jì)算機(jī)相關(guān)專(zhuān)業(yè)以及綜合性大學(xué)的非計(jì)算機(jī)專(zhuān)業(yè),理論課時(shí)與實(shí)驗(yàn)課時(shí)的比例一般為1:1到1:1.2。與此同時(shí),其他專(zhuān)業(yè)基礎(chǔ)課(如計(jì)算機(jī)組成原理、操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)等)的課時(shí)一般為54課時(shí),最多不超過(guò)72學(xué)時(shí)。相比之下,“C語(yǔ)言程序設(shè)計(jì)”所占課時(shí)是其他專(zhuān)業(yè)基礎(chǔ)課的1.5倍至2倍。
從教學(xué)目的看,非計(jì)算機(jī)專(zhuān)業(yè)的“C語(yǔ)言程序設(shè)計(jì)”課程主要目的是“掌握語(yǔ)法規(guī)則和程序結(jié)構(gòu),具備一定的程序設(shè)計(jì)能力”,而計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的“C語(yǔ)言程序設(shè)計(jì)”課的教學(xué)目的則要分為三個(gè)層次,一是使學(xué)生全面理解計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的基本內(nèi)容和結(jié)構(gòu);二是通過(guò)算法掌握程序設(shè)計(jì)的基本方法和步驟,并具備一定的程序設(shè)計(jì)能力;三是為后續(xù)課程的算法描述和其他程序設(shè)計(jì)語(yǔ)言的學(xué)習(xí)奠定基礎(chǔ)。
2教學(xué)誤區(qū)
從以上的教學(xué)現(xiàn)狀(特別是課時(shí)分配)看,長(zhǎng)期以來(lái),“C語(yǔ)言程序設(shè)計(jì)”的課程教學(xué)存在“教學(xué)內(nèi)容背離教學(xué)要求和教學(xué)目的”的誤區(qū),主要表現(xiàn)在教材誤區(qū)、講授誤區(qū)和考核誤區(qū)三個(gè)方面。
2.1教材誤區(qū)
國(guó)內(nèi)高校的“C語(yǔ)言程序設(shè)計(jì)”課大多選用譚浩強(qiáng)主編、清華大學(xué)出版社出版的“C程序設(shè)計(jì)”[1]為主教材,目前使用的是2005年7月修訂出版的第三版,教材共363頁(yè),主體內(nèi)容分為14章,其中,第3章的數(shù)據(jù)類(lèi)型與表達(dá)式占用30頁(yè),第4章的格式輸入輸出占用12頁(yè),前9章共占用218頁(yè),后5章共占用145頁(yè)。占用如此大篇幅的原因是教材中除了介紹相關(guān)語(yǔ)法格式外,還增加了相當(dāng)多“特殊格式”和“特殊情況”的解釋和說(shuō)明,因此,該教材的最大優(yōu)點(diǎn)就是“內(nèi)容詳盡、解釋清晰”。然而,對(duì)于初學(xué)者來(lái)說(shuō),學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言就是為了“為計(jì)算機(jī)描述求解問(wèn)題的過(guò)程”,過(guò)于詳細(xì)但又遠(yuǎn)離現(xiàn)實(shí)問(wèn)題的“特殊格式”和“特殊情況”的解釋?zhuān)沟脤W(xué)習(xí)內(nèi)容復(fù)雜化,增加了程序設(shè)計(jì)語(yǔ)言學(xué)習(xí)的難度,誤導(dǎo)了學(xué)習(xí)者的學(xué)習(xí)重點(diǎn),由此也賦予了該教材無(wú)法掩飾的缺點(diǎn),那就是教材編寫(xiě)的指導(dǎo)思想和教材內(nèi)容的組織脫離了高校各專(zhuān)業(yè)“C語(yǔ)言程序設(shè)計(jì)”課程的教學(xué)目標(biāo),過(guò)分強(qiáng)調(diào)語(yǔ)法細(xì)節(jié)而忽略了程序設(shè)計(jì)語(yǔ)言的“正向表達(dá)能力”的應(yīng)用,過(guò)分強(qiáng)調(diào)“語(yǔ)言的靈活性”而導(dǎo)致教材主體內(nèi)容的“復(fù)雜化”,從而誤導(dǎo)“C語(yǔ)言程序設(shè)計(jì)”課程的教學(xué)內(nèi)容朝著“重語(yǔ)法學(xué)習(xí)、輕算法描述”的“語(yǔ)言研究”方向發(fā)展。
2.2講授誤區(qū)
由于教材內(nèi)容的“復(fù)雜”,課堂講授自然需要較多課時(shí),教學(xué)重點(diǎn)當(dāng)然也放在了“語(yǔ)法研究”上。從網(wǎng)上下載的“C程序設(shè)計(jì)(第三版)”的配套教學(xué)課件以及有關(guān)院校的“C語(yǔ)言程序設(shè)計(jì)”教學(xué)課件的內(nèi)容組織上可以清楚的給出以上判斷?!罢Z(yǔ)法研究”型的課堂講授,更加放大了教材對(duì)“C語(yǔ)言程序設(shè)計(jì)”課程內(nèi)容的“扭曲”程度,給學(xué)生提供了錯(cuò)誤的程序設(shè)計(jì)語(yǔ)言學(xué)習(xí)方法,把簡(jiǎn)單問(wèn)題復(fù)雜化,更為嚴(yán)重的是,挫傷了學(xué)生學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的興趣和積極性,把本應(yīng)“主動(dòng)學(xué)習(xí)”的課程成引入了“被動(dòng)學(xué)習(xí)”的歧途,直接導(dǎo)致“懂語(yǔ)法、會(huì)做題,但不會(huì)編程序”的教學(xué)后果。
2.3考核誤區(qū)
多年來(lái),“C語(yǔ)言程序設(shè)計(jì)”的主體考試內(nèi)容就是“語(yǔ)法”,無(wú)論是選擇題、填空題還是程序閱讀題,大多都無(wú)法逃脫“語(yǔ)法”的束縛??荚嚪绞揭怨P試為主。這在某種程度上肯定了“語(yǔ)言研究”的教學(xué)角度,促使“C語(yǔ)言程序設(shè)計(jì)”的教學(xué)重點(diǎn)更向“語(yǔ)法研究”的方向傾斜,最終誤入“增加課時(shí),強(qiáng)化語(yǔ)法,還是不會(huì)編程序”的怪圈。
3應(yīng)有的教學(xué)角度
按照網(wǎng)上調(diào)查的各專(zhuān)業(yè)教學(xué)大綱中“培養(yǎng)具有一定程序設(shè)計(jì)能力”的教學(xué)目的,“C語(yǔ)言程序設(shè)計(jì)”課程的教學(xué)落腳點(diǎn)應(yīng)該更確切的理解為培養(yǎng)“能用程序設(shè)計(jì)語(yǔ)言描述求解問(wèn)題過(guò)程”的一般程序設(shè)計(jì)者,而不是造就“全面掌握程序設(shè)計(jì)語(yǔ)言語(yǔ)法、能設(shè)計(jì)高效、難懂程序”的程序設(shè)計(jì)語(yǔ)言方面的“作家”。因此,“C語(yǔ)言程序設(shè)計(jì)”課程教學(xué)相當(dāng)于自然語(yǔ)言中的“基本語(yǔ)言能力”教學(xué),而不是“語(yǔ)言研究”或“高級(jí)寫(xiě)作”能力培養(yǎng)。
3.1自然語(yǔ)言與計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言
計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言是用人和計(jì)算機(jī)都能識(shí)別的方式描述計(jì)算機(jī)求解問(wèn)題過(guò)程的過(guò)程描述語(yǔ)言,它具有和人所使用的自然語(yǔ)言相同或相似的組成和結(jié)構(gòu)特點(diǎn),對(duì)于已經(jīng)掌握了至少一門(mén)自然語(yǔ)言(比如漢語(yǔ)或英語(yǔ))并具備一定文化程度的人來(lái)說(shuō),學(xué)習(xí)一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言并非難事。自然語(yǔ)言的基本組成包括符號(hào)集合、字、詞、句、數(shù)據(jù)及其運(yùn)算規(guī)則等基本要素,學(xué)習(xí)過(guò)程包括認(rèn)識(shí)符號(hào)、發(fā)音、識(shí)字、組詞、學(xué)語(yǔ)法并造句、學(xué)文法并寫(xiě)短文、練習(xí)寫(xiě)文章等基本階段,在具備了基本的語(yǔ)言能力之后,擴(kuò)充詞匯量和提高寫(xiě)作能力將成為終身學(xué)習(xí)的基本內(nèi)容。按照自然語(yǔ)言的基本組成和學(xué)習(xí)過(guò)程,也可將計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的基本組成歸納為字符集、標(biāo)識(shí)符(常量、變量、保留字等)、數(shù)據(jù)類(lèi)型、運(yùn)算符、表達(dá)式、語(yǔ)句、程序格式等基本要素,其中,字符集和數(shù)據(jù)類(lèi)型是定義程序設(shè)計(jì)語(yǔ)言的基礎(chǔ),字符按一定規(guī)則組成標(biāo)識(shí)符,用來(lái)充當(dāng)常量名、變量名或其他標(biāo)識(shí),在自然語(yǔ)言中被人們公認(rèn)的特殊標(biāo)識(shí)符被賦予特定的語(yǔ)言含義,專(zhuān)門(mén)為語(yǔ)言系統(tǒng)所用(用戶(hù)不得再次定義其意義),稱(chēng)為保留字;字符集中的特殊符號(hào)(如+、-、*、/)被賦予特定的運(yùn)算意義(如加、減、乘、除)稱(chēng)為運(yùn)算符;不同數(shù)據(jù)類(lèi)型的常量、變量用運(yùn)算符按一定規(guī)則連接起來(lái)組成的式子就構(gòu)成表達(dá)式;將特定的保留字與表達(dá)式等語(yǔ)言要素按照語(yǔ)法規(guī)則組合起來(lái)就形成相應(yīng)的語(yǔ)句;將語(yǔ)句按照要描述的求解問(wèn)題的邏輯順序排列起來(lái),就構(gòu)成了某種程序設(shè)計(jì)語(yǔ)言求解特定問(wèn)題的一段程序。
3.2C語(yǔ)言的特殊性
一方面,C語(yǔ)言是程序設(shè)計(jì)語(yǔ)言的一種,具備一般程序設(shè)計(jì)語(yǔ)言的基本組成要素和結(jié)構(gòu)特點(diǎn)。另一方面,C語(yǔ)言能成為面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言的代表,也有其自身的特殊性。首先,C語(yǔ)言的數(shù)據(jù)類(lèi)型極為豐富。除了基本數(shù)據(jù)類(lèi)型外,還有構(gòu)造類(lèi)型、指針類(lèi)型、空類(lèi)型和用戶(hù)自定義類(lèi)型,其中,構(gòu)造類(lèi)型包括數(shù)組、結(jié)構(gòu)體(struct)、共用體(union)和枚舉類(lèi)型(enum)等四種數(shù)據(jù)結(jié)構(gòu)。其次,C語(yǔ)言具有位操作能力。除了能夠?qū)Ω黝?lèi)變量進(jìn)行操作外,C語(yǔ)言還具備“按位”進(jìn)行邏輯“與”、“或”、“非”、“異或”運(yùn)算和“左”、“右”移位運(yùn)算,這使得C語(yǔ)言具備了更強(qiáng)的系統(tǒng)開(kāi)發(fā)能力。第三,C語(yǔ)言具有顯著的結(jié)構(gòu)化程序設(shè)計(jì)能力,并通過(guò)完整的函數(shù)定義來(lái)實(shí)現(xiàn)。第四,C語(yǔ)言的最大特點(diǎn)就是“語(yǔ)法限制不嚴(yán),解釋靈活”。第五,C語(yǔ)言允許直接訪(fǎng)問(wèn)物理地址,可直接對(duì)硬件端口進(jìn)行操作。第六,C語(yǔ)言沒(méi)有輸入/輸出語(yǔ)句,信息輸入/輸出功能由標(biāo)準(zhǔn)函數(shù)庫(kù)中相應(yīng)的I/O函數(shù)來(lái)完成。
C語(yǔ)言的這些特殊性,決定了C語(yǔ)言的教、學(xué)過(guò)程不同于其他程序設(shè)計(jì)語(yǔ)言的教學(xué)過(guò)程。
3.3C語(yǔ)言的教學(xué)角度
根據(jù)一般程序設(shè)計(jì)語(yǔ)言的基本組成與結(jié)構(gòu)特點(diǎn),結(jié)合C語(yǔ)言的特殊性,“C語(yǔ)言程序設(shè)計(jì)”課程的教學(xué)角度應(yīng)該是:從介紹程序設(shè)計(jì)語(yǔ)言的基本概念入手,重點(diǎn)介紹語(yǔ)言的“正
向”設(shè)計(jì)功能而非“特殊格式”或“特殊語(yǔ)法”說(shuō)明,側(cè)重學(xué)生的程序閱讀和程序設(shè)計(jì)能力培養(yǎng),從教學(xué)內(nèi)容的廣度和深度兩個(gè)方面,恰當(dāng)把握教學(xué)角度。
“C語(yǔ)言程序設(shè)計(jì)”課程的內(nèi)容可分為三個(gè)基本模塊,教學(xué)過(guò)程從第一個(gè)模塊切入,逐漸擴(kuò)展到第二和第三個(gè)模塊。第一個(gè)模塊可稱(chēng)為“程序設(shè)計(jì)語(yǔ)言公共模塊”,主要包括程序設(shè)計(jì)語(yǔ)言的基本概念、程序設(shè)計(jì)語(yǔ)言的基本要素(字符集、標(biāo)識(shí)符、常量變量以及保留字、基本數(shù)據(jù)類(lèi)型、運(yùn)算符、表達(dá)式、語(yǔ)句與控制結(jié)構(gòu)、程序結(jié)構(gòu)以及程序書(shū)寫(xiě)規(guī)范等)以及輸入/輸出格式等內(nèi)容;第二個(gè)模塊是C語(yǔ)言的主體,主要包括函數(shù)、數(shù)組、指針、文件等;第三個(gè)模塊是高級(jí)編程內(nèi)容,主要包括結(jié)構(gòu)體(struct)、共用體(union)、枚舉類(lèi)型(enum)以及用戶(hù)自定義類(lèi)型等。
在教學(xué)深度方面,各模塊的教學(xué)重點(diǎn)應(yīng)放在“規(guī)范的語(yǔ)法描述和直觀易懂而且正確的語(yǔ)義表述上”,避免涉及各種過(guò)細(xì)的“不符合人類(lèi)閱讀習(xí)慣”的語(yǔ)義描述,暫時(shí)避開(kāi)“特殊格式”或“特殊情況”的糾纏,擺脫“研究語(yǔ)法”的錯(cuò)誤向?qū)?。在此基礎(chǔ)上,第一模塊的教學(xué)可與自然語(yǔ)言相比對(duì),通過(guò)學(xué)生已有的自然語(yǔ)言學(xué)習(xí)經(jīng)驗(yàn)和語(yǔ)言要素,使學(xué)生快速建立程序設(shè)計(jì)語(yǔ)言的基本概念,正確理解程序設(shè)計(jì)語(yǔ)言的基本要素及其關(guān)系,掌握基本語(yǔ)法和程序基本控制結(jié)構(gòu)(順序、選擇、循環(huán)),并通過(guò)算法歸納求解問(wèn)題的過(guò)程,正確理解算法不同描述方式(自然語(yǔ)言、傳統(tǒng)流程圖、N-S流程圖、偽代碼、程序設(shè)計(jì)語(yǔ)言)的作用和差異,特別是從“問(wèn)題”到“程序”的漸進(jìn)轉(zhuǎn)化過(guò)程,從而培養(yǎng)學(xué)生的基本程序設(shè)計(jì)能力。通過(guò)第二模塊的教學(xué),使學(xué)生明確函數(shù)、數(shù)組、指針、文件等概念和作用,掌握它們的定義和引用方法,能進(jìn)行相應(yīng)數(shù)據(jù)類(lèi)型的編程,進(jìn)而掌握用函數(shù)定義的結(jié)構(gòu)化模塊程序設(shè)計(jì)的方法;通過(guò)第三個(gè)模塊的教學(xué),將程序的數(shù)據(jù)處理能力擴(kuò)展到結(jié)構(gòu)體、共用體、枚舉類(lèi)型以及用戶(hù)自定義類(lèi)型等復(fù)雜數(shù)據(jù)類(lèi)型的處理上來(lái),通過(guò)恰當(dāng)?shù)睦討?yīng)用這些數(shù)據(jù)類(lèi)型,向?qū)W生展示C語(yǔ)言強(qiáng)有力的數(shù)據(jù)表示和處理能力。
另外,可以將C語(yǔ)言中的“語(yǔ)法靈活性”和不同部分的各種“特殊情況”分類(lèi)總結(jié),歸納整理成“語(yǔ)言參考手冊(cè)”等形式,以附錄的形式提供給學(xué)生,以便需要時(shí)“備查”。這樣既可節(jié)省教學(xué)課時(shí),又可向?qū)W生提供學(xué)習(xí)語(yǔ)言的主動(dòng)權(quán)。
3.4教學(xué)策略和方法
“C語(yǔ)言程序設(shè)計(jì)”屬語(yǔ)言類(lèi)課程,教學(xué)過(guò)程充滿(mǎn)了逐步完善和熟練的基本特點(diǎn),因此,從教學(xué)安排的策略上要分重點(diǎn)、分階段逐步進(jìn)行,每個(gè)階段的教學(xué)方法應(yīng)該采用建立在一定基礎(chǔ)上的有重點(diǎn)的“部分教學(xué)法”,以核心內(nèi)容為基礎(chǔ),向外逐漸延伸,部分學(xué)習(xí),漸進(jìn)掌握。盡可能避免不分主次、不論難易、不顧急緩,盲目一次性?huà)咔甯黝?lèi)知識(shí)點(diǎn)的“地毯式”教授方法或?qū)W習(xí)方法,同時(shí)強(qiáng)調(diào)自學(xué)和上機(jī)驗(yàn)證,強(qiáng)化在特定環(huán)境下(如Turbo C++ 3.0)的程序設(shè)計(jì)訓(xùn)練,做到“精講多練[2]”,從小程序練起,逐漸過(guò)渡到求解較大或?qū)嶋H問(wèn)題的程序設(shè)計(jì)上來(lái)。
4結(jié)束語(yǔ)
從目前的教學(xué)現(xiàn)狀看,無(wú)論是計(jì)算機(jī)相關(guān)專(zhuān)業(yè),還是理工科的電子信息類(lèi)專(zhuān)業(yè),乃至綜合性大學(xué)的非計(jì)算機(jī)專(zhuān)業(yè),“C語(yǔ)言程序設(shè)計(jì)”的課程教學(xué)均占有重要的教學(xué)地位,在全面提高教學(xué)質(zhì)量和教學(xué)效率的今天,不同類(lèi)型專(zhuān)業(yè)結(jié)合自身優(yōu)勢(shì)和程序設(shè)計(jì)語(yǔ)言類(lèi)課程的特點(diǎn),選擇合適的角度組織和實(shí)施“C語(yǔ)言程序設(shè)計(jì)”課程的教學(xué)活動(dòng)非常重要,而且很有必要。筆者的教學(xué)實(shí)踐證明,避開(kāi)“語(yǔ)法研究”的程序設(shè)計(jì)教學(xué)不僅可減少課時(shí),更可提高學(xué)生利用程序設(shè)計(jì)語(yǔ)言“表述求解問(wèn)題過(guò)程”的能力。
參 考 文 獻(xiàn)
[1] 譚浩強(qiáng).C程序設(shè)計(jì)(第三版)[M]. 北京:清華大學(xué)出版社,2005:1-363.
[2] 雷學(xué)生,胡多.C語(yǔ)言程序設(shè)計(jì)教學(xué)方法探討[J]. 計(jì)算機(jī)教育,2006,(6).