周燕艷 海深
摘要:從C語(yǔ)言課程和非計(jì)算機(jī)專業(yè)學(xué)生的特點(diǎn)出發(fā),分析了目前該課程在教學(xué)過(guò)程中存在的一些現(xiàn)狀及需要解決的問(wèn)題;并針對(duì)如何培養(yǎng)學(xué)生的學(xué)習(xí)能力、提高學(xué)生的學(xué)習(xí)興趣、發(fā)揮學(xué)生的創(chuàng)造性等問(wèn)題,作者從教學(xué)及實(shí)踐方法上有針對(duì)性進(jìn)行教學(xué)改革實(shí)踐,收到了比較明顯的教學(xué)效果。
關(guān)鍵詞:非計(jì)算機(jī)專業(yè);C語(yǔ)言;改革
中圖分類號(hào):G64 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2019)06-0114-03
A Probe into the Teaching Reform of C Language Course for Non-computer Majors in Colleges and Universities
ZHOU Yan-yuan, HAI Shen
(School of Mathematics and Computer Science, Tongling University, Tongling 244000, China)
Abstract: Starting from the characteristics of C language course and non-computer majors, this paper analyses the current situation and problems that need to be solved in the course of teaching, and aiming at how to cultivate students' learning ability, improve students' interest in learning and bring students' creativity into full play, the author aims at teaching and practical methods. Sex teaching reform practice, has received a more obvious teaching effect.
Key words: Non-Computer Major; C Language; Reform
C語(yǔ)言程序設(shè)計(jì)課程是計(jì)算機(jī)及其相關(guān)專業(yè)的專業(yè)基礎(chǔ)課,在許多高校一般作為大學(xué)生的第一門(mén)計(jì)算機(jī)編程語(yǔ)言課程學(xué)習(xí)。在計(jì)算機(jī)專業(yè)課程學(xué)習(xí)中,多是作為數(shù)據(jù)結(jié)構(gòu)、算法分析與設(shè)計(jì)等其他專業(yè)核心課程的先導(dǎo)課。因而有著非常重要意義的一門(mén)課程。同時(shí),C語(yǔ)言課程在許多學(xué)校又是作為非計(jì)算機(jī)專業(yè)的一門(mén)僅有的程序設(shè)計(jì)語(yǔ)言課程來(lái)安排,學(xué)習(xí)簡(jiǎn)單的編程知識(shí),對(duì)于提高非計(jì)算機(jī)專業(yè)學(xué)生的計(jì)算思維能力、利用計(jì)算機(jī)解決實(shí)際問(wèn)題的能力也有著重要的作用。
可是,因?yàn)楫吘菇虒W(xué)的對(duì)象為非計(jì)算機(jī)專業(yè)的學(xué)生,在具體的授課和實(shí)踐過(guò)程中,針對(duì)非計(jì)算機(jī)專業(yè)的C語(yǔ)言課程和計(jì)算機(jī)專業(yè)學(xué)生還是有著不同的著力點(diǎn)和考慮。
1 非計(jì)算機(jī)專業(yè)C語(yǔ)言課程教學(xué)的現(xiàn)狀
對(duì)于很多高校的非計(jì)算機(jī)專業(yè)來(lái)說(shuō),C語(yǔ)言程序設(shè)計(jì)課程主要是作為理工科的一門(mén)計(jì)算機(jī)課開(kāi)設(shè),大體安排在大一的第二學(xué)期,把該課程作為第一學(xué)期計(jì)算機(jī)文化基礎(chǔ)課程的延續(xù)。但是C語(yǔ)言課程和計(jì)算機(jī)基礎(chǔ)課程的內(nèi)容聯(lián)系不強(qiáng)。如果在上大學(xué)前沒(méi)有學(xué)習(xí)過(guò)編程知識(shí)而學(xué)習(xí)C語(yǔ)言,對(duì)于許多學(xué)生來(lái)說(shuō),特別是開(kāi)始階段,相關(guān)知識(shí)點(diǎn)的學(xué)習(xí)還是存在著較大的難度。
另外,程序設(shè)計(jì)語(yǔ)言的課程中,實(shí)踐又是一個(gè)重要的環(huán)節(jié),有一定理論的基礎(chǔ),再通過(guò)相應(yīng)的實(shí)踐才更進(jìn)一步理解和掌握理論,而實(shí)踐環(huán)節(jié)恰恰也是非計(jì)算機(jī)專業(yè)學(xué)生薄弱的一環(huán)。所以從實(shí)踐上來(lái)說(shuō),又影響了學(xué)生學(xué)習(xí)的效果。
如何提高C語(yǔ)言程序設(shè)計(jì)課程的理論教學(xué)效果和學(xué)生的編程水平,是每個(gè)授課教師需要必須面對(duì)的問(wèn)題。
2 課程實(shí)施過(guò)程中的教學(xué)改革措施
2.1理論教學(xué)方面
計(jì)算機(jī)程序設(shè)計(jì)課程首先要解決的問(wèn)題就是用計(jì)算機(jī)的方法解決問(wèn)題,其實(shí)就是計(jì)算思維問(wèn)題。由于思維慣性,在C語(yǔ)言課程的開(kāi)始階段,如何盡早接受這一點(diǎn)就決定了學(xué)習(xí)效果的好壞。有時(shí)必須要對(duì)教學(xué)內(nèi)容進(jìn)行補(bǔ)充和調(diào)整,采用類比或其他更容易接受的講解方式以利于學(xué)生的學(xué)習(xí)。
在教學(xué)活動(dòng)過(guò)程中針對(duì)一個(gè)個(gè)的知識(shí)點(diǎn),進(jìn)行了如下的解釋和說(shuō)明。
1)數(shù)據(jù)類型
C語(yǔ)言中提供了多種數(shù)據(jù)類型,僅僅表示純粹數(shù)這一對(duì)象的就有int,float,double等多種類型,還有unsigned、signed和short和long的分別,學(xué)生剛開(kāi)始就難以接受,同樣的數(shù)為什么還區(qū)分這么多種類,既然double類型表示數(shù)的范圍那么大,為什么不就是用這一種類型就簡(jiǎn)便多了?
為此,首先要解釋不同數(shù)據(jù)類型表示的意義,其次,需要對(duì)數(shù)據(jù)的二進(jìn)制表示中無(wú)符號(hào)、有符號(hào),有符號(hào)數(shù)據(jù)的原碼、反碼和補(bǔ)碼的表示,內(nèi)存中數(shù)據(jù)存儲(chǔ)方式,定點(diǎn)、浮點(diǎn)數(shù)的表示,不同數(shù)據(jù)類型數(shù)據(jù)轉(zhuǎn)換等一系列的知識(shí)點(diǎn)進(jìn)行講解。并輔以適當(dāng)?shù)睦印?/p>
如short int型數(shù)-1是一個(gè)有符號(hào)整數(shù),補(bǔ)碼表示的,在內(nèi)存中其實(shí)就是16位二進(jìn)制1,如果把它賦給一個(gè)無(wú)符號(hào)的unsiged short int變量,還是16位二進(jìn)制1,可是,由于是無(wú)符號(hào)數(shù),則就是十進(jìn)制數(shù)65535(=216-1),如果把它賦給一個(gè)long long型的變量,由于long long型為有符號(hào)數(shù),符號(hào)位進(jìn)行擴(kuò)展,則該變量的內(nèi)容為64位1,還是-1,同樣如果把它賦值給unsiged long long型的變量,其值就是18446744073709551615(=264-1)。而無(wú)符號(hào)短整型unsigned short int數(shù)65535,轉(zhuǎn)換成二進(jìn)制數(shù)也是16位二進(jìn)制1,如果把它賦給一個(gè)long long型的變量,該值還是65535,原因在于對(duì)無(wú)符號(hào)數(shù)擴(kuò)展時(shí)就是加0,與有符號(hào)數(shù)擴(kuò)展不同。通過(guò)對(duì)這些知識(shí)點(diǎn)的說(shuō)明和操作演示,相關(guān)數(shù)據(jù)類型的區(qū)別和轉(zhuǎn)換機(jī)制就比較清晰。
2)常量和變量
在C語(yǔ)言中,常量是指其值不會(huì)發(fā)生也不能發(fā)生改變的量,常量不占用系統(tǒng)的內(nèi)存,所以其值不會(huì)改變。而變量則是其值可以改變的量,在系統(tǒng)中需要分配空間給它。如下列語(yǔ)句:
int a=4;
對(duì)于該語(yǔ)句的理解是,定義一個(gè)整形變量,變量名為a,同時(shí)給該變量賦值4,所以此時(shí)如果對(duì)a訪問(wèn),其值為4。這里,學(xué)生常見(jiàn)的困惑有兩個(gè):一是a的值就是此時(shí)賦值的值,如果不賦值,其值的大小是不確定的;二是對(duì)賦值號(hào)的理解,賦值其實(shí)是一個(gè)運(yùn)算,把右邊的值賦給左邊的變量,容易把賦值符號(hào)當(dāng)作等號(hào),好像也是對(duì)的,a的值此時(shí)就是等于4。但是當(dāng)后面如果對(duì)變量a的值進(jìn)行重新賦其他值后,a的值就不等于4了,這時(shí)等號(hào)的理解就無(wú)法成立。
在教學(xué)過(guò)程中,對(duì)變量的說(shuō)明,就把變量當(dāng)作房間,不同數(shù)據(jù)類型的變量就對(duì)應(yīng)于面積大小不一的房間,而變量的值就類比于房間中存放的物品,給變量賦值就是調(diào)換物品。
3)函數(shù)
對(duì)于一個(gè)較大的問(wèn)題,通常把它分成若干個(gè)較小的問(wèn)題來(lái)解決。在C語(yǔ)言設(shè)計(jì)中,也采用類似的方法,把較大的程序分為若干個(gè)較小的程序模塊,而每個(gè)模塊用來(lái)完成一個(gè)特定的功能,一個(gè)模塊就可以定義一個(gè)函數(shù),定義好的函數(shù)可以被多次的調(diào)用。理解函數(shù)的作用對(duì)于理解結(jié)構(gòu)化程序設(shè)計(jì)方法有直接的關(guān)系。
C語(yǔ)言中有系統(tǒng)自帶的函數(shù),用戶也可以自己定義功能函數(shù)。以max()函數(shù)為例,只要提供給它符合要求的參數(shù),通過(guò)它的運(yùn)算,就可以得出若干個(gè)數(shù)據(jù)中最大的那個(gè)數(shù)。一個(gè)函數(shù)就是一個(gè)加工廠,有的工廠是別人建的,自己也可以建設(shè)所需要的加工廠。對(duì)于一個(gè)豆腐加工廠來(lái)說(shuō),提供給它符合要求的大豆,它就可以加工出你所需要的豆腐,這兒,大豆等原料就類似于實(shí)際參數(shù),而豆腐就是加工廠的輸出值。把豆腐加工廠建好后,以后在任何需要豆腐的時(shí)候,就不需要自己來(lái)一步步制作豆腐,直接把大豆送到豆腐加工廠就可以了。各種功能不同的工廠的存在,就可以讓社會(huì)這個(gè)復(fù)雜系統(tǒng)協(xié)調(diào)運(yùn)轉(zhuǎn)。
4)指針
指針是C語(yǔ)言的重要數(shù)據(jù)類型,也是C語(yǔ)言的精華。靈活的使用指針,可以動(dòng)態(tài)分配內(nèi)存,方便使用字符串,還可以使程序簡(jiǎn)潔和高效。但是,指針又是C語(yǔ)言中的難點(diǎn),特別對(duì)于初學(xué)者來(lái)說(shuō),很難理解和用好指針。
要理解指針,必須要搞清楚,C語(yǔ)言中哪些對(duì)象需要占用內(nèi)存,也即它們都有地址這一屬性,如變量、數(shù)組、函數(shù)等等。變量和數(shù)組有地址屬性好理解,而函數(shù)有地址的屬性,需要對(duì)“程序存儲(chǔ)”這一思想進(jìn)行介紹,在內(nèi)存中不但存放著大量的數(shù)據(jù),還存放了代碼,而一個(gè)個(gè)函數(shù)作為模塊存放在內(nèi)存中,函數(shù)名就是各個(gè)模塊的起始地址。
在理解一級(jí)指針的基礎(chǔ)上,引入多級(jí)指針,一般僅僅學(xué)習(xí)到二級(jí)指針為止,這樣也降低了對(duì)指針理解的難度。由于學(xué)習(xí)對(duì)象為非計(jì)算機(jī)專業(yè)學(xué)生,適當(dāng)?shù)恼{(diào)整知識(shí)點(diǎn)的難度也是適宜的。
5)結(jié)構(gòu)體
實(shí)際中,一個(gè)對(duì)象通常有多個(gè)屬性,往往需要一組不同數(shù)據(jù)類型的數(shù)據(jù)進(jìn)行綜合性的描述,在使用時(shí),把這些不同類型的組合當(dāng)作一個(gè)整體對(duì)待。結(jié)構(gòu)體就是解決這一問(wèn)題的手段。它可以把系統(tǒng)提供的基本類型和先前已經(jīng)定義的數(shù)據(jù)類型合在一起使用,邏輯上又存在一定的內(nèi)在關(guān)系。
簡(jiǎn)單數(shù)據(jù)類型和結(jié)構(gòu)體類型非常類似于生物學(xué)上的單細(xì)胞和多細(xì)胞之間的關(guān)系。單細(xì)胞生物是由一個(gè)細(xì)胞組成一個(gè)個(gè)體,其生命活動(dòng)由單個(gè)細(xì)胞器承擔(dān),而多細(xì)胞生物是由多個(gè)單細(xì)胞組成的個(gè)體,其中不同形態(tài)的細(xì)胞組成不同的器官組織,他們共同完成個(gè)體的生命活動(dòng)。生命從單細(xì)胞過(guò)渡到多細(xì)胞體也是生命進(jìn)化的體現(xiàn),類似地,通過(guò)結(jié)構(gòu)體,極大地豐富了C語(yǔ)言對(duì)數(shù)據(jù)的描述能力,也是對(duì)現(xiàn)實(shí)問(wèn)題的數(shù)據(jù)描述能力提升的必然發(fā)展。
6)文件
文件,是指存放在外存上的數(shù)據(jù)的集合,是存在邏輯上關(guān)聯(lián)的數(shù)據(jù)的結(jié)合,當(dāng)然,系統(tǒng)把設(shè)備也當(dāng)成文件對(duì)待。C語(yǔ)言中,對(duì)文件的訪問(wèn)不是直接的,而是通過(guò)緩存機(jī)制來(lái)實(shí)現(xiàn),程序訪問(wèn)文件時(shí),首先要把文件在緩沖區(qū)中打開(kāi),程序就可以對(duì)之進(jìn)行訪問(wèn),訪問(wèn)結(jié)束,如果文件在此過(guò)程中進(jìn)行了修改,再把緩沖區(qū)中的文件輸出到外存中,進(jìn)行更新。
為了便于學(xué)生的理解,在講解時(shí)把外存當(dāng)作圖書(shū)館,而文件就是圖書(shū)館中的藏書(shū),用戶需要看書(shū)必須要到圖書(shū)館把所需要的書(shū)借到自己面前,類似于把文件存放到本地的緩存,閱讀時(shí)對(duì)圖書(shū)進(jìn)行批注(注:假定現(xiàn)實(shí)允許)等修改,最后又還回圖書(shū)館。
同樣,在學(xué)習(xí)其他C語(yǔ)言知識(shí)點(diǎn)的時(shí)候,如何把抽象的理論通過(guò)比喻、類比甚至表演等多種形式展現(xiàn),極大地降低知識(shí)點(diǎn)的難度,也激發(fā)學(xué)生學(xué)習(xí)的興趣。
2.2實(shí)踐教學(xué)方面
C語(yǔ)言課程是一門(mén)實(shí)踐性極強(qiáng)的課程,在課時(shí)安排上,實(shí)驗(yàn)占據(jù)了大量的課時(shí)。對(duì)于非計(jì)算機(jī)專業(yè)學(xué)生來(lái)說(shuō),上機(jī)實(shí)驗(yàn)也是一個(gè)不容易克服的困難。具體的難點(diǎn)在以下幾個(gè)方面:
1)難以用計(jì)算機(jī)的思維解決具體問(wèn)題。
2)代碼輸入不仔細(xì),容易丟三落四。
3)當(dāng)系統(tǒng)編譯時(shí)出現(xiàn)多處錯(cuò)誤而束手無(wú)策。
4)編譯成功卻運(yùn)行結(jié)果不正確。
應(yīng)該說(shuō),上面的問(wèn)題對(duì)于編程初學(xué)者來(lái)說(shuō)都會(huì)遇到,但是,非計(jì)算機(jī)專業(yè)學(xué)生可能解決起來(lái)更困難些。在實(shí)踐中,針對(duì)出現(xiàn)的問(wèn)題,從以下幾點(diǎn)進(jìn)行嘗試解決。
1)學(xué)習(xí)使用畫(huà)流程圖的方法來(lái)模仿計(jì)算機(jī)的思維方式解決具體問(wèn)題。流程圖可以讓解決問(wèn)題的思路十分清晰,也是學(xué)習(xí)計(jì)算思維的一個(gè)有效途徑。剛開(kāi)始畫(huà)圖力求細(xì)致,后期熟練時(shí)可以把流程圖畫(huà)得粗一點(diǎn)。
2)學(xué)習(xí)編程有利于學(xué)生養(yǎng)成嚴(yán)謹(jǐn)?shù)牧?xí)慣。當(dāng)由于自己的大意而使得代碼編譯無(wú)法通過(guò)時(shí),此時(shí)盡量鼓勵(lì)學(xué)生自己來(lái)發(fā)現(xiàn)問(wèn)題,一方面讀懂系統(tǒng)提示的問(wèn)題描述,另一方面則是訓(xùn)練耐心尋找問(wèn)題的解決方法,可以嘗試包括通過(guò)網(wǎng)絡(luò)等多種手段來(lái)解決。這也是編程者必經(jīng)的階段。
3)編譯成功而結(jié)果錯(cuò)誤的情況需要老師的幫助,因?yàn)榇祟惽闆r主要是解決方案中邏輯上出現(xiàn)了錯(cuò)誤。需要老師和學(xué)生一道分析,尤其是對(duì)流程圖進(jìn)行詳細(xì)地查找,找出解決方案。
上機(jī)實(shí)驗(yàn)剛開(kāi)始,還是以學(xué)習(xí)成熟的代碼為主,后期多嘗試自己動(dòng)手。通過(guò)這些環(huán)節(jié)的實(shí)施,學(xué)生真正掌握了如何編程,收效還是比較明顯。
在這門(mén)課程接近結(jié)束的時(shí)候,以4-6人為一組,布置一個(gè)大一點(diǎn)的作業(yè),其中一個(gè)同學(xué)為隊(duì)長(zhǎng),把每個(gè)人任務(wù)進(jìn)行分工,進(jìn)行一個(gè)簡(jiǎn)單系統(tǒng)的實(shí)現(xiàn)。通過(guò)這個(gè)作業(yè)的實(shí)施,培養(yǎng)同學(xué)之間的合作精神和團(tuán)隊(duì)意識(shí),也是對(duì)該門(mén)課程很好的總結(jié)。
2.3多媒體等其他教學(xué)手段的適當(dāng)運(yùn)用
多媒體作為教學(xué)手段的意義已經(jīng)為大家所共識(shí)??梢越柚趫D片、視頻或動(dòng)畫(huà)等手段把C語(yǔ)言抽象的理論以十分具體形象的方式展現(xiàn)出來(lái),同時(shí)也極大地節(jié)約了時(shí)間。
在介紹冒泡排序算法時(shí),多個(gè)數(shù)據(jù)隨機(jī)地存放在一個(gè)個(gè)方格中,隨著每一條語(yǔ)句的執(zhí)行,以動(dòng)畫(huà)的形式數(shù)據(jù)進(jìn)行移動(dòng),非常直觀、形象,比純粹地進(jìn)行解釋的方法效果好很多。
在通過(guò)第三個(gè)變量實(shí)現(xiàn)兩個(gè)變量交換的時(shí)候,讓甲、乙、丙三個(gè)同學(xué)在講臺(tái)上,甲手里放著一盒白色粉筆,乙手持一盒彩色粉筆,在借助于丙同學(xué)的情況下實(shí)現(xiàn)了甲、乙而人粉筆的交換,演示內(nèi)容并不復(fù)雜,但是對(duì)于幫助學(xué)生理解借助第三個(gè)變量實(shí)現(xiàn)兩個(gè)變量數(shù)據(jù)的交換這一本質(zhì)可以起到事半功倍的作用。
3 結(jié)束語(yǔ)
C語(yǔ)言程序設(shè)計(jì)是一門(mén)重要的計(jì)算機(jī)課程,也是一種提升計(jì)算思維能力的課程。它是以C語(yǔ)言為工具,解決具體的問(wèn)題??墒怯捎诜怯?jì)算機(jī)專業(yè)相對(duì)計(jì)算機(jī)專業(yè)有著相對(duì)的不足,在學(xué)習(xí)過(guò)程中存在具體的困難。怎樣讓學(xué)生更好地接受相關(guān)知識(shí),提高學(xué)生的學(xué)習(xí)興趣,需要從多個(gè)角度入手。在掌握好基礎(chǔ)知識(shí)的基礎(chǔ)上,由理論到實(shí)踐,再由實(shí)踐到理論,相互影響,相互促進(jìn),才可以更好地達(dá)到最終的學(xué)習(xí)目標(biāo)。為培養(yǎng)出既具備扎實(shí)理論基礎(chǔ),又具有較好的實(shí)踐能力的新型人才,必須積極進(jìn)行教學(xué)改革,學(xué)習(xí)和掌握多種教學(xué)手段,在教學(xué)實(shí)踐中不斷提高自己的業(yè)務(wù)素質(zhì),使教學(xué)水平、教學(xué)質(zhì)量躍上一個(gè)新的臺(tái)階。
參考文獻(xiàn):
[1] 鄭璐璐. “C語(yǔ)言程序設(shè)計(jì)”課程改革的幾點(diǎn)措施[J]. 科教文匯,2018(441):57-58.
[2] 劉滿君. 《C 語(yǔ)言程序設(shè)計(jì)》課程考核方式改革初探[J]. 福建電腦,2018(11):181.
[3] 彭秀萍. C語(yǔ)言程序設(shè)計(jì)課程教學(xué)改革探討[J]. 電腦知識(shí)與技術(shù),2018,14(26):94-96.
[4] 申炳昕. C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)方法與考核模式的改革探討[J]. 電腦知識(shí)與技術(shù),2018,14(30):102-104.
[5] 葉振. 本科院校數(shù)學(xué)專業(yè)《C語(yǔ)言程序設(shè)計(jì)》課程教學(xué)探討[J]. 福建電腦,2018(10):172-173.
[6] 郭芳. 高校非計(jì)算機(jī)專業(yè)C語(yǔ)言課程教學(xué)的改革研究[J].湖南工程學(xué)院學(xué)報(bào),2018,28(3):110-112
[7] 聶轟. 錯(cuò)誤案例教學(xué)法在 C 語(yǔ)言教學(xué)中的應(yīng)用[J]. 現(xiàn)代信息科技, 2018,2(10):90-91
【通聯(lián)編輯:王力】