賈文晶 肖理慶
摘 ?要:在新工科教育背景下,針對(duì)傳統(tǒng)教學(xué)過程中存在的不足,從學(xué)生角度出發(fā),將理論教學(xué)與上機(jī)練習(xí)相結(jié)合,將課堂講授與編程應(yīng)用探討相結(jié)合,以函數(shù)編程為例,開展C語言層進(jìn)式課程教學(xué)設(shè)計(jì)研究。教學(xué)實(shí)踐表明,本文提出的C語言層進(jìn)式教學(xué)設(shè)過程計(jì)能夠有效提高課堂教學(xué)效果,增加師生互動(dòng)環(huán)節(jié),在提高學(xué)生自主學(xué)習(xí)能力和培養(yǎng)學(xué)術(shù)技術(shù)底蘊(yùn)方面得到了較好的反饋。
關(guān)鍵詞:C語言;層進(jìn)式;新工科
中圖分類號(hào): ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: ? ? ? 文章編號(hào):
1 引言
新工科背景下不斷推進(jìn)創(chuàng)新應(yīng)用型人才培養(yǎng)模式,目標(biāo)是為新時(shí)代培養(yǎng)具有專業(yè)能力的高素質(zhì)人才。隨著計(jì)算機(jī)技術(shù)的日益成熟,計(jì)算機(jī)產(chǎn)品的功能也越加強(qiáng)大,生活中的各行各業(yè)都跟計(jì)算機(jī)技術(shù)息息相關(guān),計(jì)算機(jī)技術(shù)的應(yīng)用日益廣泛。伴隨著社會(huì)的進(jìn)步,企業(yè)對(duì)從業(yè)人員的要求不僅僅在知識(shí)層面,還要有較強(qiáng)的計(jì)算機(jī)操作能力。既要能熟練應(yīng)用各計(jì)算機(jī)產(chǎn)品的本領(lǐng),又要有創(chuàng)新開發(fā)計(jì)算機(jī)產(chǎn)品的能力,所以熟練掌握一門計(jì)算機(jī)語言是當(dāng)今企業(yè)的就業(yè)需求[1]。
C語言是人與計(jì)算機(jī)交流的語言,也是編程愛好者學(xué)習(xí)編程的一門入門語言。作為一名計(jì)算機(jī)語言任課教師,已經(jīng)多年從事計(jì)算機(jī)語言工作任務(wù)。和大多數(shù)人一樣,接觸的第一個(gè)計(jì)算機(jī)語言就是C語言,眾多計(jì)算機(jī)語言為什么選擇它作為計(jì)算機(jī)的入門語言呢?經(jīng)過多年的任教和學(xué)習(xí),也終于懂得C語言雖然簡(jiǎn)單,作為高級(jí)語言的入門語言,但是其功能非常之強(qiáng)大。它的優(yōu)點(diǎn)主要體現(xiàn)在代碼量小、運(yùn)行速度快和可以訪問硬件等方面,所以目前操作系統(tǒng)就只能用C語言來寫[2]。對(duì)于工科專業(yè)的大學(xué)生來說,在學(xué)習(xí)初期同學(xué)們學(xué)習(xí)興趣的建立和學(xué)習(xí)過程中同學(xué)們自主編程能力的培養(yǎng)是至關(guān)重要的。從學(xué)生角度出發(fā),需要將理論教學(xué)與工程案例相結(jié)合,將課堂講授與編程應(yīng)用相結(jié)合,增加實(shí)踐教學(xué)的比重,讓同學(xué)們能夠參與到教學(xué)環(huán)節(jié)中去,從C語言學(xué)習(xí)中找到樂趣,才能愛上C語言去。除了建立學(xué)生對(duì)C語言課程的學(xué)習(xí)興趣,還要鍛煉同學(xué)們的自主編程能力,如何鍛煉同學(xué)們的自主編程能力呢?讓學(xué)生不再只依賴于課本例題,能夠利用網(wǎng)絡(luò)資源,多去讀一些經(jīng)典例題,做到舉一反三,遇到問題能自己解決。
2 ?C語言程序設(shè)計(jì)教學(xué)方法反思與課程教學(xué)內(nèi)容、教學(xué)目標(biāo)整合
目前國內(nèi)很多高校如合肥工業(yè)大學(xué)、西南交通大學(xué)、阜陽師范學(xué)院等均建立了C語言程序設(shè)計(jì)(實(shí)驗(yàn))教學(xué)平臺(tái),用C程序編程演示代替?zhèn)鹘y(tǒng)的板書,活躍了課堂氣氛,增加學(xué)生與老師之間的互動(dòng),讓學(xué)生更好的參與到課堂中,有效提高了學(xué)生學(xué)習(xí)C語言的積極性以及C語言程序設(shè)計(jì)課堂(實(shí)驗(yàn))教學(xué)質(zhì)量[3]。但在新工科的背景下,對(duì)就業(yè)人員C語言編程能力的要求也逐步提高針對(duì)傳統(tǒng)教學(xué)過程中存在的不足,本文提出以下幾點(diǎn)反思:(1)C語言數(shù)據(jù)類型多、知識(shí)點(diǎn)復(fù)雜,學(xué)生容易產(chǎn)生厭學(xué)情緒。學(xué)生計(jì)算機(jī)語言基礎(chǔ)薄弱,在興趣的激發(fā)下,初期大多數(shù)同學(xué)C語言學(xué)習(xí)動(dòng)力較足,后期隨著課程難度增加多數(shù)同學(xué)心有余而力不足,導(dǎo)致最終只有極少數(shù)同學(xué)掌握C程序編程能力;(2)學(xué)生對(duì)理論知識(shí)的掌握沒有在C編程實(shí)戰(zhàn)中得到演練。理論知識(shí)點(diǎn)在教師的講解下多數(shù)同學(xué)都能理解吸收,實(shí)驗(yàn)課在教師的帶領(lǐng)下也能編寫簡(jiǎn)單的程序,但課時(shí)有限,很少有同學(xué)會(huì)在課后練習(xí)C程序編程,這就導(dǎo)致很多同學(xué)知識(shí)點(diǎn)都學(xué)會(huì)了,并不知道怎么用;(3)學(xué)生慣性思維嚴(yán)重,解題思路不夠靈活。C語言功能十分強(qiáng)大,語法自由,只要思路清晰,程序員可以用C語言寫出任何程序,但現(xiàn)在學(xué)生思維不夠主動(dòng),編程方法受課本例題的束縛,出現(xiàn)錯(cuò)誤依賴?yán)蠋熑ソ鉀Q,即使掌握C程序編程能力也不能精通。根據(jù)以上情況,筆者結(jié)合本專業(yè)C語言教學(xué)情況,制定了C語言層進(jìn)式教學(xué)過程設(shè)計(jì),主要的教學(xué)目的為:
(1)讓同學(xué)們能夠駕馭C語言自主編程,熟練掌握C語言的三大語法結(jié)構(gòu)順序、選擇和循環(huán),熟練運(yùn)用數(shù)組、函數(shù)和指針來解決問題;
(2)讓喜歡C語言編程的同學(xué)能夠精通掌握它,分析解讀經(jīng)典C程序,將優(yōu)秀程序員的編程思維學(xué)為己用。
3 ?C語言層進(jìn)式教學(xué)過程設(shè)計(jì)
近幾年人工智能和大數(shù)據(jù)技術(shù)得到越來越多學(xué)者的關(guān)注,C語言作為大學(xué)生進(jìn)入大學(xué)校園的第一門計(jì)算機(jī)語言課,如何讓學(xué)生喜歡上C語言,提高學(xué)生們的編程能力變得尤為重要[4]。為達(dá)成以上教學(xué)目標(biāo),本文提出C語言層進(jìn)式教學(xué)過程設(shè)計(jì),本設(shè)計(jì)包括五個(gè)階段,興趣激發(fā),功能特點(diǎn)分析,經(jīng)典例題引入,知識(shí)點(diǎn)剖析,和編程應(yīng)用探討。以下本文以C程序編程的函數(shù)知識(shí)點(diǎn)切入,詳細(xì)介紹層進(jìn)式教學(xué)過程設(shè)計(jì)的主要方法,使學(xué)生們能夠主動(dòng)學(xué)習(xí),提高自主編程能力,能逐步掌握函數(shù)定義的語法結(jié)構(gòu),能熟練運(yùn)用函數(shù)去解決C編程中遇到的問題。
3.1 興趣激發(fā)
國外某知名教育家曾經(jīng)提到“成功的教育不在于強(qiáng)制,而在于鼓勵(lì)學(xué)生自主學(xué)習(xí)。”C語言作為計(jì)算機(jī)語言,其學(xué)習(xí)內(nèi)容和語言結(jié)構(gòu)對(duì)比自然語言的學(xué)習(xí),給同學(xué)們打開了一個(gè)嶄新的大門。自然語言是人與人之間溝通的語言,戰(zhàn)國策出“夫市之無虎,但是三人言而成虎?!弊匀徽Z言在表達(dá)上其主觀性更強(qiáng),容易產(chǎn)生歧義。C語言其作為機(jī)器語言要求準(zhǔn)確性極高,不能存在模棱兩可。這使得C語言的學(xué)習(xí)變得枯燥乏味,增加了學(xué)生們的學(xué)習(xí)難度,現(xiàn)在本文以C語言函數(shù)知識(shí)點(diǎn)切入,講解怎樣激起同學(xué)們學(xué)習(xí)C語言的興味[5]。
在學(xué)習(xí)函數(shù)之前首先要上學(xué)生明白為什么要學(xué)函數(shù),在課堂開始先引入這樣一段歷史典故,很多看過《三國演義》書和電視劇的肯定對(duì)以下描述并不陌生。司馬懿曰“諸葛孔明食少事煩,其能久乎!”司馬懿說完這段話沒多久,諸葛亮就去世了?!笆聼o巨細(xì),事必躬親”,諸葛亮的這種行為在管理學(xué)中是不被認(rèn)可的,管理學(xué)講究分工合作,以一人之力完成所有工作顯然大大降低了工作效率。對(duì)于C語言而言,簡(jiǎn)單的累加求和、比較大小等算法程序只有幾行或幾十行,但當(dāng)C語言用來編寫計(jì)算機(jī)系統(tǒng)或大型游戲時(shí),其程序可能是上千行或者上萬行。如果把這些上千行或者上萬行的程序作為一個(gè)C程序源文件,首先對(duì)于程序員來說從編寫到維護(hù)難度都非常大。上千行的C程序作為產(chǎn)品到讀者手中,閱讀起來也是非常困難的。每個(gè)程序完成各自的功能,這就是C程序函數(shù)的來源[6]。
3.2 功能特點(diǎn)分析
一個(gè)程序包括算法和數(shù)據(jù)兩部分,算法是一個(gè)C語言程序中最重要的部分,算法的好壞決定了程序的質(zhì)量,數(shù)據(jù)是程序的操作內(nèi)容。但是一個(gè)好的程序除了算法和數(shù)據(jù)之外,還需要程序結(jié)構(gòu)化設(shè)計(jì),程序結(jié)構(gòu)化設(shè)計(jì)的藝術(shù)就是將程序進(jìn)行模塊化的設(shè)計(jì)。函數(shù)是C語言進(jìn)行模塊化設(shè)計(jì)必不可少的一部分。如果把C語言的編寫過程比作生產(chǎn)線汽車組裝過程,函數(shù)相當(dāng)于汽車的零件,在汽車組裝過程中,每個(gè)零件都需要設(shè)計(jì)、調(diào)試和檢測(cè)無誤后在安裝到汽車上。汽車的零件可以是自己設(shè)計(jì)研發(fā),也可以進(jìn)口國外產(chǎn)品。自己設(shè)計(jì)研發(fā)的“零件”對(duì)應(yīng)的是自定義函數(shù),是由編程人員自己編寫完成,進(jìn)口產(chǎn)品對(duì)應(yīng)的是庫函數(shù),是由別人寫好的一些經(jīng)典源程序,編程人員在設(shè)計(jì)程序是可以直接調(diào)用[7]。
C程序結(jié)構(gòu)圖如圖1所示,由此可知,一個(gè)復(fù)雜的計(jì)算機(jī)程序由多個(gè)函數(shù)構(gòu)成,這個(gè)函數(shù)可以是編程人員親自定義的函數(shù),也可以他人定義好的庫函數(shù)。
3.3 經(jīng)典例題引入
下面本文通過重復(fù)輸出“*”號(hào)和文字的案例來講解函數(shù)的定義。題目要求:輸出一行*****,再輸出一行文字,再輸出一行*****,用函數(shù)調(diào)用來實(shí)現(xiàn)。題目解析:在輸出的文字的上下方分別要求輸出一行“*”號(hào),顯然不必重復(fù)設(shè)計(jì)輸出“*”的這段代碼,定義一個(gè)子函數(shù)p_s來實(shí)現(xiàn)輸出一行“*”號(hào)的功能,定義一個(gè)p_m的子函數(shù)來輸出中間一行文字,用主函數(shù)分別調(diào)用兩個(gè)子函數(shù)來完成以上功能。
3.4 知識(shí)點(diǎn)剖析
題目中要求輸出兩行“*”號(hào)和一行文字,就需要定義兩個(gè)函數(shù),一個(gè)用來輸出“*”號(hào),一個(gè)用來輸出文字。首先用主函數(shù)調(diào)用輸出“*”號(hào)的函數(shù),程序即可完成輸出一行“*”號(hào)的功能,然后主函數(shù)調(diào)用輸出一行文字的函數(shù),程序即可完成輸出一行文字的功能,最后主函數(shù)再次調(diào)用輸出“*”號(hào)的函數(shù),程序即可完成輸出一行“*”號(hào)的功能。由此函數(shù)的功能可以看出,可以用一個(gè)調(diào)用語句直接調(diào)用定義好的函數(shù)來完成此函數(shù)的功能,如果函數(shù)包括上百條語句,而且函數(shù)段在程序中多次出現(xiàn),就可以用調(diào)用語句多次調(diào)用來完成,大大化簡(jiǎn)了程序的復(fù)雜程度[8]。
定義p_s 和p_m的知識(shí)點(diǎn)相似,下面本文從p_m函數(shù)的定義來講解。p_m函數(shù)的功能是輸出" My name is Jia Wenjing?"這行文字,要使計(jì)算機(jī)完成此功能,必須按照C語言規(guī)范對(duì)它進(jìn)行定義。p_m函數(shù)的類型為void類型,void類型的函數(shù)沒有ruturn語句,所以p_m函數(shù)沒有返回值。定義函數(shù)名字p_m,通過p_m名字來調(diào)用p_m函數(shù),出現(xiàn)函數(shù)名字即調(diào)用,調(diào)用此函數(shù)就會(huì)跳到此函數(shù)執(zhí)行此函數(shù),完成此函數(shù)的功能。定義參數(shù)的個(gè)數(shù)與類型,此函數(shù)屬于無參函數(shù),所以參數(shù)個(gè)數(shù)為零,參數(shù)列表括號(hào)為空。定義函數(shù)的功能,printf("My name is Jia Wenjing?。躰"),此函數(shù)珂完成輸出"My name is Jia Wenjing!"一行文字的功能。
3.5 編程應(yīng)用探討
(1)案例應(yīng)用,層進(jìn)深化。上機(jī)實(shí)踐,由經(jīng)典例題引入學(xué)生進(jìn)行自主編程,利用所學(xué)的知識(shí)對(duì)函數(shù)進(jìn)行定義,并利用VS2010軟件進(jìn)行編程調(diào)試。主函數(shù)的功能是分別調(diào)用p_s和p_m兩個(gè)子函數(shù)。語句p_s();為調(diào)用p_s函數(shù),語句功能為由主函數(shù)跳轉(zhuǎn)到p_s函數(shù),語句p_m;為調(diào)用p_m函數(shù),語句功能為由主函數(shù)跳轉(zhuǎn)到p_m函數(shù)。子函數(shù)void p_s()完成輸出一行“*”號(hào)的功能,子函數(shù)void p_m()完成輸出一行文字的功能。主函數(shù)要稍微特殊一點(diǎn),所有的程序只能包括一個(gè)主函數(shù)和多個(gè)子函數(shù),程序只能從主函數(shù)開始,如果過程中調(diào)用其他子函數(shù),調(diào)用后要返回主函數(shù)結(jié)束運(yùn)行[9]。
(2)由無參到有參,推廣練習(xí)。本例題所設(shè)計(jì)到的是無參函數(shù)的定義,例如void p_m(),括號(hào)里面沒有參數(shù)類型和參數(shù)個(gè)數(shù),所以此函數(shù)為無參函數(shù),無參函數(shù)被調(diào)用時(shí)不需要向主調(diào)函數(shù)傳遞數(shù)據(jù)。那當(dāng)主調(diào)函數(shù)需要向被調(diào)函數(shù)傳遞數(shù)據(jù)時(shí),有參函數(shù)又該如何定義呢?在課堂最后設(shè)置練習(xí)環(huán)節(jié),由無參函數(shù)到有參函數(shù)擴(kuò)展,由同學(xué)們用已學(xué)知識(shí)自行完成有參函數(shù)的定義,以促進(jìn)從理論學(xué)習(xí)到知識(shí)運(yùn)用層面的深化。
4 結(jié)語
針對(duì)傳統(tǒng)工科教學(xué)中C語言課程存在的不足,以函數(shù)編程為例,從科學(xué)有效的教學(xué)目標(biāo)出發(fā),采用五階段層進(jìn)式教學(xué)設(shè)計(jì),使學(xué)生由興趣激發(fā),到函數(shù)功能特點(diǎn)分析,再到經(jīng)典例題引入,逐步掌握功能特點(diǎn)與函數(shù)定義的知識(shí)點(diǎn)剖析,最后編程應(yīng)用探討將理論與案例相結(jié)合,提高編程技術(shù)底蘊(yùn)和工程素養(yǎng)。經(jīng)過多次教學(xué)實(shí)踐證明,該教學(xué)設(shè)計(jì)過程能夠有效引導(dǎo)學(xué)生自主學(xué)習(xí),主動(dòng)思考,促進(jìn)教學(xué)互動(dòng),從而取得良好教學(xué)效果。
參考文獻(xiàn)
[1]張延亮,康國棟,周清平.工程教育認(rèn)證標(biāo)準(zhǔn)視角下軟件工程專業(yè)課程教學(xué)改革探索與實(shí)踐——以“C語言程序設(shè)計(jì)基礎(chǔ)”課程為例[J].煤炭高等教育,2018,36(05):117-121.
[2]左倪娜.基于翻轉(zhuǎn)課堂模式的C語言程序設(shè)計(jì)教學(xué)改革[J].廣西教育,2017(11):70-71.
[3]陳玉萍.“互聯(lián)網(wǎng)+翻轉(zhuǎn)課堂”模式在《C語言程序設(shè)計(jì)》教學(xué)中的應(yīng)用探討[J].創(chuàng)新創(chuàng)業(yè)理論研究與實(shí)踐,2019,2(24):33-34.
[4]王鵬遠(yuǎn),蘇虹.高校非計(jì)算機(jī)專業(yè)C語言教學(xué)改革與實(shí)踐[J].計(jì)算機(jī)教育,2011(02):15-18.
[5]張淑萍.基于CDIO工程教育理念的C語言程序設(shè)計(jì)教學(xué)改革[J].科技視界,2017(03):41+47.
[6]羅衛(wèi)敏,王令.符合工程教育認(rèn)證標(biāo)準(zhǔn)的C語言課程教學(xué)改革[J].計(jì)算機(jī)時(shí)代,2017(02):79-81.
[7]朱安平.一種C語言函數(shù)教學(xué)的設(shè)計(jì)與實(shí)踐[J].計(jì)算機(jī)工程與科學(xué),2014,36(S1):139-142.
[8]陸有麗,蔣軍強(qiáng),歐先鋒.地方應(yīng)用型本科院校C語言程序設(shè)計(jì)課程教學(xué)改革與實(shí)踐初探[J].湖南理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2020,33(02):83-86.
[9]李建華,許芝卉.基于人工評(píng)分思路的C語言自動(dòng)評(píng)分算法研究[J].山西大同大學(xué)學(xué)報(bào)(自然科學(xué)版),2020,36(02):25-27.
作者簡(jiǎn)介:賈文晶,女,助教,1991.06,碩士,目前主要從事圖像處理和故障診斷等方面研究。
基金項(xiàng)目:2019年安徽省省級(jí)重點(diǎn)教學(xué)研究項(xiàng)目(2019jyxm0366),淮南師范學(xué)院一般教研項(xiàng)目(2019hsjy59)。