母景琴,詹 勝
(1. 唐山師范學院 計算機科學系,河北 唐山 063000;2. 唐山師范學院 數學與信息科學系,河北 唐山 063000)
《C語言程序設計》教學之體會
母景琴1,詹 勝2
(1. 唐山師范學院 計算機科學系,河北 唐山 063000;2. 唐山師范學院 數學與信息科學系,河北 唐山 063000)
針對目前計算機專業《C語言程序設計課程》的教學現狀,基于明確“兩個思想”和堅持“一個主體”,深入闡述了《C語言程序設計》課程中對教學內容的把握,教學環節的構建以及教師自身能力的提高三個方面的體會。采用的教學態度,方法和手段行之有效,受到學生一致認可。
C語言程序設計;教學體會;兩個思想;一個主體
C語言是大多計算機專業學生接觸的第一門計算機語言,入門比較困難。本文基于明確“兩個思想”(一是提高教師自身專業和人格素質,是學生“學”好的重要前提,二是激發學生“學”的興趣和熱情是學生“學”好的精神動力)和堅持“一個主體”(堅持教學以學生為主體),闡述在C語言教學過程中如何把握教學內容、構建教學環節和提高自身教學能力。
1.1 三種基本結構的把握
對于初學者來說,編程能力的培養不僅僅是掌握語法的規則,更重要的是了解程序本身的基本結構。程序的三種基本結構包括順序結構、選擇結構和循環結構[1]。對順序結構和選擇結構的理解,學生通常易于掌握,然而對循環結構則相對困難。為了讓學生更好的理解循環結構,教師需要從計算機的本質入手來引導學生理解循環。計算機從本質上來講只會做簡單的重復性的操作,比如加法操作,而且,做簡單的重復性的操作是計算機的特長。重復性的操作就是循環。計算機語言中的循環結構包含三個方面:循環的初始條件,循環體也就是重復性的操作,還有循環的結束條件。為了加深學生對循環結構的理解,可以拿生活中的循環類比,比如走路就是循環,如果從宿舍走到教室的話,從宿舍出發是循環的開始條件,循環體是邁左腳,邁右腳,循環的終止條件是到教室。也可舉例數學上的求和問題,比如求1到100所有的整數之和,循環體為前n項和等于前n-1項和加上第n項。循環的開始條件是n為1,循環的結束條件是n為100。掌握循環結構的基本構成后再去編寫符合C語言語法的程序,更容易上手。
1.2 函數和指針的把握
函數是C程序的基本單位,是利用C語言進行結構化程序設計的基礎。函數調用是C程序中數據傳遞的基本方式。程序中數據的傳遞就像人體的血液一樣,對程序的運行起到至關重要的作用,因此函數的定義和調用是教師教學中的重點,如何把普通變量做參數和數組名作參數兩種傳遞數據方式的本質與過程講清楚,就成為教師教學中的難點。初學計算機語言的學生往往理解不了程序內部數據的抽象流動過程,在講解的過程中要為學生畫出數據在內存中的賦值與傳遞情況,從數據存儲及數值變化的角度闡述數據的傳遞。
如果說函數解決了數據傳遞的方向問題,指針就是數據傳遞的具體實現。指針操作是一把雙刃劍,可以使程序變得簡潔,也會因指針的指向發生混亂而造成數據操作出錯甚至內存讀寫出錯。為了能更深刻的理解指針和使用指針,對于任何一個指針來講,都要從四個方面去把握,分別是:(1)指針的類型;(2)指針所指向的類型;(3)指針所指向的內存區;(4)指針本身所占據的內存區。再有,指針操作其實都是對內存中的數據進行的操作,因此,在講解指針操作時候畫圖演示其過程。
1.3 算法知識的擴充
當學生掌握了程序的基本結構和程序中數據傳遞的方式和方法之后,制約編程能力發展的問題就是把實際問題轉化成為計算機程序的算法問題[2]。由于C語言程序設計課程中更偏重于基本程序的編寫,因此很多C語言教材涉及到的算法知識很少。這就會造成學生在獨立編寫程序時,不知道從何處下手,或者只是停留在能運行出想要的結果的角度,不會從算法的時間復雜度和空間復雜度上去分析程序的效率。例如逆序存放數組元素,學生在寫程序時,經常會把逆序輸出認為是逆序存放,或者再定義一個數組,把元素逐個賦值,前者的問題在于不懂得數據在計算機中的存儲結構,后者的問題是不知道再定義一個數組會增加空間復雜度。像這些問題都要等到后續的數據結構課程或其他算法設計課程中才能學習到。因此從一開始的C語言教學過程中,就適當補充算法知識是非常必要的,有利于學生對編程更深層次的理解;同時等到學數據結構或其他課程知識的時候,學生很容易把所學和新知識聯系起來,進而提高學習新知識的興趣和學習的主動性。
2.1 如何更快地讓學生掌握語法
語法是寫程序時應該遵守的規范,死記硬背語法起不到良好的學習效果,可采用創設情境的方法,在程序示范過程中,故意創設出不符合語法的小環節,程序經過運行,出現差錯,引起學生的注意和興趣,再慢慢分析程序,找到問題出現的原因,進而深入地了解語法的使用。
2.2 如何更快地讓學生讀懂程序
讀程序是學生編程的基本功,讀高質量和高效率的程序也是提高編程能力的捷徑。他人編寫的優秀程序也可以“拿來”應用到自己的程序中,前提是要把程序看懂看透。因此,在教學的過程中,要多選擇一些優秀的程序做案例,具體講解程序的運行和數據的傳遞過程,點評程序的好壞,對程序的結果做出預測和分析,也可以對程序做部分修改,引導學生進行發散性思維。
2.3 如何更快地讓學生學會編程
編程習慣的養成,編程能力和編程思想的培養,都需要實際的編程練習。對于初學計算機語言的學生來講,上機編寫程序是很困難的事情,經常會出現上課聽得懂、上機腦子空白現象,因此教師應根據課上講授內容多為學生設計一些題目,并在學生上機的過程中加強輔導和監督,糾正學生在編程中的不良習慣,并讓學生體會到編寫程序的成就感,提高學生編程的積極性。當然,輔導并不是把學生所寫的程序的錯誤都找出來,而是引導學生利用調試的方法或者實際案例的方法去尋找各種錯誤,培養學生獨立編寫和調試程序的能力。
3.1 重視教師示范作用
課堂教學,將語法知識的講授時間壓縮到最短,讓學生有大概的了解,然后給學生作示范,教師根據授課的內容選擇實際的問題進行分析,并將其轉化成為程序,在課堂上親自動手將其寫出來。在寫程序過程中,注意程序書寫中的各種問題,比如變量名有意義,語句的書寫對齊等。教師的示范是學生學習編程的第一步,其示范的好壞直接影響著學生編程習慣的培養,因此,教師不但要提高知識的講授能力,也應該不斷提高自己的編程素質。
3.2 和學生加強交流和溝通,做學生的良師益友
教師要不斷精進自己的專業素質和人格魅力,做學生的良師。一個優秀的教師會激發學生學習的興趣,并對其學習和生活產生深刻的影響。提高教師自身的素質是提高教學質量的關鍵環節。
[1] Harvey M. Deitel, Paul J. deitel. C程序設計經典教程[M].北京:清華大學出版社,2005:41-43..
[2] 譚浩強.C程序設計(第三版)[M].北京:清華大學出版社, 2005:14-35.
(責任編輯、校對:田敬軍)
Some Experience in Teaching the C Programming Language
MU Jing-qin1, ZHAN Sheng2
(1. Department of Computer Science, Tangshan Teachers College, Tangshan 063000, China; 2. Department of Mathematics and Information Science, Tangshan Teachers College, Tangshan 063000, China)
According to the current teaching situation of the C programming language, the means of “tow ideas” to clear and “one subject” to assist are introduced. Some experience of grasping the content of teaching, construction of teaching and improving of the ability of the teacher are deeply studied. The teaching attitude, methods and means are so effective that they are approved unanimously by the students.
C programming language; teaching experience; two ideas; one subject
TP311
A
1009-9115(2012)02-0114-02
2011-03-22
母景琴(1980-),女,河北盧龍人,碩士,講師,研究方向為圖像處理技術。