白魚秀
(榆林學(xué)院 信息工程學(xué)院,榆林 719000)
C語言是目前最流行的程序設(shè)計語言之一,一直在計算機編程語言中占據(jù)數(shù)一數(shù)二的位置,在系統(tǒng)程序、嵌入式系統(tǒng)開發(fā)中占有不可替代的作用。學(xué)習(xí)“C語言程序設(shè)計”課程,可以掌握基本的編程技能,鍛煉計算思維方法,提高分析和解決問題的能力;了解計算機軟件的生成過程;便于進一步學(xué)習(xí)其它語言,C語言是其它編程語言的基礎(chǔ),容易學(xué)習(xí),使用方便?!癈語言程序設(shè)計”課程是一門理工科學(xué)生必修的教學(xué)實踐課程,通過學(xué)習(xí)“C語言程序設(shè)計”課程,理解計算機強大能力所在,更好的利用計算機解決本專業(yè)領(lǐng)域問題。
傳統(tǒng)的C語言教學(xué)方法,主要把教學(xué)重點放在C語言的語法等理論知識上,而對如何分析問題、解決問題很少涉及,忽略實踐編程,缺乏對學(xué)生自學(xué)能力、編程和調(diào)試能力的培養(yǎng)。目前存在的問題主要涉及以下幾個方面。
課程之初,傳統(tǒng)“C語言程序設(shè)計”教材前兩個章節(jié)都是在介紹程序的詞法、語法等理論知識。如果按照課本按部就班的講授,抽象的概念,枯燥的語法等晦澀難懂內(nèi)容[1],使得學(xué)生覺得C語言枯燥,不易理解,對程序設(shè)計的興趣和好奇心消失殆盡,打擊了學(xué)生的學(xué)習(xí)積極性。從而對C語言程序設(shè)計產(chǎn)生厭煩心理,失去學(xué)習(xí)的興趣,畏懼程序設(shè)計課程。
課程之中,學(xué)生在學(xué)習(xí)過程中不知道學(xué)習(xí)C語言能解決什么實際問題,感覺只是解決一些計算問題,求解水仙花數(shù)、完數(shù)和素數(shù)等[2]。實驗課時,冗繁的語法規(guī)則和編寫程序頻頻出錯,學(xué)生失去學(xué)好C語言程序的信心。進而,害怕自己編寫程序解決問題,只會照抄課本程序,把代碼原封不動的輸入電腦,當(dāng)編譯鏈接出現(xiàn)錯誤時,則束手無策,沒有調(diào)試解決問題的能力[3]。
課程之終,學(xué)生學(xué)習(xí)“C語言程序設(shè)計”課程一學(xué)期的效果是,只是掌握了C語言的概念,結(jié)構(gòu)等語法知識,可以看懂部分簡單的程序代碼,自己不能針對具體問題,獨立設(shè)計合理簡單的C語言程序算法解決問題[4]。甚至有的學(xué)生為了應(yīng)對考試,而死記硬背源程序代碼。不能真正掌握編程思想和編程能力[5]。
本案例教學(xué)法以“引入案例-分析案例-知識分解-編碼運行-深化案例”層層遞進的方式,激發(fā)學(xué)生學(xué)習(xí)興趣,增強實踐動手能力。
傳統(tǒng)的“C語言程序設(shè)計”教材通常分為8章。依次為C語言概述、數(shù)據(jù)類型運算符、程序控制結(jié)構(gòu)、函數(shù)、數(shù)組、指針、自定義數(shù)據(jù)類型和文件。各個章獨立分散,沒有一個案例融會貫通其中。本教學(xué)法把所有知識點以“學(xué)生成績管理系統(tǒng)”為主線重新劃分,優(yōu)化整合課程內(nèi)容,循序漸進,讓學(xué)生掌握C語言的各個知識點時,最終實現(xiàn)“學(xué)生成績管理系統(tǒng)”,實現(xiàn)學(xué)生成績的增加、刪除、修改、查找和統(tǒng)計等基本操作。
通過對 “學(xué)生成績管理系統(tǒng)”案例功能模塊的層層分析與實現(xiàn),由淺入深,逐步提出問題,引出新的知識點并進行代碼實踐解決問題,從而引發(fā)學(xué)生學(xué)習(xí)和思考,直至全面實現(xiàn)該系統(tǒng)。功能模塊的劃分以層層遞進實現(xiàn)該系統(tǒng)為主線,并把傳統(tǒng)C語言程序設(shè)計教材內(nèi)容貫穿在整個實現(xiàn)過程中。不再是單純的講授理論知識點,所有理論知識點的引入都是為了解決提出的新問題。
以“學(xué)生成績管理系統(tǒng)”為主線,把“C語言程序設(shè)計”教材內(nèi)容劃分為4章內(nèi)容,分別為輸入輸出、數(shù)據(jù)處理、程序結(jié)構(gòu)和構(gòu)造類型數(shù)據(jù)處理。此四章內(nèi)容涵蓋了“C語言程序設(shè)計”課程的所有知識點,各個章節(jié)知識點的劃分如表1所示。
表1 知識點劃分
(1)輸入輸出。任何C語言程序都必須有輸出。輸入輸出主要包含兩部分,基本輸入輸出和文件讀寫操作。首先是簡單學(xué)生的成績輸入,輸出顯示。講解輸入時引入基本數(shù)據(jù)類型,整形、浮點型和字符型。調(diào)用輸入輸出庫函數(shù),每次運行都必須重新輸入,并且結(jié)果無法長期保存,引入文件讀寫操作。講解文件讀寫操作過程中,引入指針的概念。指針是C語言程序的精華,通常指針內(nèi)容都是在教材最后章節(jié),學(xué)生對前面章節(jié)學(xué)的云里霧里,到指針更是一頭霧水。所以提前引入指針,使得學(xué)生提前接受和理解。編寫簡單程序代碼,輸入并輸出一個學(xué)生成績信息,如圖1所示。
學(xué)生成績管理系統(tǒng)請輸入學(xué)生的學(xué)號、姓名、英語、高數(shù)、C語言成績:1612230101 王博 84 79 89學(xué)號姓名英語高數(shù)C語言1612230101王博84.0079.0089.00Pressanykeytocontinue
圖1 學(xué)生相關(guān)信息
并更改數(shù)據(jù)類型,比較他們之間的區(qū)別。
(2)數(shù)據(jù)處理。向計算機系統(tǒng)輸入數(shù)據(jù),不是為了單純顯示數(shù)據(jù),主要是為了處理數(shù)據(jù)。計算這名學(xué)生總成績、平均分。引入算術(shù)、關(guān)系和邏輯等運算符,從而計算并顯示該學(xué)生的總成績和平均分。進一步,我們按五分制(優(yōu)秀、良好、中等、及格和不及格)顯示該名學(xué)生的平均成績,引入程序控制三大結(jié)構(gòu),順序、選擇和循環(huán),輸出如圖2所示。
(3)程序結(jié)構(gòu)。完成計算處理后,進一步增加增刪改查操作,引入結(jié)構(gòu)化程序設(shè)計“自頂向下、逐步求精”的思想和函數(shù)調(diào)用的概念。設(shè)計編寫不同功能函數(shù),實現(xiàn)成績的輸入、增加、刪除、修改、查詢、統(tǒng)計和輸出顯示等功能?!俺煽児芾硐到y(tǒng)”功能模塊圖,如圖3所示。
學(xué)生成績管理系統(tǒng)請輸入學(xué)生的學(xué)號、姓名、英語、高數(shù)、C語言成績:1612230101 王博 84 79 89學(xué)號姓名英語高數(shù)C語言1612230101王博84.0079.0089.00總成績平均成績五分制252.0084.00良好Pressanykeytocontinue
圖2 計算處理
(4)構(gòu)造類型數(shù)據(jù)處理。前3章的學(xué)習(xí),我們可以計算處理一個學(xué)生的成績,但是要計算一個班級50個同學(xué)的成績該如何解決。引入數(shù)組和結(jié)構(gòu)體的概念。結(jié)構(gòu)體封裝每個學(xué)生信息,數(shù)組保存班級學(xué)生人數(shù)。但是數(shù)組是靜態(tài)數(shù)據(jù)類型,更優(yōu)化的利用內(nèi)存空間,引入動態(tài)數(shù)據(jù)結(jié)構(gòu),鏈表操作,完成一個班級的學(xué)生成績管理,如圖4所示。
傳統(tǒng)“C語言程序設(shè)計”課程總課時為72學(xué)時(36理論學(xué)時+36實踐學(xué)時)。本教學(xué)法在原有大綱規(guī)定學(xué)時之內(nèi),同樣采用理論和實踐相結(jié)合的方式,但是把傳統(tǒng)的固定每章的驗證性實驗改為以“學(xué)生成績管理系統(tǒng)”的不斷擴展與優(yōu)化。并采用個人獨立和團隊合作兩步完成整個系統(tǒng)的開發(fā)。
首先,對每一章內(nèi)容,學(xué)生掌握課堂知識點后,直接進行實踐操作,獨立的完成簡單的代碼程序,讓學(xué)生在“做中學(xué)”中加深理論知識。這樣很大地提高學(xué)生的積極性,提高其探索發(fā)現(xiàn)問題,解決問題的能力。
其次,整個班級學(xué)生分小組完成“學(xué)生成績管理系統(tǒng)”的整合和調(diào)試運行,3個學(xué)生為一個小組,大家互相學(xué)習(xí)討論各個函數(shù)功能模塊的編程方法,學(xué)習(xí)好的編程技巧,修改調(diào)試程序,最終完成整個“學(xué)生成績管理系統(tǒng)”的整合。以小組為單位,不僅可以降低大家對獨立完成系統(tǒng)開發(fā)的恐懼感,而且可以促進大家相互學(xué)習(xí)、相互幫助的團隊協(xié)作精神,體會軟件開發(fā)的成就感。
傳統(tǒng)的考核方式為平時成績(30%)+筆試成績(70%),不能檢測出學(xué)生的編程能力及其真實水平。此考核方式不同于傳統(tǒng)的紙質(zhì)閉卷考試形式,主要分為系統(tǒng)考核(60%)和代碼改錯(40%)兩部分。
其一,每個小組實現(xiàn)和完善“學(xué)生成績管理系統(tǒng)”,提交課程報告并進行系統(tǒng)答辯,對其開發(fā)成果進行評分。同時,小組之間互相分享在開發(fā)系統(tǒng)時遇到的問題,以及如何分析和解決問題。
其二,為每一個小組根據(jù)“學(xué)生成績管理系統(tǒng)”系統(tǒng),分別設(shè)計不同程序段的代碼改錯,要求小組在2個小時內(nèi)通過編譯調(diào)試運行。最終根據(jù)每個小組修改的代碼程序段進行量化評分。
筆者依托榆林學(xué)院2017級計算機科學(xué)與技術(shù)專業(yè)學(xué)生,實踐了此C語言案例教學(xué)法。結(jié)果表明,用案例教學(xué)法授課的班級學(xué)生成績普遍高于傳統(tǒng)方式授課班級學(xué)生成績。
通過在計算機專業(yè)大一新生中運用該案例法進行“C語言程序設(shè)計”課程教學(xué),實際跟蹤學(xué)生學(xué)習(xí)該課程過程發(fā)現(xiàn),學(xué)生理論知識水平和實踐動手能力顯著提高。此方法極大的吸引了學(xué)生的學(xué)習(xí)興趣,調(diào)動了學(xué)生的實踐動手能力,激發(fā)了學(xué)生探索問題、解決問題的能力,使學(xué)生在實踐編程中理解和掌握了理論知識。
[1] 謝麗霞.基于混合式學(xué)習(xí)的“C語言程序設(shè)計”課程教學(xué)研究[J].教育教學(xué)論壇,2017(20):169-172.
[2] 項響琴.德國理念指導(dǎo)下的教學(xué)方法改革——以C語言課程為例[J].計算機教育,2013(21):37-41.
[3] 郭鵬,張海燕.地方高校轉(zhuǎn)型中的C語言課程改革研究與實踐[J].石家莊學(xué)院學(xué)報,2017(3):156-160.
[4] 徐亦丹,劉瑛.C語言程序設(shè)計案例教學(xué)法研究[J].電腦知識與技術(shù),2017(6):191-192.
[5] 項響琴.“無紙化”教學(xué)模式下創(chuàng)新型人才培養(yǎng)的研究與實踐[J].電腦知識與技術(shù),2015(35):87-88.