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