李永娜
《C++語言程序設計》是高職計算機專業(yè)的一門專業(yè)基礎必修課。C++蘊含了程序設計的基本思想,囊括了程序設計的基本概念,所以是計算機專業(yè)的一門基礎課程。高等院校開設C++語言程序設計的目的是讓學生掌握程序設計的基本方法,逐步形成正確的程序設計思想,同時還能夠熟練地使用C++進行程序設計和調試,為其他程序設計課程的學習和應用打下基礎。
筆者通過長期的教學實踐發(fā)現(xiàn),學生普遍認為C++枯燥難學、概念復雜、容易出錯,由此產生了畏學、厭學情緒,嚴重影響了課程的進一步學習。為了解決學生面臨的這一系列問題,筆者針對該課程的自身特點,結合各種教學方法以及教學實例,對如何激發(fā)學生的學習興趣、刺激學生的求知欲,從而提高課程的教學質量、增強教學效果等方面進行了深入地探討。
一、讓學生明確學習目的,激發(fā)學生的學習興趣
學習興趣就是學生在心理上對學習活動產生愛好、追求和向往的傾向,是推動學生積極主動學習的直接動力。學生只有對所學課程有濃厚的興趣,才能積極主動和富有創(chuàng)造性地去完成學習任務??梢?學生的學習興趣直接關系到教學效果的好壞。那么,教學中應如何激發(fā)學生的學習興趣呢?
1.明確學習C++的重要性
學習的重要性也就是這門課程的有用性。在社會競爭日益激烈的今天,學生的學習更看重的是實用性,是課程學習對以后的工作和競爭所起到的作用。當學生深刻地領會到課程學習的重要性之后,對課程的學習興趣也就油然而生了。
(1)目前,市場對軟件工程師以及熟練掌握計算機程序設計的其他專業(yè)復合型人才的需求缺口很大。C++作為一種通用的程序設計語言,廣泛地應用于軟件設計和開發(fā)當中。熟練掌握C++程序設計語言,必然會成為計算機專業(yè)學生在未來就業(yè)競爭中的一個重要籌碼。
(2)C++是許多其它商業(yè)軟件的開發(fā)工具。例如,當今世界上最流行的工程制圖軟件包AUTOCAD就是用C++開發(fā)的。另外,大家所熟知的UNIX操作系統(tǒng)也完全是由C++編寫的。
(3)C++是其它面向對象語言以及網(wǎng)絡編程的基礎。面向對象編程語言,如VB、VC++等,雖然擺脫了面向過程語言的許多細節(jié),使設計程序輕松很多,但用戶對其對象化的事件仍需編寫代碼來驅動實現(xiàn)。這些代碼里面仍包含結構化程序設計的順序、選擇、循環(huán)三種基本結構。因此,C++的編程思想是面向對象語言程序設計的理論基礎。另外,隨著Web網(wǎng)頁技術的不斷普及和發(fā)展,人們制作漂亮的、個性化的Web網(wǎng)頁并不是件難事。問題在于深層次的網(wǎng)絡技術開發(fā)仍然必須掌握一定的編程工具,如CGI程序、ASP腳本語言、JAVASCRIPT等等。實際上,這些流行的網(wǎng)絡編程語言很多都混合了C++的語法,這類語言在數(shù)據(jù)、運算符、函數(shù)的調用、程序語句的書寫、循環(huán)的控制上都極為相似。
(4)C++編程有助于訓練和培養(yǎng)計算機思維。C++的學習不僅是一門純粹的技術或技能,而且是一種思維訓練的工具,有助于鍛煉人們的思維。這就像數(shù)學對人的思維所起作用一樣,使人的思維更精確、更細致。當學生對該門課程的重要性有一個深刻認識的時候,自然會把C++的學習擺在一個較重要的位置加以重視。這是培養(yǎng)學生興趣的一個重要方面。
2.展示C++語言程序設計的魅力,刺激學生的求知欲
將抽象的語言形象化,使枯燥的機械性的學習過程轉化為一種趣味性的認知過程,將C++語言所擁有的魅力展現(xiàn)在學生面前,讓學生感受到C++學習其實也是一項其樂無窮的事情。
(1)把趣味性問題作為教學實例。C++語言的學習過程是一個相當抽象的過程,各種各樣的語句都以符號的形式展現(xiàn)在面前,學生難免會對此產生厭倦。此時,可以在課堂的案例中加入小游戲及圖形設計內容,以趣味性的實例作為教學的例子。
在講解一個新的知識體系前,運用即將學到的知識設計一個吸引學生的小游戲或動畫。課前,教師首先展示動畫,側面引導學生,讓他們有“只要我學會了這部分知識也能自己做出來”的信心,這樣會大大提高學生的學習熱情。
例如,在講解“選擇與循環(huán)結構”之前,筆者首先在課堂上向學生展示了一個“猜數(shù)游戲”,讓學生對此產生了興趣,提高了上機時的積極性。當他們學習了if語句后,就可以編出程序的判斷部分,學習了循環(huán)語句后,就可完成一次猜數(shù)字的過程。而學習了循環(huán)嵌套后,則可實現(xiàn)連續(xù)猜數(shù)字,成為一個完整的游戲。從具體實例切入,由淺入深、循序漸進的教學模式,能夠很好地調動學生學習的主動性,培養(yǎng)他們對課程學習的興趣。
(2)選擇經(jīng)典的數(shù)學問題作為課堂案例。正如長篇大論的講道理往往不如巧妙的使用一個典故或者一句名言更具說服力一樣,經(jīng)典的數(shù)學問題作為課堂案例會比一般的練習題更能引起學生興趣。例如,“百錢百雞”問題是用C++程序解決數(shù)學方程運算問題的一個典型實例,用到了程序中典型的算法——“窮舉法”。
將這樣的經(jīng)典數(shù)學問題作實例,可以使學生既學習算法,又體會到運用C++編程解決實際問題的樂趣。又如演示數(shù)學中一元二次方程的求解程序,同樣如此。用所學的知識解決現(xiàn)實問題,使學生能夠感受到理論在實際中的應用,從而進一步激發(fā)他們向更高、更遠的目標奮進。實踐表明,這些學以致用的實例能大大激發(fā)學生對C++學習熱情。因此,在學習過程中,要讓學生體驗到成功的歡樂,獲得成就感,強化學生的求知欲望從而使學生學習C++的興趣和熱情能夠持久保持。
二、多樣化的教學方法
1.啟發(fā)式教學法
程序設計方法是多種多樣的,大多數(shù)問題都不只有一個解法。因此,在教學過程中,教師不應對學生進行刻意地限制,而要鼓勵學生按照自己對問題的理解采用自己認為合適的方法進行處理。教師則對各種方法進行總結,并對各種方法的優(yōu)缺點進行講解。通過這種引導啟發(fā)式的教學方法,可以調動學生的積極性。例如,1+2+3+…+100=?可以采用while語句,也可以采用do…while語句,還可以采用for語句。教師可以引導學生進行思考,讓他們采用不同的語句來實現(xiàn)。這樣不僅能夠調動學生的主觀能動性,還能讓他們在不知不覺中鞏固了所學的知識,加深了對本質的認識。
2.案例比較教學法
結合課堂要求,選擇恰當案例,采用多個案例演示比較,經(jīng)過學生的討論后,及時做出講評,并再次講授案例分析中所需要用到的理論知識和技能。通過對各種案例的比較,能夠讓學生深刻領會到不同的語句之間的區(qū)別和聯(lián)系,有助于他們更準確地進行運用。例如,在學習函數(shù)這一章時,為了說明函數(shù)調用時參數(shù)傳遞的方式,設計如下案例供學生討論。
案例:交換主函數(shù)兩個變量的值,要求:main函數(shù)中兩個變量,采用函數(shù)調用實現(xiàn)變量交換后,然后輸出交換后結果,用swap函數(shù)實現(xiàn)。
學生經(jīng)過分析討論,得到以下四種方法:
程序1:
swap(intx,inty)
{inttemp;
temp=x;x=y;y=temp;}
voidmain()
{inta=10,b=20;
swap(a,b);
temp=x;x=y;y=temp;}
voidmain()
{inta=10,b=20;
swap(a,b);
cout< } 這個程序中采用的是另外一種參數(shù)傳遞方式——使用引用。此時實參a初始化形參x,實參b初始化形參y,在swap函數(shù)中實現(xiàn)了a和b的值交換。 程序3: swap(int*p1,int*p2) {intp; p=*p1;*p1=*p2;*p2=p;} voidmain() {inta=10,b=20; swap(&a,&b);