石利平
(廣東女子職業(yè)技術(shù)學(xué)院,廣東 廣州 510450)
程序設(shè)計(jì)類課程是許多計(jì)算機(jī)相關(guān)專業(yè)必修課程,也是重要的專業(yè)課程。培養(yǎng)學(xué)生編程能力是程序設(shè)計(jì)類課程的主要培養(yǎng)目標(biāo)。根據(jù)多年的教學(xué)情況來看,學(xué)生在學(xué)習(xí)程序設(shè)計(jì)類課程時(shí),不少人都認(rèn)為課程枯燥、很難理解、編寫程序很難甚至不想學(xué)。學(xué)生雖然學(xué)習(xí)了不少程序設(shè)計(jì)類課程,但畢業(yè)時(shí)編程能力還不是十分理想。如何激發(fā)學(xué)生學(xué)習(xí)程序設(shè)計(jì)課程的興趣、提高編程能力,很值得探討。
扎實(shí)的基礎(chǔ)知識(shí)是提高編程能力的前提。掌握好編程基本知識(shí)、基本語句語法是培養(yǎng)學(xué)生編程能力的基石。數(shù)據(jù)類型,變量的定義及賦值,各種運(yùn)算符以及不同類型變量可以參與的運(yùn)算、三種常見的算法結(jié)構(gòu):順序、分支和循環(huán)等等,都是學(xué)生需熟練掌握的基本知識(shí)。三種算法結(jié)構(gòu)也是程序初學(xué)者常接觸的算法結(jié)構(gòu),靈活運(yùn)用這些算法,是培養(yǎng)學(xué)生編程能力必備能力。要求學(xué)生掌握和透徹理解基礎(chǔ)知識(shí),這是提高編程能力必經(jīng)橋梁。
良好的編程風(fēng)格對(duì)于學(xué)生編程能力的提高是非常重要的,良好的編程風(fēng)格,易于程序的閱讀,便于理解,也利用程序錯(cuò)誤的修正。源代碼的邏輯簡(jiǎn)明清晰,是良好編程風(fēng)格的表現(xiàn)之一。良好的編程風(fēng)格可以主要從以下幾個(gè)方面做起:
(1)命名含義鮮明的標(biāo)識(shí)符。自定義標(biāo)識(shí)符應(yīng)見名知意,最好含有含義鮮明的文字。這些文字能準(zhǔn)確地表示程序?qū)ο笏淼膶?shí)體,便于自己或他人閱讀理解程序,如定義一個(gè)用戶名變量,可命名為userName。如果標(biāo)識(shí)符采縮寫形式,則應(yīng)有統(tǒng)一一致的縮寫規(guī)則,最好是能給每個(gè)標(biāo)識(shí)符加注釋,說明其作用、代表的實(shí)體、作用域等。
(2)添加適當(dāng)?shù)淖⑨尅3绦蜃⑨屖浅绦騿T日后對(duì)程序修改和維護(hù)的重要參考。適當(dāng)正確程序注釋也是幫助程序員讀者理解程序的重要手段。例如用戶自定義的方法或函數(shù),在其前面應(yīng)有注釋塊,主要包括這些說明:函數(shù)功能的描述,形式參數(shù)的說明,返回值的說明等。為每個(gè)類添加注釋,說明這個(gè)類有多少個(gè)全局變量及私有成員,多少個(gè)函數(shù),完成什么任務(wù)。為私有成員及全局變量也添加注釋,說明其含義。對(duì)有一定難度的算法也添加注釋,這也可以加強(qiáng)學(xué)生的理解,鞏固知識(shí)。
(3)結(jié)構(gòu)化的程序風(fēng)格。程序的代碼的層次應(yīng)用采用階梯式,同一層次的代碼右對(duì)齊,下一級(jí)層次的代碼比上一級(jí)代碼右縮4 個(gè)字符位,即采用一致性的縮時(shí),增強(qiáng)代碼的可讀性,也易于代碼的排錯(cuò)。
編寫程序過程中,錯(cuò)誤是在所難免的,程序調(diào)試是程序設(shè)計(jì)中重要的一環(huán)。能準(zhǔn)確找出程序錯(cuò)誤所在并能快速改正錯(cuò)誤,也是程序設(shè)計(jì)能力的重要體現(xiàn)之一。程序錯(cuò)誤主要包括兩種:語法錯(cuò)誤和邏輯錯(cuò)誤。語法錯(cuò)誤在程序編譯階段系統(tǒng)會(huì)提示錯(cuò)誤之處,相對(duì)較易修改。邏輯錯(cuò)誤是指程序編譯沒有錯(cuò)誤,程序能夠執(zhí)行,但不能得到預(yù)期想要的結(jié)果,一般是編程邏輯有問題,這種錯(cuò)誤較難發(fā)現(xiàn)。
提高學(xué)生程序調(diào)試能力,盡快修正錯(cuò)誤,可從以下幾個(gè)方面做起:
(1)熟悉常見的語法錯(cuò)誤。在授課中,教師可將平時(shí)學(xué)生易出現(xiàn)的程序設(shè)計(jì)故意設(shè)置在程序中,讓學(xué)生真真切切看到錯(cuò)誤提示,師生共同分析錯(cuò)誤原因,修改錯(cuò)誤,加強(qiáng)學(xué)生對(duì)錯(cuò)誤的認(rèn)識(shí)。對(duì)于初學(xué)者,我們要求學(xué)生將錯(cuò)誤提示及修正方法記錄下來,日積月累,學(xué)生解決常見錯(cuò)誤就輕車熟路了。
(2)使用逐語句執(zhí)行。即一條一條逐條語句執(zhí)行,如果碰到函數(shù)調(diào)用,系統(tǒng)會(huì)進(jìn)入到函數(shù)里面。利用逐語句不僅可以幫助學(xué)生找出程序語句的錯(cuò)誤,也可幫助理解一些語句的執(zhí)行原理。如分支語句、循環(huán)語句,尤其是多重循環(huán)語句,可以逐語句執(zhí)行幫助學(xué)生理解語句執(zhí)行過程。逐語句執(zhí)行時(shí),在編譯系統(tǒng)提供的局部變量欄,可以清楚看到每條語句運(yùn)行的時(shí)候,語句中包含的變量的數(shù)值的變化,這樣可發(fā)現(xiàn)程序在某個(gè)語句沒按自己的設(shè)計(jì)思路運(yùn)行,幫助學(xué)生找出程序的一些邏輯錯(cuò)誤。
(3)添加斷點(diǎn)。當(dāng)程序較復(fù)雜時(shí),可在程序可能出錯(cuò)的地方或主要算法前添加斷點(diǎn),程序執(zhí)行到此處時(shí),暫時(shí)停下,用戶可觀察一些重要變量的值,也可以將程序執(zhí)行轉(zhuǎn)換為逐語句調(diào)試,這樣可加快程序調(diào)試的速度。
程序設(shè)計(jì)類課程是實(shí)踐性很強(qiáng)的課程,教學(xué)做一體化十分有利培養(yǎng)學(xué)生程序設(shè)計(jì)能力。傳統(tǒng)上課方式是先上理論課,然后再到機(jī)房上實(shí)驗(yàn)課,這種教學(xué)模式易造成理論與實(shí)踐脫節(jié)。教學(xué)做一體化,教學(xué)活動(dòng)全部在機(jī)房,講練無縫結(jié)合,根據(jù)需要學(xué)生可隨時(shí)實(shí)踐學(xué)習(xí)內(nèi)容,深化學(xué)生對(duì)知識(shí)的理解,一些程序設(shè)計(jì)想法也能即時(shí)得到驗(yàn)證,也保證了學(xué)生實(shí)踐時(shí)間。教學(xué)做一體化模式下,學(xué)生學(xué)習(xí)積極性也高,課堂氣氛好,學(xué)生實(shí)操能力也有很大提高。
案例教學(xué)法、討論教學(xué)法和項(xiàng)目教學(xué)法等多種教學(xué)方法相結(jié)合。教學(xué)案例源于生活實(shí)際,具有一定的代表性和趣味性,學(xué)生感興趣,理解也相對(duì)容易。設(shè)計(jì)難度較大的程序時(shí),引入討論教學(xué)法。組織小組討論分析程序流程,通過討論,集思廣義,學(xué)生思路也逐步清晰,利于培養(yǎng)學(xué)生編程能力。挑出有代表性的小組討論結(jié)果,全班討論,大家可提出自己的疑問或改進(jìn)方法等,激發(fā)學(xué)生主動(dòng)思維。課堂發(fā)言也記入平時(shí)成績(jī),使學(xué)習(xí)愿提出問題,敢于展示自己想法,這樣課堂氣氛也活躍,利于開展教學(xué)。好的思路給予及時(shí)的表揚(yáng),欠完善的想法給予及時(shí)的鼓勵(lì)和引導(dǎo)。程序設(shè)計(jì)課的綜合實(shí)訓(xùn)階段,引入綜合項(xiàng)目,如“班級(jí)管理系統(tǒng)”、“圖書管理系統(tǒng)”、“倉庫管理系統(tǒng)”等,與數(shù)據(jù)庫課程相結(jié),完成項(xiàng)目基本功能的設(shè)計(jì)與制作,提高學(xué)生綜合運(yùn)用能力,也加強(qiáng)對(duì)編程的認(rèn)識(shí)。項(xiàng)目教學(xué)法中采用“邊學(xué)邊做,邊做邊學(xué)”的實(shí)操式上課,學(xué)生運(yùn)用所學(xué)知識(shí)設(shè)計(jì)項(xiàng)目,也在項(xiàng)目制作中學(xué)習(xí)新知識(shí),用知識(shí)做起項(xiàng)目,用項(xiàng)目帶動(dòng)學(xué)習(xí),提高學(xué)生實(shí)際動(dòng)手和編程能力。
選擇有代表性、典型的程序,與學(xué)生一起讀,要讀明白程序中每條語句的作用是什么、整個(gè)程序的作用是什么,輸入或輸出是什么,學(xué)習(xí)優(yōu)秀的程序算法。讀算法類同的程序,要求學(xué)生比較哪種算法更快,各程序優(yōu)點(diǎn)是什么,這樣可多激發(fā)學(xué)生思考,加強(qiáng)理解。在讀程序過程,可為學(xué)生設(shè)置一些問題,思考能不能用其它方法同樣實(shí)現(xiàn)程序功能,這樣可加強(qiáng)對(duì)所學(xué)知識(shí)的理解,開拓學(xué)生思維,逐步培養(yǎng)編程思維。
在讀懂程序的基礎(chǔ)上,積極鼓勵(lì)學(xué)生模仿程序編寫類同的程序。如學(xué)習(xí)了求1 至100 的累加和的程序,可要求學(xué)生求1 至10 的累乘,或求1 至100 中所有偶數(shù)或奇數(shù)的和等。模仿優(yōu)秀有代表性的程序,不僅學(xué)習(xí)優(yōu)秀程序設(shè)計(jì)方法,潛移默化地培養(yǎng)學(xué)生良好的編程習(xí)慣,也升華學(xué)生對(duì)程序算法、程序語法的理解,可謂一舉多得。
經(jīng)過上面兩個(gè)階段的學(xué)習(xí)和探索,學(xué)生有了一定的編程基礎(chǔ)。設(shè)計(jì)一些與學(xué)生生活聯(lián)系緊密的題目,由學(xué)生自主編程。題目應(yīng)由小到大,從簡(jiǎn)單到復(fù)雜,逐步增加難度,要達(dá)到一定的數(shù)量,學(xué)生練習(xí)多了,自主編寫程序興趣、自信心和能力就逐步培養(yǎng)起來了。
為了促使學(xué)生重視上機(jī)實(shí)踐、主動(dòng)學(xué)習(xí)和激發(fā)學(xué)生編程的熱情,我們改變課程傳統(tǒng)單一考核方法,采取多元化考核方法。課程考核成績(jī)包括期末考試成績(jī)(占50%左右)、平時(shí)作業(yè)(占25%左右)、課堂實(shí)操練習(xí)(占25%左右)等。課程的期末考試改變傳統(tǒng)的僅理論考試,改為由筆試和上機(jī)實(shí)操兩部組成,各占50%。筆試主要考核學(xué)生基本理論知識(shí)掌握情況及讀程序?qū)懗鲞\(yùn)行結(jié)果的能力,上機(jī)操作主要考核學(xué)生補(bǔ)充程序、程序調(diào)試和自主編程能力,這樣使學(xué)生重視程序編寫練習(xí),提高自主編程能力。
從近幾年的教學(xué)實(shí)踐看,重視基礎(chǔ)知識(shí)的學(xué)習(xí),加強(qiáng)良好編程習(xí)慣的培養(yǎng),重視實(shí)踐教學(xué),結(jié)合教學(xué)做一體化教學(xué)模式,開展案例教學(xué)法、討論教學(xué)法和項(xiàng)目教學(xué)法相結(jié)合,不僅能提高學(xué)生學(xué)習(xí)程序設(shè)計(jì)課程的積極性和主動(dòng)性,也利于提高學(xué)生分析問題和解決問題的能力,提高學(xué)生編程能力,為后續(xù)的專業(yè)學(xué)習(xí)奠定基礎(chǔ)。
[1]中國高等職業(yè)院校計(jì)算機(jī)教育改革課題研究組.中國高職院校計(jì)算機(jī)教育課程體系[M].北京:中國鐵道出版社,2007.
[2]孫浩,何曉紅,等.錯(cuò)誤調(diào)試在C 語言教學(xué)中的應(yīng)用[J].數(shù)字通信,2011(4):95-97
[3]侯春明.基于提升編程能力的高校計(jì)算機(jī)課程實(shí)訓(xùn)教改探索[J].中國電力教育,2013(28):163-164.
[4]章小莉,李曉東,等.也論“天下文章一大抄,看你會(huì)抄不會(huì)抄”[J].計(jì)算機(jī)教育,2009(7):72-74.
[5]靳紅梅.如何提高學(xué)生的編程能力[J].中國校外教育,2011(4):167.