李桃迎 陳燕 蔣凡
摘 要 C語(yǔ)言程序設(shè)計(jì)課程不僅是計(jì)算機(jī)相關(guān)專(zhuān)業(yè)本科生的必修課程,也是其他非計(jì)算機(jī)類(lèi)本科專(zhuān)業(yè)的基礎(chǔ)課程,由于該課程具有內(nèi)容多、任務(wù)重、實(shí)踐能力強(qiáng)的難點(diǎn),本文結(jié)合該課程的授課經(jīng)驗(yàn),分析了教學(xué)中出現(xiàn)的問(wèn)題,并設(shè)計(jì)了C語(yǔ)言程序設(shè)計(jì)課程的實(shí)踐教學(xué)內(nèi)容,以期對(duì)C語(yǔ)言程序設(shè)計(jì)課程的講授和學(xué)習(xí)起到指導(dǎo)與幫助作用。
關(guān)鍵詞 C語(yǔ)言 程序設(shè)計(jì) 面向過(guò)程的編程
中圖分類(lèi)號(hào):G424 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.16400/j.cnki.kjdkz.2018.09.048
Abstract The C language programming course is not only a compulsory course for undergraduates majoring in computer science, but also a basic course for other non-computer undergraduate majors. Because of its difficulties in content, heavy tasks, and strong practical ability, this course combines the teaching experience of this course. It analyzes the problems in the teaching and designs the practical teaching content of the C language programming course, in order to guide and help the teaching and learning of the C language programming course.
Keywords C language; programming design; process-oriented programming
C語(yǔ)言程序設(shè)計(jì)課程是一門(mén)通用計(jì)算機(jī)編程語(yǔ)言,同時(shí)也是國(guó)際上廣泛流行的計(jì)算機(jī)高級(jí)語(yǔ)言。對(duì)于程序而言,必須包括數(shù)據(jù)結(jié)構(gòu)——在程序中要指定用到哪些數(shù)據(jù)以及這些數(shù)據(jù)的類(lèi)型和數(shù)據(jù)的組織形式,算法——要求計(jì)算機(jī)進(jìn)行操作的步驟,是程序的靈魂。
C語(yǔ)言作為計(jì)算機(jī)程序語(yǔ)言之一,同時(shí)具有高級(jí)語(yǔ)言的和匯編語(yǔ)言的特點(diǎn)。C語(yǔ)言可以被用作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫(xiě)工作系統(tǒng)應(yīng)用設(shè)計(jì),同時(shí)也可以被用作應(yīng)用程序語(yǔ)言,編寫(xiě)不依賴計(jì)算機(jī)硬件的應(yīng)用程序。因?yàn)镃語(yǔ)言的可用范圍和途徑廣泛,所以C語(yǔ)言的應(yīng)用范圍廣泛。鑒于此,很多的高校院校都把C語(yǔ)言課程作為基礎(chǔ)課程,它是學(xué)習(xí)其他高級(jí)語(yǔ)言的基礎(chǔ),也是嵌入式開(kāi)發(fā)應(yīng)用最廣泛的語(yǔ)言。因此,在高校的教學(xué)工作中,更好的教授與學(xué)習(xí)C語(yǔ)言是值得重視的問(wèn)題。
1 C語(yǔ)言的主要特點(diǎn)
(1)具有高級(jí)語(yǔ)言的特點(diǎn)。C語(yǔ)言是高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的應(yīng)用實(shí)例的結(jié)合。C語(yǔ)言可以像匯編語(yǔ)言一樣,可以操作計(jì)算機(jī)最基本的工作單元,如:位、字節(jié)和地址。
(2)是結(jié)構(gòu)式語(yǔ)言。結(jié)構(gòu)化方式是將代碼與數(shù)據(jù)進(jìn)行分割,程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立,這樣的方式就可以使得程序?qū)哟吻逦?,同時(shí)也便于使用、維護(hù)以及調(diào)試。用戶得到的是以函數(shù)形式獲得的C語(yǔ)言,這樣的函數(shù)可以方便調(diào)用,并以其多重循環(huán),條件語(yǔ)句控制程序流向的特點(diǎn),使程序完全結(jié)構(gòu)化。
(3)功能齊全。C語(yǔ)言可以操作各種類(lèi)型的數(shù)據(jù)如:整型、實(shí)型、字符型、數(shù)組類(lèi)型、指針類(lèi)型、結(jié)構(gòu)體類(lèi)型、共用體類(lèi)型等,并引入指針的概念,使得程序具有更高的效率。相比于其他的計(jì)算機(jī)程序語(yǔ)言,C語(yǔ)言的計(jì)算功能、邏輯判斷功能也是比較強(qiáng)大的。
(4)適用范圍大。C語(yǔ)言可以應(yīng)用于DOS、Windows、LINUX、UNIX等多種操作系統(tǒng);也對(duì)多種機(jī)型適用。C語(yǔ)言允許直接訪問(wèn)物理地址,可以對(duì)硬件進(jìn)行直接的操作。這些都使得C語(yǔ)言明顯優(yōu)于其他高級(jí)語(yǔ)言,有一些大型應(yīng)用軟件也是C語(yǔ)言編寫(xiě)的。
2 C語(yǔ)言程序設(shè)計(jì)課程的教學(xué)重點(diǎn)
2.1 C語(yǔ)言數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算
C語(yǔ)言的數(shù)據(jù)類(lèi)型(見(jiàn)圖1)是C語(yǔ)言的基礎(chǔ),C語(yǔ)言主要是安排了數(shù)據(jù)的存儲(chǔ)單元的長(zhǎng)度(占多少字節(jié))和數(shù)據(jù)的存儲(chǔ)形式。C語(yǔ)言對(duì)不同類(lèi)型數(shù)據(jù)分配不同的存儲(chǔ)長(zhǎng)度以及存儲(chǔ)形式。
2.2 C語(yǔ)言的運(yùn)算符和表達(dá)式
C語(yǔ)言的運(yùn)算符也有很多的形式,包括:1)基本運(yùn)算符,也是最常見(jiàn)的運(yùn)算符,包含單目運(yùn)算符(正、負(fù))和雙目運(yùn)算符(加減乘除和取余);2)自增運(yùn)算符(++、--);3)對(duì)表達(dá)式進(jìn)行計(jì)算時(shí)需要同時(shí)考慮運(yùn)算符的優(yōu)先級(jí)以及不同類(lèi)型數(shù)據(jù)的混合運(yùn)算;4)強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符;5)C語(yǔ)言獨(dú)有的運(yùn)算符,包含算術(shù)、關(guān)系、邏輯、位運(yùn)、賦值、條件、逗號(hào)、指針、求字節(jié)數(shù)、成員、下標(biāo)等運(yùn)算符。
2.3 C語(yǔ)言程序的結(jié)構(gòu)設(shè)計(jì)
C語(yǔ)言的三種基本結(jié)構(gòu)(見(jiàn)圖2)是C語(yǔ)言的結(jié)構(gòu)設(shè)計(jì)基礎(chǔ)。除了圖2中最簡(jiǎn)單的三種結(jié)構(gòu)外,比較常見(jiàn)的是混合結(jié)構(gòu),即存在三種結(jié)構(gòu)的兩重或多重嵌套,以此滿足程序的復(fù)雜邏輯結(jié)構(gòu)和邏輯判斷。
2.4 數(shù)組與函數(shù)
數(shù)組是各數(shù)據(jù)的排列有一定規(guī)律的一組有序數(shù)據(jù)的集合,數(shù)組的下標(biāo)代表數(shù)據(jù)在數(shù)組中的序號(hào)。數(shù)組中的每一個(gè)元素都可以用數(shù)組名和下標(biāo)唯一確定。數(shù)組允許有一維、二維和多維,并且同一個(gè)數(shù)組中的元素是相同的數(shù)據(jù)類(lèi)型。數(shù)組必須聲明且參與運(yùn)算前必須進(jìn)行賦值或初始化操作。
函數(shù)就是一系列C語(yǔ)句的集合,為了完成某個(gè)會(huì)重復(fù)使用的特定功能,其基本思想是用模塊化程序進(jìn)行程序設(shè)計(jì)。函數(shù)的命名通常反映了函數(shù)的功能,并且方便維護(hù)。C程序可由一個(gè)主函數(shù)和若干個(gè)其他函數(shù)構(gòu)成,主函數(shù)可以調(diào)用其他的函數(shù),其他的函數(shù)之間可以相互調(diào)用,并且一個(gè)函數(shù)可以被一個(gè)或多個(gè)函數(shù)多次調(diào)用。
2.5 指針與自定義類(lèi)型
內(nèi)存區(qū)的每一個(gè)字節(jié)有一個(gè)編號(hào),這就是“地址”,在地址所標(biāo)識(shí)的內(nèi)存單元中存放數(shù)據(jù),通過(guò)地址能找到所需的變量單元——地址指向該變量單元,將地址形象化地稱(chēng)為“指針”。
用戶根據(jù)需要,可以自己建立由不同類(lèi)型數(shù)據(jù)組成的組合型的數(shù)據(jù)結(jié)構(gòu),如結(jié)構(gòu)體、共用體。結(jié)構(gòu)體類(lèi)型的數(shù)據(jù)的使用,應(yīng)該在程序中定義結(jié)構(gòu)體、共同體類(lèi)型變量,并在變量中存放具體的數(shù)據(jù)??梢酝ㄟ^(guò)指針獲得數(shù)組、結(jié)構(gòu)體、共用體變量的地址或值。
3 C語(yǔ)言程序設(shè)計(jì)課程內(nèi)容存在的問(wèn)題
(1)將教學(xué)的重點(diǎn)放在理論教學(xué)上,忽視了實(shí)踐教學(xué)。這樣會(huì)使得學(xué)生對(duì)C語(yǔ)言程序設(shè)計(jì)產(chǎn)生枯燥無(wú)味的感覺(jué),并且容易使學(xué)生因?yàn)槿鄙賹?shí)踐環(huán)節(jié)而無(wú)法充分理解理論知識(shí)。更嚴(yán)重的將導(dǎo)致學(xué)生學(xué)習(xí)的興趣下降。在傳統(tǒng)的教學(xué)中,往往是教師傳授理論知識(shí)為主,忽視了實(shí)踐環(huán)節(jié),致使理論與實(shí)際脫節(jié)。同時(shí)也容易讓學(xué)生形成只懂理論不懂實(shí)踐的壞習(xí)慣,容易讓學(xué)生忽視真理形成的過(guò)程。期待從事C語(yǔ)言程序設(shè)計(jì)課程教學(xué)的同仁和專(zhuān)家們,針對(duì)C語(yǔ)言程序設(shè)計(jì)課程的教學(xué)工作,共同研究探討,資源共享,使得C語(yǔ)言程序設(shè)計(jì)課程教學(xué)在高校應(yīng)用型人才培養(yǎng)中發(fā)揮更大的作用。
(2)將教學(xué)的重點(diǎn)放在實(shí)踐教學(xué)上,對(duì)理論知識(shí)的講解較少,這樣使得學(xué)生的動(dòng)手能力加強(qiáng),對(duì)所學(xué)知識(shí)理解掌握充分,但由于課程的課時(shí)局限,教授的內(nèi)容較少,導(dǎo)致一些教學(xué)上的理論知識(shí)點(diǎn)沒(méi)有充足的時(shí)間去講解,在實(shí)踐教學(xué)上需要花費(fèi)更多的時(shí)間去理解這些理論知識(shí)點(diǎn),浪費(fèi)了原本鞏固學(xué)到的知識(shí)的時(shí)間。若不結(jié)合學(xué)科特點(diǎn)而盲目強(qiáng)調(diào)實(shí)踐教學(xué),就等同于一般的上機(jī)環(huán)節(jié),這樣的教學(xué)既不現(xiàn)實(shí)也不科學(xué)。
4 C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)方法探討
針對(duì)C語(yǔ)言程序設(shè)計(jì)教學(xué)中出現(xiàn)的問(wèn)題與難點(diǎn),探討多種方法。
(1)結(jié)合專(zhuān)業(yè)特色,設(shè)計(jì)C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)的經(jīng)典題庫(kù)。由于C語(yǔ)言程序設(shè)計(jì)課程的教材都差不多,變化較小,所以建議授課時(shí)從多年積累的教學(xué)中總結(jié)、歸納的經(jīng)典題型和題庫(kù)作為實(shí)踐教學(xué)上機(jī)的作業(yè),便于學(xué)生更好地理解所學(xué)知識(shí)并對(duì)所學(xué)知識(shí)深刻記憶。
(2)在理論教學(xué)的基礎(chǔ)上,考慮課程約束,制定實(shí)踐教學(xué)課時(shí),以實(shí)踐的方式輔助學(xué)生對(duì)C語(yǔ)言程序設(shè)計(jì)課程加以理解。由于專(zhuān)業(yè)不同,所以C語(yǔ)言程序設(shè)計(jì)課程的課時(shí)安排有時(shí)也存在差異,如64學(xué)時(shí)、48學(xué)時(shí)和32學(xué)時(shí),有的計(jì)算機(jī)相關(guān)專(zhuān)業(yè)為了讓學(xué)生更深入掌握C語(yǔ)言程序設(shè)計(jì),課時(shí)增加到112學(xué)時(shí),分2個(gè)學(xué)期完成。
(3)實(shí)踐教學(xué)與理論教學(xué)相輔相成,從而引導(dǎo)學(xué)生對(duì)實(shí)踐教學(xué)產(chǎn)生興趣。在實(shí)踐教學(xué)中選定實(shí)踐教學(xué)題庫(kù),每次課程結(jié)束時(shí),提出下節(jié)課將要學(xué)習(xí)討論的主要內(nèi)容,學(xué)生可利用課余時(shí)間分析討論、解決問(wèn)題。每次課程開(kāi)始時(shí)對(duì)上一課程的問(wèn)題進(jìn)行糾正講解。通過(guò)這樣的方式提高學(xué)生的學(xué)習(xí)積極性和實(shí)踐能力。
5 C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)的發(fā)展趨勢(shì)
現(xiàn)在對(duì)C語(yǔ)言程序設(shè)計(jì)課程的教授,大多數(shù)還是在課堂教授理論知識(shí),在機(jī)房鍛煉學(xué)生的實(shí)踐能力。在未來(lái)的教學(xué)中可以讓學(xué)生參與教師的科研項(xiàng)目,在實(shí)踐中學(xué)習(xí)鞏固學(xué)到的C語(yǔ)言程序設(shè)計(jì)課程的理論知識(shí),提高實(shí)踐動(dòng)手能力,同時(shí)也能夠了解當(dāng)前的業(yè)務(wù)需求與發(fā)展趨勢(shì)。
參考文獻(xiàn)
[1] 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第4版)[M].北京:清華大學(xué)出版社,2011.
[2] 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第4版)學(xué)習(xí)輔導(dǎo)[M].北京:清華大學(xué)出版社,2011.
[3] 譚浩強(qiáng).C++程序設(shè)計(jì)(第3版)[M].北京:清華大學(xué)出版社,2016.
[4] 張長(zhǎng)海,等.C程序設(shè)計(jì)[M].北京:高等教育出版社,2004.