摘要:C語(yǔ)言程序設(shè)計(jì)是計(jì)算機(jī)專業(yè)的基礎(chǔ)課程,也是其他程序設(shè)計(jì)語(yǔ)言的先導(dǎo)課程,如何通過(guò)有效的教學(xué)方法提高該課程的教學(xué)質(zhì)量顯得尤為重要。針對(duì)教學(xué)中出現(xiàn)的問(wèn)題,從C語(yǔ)言的特點(diǎn)和學(xué)生的學(xué)習(xí)習(xí)慣等角度,從課堂教學(xué)和實(shí)驗(yàn)教學(xué)等幾個(gè)角度提出多種形式結(jié)合的教學(xué)方法。
關(guān)鍵詞:C語(yǔ)言程序設(shè)計(jì) 課程教學(xué) 實(shí)驗(yàn)教學(xué)
0 引言
C語(yǔ)言是當(dāng)今最為流行的程序設(shè)計(jì)語(yǔ)言之一,C語(yǔ)言程序設(shè)計(jì)不但成為高等院校計(jì)算機(jī)相關(guān)專業(yè)學(xué)生的專業(yè)必修課,而且也已經(jīng)被非計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)的課程[1]。課程開設(shè)的主要目的是使學(xué)生掌握一種基本的程序設(shè)計(jì)語(yǔ)言,通過(guò)對(duì)C語(yǔ)言的數(shù)據(jù)類型、結(jié)構(gòu)化程序設(shè)計(jì)方法、數(shù)組及函數(shù)的使用、指針結(jié)構(gòu)體以及文件等相關(guān)內(nèi)容的學(xué)習(xí),能夠解決和處理與本專業(yè)有關(guān)的大量實(shí)際問(wèn)題,培養(yǎng)學(xué)生熟練使用C語(yǔ)言進(jìn)行編程分析和解決問(wèn)題的能力。
C語(yǔ)言程序設(shè)計(jì)作為學(xué)生入學(xué)后系統(tǒng)地學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言的第一門課程,由于其涉及的概念比較復(fù)雜、規(guī)則繁多、容易出錯(cuò),因此在C語(yǔ)言程序設(shè)計(jì)教學(xué)過(guò)程中,初學(xué)者比較不容易適應(yīng)程序設(shè)計(jì)的思路,會(huì)遇到很多語(yǔ)言學(xué)習(xí)上的困難[2]。為了提高學(xué)生學(xué)習(xí)程序設(shè)計(jì)的興趣和信心,取得較好的教學(xué)效果,教師應(yīng)該積極探索教學(xué)和上機(jī)實(shí)踐方法,進(jìn)一步提高教學(xué)質(zhì)量。本文在作者近幾年C語(yǔ)言程序設(shè)計(jì)的教學(xué)和自己程序設(shè)計(jì)語(yǔ)言學(xué)習(xí)過(guò)程中積累的教學(xué)和實(shí)踐經(jīng)驗(yàn),對(duì)C語(yǔ)言程序設(shè)計(jì)課程中的幾種教學(xué)方法進(jìn)行初步的探討。
2 C語(yǔ)言程序設(shè)計(jì)教學(xué)方式探討
2.1 從第一個(gè)程序開始提起學(xué)生學(xué)習(xí)的興趣 在所有程序設(shè)計(jì)語(yǔ)言的學(xué)習(xí)中,第一個(gè)接觸的程序幾乎都是Hello World程序,C語(yǔ)言程序設(shè)計(jì)也不例外。Hello World程序的C語(yǔ)言內(nèi)容具體如下:
首先為了使得顯示屏幕中出現(xiàn)的內(nèi)容不會(huì)枯燥,我們可以在printf(\"Hello, world!\");的下一行添加一句printf(\"%c\",2)。由于ASCII碼值為2對(duì)應(yīng)的是一個(gè)笑臉,因此在最終的程序輸出結(jié)果中會(huì)顯示Hello, world!再加上個(gè)笑臉的內(nèi)容,這樣既增加了趣味性,又增加了學(xué)生學(xué)習(xí)C語(yǔ)言的興趣。
通過(guò)這個(gè)例子吸引起學(xué)生之后,他們就會(huì)在自己的腦子里問(wèn)為什么會(huì)這樣。此時(shí),就需要老師講這幾行語(yǔ)句的主要功能要跟學(xué)生講一下,這些內(nèi)容也是C語(yǔ)言程序語(yǔ)句的主體。講授的內(nèi)容可以這樣安排:#include的作用是要包含城中所用到語(yǔ)句的頭文件,因?yàn)槲覀冇玫搅藀ringf輸出語(yǔ)句,所以要將標(biāo)準(zhǔn)輸入輸出頭文件stdio.h包含進(jìn)來(lái);main()是主函數(shù)名,函數(shù)體要用{ }包含進(jìn)來(lái),并且強(qiáng)調(diào)上面程序的編寫方式({單獨(dú)一行,}單獨(dú)一行)會(huì)有利于同學(xué)們后續(xù)程序的編寫,語(yǔ)句更加清晰;pringf語(yǔ)句是輸出語(yǔ)句,將\" \"對(duì)應(yīng)的內(nèi)容輸出在屏幕上,此時(shí)可以強(qiáng)調(diào)\" \"中可以添加中文,并且對(duì)于輸出笑臉的語(yǔ)句,解釋為是有格式的輸出(這個(gè)會(huì)在以后的章節(jié)中具體講到);最后一條語(yǔ)句是return語(yǔ)句,將0值返回。由于主函數(shù)被定義成整型(int),因此在函數(shù)的結(jié)尾需要返回一個(gè)整數(shù)。
2.2 實(shí)例教學(xué)培養(yǎng)學(xué)生思維能力 在C語(yǔ)言程序設(shè)計(jì)的學(xué)習(xí)開始階段,首先要重視語(yǔ)法規(guī)則和基礎(chǔ)知識(shí)的掌握,然后才是程序的閱讀和編寫。隨后在學(xué)生學(xué)習(xí)的過(guò)程中,從學(xué)會(huì)看懂程序開始,到能夠編寫簡(jiǎn)單的程序,然后逐步的深入,這樣也為下一步進(jìn)行實(shí)例教學(xué)打好基礎(chǔ)。
C語(yǔ)言初學(xué)者首先遇到的問(wèn)題是毫無(wú)頭緒,不知從何處下手。在C語(yǔ)言的教學(xué)中,如果一味地先講語(yǔ)法格式,逐步講解語(yǔ)法要點(diǎn),最后給出例子,這樣很容易造成程序設(shè)計(jì)學(xué)習(xí)的思維定勢(shì)。我們希望通過(guò)實(shí)例教學(xué),培養(yǎng)學(xué)生自己分析問(wèn)題和解決問(wèn)題的能力,最后達(dá)到能夠使用程序設(shè)計(jì)語(yǔ)言來(lái)描述和解決這個(gè)問(wèn)題的結(jié)果。這里以一個(gè)常見的數(shù)學(xué)問(wèn)題為例,自然數(shù)求和1+2+3+…+50。首先讓學(xué)生觀察求和的公式,然后尋找規(guī)律。第一個(gè)規(guī)律是,在公式中,加數(shù)都是遞增的并且步長(zhǎng)值為1。第二個(gè)規(guī)律是,在從左到右求和過(guò)程中,我們總是將前面求完的和跟下一個(gè)加數(shù)相加。因此從分析的規(guī)律可知,這個(gè)過(guò)程一直重復(fù)下去直到加到最后一個(gè)加數(shù)50為止。分析完這個(gè)問(wèn)題之后,就可以對(duì)循環(huán)結(jié)構(gòu)語(yǔ)句進(jìn)行介紹,并給出具體的使用方法,并以簡(jiǎn)單的例子對(duì)該知識(shí)進(jìn)行鞏固。隨后,對(duì)自然數(shù)求和問(wèn)題進(jìn)行C語(yǔ)言程序設(shè)計(jì)。首先,C語(yǔ)言程序是由函數(shù)構(gòu)成的。一個(gè)C語(yǔ)言程序至少包含一個(gè)main主函數(shù)。一個(gè)完整的函數(shù)由函數(shù)的首部與函數(shù)體兩個(gè)部分組成。其次,幫助學(xué)生回顧C(jī)語(yǔ)言的數(shù)據(jù)類型,數(shù)據(jù)的基本表現(xiàn)形式,C語(yǔ)言中的運(yùn)算符和表達(dá)式。這里,根據(jù)前面分析,定義兩個(gè)整型int變量k和total,k表示加數(shù),變量total用來(lái)存儲(chǔ)前面加數(shù)的和,并對(duì)其賦初值為0。然后,考慮應(yīng)該使用何種C語(yǔ)言基本結(jié)構(gòu),使用結(jié)構(gòu)中的那些語(yǔ)句及其格式要求,這里使用的是循環(huán)結(jié)構(gòu)中的for語(yǔ)句。在for循環(huán)語(yǔ)句中,首先需要對(duì)循環(huán)變量賦初值,k=1;然后給定循環(huán)停止條件k<=50,最后是循環(huán)變量最后,補(bǔ)全完善程序段,為了便于與用戶進(jìn)行交互,應(yīng)在C語(yǔ)言程序中加入輸入和輸出語(yǔ)句,由于需要使用輸入和輸出語(yǔ)句,因此在使用時(shí)要先調(diào)用頭文件stdio.h。將上述分析整個(gè)聯(lián)系起來(lái),可以完成上述問(wèn)題的C語(yǔ)言的程序編寫,具體為:
編完上述程序之后,教師還需提醒學(xué)生注意融匯貫通,例如如果是求1+2+3+…+n該怎么辦,n為用戶指定的,如果是求應(yīng)該如何解決等等諸多類似的問(wèn)題,教師都可以拿出來(lái)跟學(xué)生一起分析,并讓他們?cè)谏霞?jí)實(shí)驗(yàn)時(shí)加以練習(xí),達(dá)到信手拈來(lái)的程度。因此課程上機(jī)實(shí)驗(yàn)環(huán)節(jié)在C語(yǔ)言程序設(shè)計(jì)教學(xué)環(huán)節(jié)中也是非常重要的,能夠幫助學(xué)生有效地鞏固基礎(chǔ)知識(shí)和增加程序設(shè)計(jì)的經(jīng)驗(yàn)。
2.3 實(shí)驗(yàn)教學(xué)進(jìn)一步提高學(xué)生程序設(shè)計(jì)能力 C語(yǔ)言程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,既要掌握基本語(yǔ)法知識(shí),又要?jiǎng)邮志幊滩⑸蠙C(jī)調(diào)試運(yùn)行[3,4]。實(shí)驗(yàn)教學(xué)是通過(guò)學(xué)生編寫和調(diào)試程序發(fā)現(xiàn)和暴露編程過(guò)程中出現(xiàn)的問(wèn)題,通過(guò)解決問(wèn)題進(jìn)一步獲得更多的知識(shí)。在上機(jī)實(shí)驗(yàn)環(huán)節(jié),需要對(duì)學(xué)生的以下能力進(jìn)行培養(yǎng):對(duì)編程題目的閱讀能力,構(gòu)思算法步驟,編寫程序、運(yùn)行程序并分析所得的結(jié)果,根據(jù)結(jié)果對(duì)程序進(jìn)行調(diào)試,最終完成程序的設(shè)計(jì)。具體的實(shí)驗(yàn)教學(xué)可以從以下幾個(gè)方面來(lái)設(shè)計(jì),一方面為學(xué)生設(shè)計(jì)基礎(chǔ)性的實(shí)驗(yàn),例如:求一元二次方程的根、簡(jiǎn)單的排序算法等編程實(shí)驗(yàn),使學(xué)生能夠通過(guò)實(shí)驗(yàn)及時(shí)掌握和消化課堂的教學(xué)內(nèi)容,進(jìn)一步提高學(xué)生的學(xué)習(xí)熱情。另一方面,增加一些難度性大和實(shí)用性強(qiáng)的實(shí)驗(yàn),并對(duì)學(xué)生進(jìn)行分組,通過(guò)組內(nèi)討論得出算法解決思路和算法流程,然后上機(jī)編程調(diào)試并撰寫報(bào)告。通過(guò)組內(nèi)成員對(duì)實(shí)驗(yàn)題目的討論,可以使得不同水平的學(xué)生之間能夠相互交流并借鑒各自掌握的程序設(shè)計(jì)知識(shí)以及解決問(wèn)題的思路,最終起到共同學(xué)習(xí)共同進(jìn)步的目的。實(shí)驗(yàn)內(nèi)容可以是設(shè)計(jì)簡(jiǎn)單的管理系統(tǒng)對(duì)班級(jí)成員進(jìn)行存儲(chǔ),并根據(jù)條件查詢?nèi)藛T信息,或者是利用數(shù)組與指針,將多個(gè)人的姓名進(jìn)行排序,規(guī)則為按照姓名拼音的字母順序進(jìn)行排序。通過(guò)這些上機(jī)實(shí)驗(yàn),一方面培養(yǎng)了學(xué)生對(duì)知識(shí)的應(yīng)用能力與問(wèn)題的分析能力,有利于學(xué)生加深對(duì)所學(xué)知識(shí)的理解,讓學(xué)生真正體會(huì)到C語(yǔ)言的靈活性,激發(fā)學(xué)生的求知欲;另一方面也培養(yǎng)了學(xué)生之間的協(xié)作能力,有助于提高他們工作后的分工協(xié)作能力。
2.4 其他教學(xué)方式 除了以上主要的教學(xué)形式,我們還會(huì)在這些教學(xué)內(nèi)容中輔以趣味性的內(nèi)容提高學(xué)生的學(xué)習(xí)興趣。為了活躍課堂氣氛,我曾在課堂上通過(guò)設(shè)計(jì)一個(gè)隨機(jī)學(xué)號(hào)產(chǎn)生器,通過(guò)產(chǎn)生隨機(jī)學(xué)號(hào)對(duì)對(duì)應(yīng)學(xué)號(hào)的學(xué)生進(jìn)行提問(wèn),這樣既增加學(xué)生的學(xué)習(xí)興趣,又能提高學(xué)生上課的注意力。此外,將上機(jī)實(shí)驗(yàn)的好壞作為學(xué)生成績(jī)考核的一部分,讓學(xué)生在平時(shí)保持緊張狀態(tài),提高他們的學(xué)習(xí)主動(dòng)性,認(rèn)真完成每一階段的學(xué)習(xí)。
3 結(jié)論
C語(yǔ)言程序設(shè)計(jì)的主要目的就是培養(yǎng)學(xué)生的程序設(shè)計(jì)能力,本文根據(jù)作者實(shí)際教學(xué)過(guò)程中學(xué)生存在的問(wèn)題,從課堂教學(xué)和實(shí)驗(yàn)教學(xué)等幾個(gè)方面進(jìn)行了探討。希望這些教學(xué)方式有助于改善C語(yǔ)言程序設(shè)計(jì)教學(xué)中的諸多問(wèn)題,加強(qiáng)師生間的互動(dòng)交流,提高學(xué)生學(xué)習(xí)的興趣和主動(dòng)性。當(dāng)然,同樣的教學(xué)內(nèi)容面對(duì)不同的學(xué)生,不一定產(chǎn)生同樣的效果,在使用這些教學(xué)方法的同時(shí),還要適時(shí)地根據(jù)學(xué)生的課堂以及上機(jī)實(shí)驗(yàn)反應(yīng)加以調(diào)整,最終完成教與學(xué)的有機(jī)統(tǒng)一。作者將繼續(xù)努力探索,使《C語(yǔ)言程序設(shè)計(jì)》課程教學(xué)日趨完善。希望本文能對(duì)大學(xué)本科生程序設(shè)計(jì)語(yǔ)言的教學(xué)有一定的借鑒作用。
參考文獻(xiàn):
[1]嚴(yán)桂蘭.C語(yǔ)言程序設(shè)計(jì)與應(yīng)用教程[M].福建:廈門大學(xué)出版社,2001.
[2]劉桂玲.C語(yǔ)言程序設(shè)計(jì)教學(xué)改革與實(shí)踐[J].軟件導(dǎo)刊,2012,11(3):194-195.
[3]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì).北京:清華大學(xué)出版社,2000.
[4]譚浩強(qiáng).C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)[M].北京:清華大學(xué)出版社,1992.
基金項(xiàng)目:國(guó)家自然科學(xué)基金資助項(xiàng)目(61202153)。