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