C語言程序設(shè)計教學(xué)改革策略

時間:2022-06-20 15:10:03

導(dǎo)語:C語言程序設(shè)計教學(xué)改革策略一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

C語言程序設(shè)計教學(xué)改革策略

摘要:文章首先分析了“C語言程序設(shè)計”教學(xué)存在的問題及成因,然后探討了產(chǎn)教融合背景下基于編程能力培養(yǎng)的“C語言程序設(shè)計”教學(xué)策略,包括通過案例教學(xué),激發(fā)學(xué)生學(xué)習(xí)程序設(shè)計的興趣;培養(yǎng)學(xué)生形成良好的編程習(xí)慣;注重師資培養(yǎng)。

關(guān)鍵詞:編程能力;“C語言程序設(shè)計”教學(xué);產(chǎn)教融合

近幾年,國家連續(xù)出臺《關(guān)于深化產(chǎn)教融合的若干意見》[1]等一系列的綱領(lǐng)性文件推進產(chǎn)教融合改革?;谶@些文件的指導(dǎo),深化產(chǎn)教融合、產(chǎn)學(xué)研結(jié)合成了應(yīng)用型本科院校發(fā)展的必由之路[2]。產(chǎn)教融合背景下,普通本科院校逐漸向應(yīng)用型轉(zhuǎn)變,致力于促進學(xué)生實踐能力、應(yīng)用創(chuàng)新綜合素質(zhì)提升,為當(dāng)?shù)仄笫聵I(yè)單位培養(yǎng)合適的應(yīng)用型人才,這既符合國家產(chǎn)業(yè)政策需求,也是高校自身發(fā)展的必然選擇[3]。因此,探究產(chǎn)教融合背景下基于編程能力培養(yǎng)的“C語言程序設(shè)計”教學(xué)改革策略極為必要。

一、“C語言程序設(shè)計”教學(xué)存在的問題及成因

C語言自誕生之日起就一直活躍在信息技術(shù)的各個領(lǐng)域。如軟件開發(fā)、Linux開發(fā)、硬件驅(qū)動、游戲開發(fā)、單片機和嵌入式系統(tǒng)[4]。目前,在不同層次的高校,“C語言程序設(shè)計”課程開設(shè)的主要目的是使學(xué)生學(xué)習(xí)、掌握和運用計算思維中的抽象、遞歸、復(fù)用等思維方法[5],進行問題分析和程序設(shè)計,進而利用計算機來解決實際工作或工程方面的問題。而這就涉及編程能力的問題。何謂編程能力?實際就是一種解決問題的能力,即將現(xiàn)實問題進行分解和抽象,最終轉(zhuǎn)化為代碼邏輯的能力。在此過程中,個體對編程語言的靈活運用程度決定了其解決問題的能力。結(jié)合筆者所在學(xué)校“C語言程序設(shè)計”課程教學(xué)實際可以發(fā)現(xiàn):在C語言學(xué)習(xí)中,多數(shù)學(xué)生通過學(xué)習(xí)能夠掌握編程語言本身的語法、語句結(jié)構(gòu),具備較為簡單的算法思維,但是在面對一些較復(fù)雜或有難度的問題編程時,則表現(xiàn)得無從下手,這主要還是存在編程能力不足的問題。究其主要原因,大概有以下幾個方面:第一,目前多數(shù)大一學(xué)生對于編程學(xué)習(xí)是零基礎(chǔ),其對于編程語言的學(xué)習(xí)和運用需要一個適應(yīng)的過程,而大部分教師在授課中著眼于編程語言本身,按照一般教材的系統(tǒng)性知識結(jié)構(gòu)進行教學(xué),這就給學(xué)生造成“編程真復(fù)雜”的不良印象,從而降低了學(xué)習(xí)“C語言程序設(shè)計”課程的興趣;第二,由于學(xué)院壓縮學(xué)時,而“C語言程序設(shè)計”課程知識內(nèi)容比較多,教師為了趕進度,不能在某一階段的知識教學(xué)中分配過多時間,最后的結(jié)果就是許多學(xué)生無法及時掌握并消化“C語言程序設(shè)計”的相關(guān)知識,而且教師也難以在有限的課堂教學(xué)時間內(nèi)對學(xué)生的編程能力進行充分的訓(xùn)練和強化,使得學(xué)生對解決復(fù)雜問題的編程比較茫然,教學(xué)效果不盡如人意;第三,學(xué)生對于編程的學(xué)習(xí)缺乏追求精益求精、創(chuàng)新創(chuàng)造的精神[6]。

二、產(chǎn)教融合背景下基于編程能力培養(yǎng)的“C語言程序設(shè)計”教學(xué)策略

(一)通過案例教學(xué),激發(fā)學(xué)生學(xué)習(xí)程序設(shè)計的興趣

學(xué)習(xí)程序設(shè)計,就是讓學(xué)生運用學(xué)到的知識解決實際問題。這就需要教師在教學(xué)中列舉一些貼近現(xiàn)實生活的案例,讓學(xué)生了解到實際問題的解決方法,以激發(fā)學(xué)生的學(xué)習(xí)興趣。具體而言,教師需要將來源于現(xiàn)實生活、具有一定復(fù)雜度的問題引入課堂教學(xué),引導(dǎo)學(xué)生進行分析抽象,找到解決問題的方法和步驟,即設(shè)計算法,然后用C語言中提供的語法和結(jié)構(gòu)進行編程,從而解決實際問題?,F(xiàn)在單片機中的編程大多采用C語言編程,因此教師可以列舉一些有趣的案例,將案例進行簡化,從而引起學(xué)生的興趣。例如,現(xiàn)實生活中著火了,會發(fā)出警報聲;煤氣泄露了,也會發(fā)出警報聲,教師可以列舉這些案例,引導(dǎo)學(xué)生用學(xué)到的編程知識來控制喇叭發(fā)出警報聲。那么,如何通過編程實現(xiàn)報警呢?這里可以引入單片機中的案例,即用單片機制作一個用開關(guān)控制的簡易警報器,具體可采用8051+Proteus進行仿真,通過仿真軟件很快就能聽到警報聲。通過K1開關(guān)控制警報器工作,當(dāng)開關(guān)閉合發(fā)出警報聲。這里就要調(diào)用警報函數(shù),通過調(diào)節(jié)報警函數(shù)參數(shù)就可發(fā)出不同頻率的聲音,進而模擬真實環(huán)境下的警報聲。在這一案例中,教師首先可以讓學(xué)生知道函數(shù)的定義及使用、位運算的操作;其次要引導(dǎo)學(xué)生進一步思考,使其明白只要是用到警報器的,這個程序基本上稍做改動就可以使用。通過這個案例,學(xué)生能真正感受到通過軟件編程可以驅(qū)動硬件喇叭發(fā)聲,從而激發(fā)學(xué)習(xí)編程的興趣。通過類比,教師還可以引入日常工作、生活中可能遇到的類似事例,讓課堂變得活躍起來。值得注意的是,對于初學(xué)者,教師在選擇項目式案例時,盡量不要選擇過于復(fù)雜、難度偏高的案例。

(二)培養(yǎng)學(xué)生形成良好的編程習(xí)慣

在“C語言程序設(shè)計”教學(xué)中,教師要注意培養(yǎng)學(xué)生良好的編程習(xí)慣,具體可以從以下六個方面著手。1.要求學(xué)生嚴(yán)格按照規(guī)范編寫程序。每種編程語言都有一套規(guī)范,C語言也不例外。在“C語言程序設(shè)計”教學(xué)中,教師應(yīng)要求學(xué)生嚴(yán)格按照規(guī)范編寫程序,這樣既能讓代碼易于閱讀,同時也能減少bug數(shù)量。具體實踐時,首先,函數(shù)和變量等命名要做到“見名知意”。通常情況下,變量命名第一個單詞首字母小寫,余下的單詞首字母大寫;函數(shù)命名每個單詞首字母都大寫。往往一個好的項目結(jié)構(gòu),打開文件夾看到一列文件名,就能知道大概的層次是怎樣的。對于文件中的代碼,文件在開頭給整體思路做大段注釋,剩下的只給比較晦澀的部分做解釋,且注釋應(yīng)做到盡量簡潔。不僅如此,代碼風(fēng)格也應(yīng)該統(tǒng)一,同時確保排版優(yōu)美,括號的位置及每行長度等都要按照規(guī)范編寫。其次,代碼結(jié)構(gòu)要層次邏輯清晰。為了方便閱讀,要盡量把握好代碼的層次結(jié)構(gòu),一段代碼里有幾層,有判斷、有循環(huán)等,該縮進的要縮進,盡量避免大量使用循環(huán)嵌套和條件嵌套。最后,要把綜合功能模塊拆分成多個獨立功能的模塊,而不是所有代碼都放到一個main函數(shù),即良好的編程風(fēng)格要把代碼的規(guī)??刂频帽M可能小。2.要求學(xué)生多動手編程。在學(xué)習(xí)的過程中,大部分學(xué)生說“一聽就會,一寫就廢”,感覺編程無從下手。而要想解決這一問題,教師應(yīng)要求學(xué)生多動手編程。具體實施時,教師首先要選擇經(jīng)典的教材,指導(dǎo)學(xué)生把教材中的例子輸入代碼編輯器,讓代碼跑起來,然后再嘗試改變其中一部分代碼,并試著用其他方法來實現(xiàn)這些代碼。比如,C語言中,把用while語句實現(xiàn)的循環(huán)改為用dowhile語句或for語句實現(xiàn),并用不同的排序算法實現(xiàn)某門課程成績升序排序等。通常,學(xué)生剛開始學(xué)習(xí)編程時,將書上的例題原封不動輸入電腦,別人運行沒問題,但自己編譯代碼就報錯,大多情況下是因為用了中文的雙引號或分號,還有就是大括號少寫了一部分。語法出錯比較容易解決,難的是邏輯錯誤,往往問題比較多的就是循環(huán)結(jié)構(gòu)、數(shù)組越界、函數(shù)調(diào)用和指針。遇到這些難點時,學(xué)生可通過請教教師或同伴,將“學(xué)中做”和“做中學(xué)”結(jié)合起來,學(xué)以致用。同時教師也要指導(dǎo)學(xué)生使用搜索引擎,尋找解決問題的方法和途徑。如此,通過對代碼問題的解決,學(xué)生的編程能力也能逐漸得到提高。3.鼓勵學(xué)生多讀優(yōu)質(zhì)代碼。教師除了讓學(xué)生多動手進行編程練習(xí),還要鼓勵他們多閱讀專業(yè)人員編寫的優(yōu)質(zhì)代碼。優(yōu)質(zhì)代碼不但功能強大,而且高內(nèi)聚低耦合,模塊化特點鮮明,使用者很容易上手,不易出錯。學(xué)生在閱讀代碼時,要先查看該代碼的文檔,以了解代碼的目的和實現(xiàn)的功能,然后從代碼目錄文件結(jié)構(gòu)中查看有哪些模塊,再從每個文件中查看模塊信息,熟悉這些模塊之間的參數(shù)如何傳遞及模塊功能的具體實現(xiàn)細節(jié)[7]。由于模塊間通過參數(shù)傳值和傳地址是有區(qū)別的。如一個函數(shù),它的功能是實現(xiàn)兩個變量值的交換。學(xué)生剛開始學(xué)編程,通常情況下會把實參的值傳給形參,然后通過運行會發(fā)現(xiàn)調(diào)用交換函數(shù)并不能實現(xiàn)交換功能。而通過把實參的地址傳給形參,調(diào)用交換函數(shù)就能實現(xiàn)兩個變量值的交換。另外,學(xué)生在閱讀好的代碼時,還要學(xué)習(xí)借鑒別人模塊化的編程思路和方法,兼容并包,博采眾家之長,以逐步提高自身的編程能力。4.引導(dǎo)學(xué)生多做編程總結(jié)。對于編程初學(xué)者,教師要引導(dǎo)學(xué)生寫編程總結(jié)。這里總結(jié)知識不是把自己學(xué)到的東西按照教師的說法一字不漏地整理下來,而是結(jié)合自己對編程的理解和應(yīng)用進行整理。比如,學(xué)生可以借助思維導(dǎo)圖,將編程中遇到的一些問題進行分類,記錄該類問題如何解決;對一些好的算法和編程思想應(yīng)如何實現(xiàn)及其應(yīng)用場合也要進行分類總結(jié)。這樣以后遇到類似的問題,就可以運用這些總結(jié)出的方法進行解決。此外,學(xué)生還可以將總結(jié)分享給同學(xué)進行探討,一方面可加深自己對編程知識的理解,另一方面也可學(xué)習(xí)其他同學(xué)好的經(jīng)驗和做法。5.鼓勵學(xué)生多參加比賽和考試。教師要引導(dǎo)和鼓勵學(xué)生積極參加全國計算機等級考試及程序設(shè)計大賽等活動,使其通過等級考試檢驗自己是否真正掌握編程知識。對于學(xué)生而言,參加設(shè)計大賽可以發(fā)現(xiàn)自己的不足與差距,同時也能開闊眼界。程序設(shè)計大賽的題目大多都是聚焦各行各業(yè)當(dāng)下最熱點、最迫切需要解決的實際生產(chǎn)生活問題。比如,設(shè)計“美團騎手送餐最短路徑”這一題目,既能解決實際產(chǎn)業(yè)中出現(xiàn)的問題,又能促進產(chǎn)業(yè)發(fā)展和教育的有機融合。同時,學(xué)生參加這類型的程序設(shè)計大賽,不僅能夠提升編程能力,激發(fā)創(chuàng)新潛能,還能促進團結(jié)協(xié)作、溝通交流,形成團隊合作精神,這些對學(xué)生以后的學(xué)習(xí)和未來發(fā)展都是難得的精神財富。6.引導(dǎo)學(xué)生追求精益求精、創(chuàng)新創(chuàng)造的精神。在“C語言程序設(shè)計”教學(xué)中,教師應(yīng)該將追求“敬業(yè)、精益、專注、創(chuàng)新”的工匠精神融入日常教學(xué)。比如,瑞士手表之所以暢銷世界、成為經(jīng)典,是因為制表匠對事業(yè)的敬畏和熱愛,對每一個零件、每一道工序、每一塊手表都精心打磨、專心雕琢、追求卓越。同樣,編程也需要編程人員對編寫的代碼精雕細琢,一遍一遍地打磨優(yōu)化,讓代碼的質(zhì)量更好,運行效率更高。還有在C語言編程中,對于復(fù)雜問題的編程從來都不是一步到位的,經(jīng)常會遇到程序運行失敗的情況,要反復(fù)修改錯誤并調(diào)試。比爾·蓋茨締造了世界著名的軟件公司———微軟。微軟對每一個員工都會“灌輸”正確對待失敗、尊重失敗的思想,在微軟工作的人從不懼怕失敗,他們將失敗看作是任何事情走向成功的鋪墊。同樣,學(xué)習(xí)編程也要不怕失敗,要內(nèi)心篤定,且有著眼于細節(jié)的耐心、執(zhí)著、堅持的專注精神。自改革開放以來,“漢字激光照排系統(tǒng)之父”王選、“中國第一、全球第二的充電電池制造商”王傳福和從事特高壓、智能電網(wǎng)研究運行的電力工人等都是工匠精神的優(yōu)秀傳承者[8],教師可鼓勵學(xué)生向他們學(xué)習(xí),培養(yǎng)學(xué)生精益求精、創(chuàng)新創(chuàng)造的精神,激發(fā)學(xué)生學(xué)習(xí)編程的熱情,提高學(xué)生的綜合素質(zhì)。

(三)注重師資培養(yǎng)

國家大力提倡產(chǎn)教融合的當(dāng)下,對教師用編程解決實際問題的能力提出了更高的要求,但是大部分專業(yè)教師沒有企業(yè)工作經(jīng)歷,缺乏實踐經(jīng)驗和崗位技能,缺少在企業(yè)一線進行項目研發(fā)的實踐經(jīng)驗。因此,學(xué)校要加大“雙師型”教師隊伍的建設(shè)力度,做到“雙管齊下”。具體而言,一方面,學(xué)校要聘請企業(yè)資深技術(shù)人員來校進行技術(shù)講座,開展實踐技能指導(dǎo),讓學(xué)生能夠了解實際項目的開發(fā)流程并逐步提升職業(yè)素質(zhì),為后續(xù)在企業(yè)順利進行項目開發(fā)打基礎(chǔ);另一方面,學(xué)校要安排骨干教師進入企業(yè)一線,深度參與企業(yè)的生產(chǎn)研發(fā)過程,以豐富實踐經(jīng)驗和提升工程實踐能力,從而使教師回校后能將在企業(yè)一線掌握的知識、技能、方法進行歸納總結(jié)、提煉、提升,并融入教學(xué)活動[9]。例如,教師可引入校企實踐課程,將產(chǎn)業(yè)實際與課程教學(xué)相結(jié)合,并以真實的工作任務(wù)為載體,讓學(xué)生自主參與實踐,將專業(yè)知識、技能和素質(zhì)進行融合,更有效地指導(dǎo)學(xué)生進行編程實踐,以激發(fā)學(xué)生學(xué)習(xí)的積極性和主動性,提升學(xué)生解決復(fù)雜問題的能力[10]。

三、結(jié)語

在產(chǎn)教融合的大環(huán)境下,“C語言程序設(shè)計”教學(xué)要培養(yǎng)學(xué)生通過分析行業(yè)問題,運用編程解決該領(lǐng)域相關(guān)問題的能力。編程能力的培養(yǎng)和提升非常重要,但是編程能力不是一蹴而就的,需要學(xué)生多動手練習(xí),多讀優(yōu)質(zhì)代碼,多總結(jié),從而在實踐活動中提升編程能力。同時,教師也要通過參與企業(yè)項目研發(fā),不斷提升自身的教學(xué)技能和工程實踐能力,這樣才能培養(yǎng)學(xué)生精益求精、創(chuàng)新創(chuàng)造的精神,為社會培養(yǎng)出更多合格的應(yīng)用型人才。

作者:張亞紅 陳輝 王也 單位:桂林航天工業(yè)學(xué)院計算機科學(xué)與工程學(xué)院 桂林電子科技大學(xué)計算機與信息安全學(xué)院