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