夏海英
【摘 要】通過對藍(lán)橋杯軟件大賽備賽培訓(xùn)進(jìn)行總結(jié),綜合分析競賽類學(xué)生的編程能力和素質(zhì),探索可行的培訓(xùn)方案,提出競賽類學(xué)生C語言編程能力培養(yǎng)的方法。
【關(guān)鍵詞】C語言 藍(lán)橋杯軟件大賽 編程
【中圖分類號】 G 【文獻(xiàn)標(biāo)識碼】 A
【文章編號】0450-9889(2015)07C-0034-02
藍(lán)橋杯軟件大賽是由教育部高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會主辦,由中國軟件行業(yè)協(xié)會協(xié)辦的全國性軟件大賽,旨在推動軟件開發(fā)技術(shù)的發(fā)展,促進(jìn)軟件專業(yè)技術(shù)人才培養(yǎng),向軟件行業(yè)輸送具有創(chuàng)新能力和實(shí)踐能力的高端人才,提升高校畢業(yè)生的就業(yè)競爭力,全面推動行業(yè)發(fā)展及人才培養(yǎng)進(jìn)程,并且形成了立足行業(yè),結(jié)合實(shí)際,實(shí)戰(zhàn)演練,促進(jìn)就業(yè)的特色。藍(lán)橋杯軟件大賽的題目新穎,與現(xiàn)實(shí)結(jié)合,不僅涉及C語言中結(jié)構(gòu)、數(shù)組、指針、文件操作、遞歸、數(shù)據(jù)結(jié)構(gòu)等知識,還涉及諸多高等數(shù)學(xué)知識。
參加這類全國性的軟件競賽,對培養(yǎng)大學(xué)生的創(chuàng)新思維能力,提高編程能力有很大的幫助。C語言課程通常面向大一新生,這些學(xué)生的學(xué)習(xí)觀念和方法都有待轉(zhuǎn)變和調(diào)整,學(xué)習(xí)的主動性還有待增強(qiáng)和提高,若想在全國性的比賽中取得較好的成績,必須組織參賽學(xué)生進(jìn)行系統(tǒng)訓(xùn)練。本文通過對藍(lán)橋杯軟件大賽備賽培訓(xùn)進(jìn)行總結(jié),綜合分析了競賽類學(xué)生的編程能力和素質(zhì),探索學(xué)員綜合能力和素質(zhì)提高的新途徑。
一、普通高校學(xué)生C語言能力掌握程度分析
(一)普通高校的本科生掌握C語言現(xiàn)況
目前國內(nèi)大多數(shù)高等院校在程序設(shè)計(jì)基礎(chǔ)課程中選擇了C語言作為教學(xué)語言。大多數(shù)學(xué)生學(xué)習(xí)C語言的時(shí)間僅是上課時(shí)間,學(xué)習(xí)的內(nèi)容也僅限于老師教授的內(nèi)容。除少數(shù)學(xué)生能利用課余時(shí)間深入學(xué)習(xí)C語言外,大多數(shù)學(xué)生都是安于現(xiàn)狀,只求考試通過,拿到學(xué)分即可。普通高校的本科生學(xué)習(xí)C語言存在的問題有學(xué)習(xí)主動性不強(qiáng)、實(shí)踐能力弱、認(rèn)識不足等,具體見圖1。
(二)競賽類學(xué)生C語言掌握程度分析
雖然普通本科生學(xué)習(xí)C語言普遍存在上述問題,但參加C語言競賽的學(xué)生又有其自身的特點(diǎn),如掌握一定的C語言基礎(chǔ)、C語言的運(yùn)用能力參差不齊等,圖2分析了競賽類學(xué)生C語言的掌握特點(diǎn)。
二、如何提高競賽類學(xué)生的C語言編程能力
(一)培訓(xùn)方案
通過研究學(xué)生自身的特點(diǎn),以及學(xué)習(xí)的接受能力,為了使學(xué)生在比賽中取得較好的成績,提高競賽類學(xué)生的C語言編程能力,必須制定有效的培訓(xùn)方案,本次培訓(xùn)方案是根據(jù)學(xué)生的認(rèn)知過程制定的,基本分為成立賽前小組,基礎(chǔ)培訓(xùn),真題培訓(xùn),賽前模擬等階段,具體的培訓(xùn)流程圖見圖3。
圖1 普通高校的本科生學(xué)習(xí)C語言普遍存在的問題
圖2 競賽類學(xué)生C語言掌握程度分析圖
圖3 賽前培訓(xùn)流程圖
(二)賽前培訓(xùn)方案具體實(shí)施
1.賽前分組
賽前分組的主要依據(jù)是學(xué)生的編程能力和數(shù)學(xué)基礎(chǔ),以筆試的方式對學(xué)生進(jìn)行測試,并根據(jù)測試結(jié)果進(jìn)行分組,把學(xué)生分為基礎(chǔ)組和提高組。筆試的內(nèi)容主要分為兩大部分,第一部分為基礎(chǔ)題,包括C語言基礎(chǔ)以及數(shù)學(xué)基礎(chǔ);第二部分為編程能力題,包括代碼填空以及程序設(shè)計(jì)題。賽前分組的目的是因材施教,使基礎(chǔ)能力較好的同學(xué)率先進(jìn)行難度較高的訓(xùn)練,提高編程能力,然后帶動基礎(chǔ)較差的同學(xué),以先提高帶動后提高,最后達(dá)到共同提高。不同組別的培訓(xùn)強(qiáng)度不同,把具有同等能力的學(xué)生分在相同的組別里學(xué)習(xí),避免了因能力不同而使有些同學(xué)跟不上、聽不懂的情況發(fā)生,提高了學(xué)習(xí)速率和效率。
2.基礎(chǔ)培訓(xùn)
基礎(chǔ)培訓(xùn)是本次培訓(xùn)必不可少的環(huán)節(jié),不管是基礎(chǔ)組的同學(xué)還是提高組的同學(xué)都要進(jìn)行針對性的基礎(chǔ)培訓(xùn)?;A(chǔ)訓(xùn)練的內(nèi)容主要分為C語言基礎(chǔ)和數(shù)學(xué)基礎(chǔ)兩大塊,其具體內(nèi)容見圖4所示?;A(chǔ)培訓(xùn)是比賽的奠基石,所謂的難題,其解題要點(diǎn)都是各種基礎(chǔ)知識的綜合,只有基礎(chǔ)知識過關(guān)了,才能把難度較大的題目解答出來。通過對學(xué)生培訓(xùn)前與培訓(xùn)后各個(gè)基礎(chǔ)知識點(diǎn)的掌握程度進(jìn)行比較,可以發(fā)現(xiàn),經(jīng)過基礎(chǔ)培訓(xùn)后,學(xué)員們都有很大的進(jìn)步,具體對比結(jié)果如表1所示。
圖4 基礎(chǔ)培訓(xùn)內(nèi)容
3.真題訓(xùn)練
真題訓(xùn)練是一個(gè)不可或缺的環(huán)節(jié),甚至可認(rèn)為是最重要的環(huán)節(jié)。真題培訓(xùn)的內(nèi)容是根據(jù)藍(lán)橋杯的試題內(nèi)容來制定,共分為三大部分:結(jié)果填空、代碼填空、程序設(shè)計(jì)。
結(jié)果填空:該部分的題目一般要求選手根據(jù)題目的描述,直接寫出結(jié)果。解題方法不作限制,可用純數(shù)學(xué)方法解得答案,也可自編代碼,運(yùn)行得出結(jié)果。在結(jié)果填空的培訓(xùn)中,主要采取鼓勵(lì)多樣思維,引導(dǎo)理性思維的培訓(xùn)方案。在培訓(xùn)過程中,鼓勵(lì)和允許學(xué)生采用多種解題方法,發(fā)揮多樣思維,并引導(dǎo)學(xué)生用理性思維解決問題,培養(yǎng)學(xué)生的邏輯思維能力。
代碼填空:該部分一般要求選手在弄清給定代碼工作原理的基礎(chǔ)上,填寫缺失部分的代碼,該部分培訓(xùn)方案是要求學(xué)生縱觀整段代碼,把握主旨,之后通過尋找重要語句,進(jìn)一步理解題目的思路與結(jié)構(gòu),該部分的培訓(xùn)目的是引導(dǎo)學(xué)生逐漸掌握編程方法。
程序設(shè)計(jì):該部分題目一般要求選手設(shè)計(jì)的程序?qū)τ诮o定的輸入能給出正確的輸出結(jié)果。程序設(shè)計(jì)培訓(xùn)主要是培養(yǎng)學(xué)生的編程思路,引導(dǎo)學(xué)生解決問題時(shí)應(yīng)從分析開始,先進(jìn)行設(shè)計(jì)再寫程序清單,以尋求最優(yōu)解題方案。在做程序設(shè)計(jì)時(shí),有些學(xué)生一拿到題目,不作思考和設(shè)計(jì),便開始直接編寫程序,導(dǎo)致最后編寫的程序顯得雜亂無章,不便閱讀,發(fā)現(xiàn)錯(cuò)誤時(shí)便很難找到錯(cuò)誤源所在。為避免此情況發(fā)生,在程序設(shè)計(jì)的培訓(xùn)環(huán)節(jié),引導(dǎo)學(xué)生規(guī)范設(shè)計(jì)程序,養(yǎng)成良好的設(shè)計(jì)習(xí)慣,盡量做到以下步驟:
(1)分析問題,研制算法。在做程序設(shè)計(jì)題時(shí),首先應(yīng)該把題目看懂,然后對題目進(jìn)行分析,從整體到局部,了解題目的目的,以及所需解決的問題。對整體進(jìn)行分塊,確定所需變量及算法。
(2)畫出程序的功能模塊。經(jīng)過分析題目,確定程序的功能,此時(shí)應(yīng)對功能模塊進(jìn)行簡單的繪制,可用句子(偽代碼)描繪出程序的具體輪廓。首先把程序的功能模塊大致畫出來,然后再對每個(gè)模塊的功能進(jìn)行詳細(xì)的描述,最后把各個(gè)部分的聯(lián)系標(biāo)識出來,此過程使程序的功能更加直觀,便于編寫程序。
(3)根據(jù)程序功能模塊編寫程序。根據(jù)功能模塊圖的功能描述,把各個(gè)功能模塊的偽代碼用C語言編寫,并且作相應(yīng)的注釋,方便閱讀。
(4)調(diào)試程序,得出結(jié)果。最后運(yùn)行程序,得出結(jié)果。
真題訓(xùn)練主要目的是培養(yǎng)學(xué)生的做題思路,在編程中學(xué)習(xí)語法,在錯(cuò)誤中找到解決方法,在相互幫助、督促中達(dá)到提高。有討論,才有進(jìn)步,把別人的算法結(jié)合自己的算法,從而得到更優(yōu)的算法,這是本階段的訓(xùn)練目的。
在培訓(xùn)中要求學(xué)生準(zhǔn)備一個(gè)錯(cuò)題本,用來記錄做題時(shí)的錯(cuò)誤源,并且經(jīng)過自己的調(diào)試或者同學(xué)的幫助,找到解決方案,如果再次出現(xiàn)相同錯(cuò)誤,此錯(cuò)題本可方便同學(xué)找到解決方案。
4.賽前模擬
賽前模擬階段定在比賽前一個(gè)月,模擬的題型、題量與往年比賽題型相當(dāng),時(shí)間也與比賽的時(shí)間一樣。本階段屬于沖刺階段,除了培養(yǎng)學(xué)生的做題速度以外,同時(shí)還要訓(xùn)練學(xué)生的抗壓力和心理素質(zhì)。本階段是一個(gè)檢驗(yàn)成果的階段,把學(xué)生在賽前模擬的做題情況與參加培訓(xùn)前的做題情況作對比,可以發(fā)現(xiàn),學(xué)生的答題正確率有所提高。對比表如表2所示:
由上表可看出,經(jīng)過培訓(xùn)后,學(xué)生答題的正確率在各個(gè)模塊中都有所提高。
以上提出了如何提高競賽類學(xué)生C語言編程能力的一種可實(shí)現(xiàn)的方案,本培訓(xùn)方案符合學(xué)生的認(rèn)知過程,從學(xué)生的角度出發(fā),采取有針對性的措施,引導(dǎo)學(xué)生獨(dú)立思考,激發(fā)學(xué)習(xí)熱情,培養(yǎng)學(xué)習(xí)興趣,提高學(xué)生自身能力,培養(yǎng)同學(xué)的編程思維,提高參賽同學(xué)的綜合素質(zhì)。通過賽前模擬的結(jié)果可看出,學(xué)生經(jīng)過培訓(xùn)后各個(gè)模塊的答題正確率相比于未培訓(xùn)時(shí)都有所提高,但是提高的幅度并不大,主要原因是全國性比賽的題目具有創(chuàng)新性,具有不可預(yù)測性,需要運(yùn)用巧妙的方法解題。
【參考文獻(xiàn)】
[1]翟嘩,米增.“C語言程序設(shè)計(jì)”公共課程教學(xué)探究[J]. 內(nèi)蒙古師范大學(xué)學(xué)報(bào)(教育科學(xué)版),2011,24(11)
【基金項(xiàng)目】廣西高等教育教學(xué)改革工程項(xiàng)目(2014JGB114)
(責(zé)編 丁 夢)