王 新 王智廣
摘要:“C語言程序設(shè)計(jì)”是信息類專業(yè)、特別是計(jì)算機(jī)專業(yè)的專業(yè)基礎(chǔ)課,是計(jì)算機(jī)編程的主要語言之一。本文針對譚浩強(qiáng)先生的《C程序設(shè)計(jì)》一書,從學(xué)習(xí)對象、書的結(jié)構(gòu)、敘述特點(diǎn)等方面進(jìn)行探討,說明了該書既是所有學(xué)習(xí)、使用C語言人的必讀教材和主要參考書,也是當(dāng)今國內(nèi)培養(yǎng)計(jì)算機(jī)專業(yè)人士的搖籃,同時(shí)又是學(xué)習(xí)C語言的最經(jīng)典教材。
關(guān)鍵詞:C語言;程序設(shè)計(jì);經(jīng)典教材;計(jì)算機(jī)教育
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B
1引言
只要人們提到學(xué)習(xí)C語言,都會(huì)不由自主地和譚浩強(qiáng)三個(gè)字聯(lián)系在一起,特別是20世紀(jì)80年代以后的學(xué)生,都是在譚老師的《BASIC程序設(shè)計(jì)》、《FORTRAN語言》、《C程序設(shè)計(jì)》的指引下走過來的。特別是20世紀(jì)的90年代中后期,全國非計(jì)算機(jī)專業(yè)學(xué)生的計(jì)算機(jī)應(yīng)用能力等級考試,將C語言納入到考試的范疇,C語言便進(jìn)入大學(xué)計(jì)算機(jī)公共基礎(chǔ)課的講堂,譚老師的《C程序設(shè)計(jì)》因?yàn)橄到y(tǒng)性強(qiáng)、通俗易懂、例題豐富,并且實(shí)用性強(qiáng),很適合初學(xué)者,瞬時(shí)風(fēng)靡各大高校,成為許多理工科專業(yè)學(xué)生書包中的必備書籍。多年的一線教學(xué)體會(huì),我始終推薦該書為使用教材或主要參考書。
2適用各類學(xué)習(xí)對象
筆者從20世紀(jì)90年代中期開始講授C語言,至今已有15年,授課對象有計(jì)算機(jī)專業(yè)和非計(jì)算機(jī)專業(yè)的學(xué)生,也有大專生和社會(huì)上成人教育的函授學(xué)員,使用的教材主要是譚老師的《C程序設(shè)計(jì)》,從第一版到第二版、第三版,同學(xué)們都覺得這本書好,從沒有學(xué)生對選用這本教材提出異議。事實(shí)上,國內(nèi)許多高校的非計(jì)算機(jī)專業(yè)用譚老師的書作為“C語言程序設(shè)計(jì)”課的教材,而且許多高校的計(jì)算機(jī)專業(yè)同樣也用譚教授的書作為“C語言程序設(shè)計(jì)”課的教材,自學(xué)C語言程序設(shè)計(jì)的讀者更是不約而同地選擇譚教授的書作為叩開C語言大門的入門書。
最初學(xué)習(xí)C語言的主要是計(jì)算機(jī)專業(yè)學(xué)生,而且大都是作為第二語言開設(shè)的,后來才逐漸演變成作為第一語言,而部分非計(jì)算機(jī)專業(yè)的學(xué)生也有這種歷程。當(dāng)C語言作為第一語言開設(shè)后,《C程序設(shè)計(jì)》的第二版便增加了“算法”,并安排在第二章(C語言概述之后),使學(xué)生首先掌握常用算法(如求一批數(shù)的累加和、累乘積,判斷某年是否為閏年,判斷一個(gè)大于等于3的正整數(shù)是否為素?cái)?shù)等算法)的編程思想,而后再講解具體的語法定義、規(guī)則,以及算法的具體實(shí)現(xiàn),將程序語言的講解與算法的分析有機(jī)地結(jié)合起來,同時(shí)知識的講解有螺旋式上升的趨勢,非常符合初學(xué)者的認(rèn)知規(guī)律,受到各種學(xué)習(xí)對象的歡迎。記得有一年上成教的課,當(dāng)時(shí)成教教材管理部門選用了其他教材并發(fā)給了學(xué)生,筆者在第一次上課時(shí)便將譚老師的《C程序設(shè)計(jì)》作為主要的參考書推薦給了學(xué)生。上了兩次課后,許多同學(xué)反映:“老師,我們這本教材沒有譚浩強(qiáng)那本講得清楚”,筆者后來向成教學(xué)院的有關(guān)人員提出下一屆更換教材的建議,以后使用的教材都是譚老師的《C程序設(shè)計(jì)》這本教材。
3內(nèi)容全面、結(jié)構(gòu)清晰
《C程序設(shè)計(jì)》一書涵蓋了程序設(shè)計(jì)基礎(chǔ)知識和C語言程序設(shè)計(jì)的全部內(nèi)容,并介紹了大量常用算法。在C語言中,數(shù)據(jù)類型豐富,運(yùn)算符也比較多,程序設(shè)計(jì)自由度大,這些都給初學(xué)者帶來了較大的學(xué)習(xí)難度。本書從C語言的結(jié)構(gòu)開始,從最簡單的輸出“This is a C program.”、“求兩數(shù)之和”、“求兩個(gè)數(shù)中最大者”實(shí)例出發(fā),將基本的程序結(jié)構(gòu)中應(yīng)至少有一個(gè)輸出、最簡單的變量定義和使用、C程序是由函數(shù)構(gòu)成的知識點(diǎn)講解得非常清晰,只要懂點(diǎn)英文,就能讀懂程序。進(jìn)而介紹具體的數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、基本的輸入輸出函數(shù),使初學(xué)者很快就能編寫出比較簡單的程序,看到自己的學(xué)習(xí)效果,很有成就感。而后開始介紹稍復(fù)雜的程序結(jié)構(gòu)(選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu))和數(shù)據(jù)類型(數(shù)組),并結(jié)合圖例講解和實(shí)現(xiàn)常用的算法。在函數(shù)一章通過利用前面的講過的實(shí)例復(fù)習(xí)已學(xué)的知識點(diǎn),同時(shí)也降低了學(xué)習(xí)函數(shù)的難度。在讀者會(huì)編寫基本的C程序后,才開始介紹C語言的特色部分,如編譯預(yù)處理、指針、結(jié)構(gòu)體、共同體、位運(yùn)算文件等,將C語言程序設(shè)計(jì)的知識點(diǎn)全部展開,難度逐漸地增加,而沒有采取在講解函數(shù)之前先講解指針的做法。這種循序漸進(jìn)、螺旋式的教學(xué)內(nèi)容安排非常符合認(rèn)知規(guī)律。
4深入淺出、講解透徹
大學(xué)教材是供人們使用的,它既用于老師教,又供學(xué)生自學(xué),也可作為有關(guān)人員的參考用書。它不但要強(qiáng)調(diào)基礎(chǔ)知識和系統(tǒng)的完整性,而且也能使人通過自學(xué)就可能進(jìn)入一個(gè)新的發(fā)展領(lǐng)域。這就要求一本好的教材既要內(nèi)容完整,同時(shí)又必須能夠做到深入淺出,講解透徹?!禖程序設(shè)計(jì)》一書各個(gè)章節(jié)的編寫通過提出問題、分析問題、解決問題,然后再歸納總結(jié)的方法,將復(fù)雜難懂的抽象概念與實(shí)際應(yīng)用實(shí)例結(jié)合,與形象的比喻科學(xué)地結(jié)合,使其變得容易理解,并與計(jì)算機(jī)的基礎(chǔ)知識相結(jié)合。如在講解遞歸算法時(shí)先用求人的年齡問題來講解遞推和回歸的過程,而后才講解經(jīng)典的漢諾塔問題,同時(shí)給出了詳盡的數(shù)學(xué)公式推導(dǎo)過程,并配以圖例說明。又如在介紹指針概念中“間接訪問”一詞時(shí),使用了生動(dòng)的比喻:“為安全起見,將A鑰匙放到另一抽屜B中鎖起來,若果需要打開A抽屜,就需要先找出B鑰匙,打開B抽屜,取出A鑰匙,再打開A抽屜,取出A抽屜中之物,這就是‘間接訪問?!边@使讀者不僅理解了“間接訪問”概念,也加深了對指針概念的理解。再如在介紹變量的存儲(chǔ)類型時(shí)、介紹指針時(shí)都對計(jì)算機(jī)的存儲(chǔ)管理作了清楚的論述。
該書的內(nèi)容重點(diǎn)突出,難點(diǎn)分散,對C語言中最基本和常用的部分進(jìn)行了詳細(xì)的分析和講解,凡是涉及的內(nèi)容,都講得非常透徹、詳盡。
5例題難易適度、習(xí)題豐富、教學(xué)資料齊全
多年的課堂教學(xué)過程中,總能體會(huì)到本書中例題和習(xí)題選擇的難度非常適宜,如講解循環(huán)結(jié)構(gòu)時(shí)選用計(jì)算“1+2+…+100”作為入門的例題,習(xí)題中便有計(jì)算“1!+2!+…+ 20!”之和,既有相似之處又有新舊知識(循環(huán)結(jié)構(gòu)的使用和前面介紹的數(shù)據(jù)類型及其表示范圍)的結(jié)合。另外本書通過豐富的習(xí)題來豐富常用的實(shí)用算法。如在循環(huán)一章的習(xí)題中將迭代法和二分法引入,通過求方程的根來理解其算法含義和實(shí)現(xiàn)過程,在數(shù)組一章的習(xí)題中引入了“篩選法”、“選擇排序法”、“楊輝三角形”等。
計(jì)算機(jī)程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,學(xué)習(xí)時(shí)不僅僅需要選擇合適的例題,還需要編寫足夠代碼量的程序,僅靠閱讀教教材或聽課是不可能掌握編程技能的??傆腥吮г拐f:“課堂上聽得很明白,就是課下編程困難”,而學(xué)習(xí)程序設(shè)計(jì)最重要的環(huán)節(jié)就是實(shí)踐?!禖程序設(shè)計(jì)》一書中每章都附有大量的各種類型習(xí)題,并且有配套的習(xí)題解答,這不僅有利于學(xué)生開闊視野,豐富知識,而且有益于復(fù)習(xí)、鞏固、加深理解和掌握課上所學(xué)的知識,提高他們的學(xué)習(xí)興趣,培養(yǎng)自學(xué)能力,也便于教師設(shè)計(jì)實(shí)驗(yàn)課的教學(xué)內(nèi)容。近年來譚老師講授《C程序設(shè)計(jì)》的教學(xué)錄像也已成為很多教師講課前的觀摩學(xué)習(xí)課程。
6強(qiáng)調(diào)應(yīng)用意識和應(yīng)用技能
教材要起一種引導(dǎo)作用,要強(qiáng)調(diào)應(yīng)用意識和應(yīng)用技巧,應(yīng)特別注意學(xué)科間的聯(lián)系?!禖程序設(shè)計(jì)》一書將實(shí)際生活中數(shù)學(xué)問題的解決算法、工程應(yīng)用的常用數(shù)值分析方法均作為本書的實(shí)例和習(xí)題,這不僅有助于培養(yǎng)學(xué)生的邏輯思維,而且也有助于學(xué)生分析問題和解決問題的應(yīng)用能力。正因如此,初學(xué)程序設(shè)計(jì)的學(xué)生可以達(dá)到熟練運(yùn)用C語言進(jìn)行小規(guī)模應(yīng)用開發(fā)的能力,許多非計(jì)算機(jī)專業(yè)的人士通過自學(xué)這本教材,打下了程序設(shè)計(jì)的基礎(chǔ),后來便使用C語言開發(fā)出本專業(yè)的應(yīng)用軟件。
7結(jié)論
大學(xué)教材非常重要。譚老師為人們寫下了諸如《BASIC語言》、《FORTRAN語言》、《C程序設(shè)計(jì)》等深受廣大教師和學(xué)生歡迎的經(jīng)典之作。譚老師的《C程序設(shè)計(jì)》一書對我國普及C語言程序設(shè)計(jì)起了很大的推動(dòng)作用,他為計(jì)算機(jī)教育的普及不懈地努力,取得了巨大的成就,功不可沒,真正做到了“桃李滿天下”。
參考文獻(xiàn):
[1] 譚浩強(qiáng). C程序設(shè)計(jì)[M].3版. 北京:清華大學(xué)出版社,2005.
[2] 楊選輝. 對高校教材建設(shè)的幾點(diǎn)看法[J]. 計(jì)算機(jī)教育,2007(13).