母景琴,詹 勝
(1. 唐山師范學(xué)院 計算機(jī)科學(xué)系,河北 唐山 063000;2. 唐山師范學(xué)院 數(shù)學(xué)與信息科學(xué)系,河北 唐山 063000)
《C語言程序設(shè)計》教學(xué)之體會
母景琴1,詹 勝2
(1. 唐山師范學(xué)院 計算機(jī)科學(xué)系,河北 唐山 063000;2. 唐山師范學(xué)院 數(shù)學(xué)與信息科學(xué)系,河北 唐山 063000)
針對目前計算機(jī)專業(yè)《C語言程序設(shè)計課程》的教學(xué)現(xiàn)狀,基于明確“兩個思想”和堅持“一個主體”,深入闡述了《C語言程序設(shè)計》課程中對教學(xué)內(nèi)容的把握,教學(xué)環(huán)節(jié)的構(gòu)建以及教師自身能力的提高三個方面的體會。采用的教學(xué)態(tài)度,方法和手段行之有效,受到學(xué)生一致認(rèn)可。
C語言程序設(shè)計;教學(xué)體會;兩個思想;一個主體
C語言是大多計算機(jī)專業(yè)學(xué)生接觸的第一門計算機(jī)語言,入門比較困難。本文基于明確“兩個思想”(一是提高教師自身專業(yè)和人格素質(zhì),是學(xué)生“學(xué)”好的重要前提,二是激發(fā)學(xué)生“學(xué)”的興趣和熱情是學(xué)生“學(xué)”好的精神動力)和堅持“一個主體”(堅持教學(xué)以學(xué)生為主體),闡述在C語言教學(xué)過程中如何把握教學(xué)內(nèi)容、構(gòu)建教學(xué)環(huán)節(jié)和提高自身教學(xué)能力。
1.1 三種基本結(jié)構(gòu)的把握
對于初學(xué)者來說,編程能力的培養(yǎng)不僅僅是掌握語法的規(guī)則,更重要的是了解程序本身的基本結(jié)構(gòu)。程序的三種基本結(jié)構(gòu)包括順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)[1]。對順序結(jié)構(gòu)和選擇結(jié)構(gòu)的理解,學(xué)生通常易于掌握,然而對循環(huán)結(jié)構(gòu)則相對困難。為了讓學(xué)生更好的理解循環(huán)結(jié)構(gòu),教師需要從計算機(jī)的本質(zhì)入手來引導(dǎo)學(xué)生理解循環(huán)。計算機(jī)從本質(zhì)上來講只會做簡單的重復(fù)性的操作,比如加法操作,而且,做簡單的重復(fù)性的操作是計算機(jī)的特長。重復(fù)性的操作就是循環(huán)。計算機(jī)語言中的循環(huán)結(jié)構(gòu)包含三個方面:循環(huán)的初始條件,循環(huán)體也就是重復(fù)性的操作,還有循環(huán)的結(jié)束條件。為了加深學(xué)生對循環(huán)結(jié)構(gòu)的理解,可以拿生活中的循環(huán)類比,比如走路就是循環(huán),如果從宿舍走到教室的話,從宿舍出發(fā)是循環(huán)的開始條件,循環(huán)體是邁左腳,邁右腳,循環(huán)的終止條件是到教室。也可舉例數(shù)學(xué)上的求和問題,比如求1到100所有的整數(shù)之和,循環(huán)體為前n項和等于前n-1項和加上第n項。循環(huán)的開始條件是n為1,循環(huán)的結(jié)束條件是n為100。掌握循環(huán)結(jié)構(gòu)的基本構(gòu)成后再去編寫符合C語言語法的程序,更容易上手。
1.2 函數(shù)和指針的把握
函數(shù)是C程序的基本單位,是利用C語言進(jìn)行結(jié)構(gòu)化程序設(shè)計的基礎(chǔ)。函數(shù)調(diào)用是C程序中數(shù)據(jù)傳遞的基本方式。程序中數(shù)據(jù)的傳遞就像人體的血液一樣,對程序的運(yùn)行起到至關(guān)重要的作用,因此函數(shù)的定義和調(diào)用是教師教學(xué)中的重點(diǎn),如何把普通變量做參數(shù)和數(shù)組名作參數(shù)兩種傳遞數(shù)據(jù)方式的本質(zhì)與過程講清楚,就成為教師教學(xué)中的難點(diǎn)。初學(xué)計算機(jī)語言的學(xué)生往往理解不了程序內(nèi)部數(shù)據(jù)的抽象流動過程,在講解的過程中要為學(xué)生畫出數(shù)據(jù)在內(nèi)存中的賦值與傳遞情況,從數(shù)據(jù)存儲及數(shù)值變化的角度闡述數(shù)據(jù)的傳遞。
如果說函數(shù)解決了數(shù)據(jù)傳遞的方向問題,指針就是數(shù)據(jù)傳遞的具體實(shí)現(xiàn)。指針操作是一把雙刃劍,可以使程序變得簡潔,也會因指針的指向發(fā)生混亂而造成數(shù)據(jù)操作出錯甚至內(nèi)存讀寫出錯。為了能更深刻的理解指針和使用指針,對于任何一個指針來講,都要從四個方面去把握,分別是:(1)指針的類型;(2)指針?biāo)赶虻念愋?;?)指針?biāo)赶虻膬?nèi)存區(qū);(4)指針本身所占據(jù)的內(nèi)存區(qū)。再有,指針操作其實(shí)都是對內(nèi)存中的數(shù)據(jù)進(jìn)行的操作,因此,在講解指針操作時候畫圖演示其過程。
1.3 算法知識的擴(kuò)充
當(dāng)學(xué)生掌握了程序的基本結(jié)構(gòu)和程序中數(shù)據(jù)傳遞的方式和方法之后,制約編程能力發(fā)展的問題就是把實(shí)際問題轉(zhuǎn)化成為計算機(jī)程序的算法問題[2]。由于C語言程序設(shè)計課程中更偏重于基本程序的編寫,因此很多C語言教材涉及到的算法知識很少。這就會造成學(xué)生在獨(dú)立編寫程序時,不知道從何處下手,或者只是停留在能運(yùn)行出想要的結(jié)果的角度,不會從算法的時間復(fù)雜度和空間復(fù)雜度上去分析程序的效率。例如逆序存放數(shù)組元素,學(xué)生在寫程序時,經(jīng)常會把逆序輸出認(rèn)為是逆序存放,或者再定義一個數(shù)組,把元素逐個賦值,前者的問題在于不懂得數(shù)據(jù)在計算機(jī)中的存儲結(jié)構(gòu),后者的問題是不知道再定義一個數(shù)組會增加空間復(fù)雜度。像這些問題都要等到后續(xù)的數(shù)據(jù)結(jié)構(gòu)課程或其他算法設(shè)計課程中才能學(xué)習(xí)到。因此從一開始的C語言教學(xué)過程中,就適當(dāng)補(bǔ)充算法知識是非常必要的,有利于學(xué)生對編程更深層次的理解;同時等到學(xué)數(shù)據(jù)結(jié)構(gòu)或其他課程知識的時候,學(xué)生很容易把所學(xué)和新知識聯(lián)系起來,進(jìn)而提高學(xué)習(xí)新知識的興趣和學(xué)習(xí)的主動性。
2.1 如何更快地讓學(xué)生掌握語法
語法是寫程序時應(yīng)該遵守的規(guī)范,死記硬背語法起不到良好的學(xué)習(xí)效果,可采用創(chuàng)設(shè)情境的方法,在程序示范過程中,故意創(chuàng)設(shè)出不符合語法的小環(huán)節(jié),程序經(jīng)過運(yùn)行,出現(xiàn)差錯,引起學(xué)生的注意和興趣,再慢慢分析程序,找到問題出現(xiàn)的原因,進(jìn)而深入地了解語法的使用。
2.2 如何更快地讓學(xué)生讀懂程序
讀程序是學(xué)生編程的基本功,讀高質(zhì)量和高效率的程序也是提高編程能力的捷徑。他人編寫的優(yōu)秀程序也可以“拿來”應(yīng)用到自己的程序中,前提是要把程序看懂看透。因此,在教學(xué)的過程中,要多選擇一些優(yōu)秀的程序做案例,具體講解程序的運(yùn)行和數(shù)據(jù)的傳遞過程,點(diǎn)評程序的好壞,對程序的結(jié)果做出預(yù)測和分析,也可以對程序做部分修改,引導(dǎo)學(xué)生進(jìn)行發(fā)散性思維。
2.3 如何更快地讓學(xué)生學(xué)會編程
編程習(xí)慣的養(yǎng)成,編程能力和編程思想的培養(yǎng),都需要實(shí)際的編程練習(xí)。對于初學(xué)計算機(jī)語言的學(xué)生來講,上機(jī)編寫程序是很困難的事情,經(jīng)常會出現(xiàn)上課聽得懂、上機(jī)腦子空白現(xiàn)象,因此教師應(yīng)根據(jù)課上講授內(nèi)容多為學(xué)生設(shè)計一些題目,并在學(xué)生上機(jī)的過程中加強(qiáng)輔導(dǎo)和監(jiān)督,糾正學(xué)生在編程中的不良習(xí)慣,并讓學(xué)生體會到編寫程序的成就感,提高學(xué)生編程的積極性。當(dāng)然,輔導(dǎo)并不是把學(xué)生所寫的程序的錯誤都找出來,而是引導(dǎo)學(xué)生利用調(diào)試的方法或者實(shí)際案例的方法去尋找各種錯誤,培養(yǎng)學(xué)生獨(dú)立編寫和調(diào)試程序的能力。
3.1 重視教師示范作用
課堂教學(xué),將語法知識的講授時間壓縮到最短,讓學(xué)生有大概的了解,然后給學(xué)生作示范,教師根據(jù)授課的內(nèi)容選擇實(shí)際的問題進(jìn)行分析,并將其轉(zhuǎn)化成為程序,在課堂上親自動手將其寫出來。在寫程序過程中,注意程序書寫中的各種問題,比如變量名有意義,語句的書寫對齊等。教師的示范是學(xué)生學(xué)習(xí)編程的第一步,其示范的好壞直接影響著學(xué)生編程習(xí)慣的培養(yǎng),因此,教師不但要提高知識的講授能力,也應(yīng)該不斷提高自己的編程素質(zhì)。
3.2 和學(xué)生加強(qiáng)交流和溝通,做學(xué)生的良師益友
教師要不斷精進(jìn)自己的專業(yè)素質(zhì)和人格魅力,做學(xué)生的良師。一個優(yōu)秀的教師會激發(fā)學(xué)生學(xué)習(xí)的興趣,并對其學(xué)習(xí)和生活產(chǎn)生深刻的影響。提高教師自身的素質(zhì)是提高教學(xué)質(zhì)量的關(guān)鍵環(huán)節(jié)。
[1] Harvey M. Deitel, Paul J. deitel. C程序設(shè)計經(jīng)典教程[M].北京:清華大學(xué)出版社,2005:41-43..
[2] 譚浩強(qiáng).C程序設(shè)計(第三版)[M].北京:清華大學(xué)出版社, 2005:14-35.
(責(zé)任編輯、校對:田敬軍)
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-),女,河北盧龍人,碩士,講師,研究方向?yàn)閳D像處理技術(shù)。