時間:2022-04-14 19:23:03
導語:在c語言程序設(shè)計的撰寫旅程中,學習并吸收他人佳作的精髓是一條寶貴的路徑,好期刊匯集了九篇優(yōu)秀范文,愿這些內(nèi)容能夠啟發(fā)您的創(chuàng)作靈感,引領(lǐng)您探索更多的創(chuàng)作可能。
關(guān)鍵詞:C語言;程序設(shè)計;學習方法;學習興趣
中圖分類號:TP312.1-4
《C語言程序設(shè)計》是計算機專業(yè)的一門核心專業(yè)基礎(chǔ)課程,是專升本、考研和等級水平考試的必考科目,也是學生學習中感到比較吃力的一門課。那么,如何學習《C語言程序設(shè)計》這門課程呢?現(xiàn)根據(jù)自己多年在教學中的體會,談一些粗淺的認識。
1 為什么要學習《C語言程序設(shè)計》
《C語言程序設(shè)計》是用C語言來編寫程序的,每個程序員在他們的編程生涯中都應該學習C語言,因為它有太多難以忽視的好處了。除了它會給你提供更多的工作機會之外,C語言還會教給你更多的關(guān)于計算機的知識。它的好處如下:
1.1 C語言是一種計算機程序設(shè)計語言
它既具有高級語言的特點,又具有匯編語言的特點,既可以用來編寫系統(tǒng)軟件,又可以用來編寫應用軟件。它不僅具有繪圖能力強,還具備很強的數(shù)據(jù)處理能力,因此也適于編寫三維,二維圖形和動畫。
1.2 C語言具有功能強大、使用靈活、豐富的數(shù)據(jù)類型和運算符、結(jié)構(gòu)化的控制語句、目標代碼運行效率高、適用范圍大、可移植性好等優(yōu)點。
1.3 C語言是各大操作系統(tǒng)的基礎(chǔ),Unix、Linux、Windows其內(nèi)核都清一色是C語言開發(fā)的,(某些地方是和匯編語言混合開發(fā)的),還有各種語言的編譯器,包括java虛擬機,各種嵌入式設(shè)備,如手機、PDA等都是C語言開發(fā)的。
1.4 C語言是基礎(chǔ),如果你學習過C語言,你就能學習現(xiàn)在任何的高級編程語言
因為所有的高級語言都是以C語言為基礎(chǔ)的(像JAVA,C++,C#等等)。C語言學好了,將來想學其他的語言,就比較好入門了。
2 如何學習《C語言程序設(shè)計》
2.1 克服畏難心理,充滿自信的學習《C語言程序設(shè)計》
大多數(shù)學生一看到《C語言程序設(shè)計》課程的教材,就有畏難的情緒,覺得C語言難學,學不會,因為他們對計算機語言不了解,另外有些英語差的同學,看到計算機編程是用英語編寫的,就未學先棄了。其實學習語言并沒有他們想象的那么難,英語差也對學習計算機語言影響不大,比如學C語言,真正要記的關(guān)鍵字不多,語法也不復雜,只要大家不帶著畏難的心理,充滿自信,一定能學好的。
2.2 要明確《C語言程序設(shè)計》的學習目的
通過《C語言程序設(shè)計》課程的學習,掌握C語言基本知識,掌握程序設(shè)計的基本方法并逐步形成正確的程序設(shè)計思想,能夠熟練運用基本程序結(jié)構(gòu)解決簡單問題,理解模塊化程序設(shè)計原則并能熟練使用C語言進行程序設(shè)計,具備調(diào)試程序的能力,為后繼課程及其他程序設(shè)計課程的學習和應用打下基礎(chǔ)。
2.3 要明白《C語言程序設(shè)計》與一般的計算機操作課程有所不同
《C語言程序設(shè)計》是計算機的一門軟件編程課程,是用C語言來編寫程序的,它具有難度性、抽象性、連續(xù)性和邏輯嚴密性。如果你第一次課來聽了,第二次課沒來,第三次課很可能就聽不懂了。比如,第一次課講的是數(shù)字1,2,3,4……,第二次課講的是運算符號+,-,*,/,第三次課老師讓你算1+2=?,如果你前兩次課都來聽了,那么你就能算出它的結(jié)果,否則你就算不出它的結(jié)果。因此,如果要想學好《C語言程序設(shè)計》,必須堅持每次課都來,如果那天確實不能來,就應在家自學,不懂的地方應及時向老師請教,一定不能落課。
2.4 要整體把握《C語言程序設(shè)計》
C語言是一種通用的程序設(shè)計語言,在開發(fā)系統(tǒng)軟件和應用軟件中得到廣泛的應用,已成為當今計算機世界最流行的語言之一。C語言是一個整體,各個方面是有機聯(lián)系的,要從總體上把握它,不要把它割裂成互不關(guān)聯(lián)的部件。它包括C語言概述、數(shù)據(jù)類型(整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等)、運算符和表達式、流程控制語句、函數(shù)、數(shù)組、字符與字符串、指針、結(jié)構(gòu)體、文件等。通過《C語言程序設(shè)計》的學習,掌握程序設(shè)計的基本概念、基本思想、基本方法和基本技能,進而學會利用C語言解決實際問題,培養(yǎng)計算機程序設(shè)計的能力和素質(zhì),以及思維方法,為以后學習其它計算機程序語言和后續(xù)的專業(yè)課程打下基礎(chǔ)。
簡單的C程序是由主函數(shù)和函數(shù)體兩大部分組成。它的基本框架如下:
main()
{
}
其中main表示“主函數(shù)”。每一個C程序都必須有一個main函數(shù),而且只能有一個main函數(shù),它表示程序從這里開始執(zhí)行。由花括號“{ }”括起的部分是函數(shù)體。其中函數(shù)體又包括定義變量、變量賦值、函數(shù)調(diào)用、輸出打印等。
例:一個簡單的求和程序
main() /*主函數(shù)*/
{
int a,b,sum; /*定義變量*/
a=123;b=456; /*變量賦值*/
sum=a+b; /*求兩數(shù)之和*/
printf(“sum is %d\n”,sum); /*輸出和值*/
}
這是一個簡單的求和程序。/*...*/表示注釋部分,只給人看的,對編譯和運行不起作用。第3行是聲明部分,定義變量a、b、sum,指定a、b、sum為整型(int)變量。第4行是兩個賦值語句,使a和b的值分別為123和456。第5行使sum的值為a+b,第6行中“%d”是輸入輸出的“格式字符串”,用來指定輸入輸出時的數(shù)據(jù)類型和格式,“%d”表示“以十進制整數(shù)形式輸出”。Printf函數(shù)中括弧內(nèi)最右端sum是要輸出的變量,現(xiàn)在它的值為579(即123+456之值)。因此輸出一行信息為:
sum is 579
從這個例子可以看出,想要把《C語言程序設(shè)計》這門課學好,不僅要知道《C語言程序設(shè)計》的基本框架,還要學好函數(shù)體中的內(nèi)容(變量類型、定義變量、變量賦值、輸入輸出格式字符串、輸入輸出函數(shù)格式、調(diào)用函數(shù)等)。另外還要學好C語言的運算符、運算順序 、四種程序結(jié)構(gòu)(順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、模塊化程序結(jié)構(gòu) )、掌握一些簡單的算法等。
2.5 熟練C程序的上機步驟
在編好一個C源程序后,如何上機運行呢?要經(jīng)過編輯、編譯、連接和運行四個步驟。
(1)編輯源文件。在編輯(Edit)狀態(tài)下輸入或修改源程序。
(2)編譯源程序。選擇“C編譯”菜單并選擇“編譯到OBJ”,進行編譯,得到一個后綴為.obj的目標程序。
(3)然后再選擇菜單“L連接EXE文件”,進行連接操作,可得到一個后綴為.exe的可執(zhí)行文件。
(4) 運行程序。在“RUN”菜單中選擇“R運行程序”項,或直接按Ctr+F9鍵,系統(tǒng)就會運行已編譯好的可執(zhí)行目標文件。此時,TC集成環(huán)境窗口消失,屏幕上顯示出程序運行的結(jié)果。如果程序需要輸入數(shù)據(jù),則應在此時,從鍵盤輸入所需數(shù)據(jù),然后程序會接著執(zhí)行,輸出結(jié)果。
2.6 要加強編程訓練
《C語言程序設(shè)計》是實踐性非常強的課程,要求學員要理論聯(lián)系實際,在掌握C語言的基本語法和基本知識后,重點應放在提高編程能力的訓練上。根據(jù)學生學習的認知特點,我認為主要應從以下幾個方面進行強化訓練:
(1)吃透課本例子。每學完一次新課,讓學生對課本例子先分析任務(wù)、再仔細閱讀程序,然后按書上的源代碼敲出來,編譯執(zhí)行輸出結(jié)果,如果結(jié)果跟書上一致就算完成,如果不一致,就要仔細找原因。再后不看書自己編寫代碼與課本對照,找出自己的不足,然后改進。最后在此例的基礎(chǔ)上自己加以改造,舉一反三,變?yōu)槠渌睦樱绱朔磸途毩暎粌H培養(yǎng)了學生動腦思考的習慣,而且養(yǎng)成了遇事三思、認真、周密的作風。
(2)精選上機題目,要求調(diào)試通過。每章找出一個或兩個綜合性的具有代表性的應用題目,如編寫一個程序,計算一個整數(shù)的名位數(shù)字之和;用選擇法對數(shù)組中10個整數(shù),按由小到大的順序進行排序等,要求用C語言編寫可執(zhí)行的源程序,上機調(diào)試。這樣不僅鍛煉了學生解決實際問題的能力,更重要的是激發(fā)了學生學習課程的興趣,抽象變具體 ,理論變實踐,對這門課有了更深的認識。
(3)閱讀填空法。找一些經(jīng)典程序,配上必要的說明,適當去掉語句或表達式,讓學生通過閱讀填補空白,訓練學生的程序設(shè)計能力。例編寫一個程序,輸入月份號,輸出月的英文月名,還有求和、排序、報號等。
(4)準備一個經(jīng)驗本,記下C語言重要的語法和知識點,還有自己出錯的解決方法及老師講解的其他同學出現(xiàn)的常見錯誤,抽空常翻看,逐步積累經(jīng)驗,加深印象,使以后避免。
(5)帶著作業(yè)去上機。每次理論課結(jié)束后,老師都會給學生布置一些作業(yè)(如習題)讓學生做,那么學生一定要認認真真的把作業(yè)完成好,先把程序編寫在作業(yè)本上,上機時再把這些程序敲到計算機上,進行修改、調(diào)試、運行,最后輸出結(jié)果。如果學生不帶作業(yè)去上機,第一次老師警告下次一定帶作業(yè)上機,如果第二次還沒帶作業(yè),不準學生進機房,讓學生到教室把作業(yè)做完后再到機房上機調(diào)試。有人說學生可以直接在機器上編寫程序,固然沒錯,但對于初學者來說,如果在機器上邊思考邊編寫,也就是說想一句編一句,再想一句再編一句,這樣太浪費時間,一節(jié)課說不定連一個程序都編不好,所以老師一定要求學生在課下把程序編好,上機只需把程序敲出來進行修改、調(diào)試、運行,這樣能節(jié)約大量的時間,學生上機時間本身都是有限的。
上述方法在教學實踐中證明是行之有效的,學生對問題分析、程序設(shè)計的自覺性和能動性得到提高,動手能力加強,對后繼課如《C++》、《面向?qū)ο蟪绦蛟O(shè)計》等,學習起來倍感輕松,較好地完成了該門課程的學習目標。總之,實踐出真知,多學、多練、多思、多交流,勤奮好學才能學成。
參考文獻:
[1]嚴桂蘭.C語言程序設(shè)計與應用教程[M].福建:廈門大學出版社,2001.
[2]譚浩強.C程序設(shè)計(第三版)[M].北京:清華大學出版社,2005.
[3]陳東.計算機多媒體教學改革的一些嘗試[J].福建師范大學學報(自然版),2004,20(3):98.
[4]王蘭.學好《C程序設(shè)計》的幾點建議[J].科技信息,2007(9).
關(guān)鍵詞:C語言;理論教學;實踐教學
中圖分類號:G642.0 文獻標識碼:A 文章編號:1674-9324(2012)07-0079-02
隨著計算機學科和其他學科交叉應用的不斷深入,高校都開設(shè)了程序設(shè)計課程,培養(yǎng)學生掌握和利用計算機分析解決問題的能力,同時提高學生的邏輯思維能力。要進行程序設(shè)計,必須掌握一門計算機語言作為編程工具,由于C語言功能豐富,表達能力強,使用靈活方便,應用面廣,目標程序效率高,可移植性好,它既有高級語言的優(yōu)點,又有低級語言的許多特點,通過該課程可以很好地提高學生的編程能力,進一步為學習其他涉及到計算機知識的專業(yè)課程或者從事編程開發(fā)工作打下良好的基礎(chǔ),因此很多高校都把C語言程序設(shè)計作為一門基礎(chǔ)的必修課進行開設(shè)[1]。然而通過調(diào)查發(fā)現(xiàn),在教學過程學生普遍反應C語言難學而老師感覺難教,課程結(jié)束后很多學生對程序設(shè)計沒有清醒的認識,更談不上進行實際的應用開發(fā)[2]。如何解決C語言程序設(shè)計課程教學中普遍存在的問題,讓學生對程序設(shè)計有一個完整的認識,進而培養(yǎng)和提高學生的綜合素質(zhì),是值得每一位從事程序設(shè)計語言教學的教師去認真研究的課題。
一、存在的問題
高校C語言課程大都在一年級開設(shè),由于大多數(shù)學生在高中時接觸計算機編程較少,這就導致了學生在學習C語言的過程中,感覺其枯燥、抽象、難以掌握;對基本概念尚能理解,但當實際編程時,又感覺無從下手。這些問題跟教師講課過程中過多注重語法等理論知識,對學生學習興趣和解決實際問題的能力培養(yǎng)不夠有很大關(guān)系,主要原因體現(xiàn)在以下幾個方面。
(1)學習目的不明確。一些學生不清楚程序課程的學習目的和意義,認為就是學習語法規(guī)則,學習內(nèi)容抽象并且晦澀難懂,沒有實用價值,學習只是為了考試及格,認為大一開設(shè)的課程是基礎(chǔ)課,和專業(yè)課聯(lián)系不大,對自己的就業(yè)沒有影響。一些非計算機專業(yè)學生學習該課程目的甚至只是為能通過計算機等級考試拿到證書。
(2)學習內(nèi)容不合理。許多老師在講授課程內(nèi)容時往往都是先給出一般的語法格式,然后介紹語句的語法規(guī)則,最后講解語法要點和例題,沒有易于理解和能夠提高學習的案例,由于書本內(nèi)容死板枯燥且和實際問題脫節(jié),無法滿足學生的認識水平,也不能調(diào)動學生學習的興趣。在進行上機實驗時,試驗內(nèi)容往往是書本上的或是老師上課時所講的案例,由于內(nèi)容的選擇不恰當,上機實踐很大一部分情況下都變成了打字練習,或者只會驗證性地做一些修改對錯、得出程序運行結(jié)果的實驗,一旦要求功能改進,不能進行算法和語法結(jié)構(gòu)的調(diào)整,最后學生總會覺得出C語言難學的結(jié)論[3]。
(3)教學方式不完善。部分老師的教學仍然采用理論講授在先、上機實驗驗證、最后布置作業(yè)鞏固的傳統(tǒng)教學模式,在教學過程中過多強調(diào)學習語法格式等理論知識,重點分析程序和算法的運行過程,而不是講解根據(jù)問題如何分析和設(shè)計算法和程序,從而致使學生的程序設(shè)計能力不強。這種教學模式培養(yǎng)出的學生雖然理論知識學得很好,考試的時候也可以拿到高分,但在真正要求解決實際問題的時候,往往沒有編寫程序的思路,不知如何下手。由于經(jīng)常解決不了問題,不能體會到計算機編程在解決實際問題時帶來的便捷以及沒有編程的成就感,久而久之,學生也就失去了學習計算機編程的動力。
二、解決方法
(1)激發(fā)學生學習興趣。興趣是最好的老師,能夠使人產(chǎn)生愉快的心理狀態(tài),并對學習過程產(chǎn)生積極的影響。研究證明學習者只要對學習有興趣,就可使人腦處于開放狀態(tài),學習者對于學習的興趣越濃,信息在傳輸過程中受到的干擾就越小,信息接受量就越大。從教育心理學的角度來說,興趣是一個人傾向于認識研究獲得某種知識的心理特征,是推動人們求知的一種內(nèi)在力量。人的注意力、觀察力、思維能力、記憶力乃至想象力都和興趣緊密相連,興趣能使人的認識理解記憶處于最佳狀態(tài),思維能力最為主動和活躍[4]。有了學習興趣,學生才有可能有意識地去思考和解決問題,因此在C語言教學的過程中要注重激發(fā)學生的學習興趣。
關(guān)鍵詞:中職;C語言;設(shè)計;教學;有效性
中圖分類號:TP312.1-4
1 存在的問題和困惑
《C語言程序設(shè)計》課程共72個學時,其中36課時安排在教室進行理論課教學,另外36課時安排上機練習。教學效果并不理想。經(jīng)過一段時間的觀察與分析,總結(jié)了原因有以下幾點:
首先在教學環(huán)境上存在著一定的問題。我校的微機房和教室是分開的,也就是說理論教室和機房并不在一起。這就導致了在授課過程中需要把理論知識內(nèi)容和上機操作的內(nèi)容完全割裂開來進行講解。但作為課程來說,大多數(shù)知識點并沒有明確的歸類,而是理論和實踐穿插在一起,理論知識給實踐環(huán)節(jié)提供支撐,實踐環(huán)節(jié)又能通過感官加深對理論知識的認識。因此將理論和實踐上機割裂開來的后果是,每次在教室講到某一知識點時,不能及時通過上機練習加深學生的認識,使得學生在課后很短時間內(nèi)便將課堂所授知識慢慢淡化并遺忘。其次,我校招收到的學生整體素質(zhì)不太理想,學生的學習習慣僅僅停留在課堂教學過程中,學習熱情也不高,因此基本上也就是當下課后,除了完成老師布置的作業(yè)外,很少有同學能自覺、主動完成課程的預習和復習。因此知識在學生頭腦中的存在感很弱。
第三,由于《C語言程序設(shè)計》這門課程的邏輯性較強,需要學生發(fā)揮更多的想象空間去思考、去理解。當同學們遇到某個難題,無法跨越,不能立刻理解的時候,就會造成學習信心不足,導致對課程產(chǎn)生一種恐懼心理,而把這種心理帶到課堂中,造成了后面知識點的學習不暢,進而進入了一種學習的惡性循環(huán)。
2 解決問題的方法和措施
按照以往傳統(tǒng)的教學策略,老師們常常是通過對后進同學進行補課、輔導,且在平時教學過程中適當增加課時量或大量增加作業(yè)量,期望學生能通過這種不斷、反復的灌輸與練習來加深記憶,達到理解知識的目的。但作為一門具有較強邏輯性和對學生動手能力要求較高,并且需要通過理解才能達到靈活應用的計算機語言類課程,這一做法顯然已經(jīng)不適用于本課程的教學。增加課時量或作業(yè)量,學生或許能暫時加深對知識的記憶,但對于幫助學生達到理解知識并靈活應用這一目的,卻并不能起到很好的推動作用。因此,通過我在教學實踐中的反復摸索,嘗試結(jié)合以下幾種措施來進行改變:
2.1 深入鉆研,用好教材
首先,教材是教學之根本,教師必須圍繞教材進行知識點的講解。脫離教材進行講解,很容易讓學生在課后的學習過程中無從下手。教材用的合適可以大大減輕學生完成課后作業(yè)的壓力。
做到這一點,首先教師應通過深入地研讀教材,準確把握教學內(nèi)容,提煉教學重點難點;其次,通過了解學生,準確把握學生學習起點及需要,結(jié)合教材內(nèi)容精心設(shè)計教學活動。
(1)深度透視教材,把握教材脈絡(luò)。教材是知識的載體,是教師教學的依據(jù),是學生學習的平臺。但大多數(shù)教材并沒有提供完整的教學過程,也沒有提供詳盡的教學設(shè)計理念。面多種學生個體差異,教材也并不會羅列出有針對性的教學方法。因此作為教師在備課過程中就應樹立整體概念,高屋建瓴,從教材的整體入手通盤考慮教材的編排意圖,弄清每部分知識點在教材體系中的地位和作用,多問幾個為什么。如:這例題為什么這樣設(shè)計?習題為什么這樣編排?結(jié)論為什么這樣引出?經(jīng)過一系列思考后,教師駕馭教材的能力肯定可以有所提高。通過教材脈絡(luò)的把握,教師可以更合理的進行課后習題的設(shè)計與編排。有利于學生參照課堂教學環(huán)節(jié)進行課后的作業(yè)及課后的自主學習與探究。
(2)合理地確立教學內(nèi)容。作為中等職業(yè)學校的學生,學習基礎(chǔ)相對比較薄弱,缺乏良好的學習習慣。而對于中等職業(yè)學校而言,需要培養(yǎng)的是具有高素質(zhì)的職業(yè)技能人才,較強的實踐動手能力尤為重要,而對理論知識的深度并沒有太多的要求。此外,由于C語言程序設(shè)計,對于學生來說,邏輯性較強。太深的教學難度不容易激發(fā)學生的學習興趣,容易挫傷學生的學習積極性,而增加教學難度。
因此在教學過程中,我在保證知識、技能目標前提下,對教材內(nèi)容進行了拓展開發(fā),刪除了一部分學生不容易理解和掌握的內(nèi)容,比如文件、類的章節(jié),而在條件、循環(huán)等基礎(chǔ)性環(huán)節(jié)上增加了課時量。這樣使教學過程充實、豐富。
2.2 分層教學,各個擊破
從思想上來開,中等職業(yè)學校學生正處于青春叛逆期,如果過于強調(diào)課程的重要性,作業(yè)布置太多,容易引起學生的抵觸心理。因此在授課過程中,我強調(diào)理論聯(lián)系實際。盡可能多的引入一些計算機方面的新技術(shù),新應用,通過PPT、圖片、視頻、游戲等方式展現(xiàn)給學生看(如圖1)。一方面提高學生對于計算機學習的興趣,另一方面,通過新技術(shù)的應用,幫助同學們樹立學習的信心,減少學生的畏難情緒。促使學生積極主動的掌握所學知識,激發(fā)他們不斷深入研究學習的興趣和激情。
同時,在課程教學過程中所用的示例也盡可能的貼近學生的實際,例如,求學生多門課程的總分、平均分或根據(jù)成績進行登記劃定等等。
此外,在教學過程中,我根據(jù)學生的基礎(chǔ),把學生分成紅、藍兩個戰(zhàn)隊,在這兩個戰(zhàn)隊中,有基礎(chǔ)比較好的同學,也有基礎(chǔ)比較薄弱的同學。在上課過程中,基本上都是由這兩個戰(zhàn)隊的同學形成競爭。例如,在做題過程中,由兩個戰(zhàn)隊分別派出一名同學完成題目,進行分數(shù)計算,最后的分數(shù),計入兩個戰(zhàn)隊同學們的最終平時成績中。這樣,一方面可以通過競爭,激發(fā)同學們的學習興趣;另一方面,加強同學們的學習凝聚力,基礎(chǔ)比較好的同學會自覺幫助比較薄弱的同學,自動激發(fā)學習的主動性。
2.3 保證基礎(chǔ),不斷拓展
任何事物都有一個由量變到質(zhì)變的過程,學習也一樣。逐步深入,對于C語言課程來說,這點尤其重要。因此在課程中,針對同學們的基礎(chǔ)參差不齊,我給她們布置的題目也分為容易、較難、難三個層次。在課堂上,我也時刻提醒自己:要堅持做到以學生為主體,老師只是起到一個主導的作用。
對于基礎(chǔ)比較薄弱的同學,保證會做“容易”層次的題目,盡量學會做“較難”層次的題目。這樣做既能確保她們的成績不會落下,同時還能通過不斷的進步來提高她們學習的信心。同時在不知不覺中我已經(jīng)一步步的將難度加大,同學們的知識也在不斷地升華、擴展。對于一些基礎(chǔ)較好的學生,簡單容易的題型已不能滿足她們求知的欲望,我的原則是:在她們能夠獨立完成簡單題目的基礎(chǔ)上,另外增加難度較大的任務(wù)給她們完成。這樣做既能安撫她們驕燥的情緒,同時通過不斷的挑戰(zhàn)難題也充分的激發(fā)了她們的學習激情。
通過思考與總結(jié),我發(fā)現(xiàn)在我校其他計算機語言類課程的教學過程中同樣也存在著類似的情況,因此我覺得對C語言課程的改革同樣也應該適用于其他相類似的課程中。
參考文獻:
[1]景運革,孟朝霞.C語言程序設(shè)計教學目標描述研究[J].運城學院學報,2008(05).
[2]郭來德,竇玲.“C語言程序設(shè)計”雙語教學改革研究[J].價值工程,2012(13).
[關(guān)鍵詞]C語言 程序設(shè)計 實踐教學
一、前言
上個世紀70年代以來,C語言在以其目標代碼質(zhì)量高,使用靈活,數(shù)據(jù)類型豐富,可移植性好等特點而得到廣泛的普及和迅速發(fā)展,成為一種在系統(tǒng)軟件開發(fā)、科學計算、自動控制等各個領(lǐng)域廣泛應用的程序設(shè)計語言。在眾多高級程序設(shè)計語言競顯風流的當今社會,C語言以其強大的功能仍在高級程序設(shè)計領(lǐng)域占據(jù)著重要的地位。
C語言作為計算機類專業(yè)的一門專業(yè)課,是學生學習程序設(shè)計的開端,學生分析問題、解決問題的能力和程序設(shè)計過程理念的形成都與C語言有著密切的聯(lián)系。C語言有著其它高級程序設(shè)計語言不可比擬的優(yōu)點,同時也有其較難學習的一面。由于現(xiàn)行教學過程中存在著一些弊端和學生自身因素的原因,所以在學習中普遍反映“難學”、“不懂“,這也是學生普遍遇到的問題。
二、現(xiàn)行教學和學習中存在的問題
1.現(xiàn)行教學中理論課與實踐課完全分離,不能相互促進。理論課中往往只注重對教材知識的分析和灌輸,在廣度上對知識沒有拓展和延伸,必定會影響對知識深度的剖析,也會造成學生理解的困難。而實踐課程通常被放到了次要的地位,很多時候是在走形式:一方面,學生對知識一知半解、往往用上網(wǎng)來對付實踐課;另一方面,老師很難監(jiān)控到每個學生,了解他們是否都在認真編寫、調(diào)試程序。這就造成理論課沒有起到為實踐課打基礎(chǔ)的作用,實踐課也沒有起到鞏固、應用理論課的作用。
2.學生對計算機基礎(chǔ)的學習不深入,嚴重影響了C語言的學習。因為C語言程序設(shè)計課程的延續(xù)性和拓展性非常的強,包含了算法、數(shù)據(jù)結(jié)構(gòu)、計算機基礎(chǔ)等相關(guān)專業(yè)課程和基礎(chǔ)課程的課程的知識。在C語言教學中涉及到進制轉(zhuǎn)換、取值范圍和順序存儲等基礎(chǔ)知識時,發(fā)現(xiàn)很多學生還沒掌握這些基礎(chǔ)知識,甚至根本不理解。在這樣薄弱的基礎(chǔ)上,C語言教學很難順利進行。
3.學生在學習中處于被動的接受知識的地位,沒有機會主動參與到學習中來,導致學習興趣不濃、學習停留在表面、對知識學的一知半解。由于接受的多是課本知識,所以動手能力差、應用能力差,導致不能把自己所學的知識應用到實踐中去。這樣培養(yǎng)出來的學生不能滿足社會的需要,也沒有達到教學的目的。
三、探索新的教學方法
在多年的教學過程中,嘗試多種教學方式,不斷總結(jié)教學經(jīng)驗,探索新的教學方法。
1.上好第一堂課,引起學生的學習興趣。第一堂課是最基礎(chǔ)的理論知識課,如介紹C語言的發(fā)展、特點、優(yōu)點等內(nèi)容,往往不被教師所重視,認為應該把精力放到程序設(shè)計部分。其實恰恰相反,上好第一堂課至關(guān)重要,它關(guān)系著學生是否會對學習產(chǎn)生興趣,渴望進行后繼內(nèi)容的學習問題,所以絕對不能照本喧科。而對C語言的發(fā)展追本溯源,將C語言領(lǐng)域的開發(fā)投入、研發(fā)過程、遇到的問題進行詳細的分析,對C語言在現(xiàn)實中的應用以及C++、VC++進行介紹,往往能夠引起學生學習C語言程序設(shè)計的興趣、推動后續(xù)知識的學習。
2.詳細講解基礎(chǔ)知識,深度剖析與后繼課程相關(guān)的內(nèi)容,激發(fā)學生學習動力。C語言程序設(shè)計教學中涉及的數(shù)據(jù)類型、取值范圍、運算符、優(yōu)先級、表達式等內(nèi)容雖是基礎(chǔ)知識,但對學生來說卻是邁入程序設(shè)計大門的第一步。沒有堅實的基礎(chǔ)知識,便無從談及程序設(shè)計,所以對基礎(chǔ)知識的講解一定要詳細。比如遇到整型數(shù)據(jù)的取值范圍問題時,可以適當拓展一些原碼和反碼的知識,讓學生知其然,更知其所以然;鏈表知識是C語言的難點,這部分內(nèi)容和數(shù)據(jù)結(jié)構(gòu)聯(lián)系密切,所以要深度剖析,尤其是對帶表頭結(jié)點的單、雙鏈表更要講解的清晰、透徹,為數(shù)據(jù)結(jié)構(gòu)、JAVA語言等后繼課程打下堅實基礎(chǔ)。這樣繼往開來,不僅可以鞏固以前的計算機基礎(chǔ)知識,更能激發(fā)學生的學習動力。
3.重點分析程序設(shè)計過程,培養(yǎng)學生良好的編程習慣,逐步提高學生編程能力。很多學生認為,進行程序設(shè)計就是用計算機語言編寫源代碼,這其實是學習程序設(shè)計的一個誤區(qū),編寫源代碼僅僅是完成了程序的編碼,而程序設(shè)計從問題分析就開始了,它包括分析問題、選擇算法、繪制流程圖、編寫源代碼、調(diào)試并測試程序,直到取得正確結(jié)果這樣一個完整的過程。其中繪制流程圖能使程序員在編程時思路清晰,減少編程錯誤。利用流程圖來分析、查找、解決程序設(shè)計中的問題能夠一目了然。例如:下面這一簡單的while循環(huán)結(jié)構(gòu),用流程圖便可以輕易發(fā)現(xiàn)錯誤所在。圖1是錯誤代碼的流程圖,它使程序陷入了死循環(huán),圖2是正確的流程圖。所以繪制正確的流程圖,是減少代碼錯誤的有效手段。
Main(0
{int i,sum;
i=sum=0;
While(i
Sum+=i;
i++;
Printf(“1+2+3+…+100=%d’,sum);
}
在C語言程序設(shè)計教學過程中,即使對簡單的程序設(shè)計的講解也嚴格的按照程序設(shè)計的過程一步步的進行分析和引導,培養(yǎng)學生良好的編程習慣。
4.通過實踐教學,讓學生親自體會程序設(shè)計全過程,鞏固所學知識。學生通常在C語言的學習上投入了很多的精力與時間,但卻離實際要求相差很遠。因為缺乏了實踐經(jīng)驗和能力,不能滿足社會的需求,這也是計算機類學生的通病。為此,在教學中一定要注重理論與實踐相結(jié)合。案例實驗可以說是學習C程序設(shè)計最有效的方法之一,在教學過程中我們故意將賦值符號“=”和等號“= =”互換、漏寫分號“;”和大括號“{}“,設(shè)置一些待解決的錯誤,引導學生在編程和調(diào)試過程中逐一解決這些問題,不僅能夠鞏固理論知識、養(yǎng)成編程的好習慣,更能調(diào)動學生思考問題和解決問題的積極性。同時在解決問題的過程中使學生有一種成就感,這對學習能力的提高和積極性的培養(yǎng)有很好的作用。
5.多種教學手段相結(jié)合,提高教學效果。理論教學與實踐教學相結(jié)合,適當減少理論課、增加實踐課,將理論教學融入實踐教學中來,逐漸模糊兩者之間的界限;傳統(tǒng)教學與豐富多彩的多媒體教學相結(jié)合、教師講解與學生課堂討論相結(jié)合,以便調(diào)動學習的主動性和積極性。
6.注重對知識的歸納和總結(jié),讓學生溫故而知新。在教學過程中,按章節(jié)、按階段對相關(guān)重點知識進行歸納總結(jié),讓學生把模塊化的知識連接起來,系統(tǒng)、全面的掌握所學內(nèi)容。
四、結(jié)束語
目前C語言程序設(shè)計教學中仍然有很多需要改進的地方,如何提高實踐教學質(zhì)量,使理論與實踐相結(jié)合,仍需要在教學過程中不斷的探索和改革。
參考文獻
[1]楊路明等.C/C++程序設(shè)計教程.長沙:湖南科學技術(shù)出版社, 2003.
[2]譚浩強. C語言程序設(shè)計教程.北京:高等教育出版社,1997.
【關(guān)鍵詞】C語言程序設(shè)計 教學方法 資源整合
C語言是一門結(jié)構(gòu)化程序設(shè)計語言,對于學生來說,C語言程序設(shè)計的思維方式和概念都是全新的,學生接受起來很困難。那么,在C語言程序設(shè)計教學過程中,怎樣開展這種構(gòu)造性的又具有創(chuàng)造力活動的教學呢?筆者經(jīng)過這幾年的自我學習以及實際教學中的不斷摸索,對C語言程序設(shè)計教學方法有了一些認識,與大家共同探討。
一、注重網(wǎng)絡(luò)環(huán)境下的資源整合
互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展徹底引發(fā)了閱讀、計算等方式的變革,巨大的信息量、便捷的信息傳
遞、極強的交互性,使得網(wǎng)絡(luò)成為最有效的資源獲取工具。因此,在教學過程中建立或利用一個以C語言為專題的編程學習網(wǎng)站,整合與C語言編程相關(guān)的豐富的學習資源,為學生提供動態(tài)的、協(xié)作性的學習環(huán)境和學習工具,讓學習者自己選擇信息資料,自己收集、分析并應用知識,去解決實際問題。通過網(wǎng)絡(luò)學習環(huán)境開展C語言教學,提高了C語言教學活動的有效性。
二、以合作學習為導向,改革課堂教學環(huán)節(jié)
合作學習是備受國際教育界推崇的學習模式,因為它有助于培養(yǎng)學習者的合作精神和協(xié)同解決問題能力。
教學中,以幾名學生為小組組成學習的基本單位,學生在學習小組內(nèi)相互協(xié)作、相互幫助、群策群力,共同完成相應的教學任務(wù)。實際教學中,教師向各小組布置項目任務(wù),給以必要的說明,提供必要的資料和網(wǎng)絡(luò)資源,然后各學習小組研究問題,制定解決方案,最后將結(jié)果展示出來。例如,在C語言中的函數(shù)調(diào)用這一個問題,將程序分解為數(shù)個模塊,每個小組各自承擔其中一個模塊的程序編寫,C語言模塊化程序設(shè)計的思想在這時得到充分地展現(xiàn),讓學生深刻理解了模塊化程序設(shè)計理念,同時也使學生感受到了團隊合作的重要性,培養(yǎng)了學生協(xié)作互助精神。
三、抓住重點,分散難點,注重循序漸進
學習程序設(shè)計是一個逐步積累的過程。教材在整體設(shè)計上,要注意分散難點、合理選材,為學生建立科學的學習順序,并注意適時、適量,學以致用地逐步滲透相關(guān)的知識、思想和方法。對于有難度的知識點,采用先用一個簡單的例子讓學生有所了解,經(jīng)過一段時間的反復練習以及相關(guān)知識的積累后,再引入一個復雜一些的例子,深入理解和掌握,然后再加以概括和總結(jié)。讓學生對知識的認識、理解、運用有一個逐步深入的“螺旋式”上升過程。幫助學生把已學到的內(nèi)容不斷納入新的內(nèi)容體系中去,使學生認知結(jié)構(gòu)中原有的概念和新的知識建立起實質(zhì)性的聯(lián)系。例如,雙循環(huán)結(jié)構(gòu)知識點中的打印規(guī)則圖案的程序設(shè)計方法,就可依據(jù)問題的難易程度,先找出直角三角形圖案形成的規(guī)律,再探究等腰三角形圖案的形成特點,最后解決構(gòu)成菱形圖案的程序設(shè)計,讓學生有一個全面、系統(tǒng)的理解和掌握解決該問題的思想方法。
四、立足任務(wù)驅(qū)動,滲透基本概念
概念的形成過程常常是學生進行邏輯思維的過程,如果遵循邏輯思維過程去組織教學,必將使學生容易掌握概念。因此,要想讓學生領(lǐng)會C語言中抽象的概念,教學中以實例任務(wù)作為知識的載體,在每個實例中適時、適量滲透一些相關(guān)的概念和知識,由實例去驅(qū)動學生主動發(fā)現(xiàn)、分析和處理問題,讓學生在做中學,在學中做,使學生在完成任務(wù)的過程中,逐漸地、很自然地去體會C語言的語法規(guī)則及相關(guān)概念,并且在這一過程中,學生還能體會到相似概念之間的差別,以及解決這一問題的不同程序設(shè)計步驟。比如,當型循環(huán)while與直到型循環(huán)do-while語句的區(qū)別,如果只通過教師講述,多數(shù)同學一般只能在表面上知其然,實則不知其所以然,但如果給出一個具體的任務(wù)實例,讓同學們在實踐后的結(jié)果中自己去體
驗兩者之間的不同,留在學生腦海中的記憶將猶為深刻。
五、引導學生建構(gòu)自己的知識體系
基于網(wǎng)絡(luò)環(huán)境下的學習過程具有開放性、廣域性和易交流性。因此,網(wǎng)絡(luò)環(huán)境下的創(chuàng)新教育能真正達到因材施教、發(fā)展個性的目的,能夠使學生主動參與學習過程,并按照自己的認知水平有序地進行學習和提高,并使其創(chuàng)造性學習成為一種習慣。建構(gòu)主義的教學活動中,教師的教學形式并不固定,學生則作為一個主體,積極會同其他的小組成員一起,通過已經(jīng)整合的學習資源在網(wǎng)絡(luò)下討論和學習,教師給予學生引導和幫助,解決學生建立知識體系過程中所出現(xiàn)的問題。這樣,學生既掌握了教材上的內(nèi)容,同時又通過網(wǎng)絡(luò)資源學習了相關(guān)的知識點,完成了對自己知識體系的建構(gòu),形成了自己的學習方式,而教師不但完成了教學任務(wù),也教會了學生學習的方法,為學生以后的自我學習打下基礎(chǔ),正所謂“教”與“學”相得益彰。
六、做好歸納總結(jié),提高學生學習效率
C語言程序設(shè)計的學習,很重要的一點在于歸納總結(jié)。一個章節(jié)的結(jié)束,學生則難以形成完整、清晰的框架,因此,教師在教學中要及時歸納、做好小結(jié)。教學歸納可以是一個知識點的歸納(如if條件語句的歸納),也可以是對一種知識結(jié)構(gòu)的歸納(如分支結(jié)構(gòu)中包含if語句、while語句、循環(huán)語句等的歸納)。總結(jié)可以是一個小節(jié)的總結(jié),也可以是一個單元內(nèi)容的總結(jié)。歸納總結(jié)的形式也可以多種多樣,可以使用文字概括,也可以使用圖表總結(jié),重點難點要著重強調(diào)。做好歸納總結(jié),有利于學生對知識的理解、做到融會貫通,順利實現(xiàn)知識遷移,提高學生的學習效率。
教學方法在程序設(shè)計教學中的重要性是不言而喻的,它制約著程序設(shè)計教學的效率。面對的教學對象不同,教學方法各異,但使每位學生都能得到充分的發(fā)展,培養(yǎng)創(chuàng)新人才,是我們的同一目的,教學絕不能脫離學生的知識背景和認知規(guī)律。
參考文獻:
[1]扈中平.現(xiàn)代教育理論.高等教育出版社,2004.
目前,計算機專業(yè)其他課程(如數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計)中,也經(jīng)常用c語言程序說明其過程和算法。因此,《c語言程序設(shè)計》已經(jīng)成了許多高校計算機專業(yè)的必修課。中央廣播電視大學自開設(shè)計算機專業(yè)以來,各地電大也把《c語言程序設(shè)計》作為一門重要的專業(yè)基礎(chǔ)課程,列入教學計劃,下面就我?guī)啄陙淼慕虒W經(jīng)驗談幾點自己的看法:
一、實例為引導,激發(fā)學生學習興趣
為了激發(fā)學生對C語言的學習興趣,教師要在教學方法與手段上多下功夫,加強對學生的引導,在講清語法規(guī)則的基礎(chǔ)上,可通過許多具體有趣的實例,如“兔子問題”、“水仙花數(shù)”、“競賽記分”等來培養(yǎng)學生的學習興趣,綜合利用板書、課件、程序演示等手段,做好師生互動,使學生加強理解和記憶。整個教學過程中把解題思路和算法當作授課的重點,從而讓學生明白如何分析并解決實際問題,逐漸培養(yǎng)學生進行程序設(shè)計的正確思維模式。
二、注重上機教學,通過程序調(diào)試加強容易被忽視細節(jié)的教學
C語言雖然說與自然語言和教學語言十分接近,但在實際中卻存在著許多“細小”的卻又十分嚴格的差異。由于它的細小,常常不能引起注意而被忽略。如表達式、函數(shù)、變量、分隔符等,學員在學習中,常常因重視不夠不能正確理解或沒有形成較深印象,造成程序設(shè)計時不能正確使用或習慣地用數(shù)學方法代之。
因此,教師在講授C語言課程時,不能忽視實踐課的教學,尤其是學生上機輔導課的教學。很多教師認為,上機輔導課就是讓學生自由練習,及時為學生解決問題,實際上這種教學輔導方式是不合理的。上機輔導課中教師一方面應反復強調(diào)C語言的“書寫格式自由但一點不能差”的特點,另一方面應視具體情況通過演示程序調(diào)試的方法加強容易被忽視細節(jié)的教學。
如程序abc.c:
#include<stdio.h>
voidmain()
{
inta=1
printf("a=%d\n",a);
}
編譯時出現(xiàn)以下問題:abc.c(5):errorC2146:syntaxerror:missing'''';''''beforeidentifier''''printf'''',給學生講解提示,讓學生通過提示明白問題所在,即該程序第5行的printf語句前缺少“;”。通過程序調(diào)試的方法不僅可以為學生解決錯誤,使學生自己通過實踐證明了問題的所在,使之深受體會。同時也增強了學生調(diào)試程序的能力,從而提高編程的經(jīng)驗和技巧。
三、利用多媒體進行輔助教學
對于一些抽象的、學生難以接受和理解的語句和算法,如條件語句、循環(huán)語句、指針、排序程序設(shè)計過程等,利用多媒體教學的優(yōu)勢,進行通俗易懂的講解和演示,模擬計算機的內(nèi)部狀態(tài)和執(zhí)行過程。精心制作多媒體課件,增強學生的直觀感覺,方便理解,起到事半功倍的作用。
例如在講解到三種循環(huán)的結(jié)構(gòu)時,學生很難理解三種循環(huán)的區(qū)別,通過制作多媒體課件來模擬三種循環(huán)的執(zhí)行過程,使學生一目了然的看清楚三種循環(huán)的結(jié)構(gòu)及其執(zhí)行過程,清楚了用什么構(gòu)成循環(huán)時,要注意在循環(huán)體內(nèi)對循環(huán)控制條件的修改,也清楚了三種循環(huán)的區(qū)別。再比如在分析用選擇法和冒泡法排序時通過用Flash制作一個若干個人按大小個子順序排序的動畫演示程序,這樣就起到了將抽象問題形象化、枯燥問題生動化的效果。
(山東理工大學計算機科學與技術(shù)學院,山東 淄博 255049)
【摘 要】C語言程序設(shè)計是理工科專業(yè)的一門重要公共基礎(chǔ)課,根據(jù)實際教學經(jīng)驗通過類比法對函數(shù)定義和函數(shù)調(diào)用中參數(shù)的多樣性進行分析,提高學生對C語言學習的興趣和積極性,加強知識點的綜合掌握和應用。
關(guān)鍵詞 C語言;函數(shù);參數(shù);類比法
基金項目:山東理工大學計算機科學與技術(shù)學院院級教學研究課題“網(wǎng)絡(luò)教學平臺下C語言分組教學研究與實踐”。
作者簡介:陳波(1981—),女,山東淄博人,碩士,山東理工大學計算機學院基礎(chǔ)教學部,講師。
巨同升(1965—),男,山東濰坊人,碩士,山東理工大學計算機學院基礎(chǔ)教學部,副教授。
0 引言
函數(shù)是構(gòu)成C程序的基本單位,也是實現(xiàn)模塊化程序設(shè)計的重要手段[1]。函數(shù)可以和C語言的其它知識點綜合起來,實現(xiàn)對C語言知識點地綜合理解和應用。但是學生在對函數(shù)的學習過程中存在諸多問題,筆者認為首先從宏觀上理解函數(shù),再從微觀上學習函數(shù)。
1 函數(shù)的宏觀理解
C函數(shù)有四要素:函數(shù)名、參數(shù)、函數(shù)體、返回值,函數(shù)就像一臺機器(函數(shù)名),對輸入的數(shù)據(jù)(參數(shù))進行加工(函數(shù)體)并輸出加工得到結(jié)果(返回值)。如圖所示。具體函數(shù)的輸入、功能及輸出是什么取決于函數(shù)的定義。
2 函數(shù)的定義
函數(shù)的定義是制造一臺實現(xiàn)某一功能的機器,函數(shù)定義的基本格式為[2]:
返回值類型 函數(shù)名(形式參數(shù)列表)
{
聲明語句序列
可執(zhí)行語句序列
}
返回值類型即機器加工輸出數(shù)據(jù)的類型,函數(shù)的返回值最多有一個通過return語句實現(xiàn),若沒有返回值用void來定義。函數(shù)名是這臺機器的唯一標識,用于說明其功能。形式參數(shù)列表來說明機器需要的輸入原材料的個數(shù)及類型,如果不需要輸入需用void代替函數(shù)形參列表中的內(nèi)容,聲明語句序列來說明函數(shù)內(nèi)部的變量,可執(zhí)行語句序列實現(xiàn)對原材料的加工處理,實現(xiàn)函數(shù)的功能。例如:
bigger這臺機器需要兩個整形的輸入,對其進行大小比較并把較大值放在局部整形變量max中返回回來。
3 函數(shù)的調(diào)用
函數(shù)調(diào)用就如用已經(jīng)制造好的機器生產(chǎn)產(chǎn)品一樣,實際放入的原材料稱為實參。函數(shù)調(diào)用的一般形式:
函數(shù)名(實參列表);
在函數(shù)的調(diào)用過程中就產(chǎn)生了實參向形參的數(shù)據(jù)傳遞,并且只能由實參傳遞給形參,而不能有形參傳遞給實參[3]。函數(shù)的參數(shù)可以有多種形式:簡單變量、指針變量、數(shù)組名。下面通過“借書”為例對其進行分析。
3.1 簡單變量作為函數(shù)的參數(shù)
實參傳遞給形參的是值,即“單向值傳遞”。例如A來向B借一本書, B復印了一本給A,他們手中的書雖然相同但是不是同一本,A在拿到的書中作標記不會對B的書產(chǎn)生影響。
3.2 指針變量作為函數(shù)的參數(shù)
由于指針變量存儲的是一個地址,所以實參傳遞給形參是地址,即“地址傳遞”。例如A來向B借一本書, B把放書的位置告訴了A,A通過位置信息找到書并在上面作標記,B再來看這本書時就是A做了標記的書了。
但并不是B把放書的位置或一套書的起始位置告訴了A,書的內(nèi)容就會發(fā)生改變,如下面代碼,A只是看了看書并且改變了放書的位置,書的內(nèi)容沒有發(fā)生改變。
3.3 數(shù)組名作為函數(shù)的參數(shù)
數(shù)組是相同類型數(shù)據(jù)的有序集合,采用連續(xù)順序存取的方式,數(shù)組名標識數(shù)組的首地址,如果要傳遞批量數(shù)據(jù)用普通變量作為函數(shù)的參數(shù)實現(xiàn)起來非常麻煩,就可以把數(shù)據(jù)先存放在數(shù)組中,把存放的首地址傳遞給函數(shù)即可。如B有一套書(10分冊)按照分冊號整齊的擺放在書櫥中,A來向B借這套書,B就把第一分冊在書櫥中的位置告訴A,A就可以找到這套書了,進而可以進行標記了。B再來看這套書時就是A做了標記的書了。
void Aborrow(int book[10]){ int i;
同樣B把一套書的起始位置告訴了A,書的內(nèi)容就會發(fā)生改變, 可能A只是看了看書并且改變了放這套書的位置,但是沒有在書中作任何標記。
4 結(jié)束語
本文以學生經(jīng)常進行的“借書”活動為例,通過類比法對函數(shù)定義、函數(shù)調(diào)用進行分析,可以看出函數(shù)參數(shù)的傳遞只能是實參的值傳遞給形參。指針變量作為函數(shù)的參數(shù)可以產(chǎn)生雙向的影響,數(shù)組名作為函數(shù)的參數(shù)可以實現(xiàn)批量數(shù)據(jù)的處理。加強學生了對局部變量、指針、數(shù)組的理解及綜合應用,提高了學生的學習積極性。
參考文獻
[1]譚浩強.C程序設(shè)計[M].北京:清華大學出版社,2005.
[2]蘇小紅,王宇穎,孫志崗,等.C語言程序設(shè)計[M].北京:高等教育出版社,2011.
關(guān)鍵詞:C語言程序設(shè)計;實例教學;啟發(fā)式教學;正反饋
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2014)42-0271-02
一、背景
隨著計算機技術(shù)的飛速發(fā)展和普及,計算機在各個領(lǐng)域中得到了廣泛應用。為了適應時代需求,幫助大學生更好地利用計算機編程技術(shù)解決專業(yè)問題,在高校的本科教育中,計算機程序設(shè)計課程已成為大部分理工科專業(yè)的必修課或者選修課。而C語言作為最經(jīng)典的編程語言之一,以其豐富的數(shù)據(jù)類型、清晰的語言結(jié)構(gòu)和結(jié)構(gòu)化編程思想,成為首選的程序設(shè)計課程。
本文結(jié)合筆者在高校多年從事C語言程序設(shè)計這門課程的教學經(jīng)驗,討論C語言程序設(shè)計的教學模式,從而調(diào)動學生學習C語言的積極性,幫助學生更好地掌握C語言編程技能。
二、激發(fā)學生對課程的學習熱情
大學生在修一門課程時通常會問:為什么要學這門課?這門課程有什么用處?如果問題得不到答案或者認為這門課程學了也沒有用處,那么學生就會缺乏學習動力和積極性。在修C語言程序設(shè)計這門課程的時候,學生也會存在同樣的疑問。所謂“磨刀不誤砍柴工”,在開始正式講述C語言理論知識之前,給學生闡明C語言的重要性和實用性是非常有必要的。只有這樣,才能從一開始就激發(fā)學生學習的內(nèi)在動力和激情。
那么,如何闡明C語言學習的重要性呢?作為老師,應該結(jié)合學生的興趣點,讓他們感受到C語言的重要性和學習意義。筆者在講授C語言的第一節(jié)課時,通常會花一點時間給學生講述這方面的知識。例如,Linux和Unix操作系統(tǒng)都是以C語言為主進行開發(fā),Windows操作系統(tǒng)是以C++為主開發(fā)。手機內(nèi)部的應用軟件、游戲等很多都是采用C語言進行嵌入式開發(fā)的,例如推箱子、貪吃蛇等游戲。學生所熟知的游戲“仙劍奇?zhèn)b傳”,由WATCOM C/C++寫的。而C語言是C++的基礎(chǔ),通常都是先學習C再學習C++,可見C語言的重要性。另外,在上課過程中,再穿插講一些著名人士(如比爾?蓋茨、馬克?扎克伯格)的成功故事,則更有益于激勵和提升學生對于計算機編程課程的學習熱情。
三、實例教學滲透基本概念
很多學生在上C語言程序設(shè)計課程之前,未上過其他計算機語言課程,在剛接觸這門課程時,通常懷著惴惴不安的心情,擔心自己學不好。因此,在剛開始上課時,應該用簡單的例題吸引學生,讓學生感受到學習C語言并非想象的那么難。例如,在第一節(jié)課,可以先在屏幕上通過運行C程序顯示一行信息:“This is a C program.”然后給學生顯示該信息的C語言源代碼:
void main()
{print ("This is a C program.\n");}
此時學生雖然還未學C語言編程,但是發(fā)現(xiàn)程序很簡單,就比較容易接受這門課程。隨后可以讓學生仿照例題寫程序顯示“I am an undergraduate student.”讓學生動手寫自己的第一個程序,內(nèi)容也與他們自己有關(guān),增強學生的參與性,無形中也會增加學生的學習熱情。
最初的幾堂課由于內(nèi)容相對簡單,學生感到新奇,因此學習積極性比較高。隨著課程內(nèi)容的深入,出現(xiàn)大量的語法規(guī)則時,往往會覺得枯燥乏味。因此,在講解C語言的一些定義和語法規(guī)則時,最好避免按部就班,直接給出定義和語法規(guī)則再給出例題。相反,我們可先舉若干例題,讓學生從中發(fā)現(xiàn)規(guī)律和總結(jié)規(guī)則,再給出定義。一方面有利于激發(fā)學生的上課積極性和活躍思維,另一方面也有利于學生記住這些規(guī)則。畢竟,通過思考總結(jié)出來的規(guī)則比死記硬背的知識更讓人印象深刻。在給出定義時,應對照著例題進行解釋,這樣有利于幫助學生記憶和理解。例如,我們在講解for循環(huán)語句規(guī)則時,可以先給出以下兩個簡單的例題(例1和例2),并通過運行程序給出對應運行結(jié)果。讓學生思考和猜測程序大致完成什么工作,再結(jié)合例題給出for循環(huán)的語法規(guī)則,并通過例題講解for循環(huán)中各個表達式及語句的執(zhí)行順序。其解釋過程如圖1所示。學生對應示例理解規(guī)則,就能較快地掌握for語法規(guī)則。
在講完語法規(guī)則以后,可趁熱打鐵讓學生進行課堂練習,鞏固剛學習的知識點。例如,在講解完for語句規(guī)則以后,可以讓學生模仿例2用for語句完成1到20的偶數(shù)之和,加深其對知識點的理解。
四、啟發(fā)式教學提高學習積極性
在學習過程中,提高學生主動學習的積極性非常重要。只有學生發(fā)自內(nèi)心想學,主動思考,學習效果才會更好。因此,在課堂教學過程中,老師應避免直接陳述知識點,而應積極引導學生思考。理工科的學生,邏輯思維能力較強,讓他們通過例題分析去總結(jié)知識點,更利于他們的學習和記憶。例如,在講解while和do while語句差異時,可以先給出以下兩個例題(例3和例4)。在不運行程序的前提下讓學生思考k=1和k=11時兩個例題的結(jié)果;然后運行程序給出例題運行結(jié)果(k=1,例3和4的結(jié)果都為sum=55。k=11,例3的結(jié)果為sum=0;例4的結(jié)果為sum=55)。對于理解while和do while循環(huán)的同學,在寫出答案的時已經(jīng)領(lǐng)悟出while和do while兩者的差異;而對于不理解while和do while差異的同學,則讓他們對比程序運行結(jié)果,思考兩者差異。最后,再由老師解釋兩者差異:“while語句先判斷,后執(zhí)行循環(huán)體;do while先執(zhí)行循環(huán)體再做判斷。當while判斷表達式第一次的值為‘真’時,兩種循環(huán)結(jié)果相同;否則不相同。”通過例題對比思考,可加深學生對知識點的理解。
除了通過對比讓學生加深思考以外,也可故意在程序中制造一些錯誤,使程序編譯報錯或者編譯通過但無法實現(xiàn)預期目標,讓學生從老師給出的程序中找bug,在程序調(diào)試過程中解決問題并加深對知識點的掌握。例如,給出例5,該程序的本意是計算1到10之和,運行程序后屏幕上沒有任何運行結(jié)果,再讓學生思考為什么得不到想要的結(jié)果。學生通過觀察可以發(fā)現(xiàn),“while(i<=10);”中的分號代表while循環(huán)體為空,i的值始終為1,導致程序陷入死循環(huán)。要想完成計算1到10之和,只需將“while(i<=10);”中的分號刪除。此例題也體現(xiàn)出對于C語言而言,“失之毫厘,謬以千里”,從而讓學生在編程過程中關(guān)注細節(jié)。
五、引導學生積極參與課堂互動
著名的《本科教育實踐七原則》一書中指出,本科教育的前兩個原則為:(1)加強師生交流;(2)引導學生間開展互惠合作。可見,在教學過程中,加強師生交流以及學生與學生之間的交流是非常重要的。一方面,老師應該通過課堂提問等方式加強師生互動。另一方面,老師也應該積極引導學生與學生之間開展互動。例如,在課堂練習時,可將學生分成若干小組,給出題目由學生在小組內(nèi)通過討論給出答案。受競賽獲勝心理的驅(qū)使,使得學生通力協(xié)作,積極思考。另外,由于不同學生的思維模式不一樣,對于同一題目,不同組往往給出不同的解題方式,實現(xiàn)了“一題多解”的課堂教學。
除了在上課期間分組討論以外,在實驗課也應鼓勵學生之間互相討論。實驗課是學生真正親自動手的階段,在實踐過程中難免會遇到各種問題。有些學生擔心向老師求助會被老師認為上課沒有認真聽講,所以不敢問老師。如果鼓勵學生之間討論,學生可以沒有思想負擔地向其他同學請教,回答問題的學生則從學生的角度幫助提問的學生解答問題,更有利于學生對知識點的理解。另外,在學生A向老師求助時,老師也可以讓學生B分析學生A編程中存在的問題,鼓勵學生積極思考。如果學生B發(fā)現(xiàn)問題所在,則會有一定的成就感,從而更喜歡這門課程;如果學生B無法找到學生A程序中的問題,則可以同時給學生A和B講解這一知識點,幫助兩位同學解決問題,這樣也有利于學生更好的掌握C語言編程技能。
六、形式多樣的正反饋
在上課期間,老師通常鼓勵學生不懂就立即提問。但是,不同學生喜歡和老師溝通的方式不一樣,有的同學可能因為害羞不喜歡課堂提問,所以應該鼓勵學生通過其他方式與老師溝通。例如,讓學生在作業(yè)本上寫出完成作業(yè)時遇到的問題,或者通過email、qq等方式尋求老師的幫助,老師也應及時給學生回饋。例如,學生在編程過程中遇到問題,通過email向老師求助,隔了幾天還沒有收到老師的回復,那么學生會認為老師讓學生提問只是流于形式,下次再遇到問題時,也就沒有再與老師溝通的積極性,也影響了學生的學習積極性。相反,老師若能立刻給學生回饋或在課堂上分析講解,學生則會認為老師重視自己的問題,學習積極性也因此提高。
另外,無論學生提什么樣的問題,都應給予正回饋,而不是對學生進行批評教育。事實上,學生向老師提問前會有各種顧慮,通常需要很大的勇氣才敢提問。所以,學生提問本身勇氣可嘉,這一點就值得表揚。如果學生提問遭到批評,學生以后再不敢也不愿提問,直接影響其學習積極性。
七、結(jié)語
本文從如何激發(fā)學生學習熱情、開展啟發(fā)式教學、引導學生參與課堂互動、給予學生正反饋等多個角度探討C語言課程教學模式。相信通過以上方法,可以幫助學生更好地掌握這門課程。同時,筆者認為本文所提的教學模式也可以推廣到理工科其他課程,尤其是偏重實踐的課程教學中。
參考文獻:
[1]Arthur W.Chickering and Zelda F. Gamson. Seven principles for good practice in undergraduate education[J]. American Association of Higher Education Bulletin,1987,39(7).
[2][美]拉爾夫?泰勒.課程與教學的基本原理[M].羅康,張閱,譯.北京:中國輕工業(yè)出版社,2008.
關(guān)鍵詞:C語言 教學方法 探討
1 明確學習目的,調(diào)動學習積極性
在講述C語言概述時,著重強調(diào)計算機語言學習的重要性和必要性。首先,C語言是其它高級語言的基礎(chǔ)。C++的核心基礎(chǔ)是C,C#的基本語法、基本數(shù)據(jù)結(jié)構(gòu)和基本控制結(jié)構(gòu)都和C語言類似, 學好C語言的基本語法對于學習其它高級語言起到非常重要的作用;其次,C語言的適用范圍非常廣,幾乎所有的硬件驅(qū)動、網(wǎng)絡(luò)通信、快速數(shù)據(jù)處理等都涉及到C語言;第三,C語言的普及率非常高,而且依然在不斷擴大,國內(nèi)幾乎所有大學都把語言作為程序設(shè)計相關(guān)專業(yè)的一門必修基礎(chǔ)課,國外也是一樣,很多大學都將語言作為必修課開設(shè)。第四,語言是各種認證考試的上機操作語言,目前計算機水平考試中的二級、三級、四級和程序員等考試中都將語言作為上機考試的內(nèi)容。
2 抓住學生的好奇心,用實例滲透基本概念
為了使學生能盡快進入C程序設(shè)計課程學習的角色,在講課過程中,要特別注意培養(yǎng)學生的學習興趣。初始幾節(jié)課,學生感到新奇、好玩,但隨著課程的不斷深入,大量的語法規(guī)則、程序代碼的出現(xiàn),很容易使部分學生感到枯燥無味,甚至望而生畏。為了把學生的好奇心轉(zhuǎn)化為學習興趣,授課時改變過去先給出定義和語句規(guī)則的講授方法,而是從篩選趣味實例出發(fā),將“語言”講得生動、活潑。
為了激發(fā)學生的興趣,在C程序設(shè)計中的第一課,演示一些由學生自己編寫的、有趣的程序。如加密解密程序等,從而吸引學生。
由于剛接觸程序設(shè)計的學生,對程序設(shè)計充滿了好奇,如果這時把變量、函數(shù)、指針等一大堆的概念放在前面講,一下子引入大量抽象的名詞、概念,就會打擊學生的學習興趣,同時,在學生沒有任何知識背景的情況下,要完全理解這些概念也是比較困難的。因此要想讓學生領(lǐng)會這些抽象的概念,教學中應以一個個鮮活的具體實例為切入點,在每個例子中適時、適量滲透一些相關(guān)的概念和知識,讓學生在做中學,在學中做,在完成任務(wù)的過程中,逐漸地、很自然地去體會變量、函數(shù)、指針等概念。
3 堅持循序漸進,在實踐中舉一反三
在教學的整體設(shè)計上,要堅持循序漸進的原則,分散難點、合理選材,為學生建立科學的學習順序。對于有難度的知識點,先用一個簡單的例子讓學生有所了解,經(jīng)過一段時間的練習以及相關(guān)知識的積累后,再引入一個復雜一些的例子,使學生能深入理解和掌握,最后再加以概括總結(jié),使學生對知識的認識、理解、運用有一個逐步深入的“螺旋式”的上升過程。教師要注重把已學過的內(nèi)容不斷納入新的內(nèi)容中去,將學生認知結(jié)構(gòu)中原有的概念和新的知識建立起實質(zhì)性的聯(lián)系。
例如,程序的循環(huán)結(jié)構(gòu)在程序三種基本結(jié)構(gòu)中是比較難掌握的,安排了三次課,從簡單到復雜,從單重循環(huán)到雙重循環(huán),逐步加深。
第一次課,先設(shè)計一個用多條賦值語句重復累加的程序,引出重復即是循環(huán)的概念,并列舉生活、工作中的循環(huán)實例,通過編寫這個程序,幫助學生分析語句的含義,讓學生對循環(huán)結(jié)構(gòu)有一個初步的認識。
第二次課,以典型的雙重循環(huán)實例“打印九九乘法表”,介紹雙重循環(huán)的概念,重點剖析內(nèi)循環(huán)作為外循環(huán)的循環(huán)體和外循環(huán)的關(guān)系,使學生循序漸進地掌握難點。
第三次課,循環(huán)程序應用舉例,通過難度適宜和一定量的程序?qū)嵗瑤椭鷮W生理解和掌握循環(huán)結(jié)構(gòu)。最后對循環(huán)結(jié)構(gòu)知識點進行總結(jié),使學生對循環(huán)結(jié)構(gòu)形成完整、清晰的整體知識框架,實現(xiàn)知識的遷移。循序漸進的原則同樣適用于實踐環(huán)節(jié)。
4 給學生搭建多種自主學習平臺
(1)發(fā)揮計算機專業(yè)的優(yōu)勢,充分利用網(wǎng)絡(luò)資源,創(chuàng)建C語言教學網(wǎng)站,提供教學課件,便于學生課后自主學習與復習。建立不同層次的題庫與測試內(nèi)容,方便學生的自我檢查。開辟討論區(qū)與答疑區(qū),隨時對學生的學習問題進行解答。并開展討論,提高學生的創(chuàng)新能力。
(2)開放學校機房。c語言是一門實踐性很強的課程。大量的上機調(diào)試程序,可以幫助學生發(fā)現(xiàn)問題,理解問題,掌握程序設(shè)計的方法,鍛煉創(chuàng)新能力,拓展邏輯思維。
5 抓住重點和難點,做到有的放矢
只有知道“該學那些,那些最重要,哪些最難學”,才能真正做到有的放矢,有備而來。語言中必須要掌握的知識包括數(shù)據(jù)類型、控制結(jié)構(gòu)、函數(shù)、數(shù)組、指針、結(jié)構(gòu)體和文件操作等幾部分。因為這些知識都是使用語言進行程序設(shè)計時使用最廣泛的,所以必須掌握。C語言中最重要的知識包括流程控制、數(shù)組、函數(shù)等。因為這些知識是程序設(shè)計中最實用的基本技能,所以,不僅要掌握。而且要熟練。C語言中比較難的知識包括字符串處理、指針、結(jié)構(gòu)體和文件等內(nèi)容。語言中必須掌握的知識是每個初學者學完之后都必須達到能夠使用的層次,而重點知識則必須非常熟練,難點知識做到基本掌握即可。