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