本站小編為你精心準備了語言設計論文:C語言策劃要點與教程革新研討參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
作者:丁海燕單位:云南大學信息學院
大一的新生對編程的邏輯思維不熟悉
作為計算機專業大一的必修課,C語言程序設計課時少,內容多,邏輯思維嚴密,實踐性強,多數學生從高中進入大學,對老師依賴性較強,自學能力不足,此外對計算機專業的學習方法不適應,對編程的邏輯思維方法還沒有形成,VC++上機操作不熟練,對編譯、調試過程中出現的專業英語不熟悉等各方面的因素,導致這門課程學生學習起來有一定困難,容易形成成績兩極分化的結果。因此更需要教師提高教學水平,激發學習興趣,使得枯燥難懂的編程變得生動有趣。
過分強調語法,忽視算法
C語言的學習類似于外語,要先會詞、句,然后才能寫出段落,C語言也必須掌握常量、變量、運算符、順序、選擇、循環語句等,才能寫出程序來。但要寫出好的文章光有詞匯和語法是不夠的,還需要流暢的思路,編程也是如此,算法才是程序的靈魂。大多數C語言教材中通常先給出一般的語法格式,然后講解語法要點,再舉例說明。很多教師對語句語法進行深入的教學,而對算法教學卻偏少、不重視。加上應試教育的選擇題、填空題題目側重于語法細節,與程序設計的實用性偏離甚遠,使學生產生了學習誤區,導致了學生會讀程序,但自己上機寫程序時有種無從下手的感覺。學習程序設計語言的真正目的是編程解決問題,必須大量練習編程題,在編程的過程中掌握語法。
教學內容與解決實際問題有差距
C語言的教學目的是要熟練掌握C語言的用法和培養結構化程序設計的思維方式,培養編程能力,因此理論聯系實際是教學改革的一個重點。在高校中普遍存在著注入式教學方法,學生為學習而學習,而忽視了學習的目的,C語言程序設計是一門理論性和實踐性都很強的課程。當前,在程序設計實踐常用的模式中,基本遵循著前幾十年延續下來的習慣做法,即教師布置與程序設計語言教材的知識點相符的任務,學生通過上機來驗證教材和講課的內容以及自己所編的程序正確與否。這種做法與實際完全脫節,學生只會解決書上的問題,如求最大、最小值、平均值、排序、交換數組元素位置等,而對于現實問題卻很茫然。很少有教師仔細斟酌實驗的內容,以使其與實際聯系更緊密,導致學生學完了不理解學了C有什么用處。因此講解和練習要多引入日常生活中的實際問題:如計算器、小游戲、具備插入、查詢、刪除、保存等基本功能的學生管理信息系統等,通過這些編程問題使學生綜合應用各章的知識,如循環、數組、函數、指針、文件,達到解決實際問題的編程能力。
教學重點
C語言是函數式的語言,因此C語言的重點一是函數、二是指針。而數組與指針是密切聯系的,因此在C語言程序設計的教與學中一定要抓住數組、函數、指針這條主線,掌握數據在內存中的存儲和變化,就有利于突出重點和突破難點。與其他編程語言相比,C語言中數據類型和運算符眾多,指針概念抽象復雜,函數參數用法靈活,概念、語法規則和例子眾多,不易掌握。通常學生對單一的知識點能夠掌握,但對于知識點的聯系理解不深,難以形成完整的知識體系。
因此C語言在講解時在介紹完數據類型、變量、常量、運算符、表達式和面向過程的三種基本程序設計結構以后,要圍繞數組、函數、指針這一主線展開程序設計,這樣的話才能抓住C語言的重點,將紛繁的知識點形成清晰的脈絡。我們知道,數組是相同數據類型的變量的集合,函數的作用是將程序模塊化,而函數的參數可以是普通變量,數組名和指針變量。當在函數間傳遞數組和字符串時就可以用指針變量或數組名作函數參數進行地址傳遞,這樣實參與形參就有四種組合,即:(1)實參、形參均為數組名;(2)實參為數組名,形參為指針變量;(3)實參為指針變量,形參為數組名;(4)實參、形參均為指針變量。數組、函數、指針通過這一主線就貫穿和聯系起來了,學生既懂得它們之間的區別也懂得它們之間的聯系,學習起來輕而易舉。例如編寫swap函數(指針法):交換數組a和數組b中的對應元素并輸出a、b數組。該例子既用到了函數調用,又用到了數組,還用到了指針變量作函數參數,函數、指針、數組三個重要的知識點都聯系起來了。四、課程改革
(一)案例教學,語法與算法結合
C語言程序設計課程是C語言與程序設計相結合的一門課程,這就要求教師在授課過程中,既要講解C語言的一些語法規則,又要重視程序設計。如果上課的老師不能準確把握,把重點簡單放在講述一些語法規則方面,往往會使學生喪失學習興趣,另一方面也沒有達到教學目的,有損教學質量。通過典型的例題既講了語法,又掌握了算法,可謂一舉兩得。如果按照章節的順序,往往是先講變量、運算符,才講順序、選擇和循環結構,但孤立地講變量,常量,運算符學生往往學了就忘,理解不深,這時可以引入后面的實例。例如可用循環的例子指出變量要先定義后使用,定義數據類型的作用是為變量分配相應大小的內存空間,p為n!其值可能會超過基本整型變量的表示范圍-32768~+32767,因此p要定義為長整型,++是自增運算符,它的作用是i=i+1,for循環的功能是完成累積,乘數i從1至n,每循環一次i增加1。通過具體的實例使學生理解語法不是孤立的規則,而是互相聯系,使得一個功能得以實現的不可缺的組成部分。
(二)總結歸納,深入本質
在C語言中,指針是C語言中的重點和難點,概念抽象,學生不容易掌握。要啟發學生多進行對比,歸納總結,深入本質,透過現象看到本質,培養和提高分析和解決問題的能力。例如,指針是地址,通過指針可以間接訪問它所指向的目標變量,但為什么要用指針?還要引導學生深入思考。函數之間傳遞數據要依靠參數,而且只能由實參向形參傳遞,有值傳遞和地址傳遞兩種方式。如果將數組名或指針變量作參數就是地址傳遞。在函數間不僅可以傳遞變量的值,變量的地址,還可傳遞數組,字符串等。形參是局部變量,函數調用結束形參變量就釋放掉了,而函數返回值又只能有一個,那如何才能夠從調用函數帶回多個不同數據類型的數據呢?帶著這樣的問題,讓學生思考通過指針進行地址傳遞的作用,其好處就在于可以通過形參的指針變量間接訪問實參變量,達到了“雙向傳遞”的效果,這樣在函數調用時對形參變量的操作就等價于對實參變量的操作,理解了這一點就可以明白指針的重要性和好處了,學習也變得輕松和簡單了。例如交換兩個數的例子,用指針作形參。當函數調用結束后,形參空間雖然釋放了,但在函數調用過程中通過形參對實參的影響卻留了下來。
(三)以圖示方法形象化算法
在教學中只要抓住數據在內存的存儲和變化這個關鍵點,結合適當的圖形教學,例如數組元素的內存分配,指針操作數組元素時,指針的自增與自減運算,指針的交換,目標變量的交換,鏈表的創建、插入、刪除和輸出等,都可以畫出內存單元的圖示來,一步一步地操作,循序漸進的學習,學生就容易理解和學好C語言了。例如用圖示法形象化上例中的swap函數交換兩個變量,如圖1所示:
(四)多種編程方法開闊思維
同一個問題,鼓勵學生用幾種不同的方法編程實現,并讓學生去分析它們的異同,從而加深對知識點的理解,掌握本質的算法思想。例如求1到100的累加和,可以用while,for和dowhile循環三種方法實現,輸入字符串時可以用scanf,getchar,gets函數來實現,輸出字符串時可用printf,putchar,puts來函數實現,輸入、輸出數組元素時可以用下標法,也可以通過指針法等。通過讓學生嘗試用不同的方法解決問題,一方面使學生對相近知識點的異同有了深刻的理解,培養了學生發現事物之間內在聯系的觀察能力,另一方面鍛煉了學生編程的能力,培養了學生主動學習,積極思考的學習習慣,并且能將所學知識融會貫通,可謂一舉兩得。
(五)加強上機實踐
程序設計課程,上機操作是必不可少的重要教學環節,程序調試能力的培養是重中之重,通過程序調試,學生可以查出自己編寫程序時容易犯的錯誤,而且更重要的是能培養學生分析問題、解決問題的實際能力和創新意識。實際上任務的完成標志著學生實踐能力的提高,學生也能體驗到任務完成后的成就感,從而激發他們進一步學習興趣和積極性。所以應大力加強實踐教學和實訓,不斷提高學生的動腦動手能力。教師要做好實踐設計,結合教材每一章都要有上機內容,供學生練習,使學生上機目的明確,使之成為加強學生實踐能力、自學能力和創新思維的重要依托。期末考試盡可能采取客觀題在線考試與上機考試相結合的形式,使學生從根本上重視上機編程實踐。