華潔
(淮南師范學(xué)院 數(shù)學(xué)與計(jì)算科學(xué)系,安徽 淮南 232038)
C語(yǔ)言程序設(shè)計(jì)課程實(shí)驗(yàn)教學(xué)綜述
華潔
(淮南師范學(xué)院 數(shù)學(xué)與計(jì)算科學(xué)系,安徽 淮南 232038)
闡述了C語(yǔ)言的發(fā)展和演變,對(duì)C語(yǔ)言實(shí)驗(yàn)教學(xué)的各個(gè)方面進(jìn)行了較為詳細(xì)的探討,旨在提高學(xué)生用C語(yǔ)言進(jìn)行編程的能力,以便將來(lái)學(xué)有所用。
程序設(shè)計(jì);C語(yǔ)言程序設(shè)計(jì);實(shí)驗(yàn)教學(xué)
在當(dāng)今這個(gè)信息社會(huì)中,現(xiàn)代科學(xué)技術(shù)的飛速發(fā)展,改變了世界,也改變了人類的生活。掌握現(xiàn)代科學(xué)技術(shù)知識(shí),調(diào)整自己的知識(shí)結(jié)構(gòu)和能力結(jié)構(gòu),使自己能夠獨(dú)立思考和解決所面臨的各項(xiàng)任務(wù)和問(wèn)題,是適應(yīng)社會(huì)發(fā)展的趨勢(shì)。如今計(jì)算機(jī)技術(shù)已經(jīng)深入到人類生活的各個(gè)領(lǐng)域,無(wú)論學(xué)什么專業(yè),將來(lái)從事什么工作,都必須具備計(jì)算機(jī)的基礎(chǔ)知識(shí)和應(yīng)用能力。
C語(yǔ)言是目前國(guó)內(nèi)外廣泛流行的、有著廣闊發(fā)展前景的計(jì)算機(jī)高級(jí)語(yǔ)言,也是一種優(yōu)良的系統(tǒng)描述語(yǔ)言。在各種高級(jí)程序設(shè)計(jì)語(yǔ)言中,C語(yǔ)言有許多優(yōu)點(diǎn),利用它我們既可以編寫系統(tǒng)軟件 (如:unix,它和C被稱為孿生兄弟),也可以編寫應(yīng)用軟件。學(xué)會(huì)使用C語(yǔ)言進(jìn)行程序設(shè)計(jì)是計(jì)算機(jī)工作者的一項(xiàng)必備能力。
早期的操作系統(tǒng)軟件主要是用匯編語(yǔ)言編寫的,由于匯編語(yǔ)言依賴于計(jì)算機(jī)硬件,顯而易見其程序的可讀性和可移植性都是比較差的,所以為了提高系統(tǒng)軟件的可讀性和可移植性,改用高級(jí)語(yǔ)言編寫,但是一般的高級(jí)語(yǔ)言又難以實(shí)現(xiàn)匯編語(yǔ)言對(duì)硬件操作的功能,在此種情況下,C語(yǔ)言就應(yīng)運(yùn)而生了。
C語(yǔ)言是1972年由美國(guó)的Dennis M.Ritchie設(shè)計(jì)發(fā)明出來(lái)的,并首次在Unix操作系統(tǒng)環(huán)境下使用。它由早期的編程語(yǔ)言BCPL(Basic Combind Programming Language)發(fā)展演變而來(lái)。在1970年, AT&T美國(guó)貝爾實(shí)驗(yàn)室的Ken Thompson根據(jù)BCPL編程語(yǔ)言設(shè)計(jì)出較先進(jìn)的一種語(yǔ)言,取名為 B語(yǔ)言,Dennis.M.Ritchie在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出了C語(yǔ)言①譚浩強(qiáng):《C程序設(shè)計(jì)》(第三版),北京:清華大學(xué)出版社,2005年。。
演變歷程中的特點(diǎn):
(1)最早1960年ALgol 60。它是一種面向問(wèn)題的高級(jí)語(yǔ)言,計(jì)算能力強(qiáng),但脫離硬件。
(2)1963年CPL語(yǔ)言。由劍橋大學(xué)推出,接近硬件,但規(guī)模較大,難以實(shí)現(xiàn)。
(3)1967年BCPL。劍橋大學(xué)Martin Richards對(duì)CPL做了簡(jiǎn)化,解決了控制硬件問(wèn)題。
(4)1971年B語(yǔ)言。對(duì)BCPL進(jìn)一步改進(jìn)和簡(jiǎn)化,但程序過(guò)于簡(jiǎn)單,功能有限。
(5)1972~1973年C語(yǔ)言。在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出C語(yǔ)言,C語(yǔ)言既保持了BCPL和B語(yǔ)言的精練、接近硬件的優(yōu)點(diǎn),又克服了它們過(guò)于簡(jiǎn)單、數(shù)據(jù)無(wú)類型的缺點(diǎn)。
之后對(duì)C語(yǔ)言經(jīng)過(guò)多次改進(jìn),在1978年C語(yǔ)言很快風(fēng)靡全世界,成為世界上廣泛應(yīng)用的幾種計(jì)算機(jī)高級(jí)語(yǔ)言之一。
計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言分為面向過(guò)程和面向?qū)ο髢煞N。主要有:
(1)面向過(guò)程:Basic語(yǔ)言,C語(yǔ)言,Pascal語(yǔ)言,F(xiàn)ox語(yǔ)言等。
(2)面向?qū)ο螅篤isual Basic,Visual C,Visual Foxpro等。
在校本科生學(xué)習(xí)高級(jí)語(yǔ)言程序設(shè)計(jì),所采用的程序設(shè)計(jì)語(yǔ)言由BASIC改為PASCAL,再由PASCAL改用C語(yǔ)言。C語(yǔ)言有很多優(yōu)點(diǎn):語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活;運(yùn)算符和數(shù)據(jù)類型豐富;具有結(jié)構(gòu)化的控制語(yǔ)句實(shí)現(xiàn)程序的模塊化;允許直接訪問(wèn)硬件等等。
《C語(yǔ)言程序設(shè)計(jì)》這門課程是理工科各專業(yè),尤其是計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生一門非常重要的專業(yè)必修課。學(xué)生通過(guò)這門課的學(xué)習(xí),能夠掌握高級(jí)語(yǔ)言程序設(shè)計(jì)的基本思路和基本方法,逐步形成正確的程序設(shè)計(jì)思想,并能夠熟練地使用C語(yǔ)言進(jìn)行程序設(shè)計(jì),從而提高學(xué)生的編程能力,為后續(xù)課程《數(shù)據(jù)結(jié)構(gòu)》、《編譯原理》、《數(shù)據(jù)庫(kù)原理》等打下堅(jiān)實(shí)的基礎(chǔ)。
《C語(yǔ)言程序設(shè)計(jì)》同樣是一門實(shí)踐性很強(qiáng)的課程。熟練使用C語(yǔ)言編譯環(huán)境,驗(yàn)證已有的程序,加強(qiáng)對(duì)理論知識(shí)的理解和掌握,學(xué)會(huì)編制簡(jiǎn)單問(wèn)題的小程序;以上種種都必須在實(shí)驗(yàn)中得到訓(xùn)練。在具體實(shí)驗(yàn)中,學(xué)生需要對(duì)程序反復(fù)修改和調(diào)試,這是實(shí)驗(yàn)課必備的能力,它貫穿實(shí)驗(yàn)的整個(gè)過(guò)程,是學(xué)生學(xué)習(xí)和研究C語(yǔ)言程序設(shè)計(jì)最根本的方法。作為實(shí)驗(yàn)指導(dǎo)教師,在實(shí)驗(yàn)教學(xué)中應(yīng)該努力改變單一枯燥的教學(xué)方法,把實(shí)驗(yàn)教學(xué)重點(diǎn)放到幫助和指導(dǎo)學(xué)生主動(dòng)學(xué)習(xí)、積極思考和積極動(dòng)手上來(lái)。使學(xué)生在實(shí)驗(yàn)中充分掌握實(shí)驗(yàn)技能和技巧,從而很好地完成實(shí)驗(yàn)教學(xué)任務(wù)。
4.1 合理的選用實(shí)驗(yàn)教材是完成實(shí)驗(yàn)教學(xué)任務(wù)的重要保證
C語(yǔ)言的數(shù)據(jù)類型較多,表達(dá)式豐富,語(yǔ)法結(jié)構(gòu)復(fù)雜,知識(shí)內(nèi)容量很大,它是教師難教、學(xué)生難學(xué)的課程之一。對(duì)于一些抽象的概念學(xué)生是必須要通過(guò)大量的上機(jī)實(shí)驗(yàn)去理解和掌握的,但是目前大部分高校都比較偏重理論部分,上機(jī)實(shí)驗(yàn)只是理論教學(xué)的一部分。在學(xué)時(shí)劃分上偏重理論教學(xué),通常都是按課堂教學(xué):實(shí)驗(yàn)教學(xué)3:1的比例安排課時(shí)。選用合適的實(shí)驗(yàn)教材、制定合理的實(shí)驗(yàn)教學(xué)計(jì)劃和進(jìn)度,實(shí)驗(yàn)才可順利進(jìn)行,也是完成實(shí)驗(yàn)教學(xué)任務(wù)的重要保證。
筆者選用的實(shí)驗(yàn)教材是與理論課教材配套的新世紀(jì)計(jì)算機(jī)基礎(chǔ)教育叢書《C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)》譚浩強(qiáng)(第三版)一書,書中詳細(xì)介紹了在Turbo C 2.0、Turbo C++3.0和Visual C++6.0這三種集成環(huán)境下編輯、編譯、調(diào)試和運(yùn)行程序的方法①譚浩強(qiáng):《C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)》(第三版),北京:清華大學(xué)出版社,2005年。,淺顯易懂,有相應(yīng)的操作截圖,我認(rèn)為是目前本門課程最適用的實(shí)驗(yàn)教材。
4.2 實(shí)驗(yàn)教學(xué)集成環(huán)境的合理選用是實(shí)驗(yàn)順利開展的必備條件
實(shí)驗(yàn)集成環(huán)境的選用,一要考慮學(xué)生是否容易操作,二要考慮是否能使實(shí)驗(yàn)順利開展,而得以很好地完成實(shí)驗(yàn)教學(xué)任務(wù)。
4.2.1 實(shí)驗(yàn)教學(xué)集成環(huán)境常用的版本
根據(jù)教材的更新和社會(huì)發(fā)展的需要,目前主要的上機(jī)編程環(huán)境采用Visual C++6.0版本,全國(guó)計(jì)算機(jī)水平考試(安徽考區(qū))和全國(guó)計(jì)算機(jī)等級(jí)考試目前均采用此版本作為上機(jī)考試環(huán)境。在多年的實(shí)驗(yàn)教學(xué)中,先后安排的上機(jī)實(shí)驗(yàn)環(huán)境有Turbo C 2.0(DOS版),Turbo C 3.0(鼠標(biāo)操作版)和Visual C++6.0。
4.2.2 選用Turbo C 2.0版本作為實(shí)驗(yàn)教學(xué)平臺(tái)的優(yōu)勢(shì)
在多年的實(shí)驗(yàn)教學(xué)中,筆者總結(jié)得出:Turbo C 2.0版本更好用。它提供的菜單簡(jiǎn)潔齊全,使用的快捷命令簡(jiǎn)單快速,Turbo C 2.0環(huán)境的單步執(zhí)行Trace into(F7)和Step over(F8)2個(gè)菜單功能的使用在實(shí)驗(yàn)教學(xué)中尤其重要,它能夠幫助學(xué)生觀察程序中每個(gè)語(yǔ)句的運(yùn)行次序和全過(guò)程,并能夠觀察程序運(yùn)行過(guò)程中變量值的變化情況,幫助學(xué)生理解局部變量和全局變量的有效范圍,幫助學(xué)生理解參數(shù)是如何傳遞的,傳值還是傳址等等。不足之處是:僅能用鍵盤操作。所以我安排學(xué)生在實(shí)驗(yàn)教學(xué)的前段時(shí)間使用Turbo C 2.0上機(jī)環(huán)境進(jìn)行實(shí)驗(yàn),最后2周讓學(xué)生熟悉Visual C++6.0環(huán)境,掌握其基本方法,使學(xué)生能夠適應(yīng)各類C語(yǔ)言程序的上機(jī)考試環(huán)境。兩者配合,達(dá)到很好的實(shí)驗(yàn)效果。
4.3 結(jié)合理論教學(xué)的進(jìn)度,合理地制定實(shí)驗(yàn)計(jì)劃
實(shí)驗(yàn)計(jì)劃的制定要依據(jù)實(shí)驗(yàn)教學(xué)大綱。在2006年筆者所在學(xué)?;茨蠋煼秾W(xué)院參加本科教學(xué)水平評(píng)估中,筆者所在的數(shù)學(xué)與計(jì)算機(jī)科學(xué)系組織修訂和健全各門課程的實(shí)驗(yàn)教學(xué)大綱,筆者撰寫和修訂了《高級(jí)語(yǔ)言程序設(shè)計(jì)》(C語(yǔ)言)實(shí)驗(yàn)教學(xué)大綱,根據(jù)實(shí)驗(yàn)教學(xué)大綱,制定相應(yīng)的實(shí)驗(yàn)項(xiàng)目和實(shí)驗(yàn)進(jìn)度。
在制定實(shí)驗(yàn)計(jì)劃時(shí),需要和理論課的進(jìn)度相適應(yīng)。實(shí)驗(yàn)計(jì)劃的合理安排,是配合課堂教學(xué),使學(xué)生理解和掌握所學(xué)知識(shí)的先決條件,它必須和課堂教學(xué)達(dá)到“同步”,實(shí)驗(yàn)內(nèi)容超前,沒法做實(shí)驗(yàn),實(shí)驗(yàn)內(nèi)容滯后太多,而使理論知識(shí)遺忘過(guò)多,也給實(shí)驗(yàn)的順利進(jìn)行帶來(lái)不必要的困難。因此必須要結(jié)合理論教學(xué)的進(jìn)度,才能制定出合理的實(shí)驗(yàn)計(jì)劃。
4.4 重視實(shí)驗(yàn)課前的預(yù)習(xí),寫出客觀而完整的實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)課時(shí)的壓縮,使實(shí)驗(yàn)課的分分秒秒都要利用起來(lái)才能發(fā)揮實(shí)驗(yàn)課的作用。因此實(shí)驗(yàn)課前的預(yù)習(xí)是每個(gè)學(xué)生做好實(shí)驗(yàn)的必要準(zhǔn)備。按照實(shí)驗(yàn)進(jìn)度,我要求學(xué)生在實(shí)驗(yàn)前先了解本次實(shí)驗(yàn)的目的和內(nèi)容,對(duì)所需要做的實(shí)驗(yàn)畫出流程圖,設(shè)計(jì)出相應(yīng)的算法,并初步編寫出C源程序,在上實(shí)驗(yàn)課的時(shí)候就能夠直接輸入、調(diào)試和修改自己編寫的C源程序,這樣既節(jié)省了時(shí)間又提高了學(xué)生思考問(wèn)題的能力和編程能力。在實(shí)驗(yàn)中,一個(gè)簡(jiǎn)單的程序,都可能會(huì)出現(xiàn)許多小錯(cuò)誤,不是漏了分號(hào),就是關(guān)鍵詞拼寫錯(cuò)了,等等,所以學(xué)會(huì)調(diào)試和修改程序特別重要,我要求學(xué)生將調(diào)試過(guò)程中出現(xiàn)的錯(cuò)誤及改正后的代碼反映在實(shí)驗(yàn)報(bào)告中,錯(cuò)中求正,知識(shí)掌握的更鞏固。
4.5 學(xué)生的主觀能動(dòng)性是提高學(xué)生實(shí)驗(yàn)效率的重要前提
學(xué)生的主觀能動(dòng)性是學(xué)生掌握知識(shí)的最重要的前提條件。教學(xué)過(guò)程是教師教與學(xué)生學(xué)的兩個(gè)過(guò)程,在以學(xué)生為本的教育理念下,老師不僅是知識(shí)的傳授者,更是學(xué)生的引導(dǎo)者和啟發(fā)者,學(xué)生應(yīng)當(dāng)由知識(shí)的被動(dòng)接受變?yōu)橹鲃?dòng)求知。在C語(yǔ)言實(shí)驗(yàn)課上,學(xué)生多動(dòng)手、多動(dòng)腦、勤練習(xí)是學(xué)好編程的關(guān)鍵。在實(shí)驗(yàn)中,學(xué)生總會(huì)出現(xiàn)這樣或那樣的錯(cuò)誤,這時(shí)就需要教師引導(dǎo)他們開動(dòng)腦筋,自己找出錯(cuò)誤,在解決問(wèn)題的同時(shí)加深對(duì)知識(shí)的理解和掌握,使學(xué)生的主觀能動(dòng)性得到充分發(fā)揮。
4.6 將經(jīng)驗(yàn)傳授給學(xué)生,進(jìn)一步提高實(shí)驗(yàn)效果
全國(guó)計(jì)算機(jī)等級(jí)考試下半年起,把筆試部分也轉(zhuǎn)到上機(jī)考試環(huán)境中來(lái),因而實(shí)驗(yàn)中對(duì)動(dòng)手能力的提高更要大大地加強(qiáng)。結(jié)合各類計(jì)算機(jī)C語(yǔ)言的考試題型,筆者將容易出錯(cuò)的知識(shí)點(diǎn)和內(nèi)容進(jìn)行歸納和總結(jié),直接讓學(xué)生得到經(jīng)驗(yàn),避免學(xué)生實(shí)驗(yàn)中走彎路,防止許多問(wèn)題頻頻出現(xiàn)而反復(fù)輔導(dǎo)浪費(fèi)不必要的時(shí)間,這也是提高實(shí)驗(yàn)效率的重要途徑。比如:在改錯(cuò)題中,程序中的相等條件往往出錯(cuò)在“=”號(hào),而應(yīng)為相等“==”的運(yùn)算,在編譯中,C環(huán)境顯示的這類錯(cuò)誤信息不明顯,有了經(jīng)驗(yàn),實(shí)驗(yàn)會(huì)達(dá)到突飛猛進(jìn)的效果。
4.7 通過(guò)實(shí)戰(zhàn)訓(xùn)練,充分掌握C語(yǔ)言編程能力
學(xué)以致用,學(xué)習(xí)了C語(yǔ)言,掌握程度如何,需要加以檢驗(yàn),更是檢驗(yàn)實(shí)驗(yàn)教學(xué)的效果所在。在學(xué)期的后2周,安排學(xué)生進(jìn)行C語(yǔ)言程序的上機(jī)模擬考試,限時(shí)模擬考試,最能檢驗(yàn)學(xué)生對(duì)C語(yǔ)言的掌握程度和熟悉程度,程序填空、程序改錯(cuò)和程度編程,99套上機(jī)題,使學(xué)生在實(shí)戰(zhàn)訓(xùn)練中找出薄弱環(huán)節(jié)和不足,再重點(diǎn)加強(qiáng),使學(xué)生全面掌握C語(yǔ)言編程能力。
A review on experimental teaching of the C Programming Larguage
HUA Jie
The computer technology has a deep impact on all fields of the society.Programming ability is essential for a computer worker.In this paper,we make a comprehensive discussion on experimental teaching of programming in C.
programm ing;the C Programm ing Larguage;experimental teaching
G642.0
A
1009-9530(2013)04-0135-03
2013-01-10
華潔(1964-),女,淮南師范學(xué)院數(shù)學(xué)與計(jì)算科學(xué)系實(shí)驗(yàn)師。