朱立華 俞 瓊
摘要:本文詳細(xì)論述了C語言教材建設(shè)的過程和結(jié)果,包括教材建設(shè)中需要解決的問題、吸收的最新成果,教材的突破點(diǎn)及顯著特征,尤其是為解決指針和函數(shù)這兩個難點(diǎn)所采用的有效方法,通過程序?qū)Ρ确◣椭x者理解程序,輔以獨(dú)特的多媒體教學(xué)課件幫助教學(xué)及自學(xué)。
關(guān)鍵詞:C語言教材建設(shè);指針和函數(shù);程序?qū)Ρ确?多媒體教學(xué)課件
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A
“C語言程序設(shè)計(jì)”是南京郵電大學(xué)新生入校第一學(xué)期學(xué)習(xí)的第一門計(jì)算機(jī)課程,是后續(xù)課程C++語言、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)等課程的重要先修課,是學(xué)習(xí)其他高級語言和應(yīng)用軟件的核心基礎(chǔ)。因此,這門課程對學(xué)生從中學(xué)到大學(xué)的學(xué)習(xí)方法和學(xué)習(xí)習(xí)慣的轉(zhuǎn)變,對后續(xù)課程的學(xué)習(xí)興趣和學(xué)習(xí)效果的保障,都起著非常重要的作用。如何提高C語言程序課程的教學(xué)質(zhì)量呢?
1面臨的問題
C語言程序設(shè)計(jì)課程目前所面臨的問題是:
(1) 理論課時緊,教學(xué)任務(wù)重。C語言的理論課時為40學(xué)時,而C語言概念既龐雜又抽象,要在如此有限的課時內(nèi),給剛剛進(jìn)入大學(xué)的學(xué)生講明白是很困難的事。而作為C語言重點(diǎn)和難點(diǎn)的指針和函數(shù)部分,對我們以通訊計(jì)算機(jī)專業(yè)為主的學(xué)校,又只能加強(qiáng),不能削弱。這給我們的理論教學(xué)提出了更大的挑戰(zhàn)。
(2) 上機(jī)實(shí)驗(yàn)環(huán)節(jié)薄弱。一是實(shí)驗(yàn)學(xué)時少,僅16學(xué)時;二是實(shí)驗(yàn)輔導(dǎo)的師生比相對不足。一個教師一般輔導(dǎo)一個大班,有100多個學(xué)生,即使有助教,也不能保證能指點(diǎn)到所有的學(xué)生。對于初學(xué)者,很多學(xué)生得不到老師的及時指點(diǎn),又羞于提問,因此,問題會越積越多,形成惡性循環(huán),這是一部分學(xué)生最后編程能力相對低下的主要原因。
(3) 多媒體教學(xué)課件急需改進(jìn)。由于歷史原因,我們的課件還一直停留在基于PPT的電子教案的水平上。而用這種手段,在緊縮的課時內(nèi),面對擴(kuò)招之后層次差距越來越大的學(xué)生,把C語言的概念的程序設(shè)計(jì)方法講清楚,幾乎是不可能的了,課上雖然也在編程環(huán)境正直運(yùn)行程序看,但是初學(xué)者難以看到程序運(yùn)行每一步的結(jié)果,不利于幫助學(xué)生掌握和理解。
(4) 授課老師年輕化,經(jīng)驗(yàn)不足。我們課程組每年都有新畢業(yè)的博士加盟,他們雖然知識水平高,但需要好的平臺提高他們的教學(xué)水平,更充分地展示他們的教師水平,更大限度的發(fā)揮他們的優(yōu)勢。
要解決上述問題,需要綜合采取多種措施,包括教學(xué)管理上的改革、實(shí)驗(yàn)改革、平時作業(yè)方式的改革及考核方式的改革等方面,但是最基礎(chǔ)的一件工作必須是有一本好的教材。
2兼收并蓄
那么,什么樣的教材才是好教材呢?以怎樣的思路來建設(shè)一本好教材呢?
我們認(rèn)為,適應(yīng)教學(xué)需要、適合老師講解、適合學(xué)生學(xué)習(xí)的教材就是好教材。
目前市場上C語言的教材很多,要想在教材建設(shè)上有所突破和建樹,吸收他人的先進(jìn)理念和成功經(jīng)驗(yàn)是非常重要的,“海納百川,有容乃大”!同時,又要體現(xiàn)出自己的特色。
我校C語言課程的教學(xué)中,先后使用過譚浩強(qiáng)教授主編的《C程序設(shè)計(jì)》第一版和第二版、哈爾濱工業(yè)大學(xué)蘇小紅教授主編的《C語言大學(xué)實(shí)用教程》第一版和第二版、浙江大學(xué)何欽銘教授主編的《C語言程序設(shè)計(jì)》等多本優(yōu)秀教材,每本教材都各有特色,為我校的C語言教材建設(shè)提供了寶貴的經(jīng)驗(yàn)。
計(jì)算機(jī)教育雜志于2008年,以主編專訪的形式,以《一項(xiàng)計(jì)算機(jī)基礎(chǔ)課程改革的啟示》。為題,連續(xù)12期報(bào)道了天津師范大學(xué)管理學(xué)院持續(xù)近十年的計(jì)算機(jī)基礎(chǔ)課程改革,從思想方法、教材建設(shè),到課件設(shè)計(jì)、實(shí)驗(yàn)教學(xué)組織等多方面都有創(chuàng)新點(diǎn),始終堅(jiān)持以辯證唯物主義為指南的原則,使我們受益匪淺,為我們的教材改革提供了開闊的思路。
天津師范大學(xué)王立柱教授在《計(jì)算機(jī)教育》雜志上撰寫的“讓風(fēng)神的豎琴鳴響——讀李未院士《數(shù)理邏輯》一書有感”這篇文章,從理論和實(shí)踐兩個層面幫我們解讀了李未院士的三個語言環(huán)境的理論,該理論對C語言、C++語言、Java語言和數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系的認(rèn)識,對解決C語言和教學(xué)改革的設(shè)計(jì),都有很高的理論指導(dǎo)價值。認(rèn)清了這個關(guān)系,有利于確定C語言作為計(jì)算機(jī)編程基礎(chǔ)課程的具體內(nèi)容,為后續(xù)課程服務(wù)就增加了自覺性,減少了盲目性。
我們結(jié)合多年的教學(xué)經(jīng)驗(yàn),決定從建設(shè)適合我們教學(xué)的C語言教材入手,全面推行課程的改革。這一想法得到了我校專家和領(lǐng)導(dǎo)的積極肯定和大力支持,也得到人民郵電出版社的熱情合作。
3重點(diǎn)突破
我們的教材根據(jù)C語言的特點(diǎn),結(jié)合專業(yè)的要求,重點(diǎn)從C語言最難的指針和函數(shù)兩部分內(nèi)容入手,樹立教材的主干、精煉教材的內(nèi)容、鍛造教材的結(jié)構(gòu)。注意把辯證法的相互依賴、相互聯(lián)系的發(fā)展的觀點(diǎn)運(yùn)用到解決C語言的難點(diǎn)問題上去。例如對指針和地址的關(guān)系問題,我們提出了“指針是類型化的地址;地址是直接引用下的指針”的提綱挈領(lǐng)的深刻的概述。又如,以賦值語句為前提,具體描述了函數(shù)調(diào)用過程、調(diào)用一個有返回值的函數(shù),其過程可以概括為3步賦值:
① 主調(diào)函數(shù)傳遞實(shí)參,以初始化的形式使被調(diào)函數(shù)的形參獲得初值。
② 被調(diào)函數(shù)在執(zhí)行return語句時,將return后的表達(dá)式的值賦給系統(tǒng)根據(jù)函數(shù)返回值類型創(chuàng)建的一個臨時變量中。
③ 主調(diào)函數(shù)如果需要這個返回值,就從這個臨時變量取值。
同時,教材對指針和函數(shù)的每一個概念都進(jìn)行了需求分析和編程實(shí)驗(yàn)的檢驗(yàn),例如:“耗盡”動態(tài)空間資源的實(shí)驗(yàn);一種“野”指針的實(shí)驗(yàn);數(shù)組指針和指針變量的基類型不一樣時的實(shí)驗(yàn);一個函數(shù)兩次被調(diào)用,其自變量空間可能不同的實(shí)驗(yàn)等。
這些精心設(shè)計(jì)的內(nèi)容將會幫助學(xué)生理解和掌握C語言中最核心和精華的內(nèi)容。C語言的內(nèi)容很多,對于有些知識點(diǎn),只要介紹常規(guī)的內(nèi)容就可以,不必講得過細(xì)過繁瑣,會讓學(xué)生產(chǎn)生畏難情緒,例如:printf中格式控制符的多種組合表示。還有些知識點(diǎn),并不是編程時的常規(guī)用法,例如,y=++x+++x+++x運(yùn)算結(jié)束后,x和y 的值是多少。事實(shí)上,這一結(jié)果跟編譯器有關(guān),不同的環(huán)境下結(jié)果可能會不一樣。像這樣的問題,只要告訴學(xué)生有這么一種現(xiàn)象存在就可以了,而不必在教材中連篇累牘地花太多筆墨。
4特色鮮明
我們的教材遵循的邏輯關(guān)聯(lián)性還在于前后知識的連貫性上,以表格的形式、全書采用對比的方法,用設(shè)計(jì)過的程序和正在設(shè)計(jì)的程序作對比。這種方法不僅使學(xué)生通過前后對照的方式更容易接受新知識,而且使得教材有限的版面承載了最大的信息容量。例如,循環(huán)控制結(jié)構(gòu)和非循環(huán)控制結(jié)構(gòu)的程序?qū)Ρ?把主函數(shù)格式和自定義函數(shù)的格式對比,把標(biāo)準(zhǔn)輸入輸出和文件輸入輸出對比等。下面列出教材中的幾張表作說明,如表1和表2所示。
我們的教材第一章就獨(dú)具特色。為了引入高級程序設(shè)計(jì)語言,從最低級的機(jī)器語言開始,重點(diǎn)講解操作碼、操作數(shù)、子程序調(diào)用過程、斷點(diǎn)地址、入口地址等概念,使學(xué)生了解程序最底層的調(diào)用和運(yùn)行基于什么原理,從而很自然地引出為什么需要發(fā)展到高級程序設(shè)計(jì)語言。用計(jì)算機(jī)技術(shù)本身發(fā)展的規(guī)律和要求引出C語言的概念,符合本學(xué)科發(fā)展的規(guī)律,使學(xué)生在課程的一開始就對程序底層知識有所了解,從而慢慢進(jìn)入C語言的美妙世界。
為了突出教材內(nèi)容的連貫性,同時包括更多的知識點(diǎn),教材增加了多達(dá)10個附錄,把零散而實(shí)用性強(qiáng)的內(nèi)容包含其中。從“常用字符與ASCII碼對照表”和“C語言的關(guān)鍵字”,到“常用的ANSI C標(biāo)準(zhǔn)庫函數(shù)”和“C程序設(shè)計(jì)常見錯誤及解決方案”,應(yīng)有盡有。特別是“C程序設(shè)計(jì)常見錯誤及解決方案”,是作者結(jié)合多年的教學(xué)經(jīng)驗(yàn),對初學(xué)者易犯的錯誤分析原因,提供解決的辦法。設(shè)計(jì)這樣的附錄有兩個目的:一是方便學(xué)習(xí)時查找,二是避免瑣碎的內(nèi)容干擾教材的主線。
教材配備有兩個版本,可以動態(tài)演示教材中每個程序的獨(dú)具特色的多媒體教學(xué)課件。既提供PPT+單個程序動態(tài)演示的課件,又提供全書所有程序的動態(tài)演示整合在一起的課件。既方便教師在教學(xué)中發(fā)揮自己的特長和個性,又方便學(xué)生課后自學(xué)。動態(tài)演示整合版的課件三級菜單與教材三級目錄一一對應(yīng);直觀展示程序運(yùn)行每一步驟和環(huán)節(jié),既可助教又可助學(xué),有助于解決學(xué)生能力參差不齊與課程內(nèi)容多、課時不足,算法復(fù)雜抽象、難以理解的矛盾;模擬程序調(diào)試過程,彌補(bǔ)了實(shí)驗(yàn)課時的不足。既便于學(xué)生自學(xué),也為教師搭建了可以充分展示自己的平臺,多媒體課件如圖1所示。
5結(jié)束語
我們學(xué)校每年有3000多學(xué)生學(xué)習(xí)C語言課程,有二十多位教師從事C語言課程的教學(xué)工作,教材的改革必將使學(xué)生和教師都體會到堅(jiān)持辯證唯物主義方法的意義。如《計(jì)算機(jī)教育》刊物主編所言:“我們共同努力,來落實(shí)鄧小平同志提出的‘熟悉馬克思主義的基本理論,從而加強(qiáng)我們工作中的原則性、系統(tǒng)性、預(yù)見性和創(chuàng)造性”。我們堅(jiān)信,沿著這個方向走下去,一定能夠在計(jì)算機(jī)教育領(lǐng)域里真正有所作為,我們的學(xué)生必定成為教育的最大受益者。
參考文獻(xiàn):
[1] 奚春雁. 一項(xiàng)計(jì)算機(jī)基礎(chǔ)課程改革的啟示[J]. 計(jì)算機(jī)教育,2008(1)-(12).
[2] 王立柱. 讓風(fēng)神的豎琴鳴響——讀李未院士《數(shù)理邏輯》一書有感[J].計(jì)算機(jī)教育,2008(13):21-26.
[3] 李未. 數(shù)理邏輯[M].北京:科學(xué)出版社,2007.
[4] 譚浩強(qiáng). C程序設(shè)計(jì)[M].1版.北京:清華大學(xué)出版社,1991.
[5] 譚浩強(qiáng). C程序設(shè)計(jì)[M].2版.北京:清華大學(xué)出版社,1999.
[6] 蘇小紅. C語言大學(xué)實(shí)用教程[M].北京:電子工業(yè)出版社,2005.
[7] 蘇小紅. C語言大學(xué)實(shí)用教程[M].2版.北京:電子工業(yè)出版社,2007.
[8] 何欽銘. C語言程序設(shè)計(jì)[M].北京:高等教育出版社,2008.
[9] 王立柱. C/C++與數(shù)據(jù)結(jié)構(gòu)(上冊)[M].3版.北京:清華大學(xué)出版社,2008.
[10]朱立華. C語言程序設(shè)計(jì)[M].北京:人民郵電出版社,2009.
Study on C Language Teaching Material and Its Practice
ZHU Li-hua, YU Qiong
(College of Computer, Nanjing University of Posts and Telecomunications, Nanjing 210003, China)
Abstract: The paper expound the process and result of building up C language teaching material, including the problem to be dealt with, the latest resources assimilated, the breakthrough points and the distinguishing features, in particular the effective method used to solve the difficulties of pointer and function, the comparing techniques of programming as a reader assistant , peculiar teaching multimedia courseware as lecture and self-study facilities.
Key words: building up C language teachint material;pointer and function;the comparing techniques of programming;teaching multimedia courseware.