【摘 要】C++程序設計課程難度較大,實踐要求很高。本文列舉了一些教學案例的實施,通過精選案例,實現在課時有限的條件下提高教學效率,取得更好的教學效果。
【關鍵詞】C++;教學;案例;選取
一、引言
C++語言是當今世界上應用最廣泛、影響最深遠的面向對象程序設計語言之一,也是較難掌握的一門語言。C++程序設計課程難度較大,實踐要求很高,這就要求教師在授課時不僅要介紹C++語言的語法,還要講解案例,以提高學生的實踐能力。由于課時有限,如果案例選取得當,對教學效果會有明顯的正面影響。
二、前后呼應
在選取案例的時候,既要注意保持知識點之間的連貫性,做到前后呼應;又要注意突出知識點之間的對比,使學生在案例的學習過程中掌握知識點,靈活應用。例如在講授選擇結構、循環結構、數組以及函數相關章節時,可以選取選擇排序問題作為案例,由淺入深,最終能夠讓學生靈活運用所學知識。
選擇排序是一種常用的數據排序算法,其編程需要運用選擇、循環、數組以及函數諸多知識才能實現。根據這種特點,以選擇排序為主線,精心安排幾個案例前后呼應。先使學生掌握必要的知識點,隨著所學知識的加深,最后自然地掌握選擇排序。在講授選擇結構時,選取兩個簡單案例:兩個數排序和三個數的排序。首先通過兩個數排序案例的講解,讓學生掌握變量間交換值的方法,即中間變量法。例如:if(a>b) { t=a;a=b;b=t;}在這個例子中,重要的是要讓學生強化變量賦值的概念。賦值會導致內存中變量值的改變,借助于中間變量t 才能完成兩個變量值的交換。
在三個數的排序例子中,主要講授多個數選擇排序的基本算法,即運用if結構,不斷地篩選,找出最小數、次小數,并按升序排序。例如:
if(a>b) { t=a;a=b;b=t;}
if(a>c) { t=a;a=c;c=t;}
if(b>c) { t=b;b=c;c=t;}
這里首先應用中間變量法交換兩個變量的值,其次大量應用了if結構來確定最小數和次小數。第一個if語句確保變量a存放a和b中最小的值,第二個if語句確保a 存放a、b和c中最小的值;第三個if語句則確保變量b 存放b和c中最小的值,即次小數,這樣就完成了三個數的排序。通過這個案例不僅可以掌握if結構,而且深刻理解了選擇排序的算法精髓,為以后學習n個數的選擇排序法打下良好的基礎。
n個數的選擇排序實際上是if語句的不斷重復,這需要循環結構。存放多個邏輯上存在聯系的數據,又需要借助數組。在學習了后續的循環結構和數組之后,就可以適時將n個數的選擇排序問題作為案例,幫助學生融會貫通所學知識。例如:
int a[10],i,j,t;
………………..
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
在這個例子中,選擇結構、循環結構和數組都得到了應用,數組用來存放一批數據,而循環結構用來控制這批數據的選擇交換等重復操作。在排序循環的結構中如何找出最小數,以及兩個變量交換變量值,這些基本算法都是已經掌握的。因此學生可以在前面的基礎上,集中精力,學習新的知識。
在學習了n個數選擇排序編程之后,講解函數知識時就可以將排序功能獨立出來,編成函數模塊。例如:
void sort(int a[ ],int n)
{ int i,j,t;
for(i=0;i for(j=i+1;j if(a[i]>a[j]) {t=a[i];a[i]=a[j];a[j]=t;} } ……………….. sort(a,10); 編制函數sort實現選擇排序,供主調函數調用,排序功能被封裝在函數sort中。由于已經掌握了選擇排序的精髓,現在只需要解釋函數調用的機制、參數傳遞的方式等與函數有關的問題即可。根據授課需要還可以在指針一章中,再次安排選擇排序案例,重點講解在函數調用傳遞數組時,如何使用指針作為函數參數。 以上是用選擇排序案例,闡述如何進行教學案例的選取的。即注重知識點的前后呼應,用一組圍繞同一個問題的案例,由易到難,最后解決綜合應用問題。在解決問題的過程中,既通過精選的案例掌握了C++的基本知識;又可以把這些知識融會貫通,用來編制較為復雜的程序。圍繞一個問題不斷深入,在前面知識點的基礎上適當增加新的知識點,不僅可以有效緩解采用多個不相聯系的案例造成的課時緊張,而且還可以更好地理解知識點之間的聯系,從而牢固地掌握并將它們靈活應用到實踐中去。 三、左右逢源 案例選取的方法很多,根據情況還可以采用左右逢源選取案例的方法。在講授C++的某些章節中,經常會遇到一些難點。例如指針做函數參數,有四種情況,它們之間是橫向的關系,彼此有著明顯區別,但又存在一定聯系。如何讓學生弄清它們彼此之間的區別與聯系呢?在實例選取中,要注意對具體實例的剪裁與改造,力爭用多種方法去解決同一個問題。這樣在一個實例中就可以學習到多個橫向的、不同的知識點,并領悟到它們之間的區別與聯系,更好地加以掌握。針對指針做函數參數的四種情況,可以選取求數組平均值的案例,用四種方法求解,最終揭示這四種情況彼此之間存在聯系的本質。 在C++程序設計課程講授中,可以大量采用上述精選案例的方法,例如在循環一章中,采用一個計算累加和的案例,闡述三種循環結構的特點。又如在結構體一章中,采用一個案例對結構體變量成員的幾種訪問方法都給予了講解。在講解類的語法時,采用描述時鐘的一個案例,將類與結構體進行對比,引發對程序設計思想的討論。 四、結語 如何精選案例?首先應該對具體講授內容有深刻理解,弄清特點和難點,做到有的放矢;其次找出相關知識點之間的區別和聯系,在此基礎上構思精巧的案例,盡量包容相關的知識點,在講解中闡明相關知識點的特點和相互聯系。通過案例的精選,一方面使學生對基本概念深刻理解,另一方面又提高了學生的實際動手能力,一舉兩得。 【參考文獻】 [1] 王曉東. C++程序設計簡明教程(第二版)[M].北京:中國水利水電出版社, 2017. [2] 鄭莉. C++語言程序設計[M].北京:清華大學出版社, 2001. [3] 江義華. C/C++完美演繹[M].北京:中國水利水電出版社, 2001.