趙曉華
摘 要:為了更好的提升C語言上機(jī)實(shí)踐課程的授課效果,提高學(xué)生程序設(shè)計(jì)的能力,幫助學(xué)生更好的掌握C語言的基本語法,建立良好的編程習(xí)慣,文章分析了目前該課程上機(jī)存在的問題,并針對(duì)存在問題提出了對(duì)策和方法,通過這些方法在實(shí)踐教學(xué)中的應(yīng)用,有效地提升了實(shí)踐教學(xué)效果。
關(guān)鍵詞:C語言;上機(jī)實(shí)踐;程序設(shè)計(jì)
中圖分類號(hào):G642 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2096-000X(2018)16-0118-03
Abstract: In order to better improve the teaching effect of computer practice course in C language, improving students' programming ability, helping students better master the basic grammar of C language and establishing good programming habits, this paper analyzes the problems existing in computer practice of this course at present, and puts forward countermeasures and methods aiming at the existing problems. Through the application of these methods in practical teaching, teaching effects are effectively improved.
Keywords: C language; computer practice; program design
前言
C語言因其運(yùn)算符豐富、語法靈活、程序書寫自由,能針對(duì)硬件編程等特點(diǎn)而得到廣泛的應(yīng)用[1]。目前各大院校的多個(gè)專業(yè)開設(shè)了該門課程。對(duì)于計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生來說C語言是他們學(xué)習(xí)其他語言的基礎(chǔ),學(xué)好該課程能幫助學(xué)生掌握程序設(shè)計(jì)的基本思想、建立良好的邏輯關(guān)系,培養(yǎng)軟件開發(fā)的基本技能,對(duì)于非計(jì)算機(jī)專業(yè)的學(xué)生,C語言能夠幫助同學(xué)了解程序設(shè)計(jì)的基本邏輯,對(duì)于培養(yǎng)學(xué)生良好的邏輯思維能力有較好的幫助,從而幫助學(xué)生學(xué)習(xí)其他課程[2]。
一、C語言上機(jī)教學(xué)中存在的問題
C語言語法多。程序邏輯復(fù)雜,為了使學(xué)生更好掌握該門課程的基本知識(shí),上機(jī)環(huán)節(jié)是不可缺少的[3]。上機(jī)實(shí)踐能幫助學(xué)生理解基礎(chǔ)語法,通過程序調(diào)試,捋順邏輯關(guān)系,掌握程序撰寫中語法的規(guī)范表達(dá),用戶思想的程序邏輯表示,然而在上機(jī)實(shí)踐中,學(xué)生編譯程序會(huì)出現(xiàn)很多問題,根據(jù)調(diào)試結(jié)果存在的程序錯(cuò)誤提示不能很好地修改程序,主要存在以下問題:
(一)語法表達(dá)錯(cuò)誤
C語言語法特別多,而且語法表達(dá)稍有不妥,程序就運(yùn)行不下去,單純的講解語法,因其多且學(xué)起來枯燥,授課效果并不好,學(xué)生因?yàn)榛菊Z法不清,語句順序混亂導(dǎo)致程序運(yùn)行不下去。
(二)邏輯表達(dá)錯(cuò)誤
程序調(diào)試過程中邏輯表達(dá)錯(cuò)誤,程序邏輯不通,加之學(xué)生普遍英文水平欠佳,對(duì)于程序調(diào)試過程中給出的改錯(cuò)信息不能很好的理解,從而導(dǎo)致程序修改不得當(dāng),程序調(diào)試不下去,自己編寫的程序代碼運(yùn)行不出結(jié)果,久而久之就挫傷了學(xué)生學(xué)習(xí)該課程的積極性。
(三)上機(jī)實(shí)踐準(zhǔn)備不夠充分,學(xué)生缺乏動(dòng)手主動(dòng)性
教師下發(fā)上機(jī)任務(wù)后,學(xué)生對(duì)作業(yè)沒有做足上機(jī)前的準(zhǔn)備,不是帶著編程的邏輯來上機(jī),學(xué)生倉促上機(jī)編寫程序,程序編寫的思路不清晰,導(dǎo)致上機(jī)中程序調(diào)試不下去,從而影響了上機(jī)效果。
(四)上機(jī)任務(wù)沒有新意
很多C語言教材中的案例以數(shù)學(xué)問題為主,直接給出了數(shù)學(xué)模型,學(xué)生覺得沒有新意,不能較好的理解計(jì)算機(jī)工作的真正意義,調(diào)試程序頻繁出錯(cuò),又不知道錯(cuò)誤原因,這就極大挫傷了學(xué)生學(xué)習(xí)的積極性,實(shí)踐課的作用大大被削弱了。
上機(jī)實(shí)踐是C語言課程教學(xué)的重要環(huán)節(jié),通過上機(jī)實(shí)踐,學(xué)生能夠較好的掌握C語言的語法,及時(shí)發(fā)現(xiàn)自己理論學(xué)習(xí)存在的不足,從而加強(qiáng)語法學(xué)習(xí),理解基礎(chǔ)語法在編程中的重要性,通過上機(jī)任務(wù)程序代碼的編寫和程序的調(diào)試,使學(xué)生了解理解C語言的邏輯表達(dá),并能夠正確的應(yīng)用C語言提供的關(guān)系運(yùn)算、邏輯運(yùn)算準(zhǔn)確、嚴(yán)密的表達(dá)實(shí)踐任務(wù)的邏輯需求,從而能夠靈活應(yīng)用這些邏輯在C語言中描述實(shí)際問題,更好的利用該門語言解決實(shí)際問題。
二、C語言上機(jī)實(shí)踐教學(xué)的改進(jìn)
針對(duì)目前C語言實(shí)踐課程中存在的問題,對(duì)C語言上機(jī)實(shí)踐教學(xué)提出了改進(jìn)措施,以更好的做好C語言實(shí)踐教學(xué),提升教學(xué)效果,切實(shí)提高學(xué)生的編程能力、分析問題的能力、構(gòu)造算法的能力、C語言語法學(xué)習(xí)和應(yīng)用的能力。
(一)明確目標(biāo),激發(fā)興趣
C語言上機(jī)實(shí)踐一定要有明確的目標(biāo),使學(xué)生有學(xué)習(xí)的動(dòng)力和深入學(xué)習(xí)的興趣。上機(jī)目標(biāo)分為知識(shí)目標(biāo)和能力目標(biāo),能力目標(biāo)力在掌握C語言的概念和語法,能力目標(biāo)著重培養(yǎng)編程能力。教師設(shè)計(jì)上機(jī)任務(wù)單,下發(fā)上機(jī)內(nèi)容,讓學(xué)生很清楚知道上機(jī)的目的和意義,從而做到有的放矢。例如:在學(xué)習(xí)C語言輸出函數(shù)printf()時(shí),知識(shí)目標(biāo)力在理解輸出函數(shù)中格式控制符和參數(shù)的意義和作用。能力目標(biāo)重在培養(yǎng)學(xué)生練習(xí)題中輸出函數(shù)的靈活應(yīng)用。教師設(shè)計(jì)任務(wù)單,任務(wù)單內(nèi)容分為兩部分:理解語法,鞏固課堂知識(shí);編程練習(xí),靈活運(yùn)用。任務(wù)單詳細(xì)設(shè)計(jì)見表1。根據(jù)練習(xí)掌握的情況,在編程題中如何根據(jù)輸出要求書寫輸出格式控制,這樣的方式有助于學(xué)生了解上機(jī)的側(cè)重,又不挫傷學(xué)生學(xué)習(xí)的熱情從而使學(xué)生較好的掌握輸出函數(shù)格式控制,達(dá)到練習(xí)的目的。
(二)教師提前下發(fā)任務(wù),學(xué)生課前精心準(zhǔn)備
在每次上機(jī)之前,教師下發(fā)上機(jī)任務(wù)單,學(xué)生根據(jù)任務(wù)單設(shè)計(jì)程序編寫思路,回顧課堂教學(xué)內(nèi)容,動(dòng)手撰寫程序語句,并對(duì)自己編寫的程序閱讀分析,檢查程序設(shè)計(jì)是否完成題意的要求,這樣有效的節(jié)約了時(shí)間。上機(jī)的重心是驗(yàn)證程序的語法表達(dá)、邏輯思想,上機(jī)前的深思熟慮,上機(jī)調(diào)試中問題的檢查分析,有效的提升上機(jī)實(shí)踐效果。
(三)糾錯(cuò)整理,提升編程能力
在程序調(diào)試過程中,因?yàn)闀鴮懟虺绦蜻壿嫳磉_(dá)錯(cuò)誤、語法錯(cuò)誤等原因往往導(dǎo)致程序運(yùn)行不下去,學(xué)生因?yàn)榈鬃硬睿Z法掌握不好、邏輯思路不清等原因往往查不出程序錯(cuò)誤所在,教師在上機(jī)實(shí)踐中加以引導(dǎo)和協(xié)助糾錯(cuò),學(xué)生這次記住了下次又不會(huì)了,那么整理自己調(diào)試中存在的問題就很重要。一般的語法錯(cuò)誤,編輯程序時(shí),系統(tǒng)會(huì)根據(jù)行做提示,學(xué)生無需讀懂錯(cuò)誤提示行的全部信息,將這些常見錯(cuò)誤整理,多次上機(jī)之后,學(xué)生自己就具備了糾錯(cuò)的能力。C語言常見的語法錯(cuò)誤如下:
1. 變量定義時(shí)不符合變量定義規(guī)則,不區(qū)分大小寫;
2. 程序編寫中的符號(hào)中英混用;
3. 變量在使用前沒有值;
4. 輸入輸出格式控制與前面的定義不匹配,導(dǎo)致得不到正確答案;
5. 選擇、循環(huán)嵌套控制語句格式不正確;
6. 數(shù)學(xué)函數(shù)調(diào)用沒有書寫#include“math.h”命令行;
7. 函數(shù)調(diào)用卻沒有聲明;
8. 調(diào)用函數(shù)時(shí)實(shí)參形參類型、數(shù)目不匹配;
9. 語句結(jié)束沒有分號(hào);
10. 關(guān)鍵字拼寫錯(cuò)誤。
例如如下的錯(cuò)誤提示:
Error E:\WinTc\WinTc\frist.c 5 :Function call missing)in function main
學(xué)生無需全部讀懂,只需要依據(jù)關(guān)鍵字“Error”知道有錯(cuò);“5” 意思是錯(cuò)在第五行;“missing)”漏掉了括號(hào),全部意思就是第五行少了一個(gè)“)”。
由于C語言語法比較自由、靈活,因此錯(cuò)誤信息定位不是特別精確。例如,當(dāng)提示第10行發(fā)生錯(cuò)誤時(shí),如果在第10行沒有發(fā)現(xiàn)錯(cuò)誤,從第10行開始往前查找錯(cuò)誤并修改。在程序書寫中有很多錯(cuò)誤提示,也許是由一條語句錯(cuò)誤產(chǎn)生的,只要修改了這條錯(cuò)誤,其他錯(cuò)誤會(huì)隨之消失。一般情況下,第一條錯(cuò)誤信息最能反映錯(cuò)誤的位置和類型,所以調(diào)試程序時(shí)務(wù)必根據(jù)第一條錯(cuò)誤信息進(jìn)行修改,修改后,立即運(yùn)行程序,如果還有很多錯(cuò)誤,要一個(gè)一個(gè)地修改,即,每修改一處錯(cuò)誤要運(yùn)行一次程序。調(diào)試程序是一個(gè)艱苦、心細(xì)、又有技巧的事,只有經(jīng)常上機(jī)多調(diào)試程序,才能不斷地積累經(jīng)驗(yàn)、提高程序調(diào)試技能。
(四)循序漸進(jìn),逐步提升
實(shí)踐任務(wù)以知識(shí)線索和教學(xué)內(nèi)容來設(shè)計(jì),對(duì)學(xué)生知識(shí)能力運(yùn)用具有較強(qiáng)的針對(duì)性。教師還應(yīng)根據(jù)學(xué)生的實(shí)際水平準(zhǔn)備上機(jī)任務(wù),太簡單了,學(xué)生敷衍了事,覺得沒有意義,太難了,學(xué)生沒有思路,無從下手,又會(huì)挫傷學(xué)習(xí)的積極性。因此教師在布置上機(jī)任務(wù)時(shí)應(yīng)循序漸進(jìn),以課堂案例為切入點(diǎn),逐步加深難度。以循環(huán)嵌套為例,教師講述的案例是菱形圖案的輸出,那么上機(jī)案例可以這樣設(shè)計(jì),上機(jī)任務(wù)與課堂案例有相似之處,還是圖案設(shè)計(jì)、雙重循環(huán)嵌套,但是程序的難度卻在逐漸增加,學(xué)生可以根據(jù)自己的實(shí)際情況選擇完成。具體設(shè)計(jì)見表2。
這樣,一個(gè)又一個(gè)任務(wù)的實(shí)現(xiàn)會(huì)幫助學(xué)生建立編程信心,從而從心底愿意進(jìn)一步學(xué)習(xí),建立扎實(shí)的編程基礎(chǔ)。
(五)精選上機(jī)任務(wù),注重趣味性
在設(shè)計(jì)上機(jī)任務(wù)時(shí),教師應(yīng)注重學(xué)生解決實(shí)際問題能力的培養(yǎng),注重實(shí)踐任務(wù)的趣味性,讓學(xué)生在任務(wù)分析中掌握程序設(shè)計(jì)的邏輯,在上機(jī)調(diào)試中能靈活運(yùn)用學(xué)習(xí)的算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算等表達(dá)任務(wù)中描述的問題,以調(diào)動(dòng)學(xué)生編程的積極性。例如順序結(jié)構(gòu)的練習(xí)中,大象喝水問題、選擇結(jié)構(gòu)中石頭剪刀布游戲設(shè)計(jì)、循環(huán)結(jié)構(gòu)中猴子吃桃問題等。這些都是非常有意思的題目,能夠有效激發(fā)學(xué)生思考的興趣,學(xué)生根據(jù)題意,建立編程的邏輯思想,設(shè)計(jì)算法,并利用學(xué)習(xí)的基本語法編寫程序,并上機(jī)調(diào)試驗(yàn)證,通過自己編寫調(diào)試程序,學(xué)生會(huì)有一種成就感,從而為下一步學(xué)習(xí)奠定基礎(chǔ)。
(六)教師講評(píng),鼓勵(lì)為主
每次實(shí)踐課程教師都應(yīng)該耐心解決學(xué)生上機(jī)調(diào)試程序中存在的問題,引導(dǎo)學(xué)生自己查錯(cuò),分析問題原因所在。上機(jī)實(shí)踐課程教師都應(yīng)給予效果講評(píng),對(duì)學(xué)生上機(jī)中咨詢較多的問題做總結(jié),并分析再舉例做講,使存在的問題在第一時(shí)間得到消化和解決。對(duì)學(xué)生實(shí)踐教學(xué)效果的評(píng)價(jià)基于多鼓勵(lì)、多贊賞,促使學(xué)生建立學(xué)習(xí)信心,及時(shí)解決自己存在的問題。
(七)一題多解,精益求精
C語言的難點(diǎn)是算法,但是在實(shí)際學(xué)習(xí)中,學(xué)生學(xué)習(xí)的難點(diǎn)卻在語法的學(xué)習(xí)和掌握上,為了使學(xué)生掌握這些繁雜的語法,在上機(jī)練習(xí)時(shí),教師要求學(xué)生在解決問題時(shí)嘗試兩種或者兩種以上的方法,這樣既能幫助學(xué)生學(xué)習(xí)語法,又能加強(qiáng)學(xué)生對(duì)語法的理解。在選擇結(jié)構(gòu)中,這種練習(xí)方式尤為凸顯。例如:選擇結(jié)構(gòu)分為單分支和多分支,單分支是用if結(jié)構(gòu)就能完成,但是多分支使用if-else-if和if-if-else嵌套均可完成,有些問題使用switch()開關(guān)語句實(shí)現(xiàn)更為簡潔方便,這些多分支結(jié)構(gòu)既有公共點(diǎn),又有自己的特點(diǎn),在解決多分支問題時(shí),同學(xué)們嘗試用多種方式去實(shí)現(xiàn),自己總結(jié),能較好的幫助學(xué)生理解和掌握語法,以便更好的掌握選擇結(jié)構(gòu)。再例如循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)有while構(gòu)成的循環(huán)、do-while構(gòu)成的循環(huán)和for語句構(gòu)成的循環(huán),這些循環(huán)結(jié)構(gòu)有相同之處,又有自己的獨(dú)特之處,一題多個(gè)程序設(shè)計(jì)的編寫,學(xué)生能夠非常清晰的區(qū)別和理解這些語法的側(cè)重。
(八)勤于閱讀,學(xué)習(xí)編程邏輯
C語言中諸多的語法是學(xué)習(xí)難點(diǎn),是C語言學(xué)習(xí)的基礎(chǔ),邏輯表達(dá)是關(guān)鍵,比較難以理解和掌握,要較快較好的掌握這些繁雜的語法,復(fù)雜的邏輯,理解各種運(yùn)算符構(gòu)成的表達(dá)式,閱讀程序是非常有效的方法。通過閱讀經(jīng)典的程序,一則理解程序中基礎(chǔ)語法的應(yīng)用,二則理解現(xiàn)實(shí)問題如何通過C語言的方式表達(dá),三則能借鑒程序中的邏輯思路,為自己今后動(dòng)手實(shí)踐提供幫助。例如:在判斷一個(gè)輸入的數(shù)是否為素?cái)?shù)程序中引入了標(biāo)志位變量,利用標(biāo)志位的狀態(tài)判斷輸入的數(shù)是否為素?cái)?shù),這個(gè)方法就可以在密碼驗(yàn)證程序中借鑒。兩個(gè)程序相同之處是:
1. 循環(huán)條件滿足,循環(huán)體需要繼續(xù)執(zhí)行;
2. 判斷條件成立強(qiáng)行退出循環(huán)體。
兩個(gè)程序代碼對(duì)比如下(圖1、圖2)。
密碼登陸界面問題的難點(diǎn)在于密碼判斷正確就退出,不正確就再次輸入繼續(xù)判斷,引入標(biāo)志位就很好解決。學(xué)生拿到這個(gè)問題不知道如何表達(dá)邏輯思路,從素?cái)?shù)判斷案例程序中編程思路得到了很好的啟發(fā),問題迎刃而解。
三、結(jié)束語
學(xué)習(xí)C語言知識(shí)是個(gè)逐步積累的過程,通過上機(jī)任務(wù)實(shí)踐,才能發(fā)現(xiàn)問題,通過程序的反復(fù)修改調(diào)試才能逐漸掌握諸多的語法知識(shí),提升自己的編程水平和解決實(shí)際問題的能力。在C語言教學(xué)中,通過以上的舉措,學(xué)生的學(xué)習(xí)的積極性明顯提高了,學(xué)生的動(dòng)手實(shí)踐能力得到了很好的鍛煉和提升,C語言課程實(shí)踐教學(xué)取得了顯著的教學(xué)效果。然而教學(xué)方法探索是一個(gè)長久的過程,在今后的教學(xué)實(shí)踐中,教師在教學(xué)方法,教學(xué)策略等方面還應(yīng)不斷的總結(jié)和提升,更有效的激發(fā)學(xué)生思考問題的能力,提升學(xué)生實(shí)踐技能的培養(yǎng)。
參考文獻(xiàn):
[1]衛(wèi)軍超.C語言教學(xué)改革探討與實(shí)踐[J].創(chuàng)新教育論壇,2017,3:[2]李玉雙.C語言程序設(shè)計(jì)的教學(xué)探究[J].教改理論,2015,10:807-809.
[3]張嬋.計(jì)算機(jī)C語言實(shí)驗(yàn)教學(xué)改革探討[J].山東工業(yè)技術(shù),2014,08:116+113.
[4]李杰.C程序設(shè)計(jì)語言教學(xué)改革與實(shí)踐[J].信息系統(tǒng)工程,2016,11:50-51.
[5]宋欣,張斌.面向能力培養(yǎng)的C語言程序教學(xué)方法研究[J].中小企業(yè)管理與科技,2017,10:120-131.