摘要:數(shù)學(xué)思維在C語言教學(xué)中有著重要意義。針對(duì)C語言教學(xué)中存在的學(xué)生較難掌握數(shù)組多種訪問形式的問題,應(yīng)用數(shù)學(xué)思維方法,推導(dǎo)一維數(shù)組和二維數(shù)組訪問形式的基本等價(jià)關(guān)系,并進(jìn)行理論分析與實(shí)例驗(yàn)證相結(jié)合的教學(xué)方法的探討,在教學(xué)實(shí)踐中取得了較為理想的教學(xué)效果。
關(guān)鍵詞:數(shù)學(xué)思維;教學(xué)方法;C語言;數(shù)組;等價(jià)關(guān)系
中圖分類號(hào):G642 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2014)09-0055-02
C語言是一種面向過程的計(jì)算機(jī)高級(jí)語言,與其他高級(jí)語言相比,C語言形式簡(jiǎn)潔,表達(dá)能力強(qiáng),目標(biāo)程序效率高,適于系統(tǒng)軟件和應(yīng)用軟件的開發(fā)[1,2]。目前,許多高校的理工類專業(yè)都開設(shè)《C語言程序設(shè)計(jì)》課程,既培養(yǎng)了學(xué)生利用C語言編程解決問題的能力,又為今后學(xué)習(xí)其他計(jì)算機(jī)語言打下了良好的基礎(chǔ)[3]。
C語言教學(xué)中語法知識(shí)的講授對(duì)學(xué)生扎實(shí)掌握C語言起著決定性作用。目前C語言教學(xué)中主要采用基于案例或程序的多媒體輔助教學(xué)方法[4]、任務(wù)驅(qū)動(dòng)教學(xué)法和項(xiàng)目教學(xué)法等[5,6],但對(duì)一些難點(diǎn)知識(shí)如果只采用案例、程序、任務(wù)或項(xiàng)目教學(xué)方法,不進(jìn)行深入的理論分析,學(xué)生往往就會(huì)感覺知識(shí)內(nèi)容太突兀,難于理解與掌握,從而失去學(xué)習(xí)的興趣。
目前在多數(shù)C語言教材中普遍存在對(duì)數(shù)組多種訪問形式的表述不夠深入的問題,特別是對(duì)于二維數(shù)組的多種訪問形式,因此在教學(xué)中往往存在教師難以講透徹,學(xué)生較難掌握該知識(shí)點(diǎn)的問題。本文應(yīng)用數(shù)學(xué)思維,對(duì)該知識(shí)點(diǎn)進(jìn)行理論分析研究,推導(dǎo)出了一維數(shù)組和二維數(shù)組訪問形式的基本等價(jià)關(guān)系,并采用理論分析與實(shí)例驗(yàn)證相結(jié)合的教學(xué)方法,在教學(xué)實(shí)踐中取得了較為理想的教學(xué)效果。
一、數(shù)學(xué)思維在C語言教學(xué)中的重要性
數(shù)學(xué)思維是人腦在和數(shù)學(xué)對(duì)象交互作用的過程中,運(yùn)用特殊的數(shù)學(xué)符號(hào)語言以抽象和概括為特點(diǎn),對(duì)客觀事物按照數(shù)學(xué)自身的形式或規(guī)律做出的間接概括的反映[7]。在C語言的語法中,處處閃爍著數(shù)學(xué)思維的火花,比如基本數(shù)據(jù)類型中常量到變量的知識(shí)與數(shù)學(xué)中常數(shù)到代數(shù)的思想一致;運(yùn)算符繼承和發(fā)展了數(shù)學(xué)中的運(yùn)算符;表達(dá)式與數(shù)學(xué)中的多項(xiàng)式類似;選擇結(jié)構(gòu)與數(shù)學(xué)中的分段函數(shù)類似;循環(huán)結(jié)構(gòu)與數(shù)學(xué)中的多項(xiàng)式求和、求積等計(jì)算類似;數(shù)組與數(shù)學(xué)中的矩陣類似;函數(shù)與數(shù)學(xué)中的函數(shù)類似;等等。因此可以認(rèn)為C語言是數(shù)學(xué)語言的另外一種表現(xiàn)形式,充分借鑒數(shù)學(xué)思維進(jìn)行C語言學(xué)習(xí),是一種高效的學(xué)習(xí)方法。
在C語言教學(xué)中,強(qiáng)調(diào)C語言語法概念及語法形式,同時(shí)強(qiáng)調(diào)其與數(shù)學(xué)語言的聯(lián)系,并借鑒數(shù)學(xué)思維,能很好地激發(fā)學(xué)生自主利用數(shù)學(xué)思維進(jìn)行C語言學(xué)習(xí)的興趣,使其對(duì)C語言學(xué)習(xí)充滿自信,產(chǎn)生觸類旁通的感覺。當(dāng)然,C語言畢竟不等同于數(shù)學(xué)語言,其雖與數(shù)學(xué)語言有很大程度上的相似,但也存在顯著的不同,比如運(yùn)算符“/”在C語言中有兩種用法,而在數(shù)學(xué)中只有一種用法;C語言中有求余(模)運(yùn)算符“%”,而數(shù)學(xué)語言中卻沒有等。因此,在C語言學(xué)習(xí)中,既要借鑒數(shù)學(xué)思維來進(jìn)行學(xué)習(xí),又要辨清C語言與數(shù)學(xué)語言的不同,這是C語言學(xué)習(xí)中需要掌握的學(xué)習(xí)原則和方法。
二、數(shù)組多種訪問形式的等價(jià)關(guān)系
1.一維數(shù)組多種訪問形式的等價(jià)關(guān)系。
設(shè)一維數(shù)組a,整型指針變量p滿足以下定義:
int a[5]={1,2,3,4,5};
int *p=a;
(1)C語言中定義a的值為一維數(shù)組a的首個(gè)元素的地址,則存在以下等價(jià)關(guān)系:
p <=> a <=> &a[0]
(2)根據(jù)C語言中指針運(yùn)算法則,可得:
p+i <=> a+i <=> &a[i] <=> &p[i]
(3)對(duì)(2)中各項(xiàng)進(jìn)行取內(nèi)容運(yùn)算,可得:
*( p+i ) <=> *( a+i ) <=> a[i] <=> p[i]
2.二維數(shù)組多種訪問形式的等價(jià)關(guān)系。
設(shè)二維數(shù)組a,指向數(shù)組的整型指針變量p和整型指針變量q滿足以下定義:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[4]=a;
int *q=a;
(1)由C語言中定義a的值為二維數(shù)組a首行的地址,則存在以下等價(jià)關(guān)系:
p <=> a <=> &a[0]
(2)根據(jù)C語言中定義的指向數(shù)組指針的運(yùn)算法則,可得:
p+i <=> a+i <=> &a[i] <=> &p[i]
(3)對(duì)(2)中各項(xiàng)進(jìn)行取內(nèi)容運(yùn)算,可得:
*( p+i ) <=> *( a+i ) <=> a[i] <=> p[i]
(4)C語言中定義ai]的值為二維數(shù)組a的第i行第0列元素的地址,則存在以下等價(jià)關(guān)系:
a[i] <=> &a[i][0]
(5)對(duì)(3)中各項(xiàng)再進(jìn)行取內(nèi)容運(yùn)算,結(jié)合(4)中等價(jià)關(guān)系,可得:
**( p+i ) <=> **( a+i ) <=> *[a] <=> *p[i] <=> a[i][0]
(6)根據(jù)C語言中定義二維數(shù)組元素的訪問方法,可得:
*( *( p+i ) +j )<=> *( *( a+i ) +j ) <=> a[i][j] <=> p[i][j]
(7)對(duì)于整型指針q,根據(jù)指針運(yùn)算法則及取內(nèi)容運(yùn)算符的運(yùn)算法則,可得以下3種等價(jià)關(guān)系:
q+4*i<=> a[i] <=> &a[i][0]
*( q+4*i ) <=> *a[i] <=> a[i][0]
*( q+4*i +j )<=> a[i][j]
根據(jù)以上一維數(shù)組、二維數(shù)組訪問形式的等價(jià)關(guān)系,可以總結(jié)為:(1)一維數(shù)組訪問形式存在3種等價(jià)關(guān)系;(2)二維數(shù)組訪問形式也存在6種等價(jià)關(guān)系,前3種等價(jià)關(guān)系與一維數(shù)組形式相同,但含義不同,在教學(xué)中要引起重視。
三、數(shù)組多種訪問形式的教學(xué)方法
在具體數(shù)組多種訪問形式教學(xué)時(shí),基于數(shù)學(xué)思維,采用先理論分析,后實(shí)例驗(yàn)證的方法。具體驗(yàn)證環(huán)境為windows XP操作系統(tǒng),編譯器采用Visual C++ 6.0。
1.一維數(shù)組多種訪問形式的教學(xué)方法。先推導(dǎo)一維數(shù)組多種訪問形式等價(jià)關(guān)系,再給出如下驗(yàn)證實(shí)例程序:
#include
void main( )
{
int a[5]={1,2,3,4,5};
int *p=a;
printf(“%X,%X,%X\n”,p,a,&a[0]);/*見2.1中1)*/
printf(“%X,%X,%X,%X\n”,p+1,a+1,&a[1],&p[1]);/*見2.1中2)*/
printf(“%d,%d,%d,%d\n”,*(p+1),*(a+1),a[1],p[1]);/*見2.1中3)*/
}
編譯連接后,運(yùn)行結(jié)果為:
12FF6C,12FF6C,12FF6C
12FF70,12FF70,12FF70,12FF70
2,2,2,2
結(jié)果驗(yàn)證:根據(jù)實(shí)驗(yàn)結(jié)果各行相等,可驗(yàn)證一維數(shù)組的3種等價(jià)關(guān)系成立。
2.二維數(shù)組多種訪問形式的教學(xué)方法。先推導(dǎo)二維數(shù)組多種訪問形式等價(jià)關(guān)系,再給出如下驗(yàn)證實(shí)例程序:
#include
void main( )
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[4]=a;;
int *q=a;
printf("%X,%X,%X\n",p,a,&a[0]);/*見2.2中1)*/
printf("%X,%X,%X,%X\n",p+1,a+1,&a[1],&p[1]);/*見2.2中2)*/
printf("%X,%X,%X,%X\n",*(p+1),*(a+1),a[1],p[1]);/*見2.2中3)*/
printf("%d,%d,%d,%d,%d\n",**(p+1),**(a+1),*a[1],*p[1],a[1][0]);/*見2.2中4)*/
printf("%d,%d,%d,%d\n",*(*(p+1)+2),*(*(a+1)+2),a[1][2],p[1][2]);/*見2.2中5)*/
printf("%X,%X\n",a+1,&a[1][0]);/*見2.2中6)*/
printf("%X,%X,%X\n",q+4*1,a1],&a[1][0]);/*見2.2中7)*/
printf("%d,%d,%d\n",*(q+4*1),*a[1],a[1][0]);/*見2.2中8)*/
printf("%d,%d\n",*(q+4*1+2),a[1][2]);/*見2.2中9)*/
}
編譯連接后,運(yùn)行結(jié)果為:
12FF50,12FF50,12FF50
12FF60,12FF60,12FF60,12FF60
12FF60,12FF60,12FF60,12FF60
5,5,5,5,5
7,7,7,7
12FF60,12FF60
12FF60,12FF60,12FF60
5,5,5
7,7
結(jié)果驗(yàn)證:根據(jù)實(shí)驗(yàn)結(jié)果各行相等,可驗(yàn)證二維數(shù)組的9種等價(jià)關(guān)系成立。
四、結(jié)論與認(rèn)識(shí)
C語言主體內(nèi)容及其嚴(yán)密的邏輯性與數(shù)學(xué)語言有天然的一致性,數(shù)學(xué)思維貫穿C語言學(xué)習(xí)的始終。在數(shù)組多種訪問形式知識(shí)點(diǎn)的教學(xué)中,采用理論分析與實(shí)例驗(yàn)證相結(jié)合的教學(xué)方法,既突出了數(shù)學(xué)思維在C語言教學(xué)中的重要性,又符合學(xué)生在學(xué)習(xí)新知識(shí)時(shí)類比學(xué)習(xí)方法最為有效的客觀認(rèn)知規(guī)律,從而在教學(xué)實(shí)踐中取得了較為理想的教學(xué)效果。
參考文獻(xiàn):
[1]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2002:13.
[2]賈宗璞,許合利.C語言程序設(shè)計(jì)[M].北京:人民郵電出版社,2010:10.
[3]周汝雁,韓彥嶺,張明華,等.程序設(shè)計(jì)語言中較難理解算法的課堂教學(xué)方法[J].計(jì)算機(jī)教育,2013,(6):91-94.
[4]王光瓊,袁小艷,梁弼.C程序設(shè)計(jì)課程教學(xué)方法探討[J].四川文理學(xué)院學(xué)報(bào),2010,(2):108-111.
[5]張季良.任務(wù)驅(qū)動(dòng)教學(xué)法在獨(dú)立學(xué)院計(jì)算機(jī)教學(xué)中的應(yīng)用[J].計(jì)算機(jī)教育,2007,(5):46-48.
[6]張學(xué)林,陳齊超,段珊,等.項(xiàng)目教學(xué)法在“C語言課程設(shè)計(jì)”中的研究與應(yīng)用[J].實(shí)驗(yàn)技術(shù)與管理,2011,(2):164-167.
[7]王憲昌.數(shù)學(xué)思維方法[M].北京:人民教育出版社,2010:4.
基金項(xiàng)目:國(guó)家“十二五”科技重大專項(xiàng)課題“全國(guó)重點(diǎn)煤礦區(qū)瓦斯(煤層氣)賦存規(guī)律和控制因素”(2011ZX05040-005)。
作者簡(jiǎn)介:劉勇,男,講師,研究方向?yàn)橥咚估碚撆c信息化研究。