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