C語言程序設計教學改革策略
時間:2022-06-20 15:10:03
導語:C語言程序設計教學改革策略一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。
摘要:文章首先分析了“C語言程序設計”教學存在的問題及成因,然后探討了產教融合背景下基于編程能力培養的“C語言程序設計”教學策略,包括通過案例教學,激發學生學習程序設計的興趣;培養學生形成良好的編程習慣;注重師資培養。
關鍵詞:編程能力;“C語言程序設計”教學;產教融合
近幾年,國家連續出臺《關于深化產教融合的若干意見》[1]等一系列的綱領性文件推進產教融合改革。基于這些文件的指導,深化產教融合、產學研結合成了應用型本科院校發展的必由之路[2]。產教融合背景下,普通本科院校逐漸向應用型轉變,致力于促進學生實踐能力、應用創新綜合素質提升,為當地企事業單位培養合適的應用型人才,這既符合國家產業政策需求,也是高校自身發展的必然選擇[3]。因此,探究產教融合背景下基于編程能力培養的“C語言程序設計”教學改革策略極為必要。
一、“C語言程序設計”教學存在的問題及成因
C語言自誕生之日起就一直活躍在信息技術的各個領域。如軟件開發、Linux開發、硬件驅動、游戲開發、單片機和嵌入式系統[4]。目前,在不同層次的高校,“C語言程序設計”課程開設的主要目的是使學生學習、掌握和運用計算思維中的抽象、遞歸、復用等思維方法[5],進行問題分析和程序設計,進而利用計算機來解決實際工作或工程方面的問題。而這就涉及編程能力的問題。何謂編程能力?實際就是一種解決問題的能力,即將現實問題進行分解和抽象,最終轉化為代碼邏輯的能力。在此過程中,個體對編程語言的靈活運用程度決定了其解決問題的能力。結合筆者所在學校“C語言程序設計”課程教學實際可以發現:在C語言學習中,多數學生通過學習能夠掌握編程語言本身的語法、語句結構,具備較為簡單的算法思維,但是在面對一些較復雜或有難度的問題編程時,則表現得無從下手,這主要還是存在編程能力不足的問題。究其主要原因,大概有以下幾個方面:第一,目前多數大一學生對于編程學習是零基礎,其對于編程語言的學習和運用需要一個適應的過程,而大部分教師在授課中著眼于編程語言本身,按照一般教材的系統性知識結構進行教學,這就給學生造成“編程真復雜”的不良印象,從而降低了學習“C語言程序設計”課程的興趣;第二,由于學院壓縮學時,而“C語言程序設計”課程知識內容比較多,教師為了趕進度,不能在某一階段的知識教學中分配過多時間,最后的結果就是許多學生無法及時掌握并消化“C語言程序設計”的相關知識,而且教師也難以在有限的課堂教學時間內對學生的編程能力進行充分的訓練和強化,使得學生對解決復雜問題的編程比較茫然,教學效果不盡如人意;第三,學生對于編程的學習缺乏追求精益求精、創新創造的精神[6]。
二、產教融合背景下基于編程能力培養的“C語言程序設計”教學策略
(一)通過案例教學,激發學生學習程序設計的興趣
學習程序設計,就是讓學生運用學到的知識解決實際問題。這就需要教師在教學中列舉一些貼近現實生活的案例,讓學生了解到實際問題的解決方法,以激發學生的學習興趣。具體而言,教師需要將來源于現實生活、具有一定復雜度的問題引入課堂教學,引導學生進行分析抽象,找到解決問題的方法和步驟,即設計算法,然后用C語言中提供的語法和結構進行編程,從而解決實際問題。現在單片機中的編程大多采用C語言編程,因此教師可以列舉一些有趣的案例,將案例進行簡化,從而引起學生的興趣。例如,現實生活中著火了,會發出警報聲;煤氣泄露了,也會發出警報聲,教師可以列舉這些案例,引導學生用學到的編程知識來控制喇叭發出警報聲。那么,如何通過編程實現報警呢?這里可以引入單片機中的案例,即用單片機制作一個用開關控制的簡易警報器,具體可采用8051+Proteus進行仿真,通過仿真軟件很快就能聽到警報聲。通過K1開關控制警報器工作,當開關閉合發出警報聲。這里就要調用警報函數,通過調節報警函數參數就可發出不同頻率的聲音,進而模擬真實環境下的警報聲。在這一案例中,教師首先可以讓學生知道函數的定義及使用、位運算的操作;其次要引導學生進一步思考,使其明白只要是用到警報器的,這個程序基本上稍做改動就可以使用。通過這個案例,學生能真正感受到通過軟件編程可以驅動硬件喇叭發聲,從而激發學習編程的興趣。通過類比,教師還可以引入日常工作、生活中可能遇到的類似事例,讓課堂變得活躍起來。值得注意的是,對于初學者,教師在選擇項目式案例時,盡量不要選擇過于復雜、難度偏高的案例。
(二)培養學生形成良好的編程習慣
在“C語言程序設計”教學中,教師要注意培養學生良好的編程習慣,具體可以從以下六個方面著手。1.要求學生嚴格按照規范編寫程序。每種編程語言都有一套規范,C語言也不例外。在“C語言程序設計”教學中,教師應要求學生嚴格按照規范編寫程序,這樣既能讓代碼易于閱讀,同時也能減少bug數量。具體實踐時,首先,函數和變量等命名要做到“見名知意”。通常情況下,變量命名第一個單詞首字母小寫,余下的單詞首字母大寫;函數命名每個單詞首字母都大寫。往往一個好的項目結構,打開文件夾看到一列文件名,就能知道大概的層次是怎樣的。對于文件中的代碼,文件在開頭給整體思路做大段注釋,剩下的只給比較晦澀的部分做解釋,且注釋應做到盡量簡潔。不僅如此,代碼風格也應該統一,同時確保排版優美,括號的位置及每行長度等都要按照規范編寫。其次,代碼結構要層次邏輯清晰。為了方便閱讀,要盡量把握好代碼的層次結構,一段代碼里有幾層,有判斷、有循環等,該縮進的要縮進,盡量避免大量使用循環嵌套和條件嵌套。最后,要把綜合功能模塊拆分成多個獨立功能的模塊,而不是所有代碼都放到一個main函數,即良好的編程風格要把代碼的規模控制得盡可能小。2.要求學生多動手編程。在學習的過程中,大部分學生說“一聽就會,一寫就廢”,感覺編程無從下手。而要想解決這一問題,教師應要求學生多動手編程。具體實施時,教師首先要選擇經典的教材,指導學生把教材中的例子輸入代碼編輯器,讓代碼跑起來,然后再嘗試改變其中一部分代碼,并試著用其他方法來實現這些代碼。比如,C語言中,把用while語句實現的循環改為用dowhile語句或for語句實現,并用不同的排序算法實現某門課程成績升序排序等。通常,學生剛開始學習編程時,將書上的例題原封不動輸入電腦,別人運行沒問題,但自己編譯代碼就報錯,大多情況下是因為用了中文的雙引號或分號,還有就是大括號少寫了一部分。語法出錯比較容易解決,難的是邏輯錯誤,往往問題比較多的就是循環結構、數組越界、函數調用和指針。遇到這些難點時,學生可通過請教教師或同伴,將“學中做”和“做中學”結合起來,學以致用。同時教師也要指導學生使用搜索引擎,尋找解決問題的方法和途徑。如此,通過對代碼問題的解決,學生的編程能力也能逐漸得到提高。3.鼓勵學生多讀優質代碼。教師除了讓學生多動手進行編程練習,還要鼓勵他們多閱讀專業人員編寫的優質代碼。優質代碼不但功能強大,而且高內聚低耦合,模塊化特點鮮明,使用者很容易上手,不易出錯。學生在閱讀代碼時,要先查看該代碼的文檔,以了解代碼的目的和實現的功能,然后從代碼目錄文件結構中查看有哪些模塊,再從每個文件中查看模塊信息,熟悉這些模塊之間的參數如何傳遞及模塊功能的具體實現細節[7]。由于模塊間通過參數傳值和傳地址是有區別的。如一個函數,它的功能是實現兩個變量值的交換。學生剛開始學編程,通常情況下會把實參的值傳給形參,然后通過運行會發現調用交換函數并不能實現交換功能。而通過把實參的地址傳給形參,調用交換函數就能實現兩個變量值的交換。另外,學生在閱讀好的代碼時,還要學習借鑒別人模塊化的編程思路和方法,兼容并包,博采眾家之長,以逐步提高自身的編程能力。4.引導學生多做編程總結。對于編程初學者,教師要引導學生寫編程總結。這里總結知識不是把自己學到的東西按照教師的說法一字不漏地整理下來,而是結合自己對編程的理解和應用進行整理。比如,學生可以借助思維導圖,將編程中遇到的一些問題進行分類,記錄該類問題如何解決;對一些好的算法和編程思想應如何實現及其應用場合也要進行分類總結。這樣以后遇到類似的問題,就可以運用這些總結出的方法進行解決。此外,學生還可以將總結分享給同學進行探討,一方面可加深自己對編程知識的理解,另一方面也可學習其他同學好的經驗和做法。5.鼓勵學生多參加比賽和考試。教師要引導和鼓勵學生積極參加全國計算機等級考試及程序設計大賽等活動,使其通過等級考試檢驗自己是否真正掌握編程知識。對于學生而言,參加設計大賽可以發現自己的不足與差距,同時也能開闊眼界。程序設計大賽的題目大多都是聚焦各行各業當下最熱點、最迫切需要解決的實際生產生活問題。比如,設計“美團騎手送餐最短路徑”這一題目,既能解決實際產業中出現的問題,又能促進產業發展和教育的有機融合。同時,學生參加這類型的程序設計大賽,不僅能夠提升編程能力,激發創新潛能,還能促進團結協作、溝通交流,形成團隊合作精神,這些對學生以后的學習和未來發展都是難得的精神財富。6.引導學生追求精益求精、創新創造的精神。在“C語言程序設計”教學中,教師應該將追求“敬業、精益、專注、創新”的工匠精神融入日常教學。比如,瑞士手表之所以暢銷世界、成為經典,是因為制表匠對事業的敬畏和熱愛,對每一個零件、每一道工序、每一塊手表都精心打磨、專心雕琢、追求卓越。同樣,編程也需要編程人員對編寫的代碼精雕細琢,一遍一遍地打磨優化,讓代碼的質量更好,運行效率更高。還有在C語言編程中,對于復雜問題的編程從來都不是一步到位的,經常會遇到程序運行失敗的情況,要反復修改錯誤并調試。比爾·蓋茨締造了世界著名的軟件公司———微軟。微軟對每一個員工都會“灌輸”正確對待失敗、尊重失敗的思想,在微軟工作的人從不懼怕失敗,他們將失敗看作是任何事情走向成功的鋪墊。同樣,學習編程也要不怕失敗,要內心篤定,且有著眼于細節的耐心、執著、堅持的專注精神。自改革開放以來,“漢字激光照排系統之父”王選、“中國第一、全球第二的充電電池制造商”王傳福和從事特高壓、智能電網研究運行的電力工人等都是工匠精神的優秀傳承者[8],教師可鼓勵學生向他們學習,培養學生精益求精、創新創造的精神,激發學生學習編程的熱情,提高學生的綜合素質。
(三)注重師資培養
國家大力提倡產教融合的當下,對教師用編程解決實際問題的能力提出了更高的要求,但是大部分專業教師沒有企業工作經歷,缺乏實踐經驗和崗位技能,缺少在企業一線進行項目研發的實踐經驗。因此,學校要加大“雙師型”教師隊伍的建設力度,做到“雙管齊下”。具體而言,一方面,學校要聘請企業資深技術人員來校進行技術講座,開展實踐技能指導,讓學生能夠了解實際項目的開發流程并逐步提升職業素質,為后續在企業順利進行項目開發打基礎;另一方面,學校要安排骨干教師進入企業一線,深度參與企業的生產研發過程,以豐富實踐經驗和提升工程實踐能力,從而使教師回校后能將在企業一線掌握的知識、技能、方法進行歸納總結、提煉、提升,并融入教學活動[9]。例如,教師可引入校企實踐課程,將產業實際與課程教學相結合,并以真實的工作任務為載體,讓學生自主參與實踐,將專業知識、技能和素質進行融合,更有效地指導學生進行編程實踐,以激發學生學習的積極性和主動性,提升學生解決復雜問題的能力[10]。
三、結語
在產教融合的大環境下,“C語言程序設計”教學要培養學生通過分析行業問題,運用編程解決該領域相關問題的能力。編程能力的培養和提升非常重要,但是編程能力不是一蹴而就的,需要學生多動手練習,多讀優質代碼,多總結,從而在實踐活動中提升編程能力。同時,教師也要通過參與企業項目研發,不斷提升自身的教學技能和工程實踐能力,這樣才能培養學生精益求精、創新創造的精神,為社會培養出更多合格的應用型人才。
作者:張亞紅 陳輝 王也 單位:桂林航天工業學院計算機科學與工程學院 桂林電子科技大學計算機與信息安全學院
- 上一篇:傳統新聞編輯新媒體思維培養策略
- 下一篇:單純性肥胖對兒童神經心理發育的影響