向澤林
摘 要:計算機程序設(shè)計是一門邏輯性、實踐性很強的課程,在該課程的教學(xué)中,重點是培養(yǎng)學(xué)生的學(xué)習(xí)興趣、掌握程序設(shè)計的思想和方法,以利于學(xué)生具備用計算機來分析、解決實際問題的能力,并配以完善的考核方式,以提高程序設(shè)計課程教學(xué)質(zhì)量,增強教學(xué)效果。
關(guān)鍵詞:計算機;程序設(shè)計;思維能力
在計算機教學(xué)中,程序設(shè)計課程是必不可少的,也是非常重要的,它在計算機領(lǐng)域具有舉足輕重的作用,可以這樣說,信息自動化其實就是編寫程序的具體體現(xiàn)。但是,教師對這門課程的講授以及學(xué)生對這門課程的學(xué)習(xí)、掌握、領(lǐng)悟都感到非常困難。特別是對非計算機專業(yè)的文科學(xué)生而言,那更是難上加難,通常出現(xiàn)老師難教、學(xué)生難學(xué)的尷尬局面。作為一名工作在教育一線的教師,我通過多年的程序設(shè)計課程的教學(xué)實踐,以及教學(xué)方法的思考,獲得了一些寶貴經(jīng)驗,提出來與同仁探討,希望能在程序設(shè)計課程的教學(xué)上找到一條更適合、更有效的路子。
一、激發(fā)學(xué)生學(xué)習(xí)程序設(shè)計的興趣和愛好
對剛接觸程序設(shè)計課程的學(xué)生來說,很難理解程序的概念,始終不明白為什么要編寫語句代碼來實現(xiàn)現(xiàn)實生活中的問題。如果老師在教授程序設(shè)計課程的時候,一開始就進入程序本身,學(xué)生必定會感到迷茫。即使會編寫一些程序,也可能是不知其所以然。為了解決這一問題,我在講授程序設(shè)計課程的時候,第一次課并不直接講程序,而是出了幾道小學(xué)暑期作業(yè)當中的題目,給一定的時間,讓學(xué)生以自己的思考方式解答。
1.有這樣一個算式:元宵+慶元宵=樂樂樂(其中每個漢字對應(yīng)一個0~9的不重復(fù)數(shù)字),求出每個漢字分別對應(yīng)的數(shù)字是多少。
2.有這樣一句話:小朋友元宵節(jié)好(其中每個漢字對應(yīng)一個0~9的不重復(fù)數(shù)字),且滿足下面三個條件,求出每個漢字分別對應(yīng)的數(shù)字是多少。
①小×朋+友×元+宵×節(jié)-好=61
②朋+友×元+宵×節(jié)+好×小=61
③元×宵+節(jié)×好×小+朋×友=61
3.誰是偷盜者問題:甲、乙、丙、丁4個人為嫌疑犯,只有一個是偷盜者。在審訊中,四人都有可能說真話和假話。
甲:乙沒偷,丁偷的;乙:我沒偷,丙偷的;丙:甲沒偷,乙偷的;?。何覜]偷。
根據(jù)以上四人的證詞,推斷誰是偷盜者。
學(xué)生一看到這幾道題目的時候,都很親切,畢竟都是他們小學(xué)時候遇到過的內(nèi)容,于是積極思考,踴躍答題。在時間到了的時候,教師抽幾位學(xué)生起來回答他們解決每道題的思路、分析過程,并看是否得到了正確的答案。然后老師快速地以某種程序語言(比如VB、C、C++、C#、JAVA)編寫實現(xiàn)上述三道題,一邊寫代碼的時候一邊簡單闡述,其實步驟就是我們思考的過程,只是這里相當于用特殊的語句將人解決這個問題的思路翻譯一下。最后調(diào)試、運行得出正確答案,學(xué)生看后非常驚奇,自然而然就激發(fā)了他們學(xué)習(xí)程序的欲望和興趣。畢竟興趣是最好的老師,要想學(xué)生能夠?qū)W好編程,培養(yǎng)學(xué)生的興趣就是關(guān)鍵的第一步。這一步至關(guān)重要,將直接影響到后面的教學(xué)過程。
二、培養(yǎng)分析問題的思維能力
其實,要編寫程序解決某個問題,不是計算機本身能做到的,畢竟計算機不是人,不會思考,關(guān)鍵是人要能對某個問題會分析,弄清楚解決該問題的思路。程序的語法結(jié)構(gòu)只是提供給人編寫程序的規(guī)則和平臺,實現(xiàn)一個程序功能,我們關(guān)鍵是要重視算法(算法其實就是人對某個問題的思考過程、思路)、抓住核心。
在教學(xué)中經(jīng)常存在這樣一種現(xiàn)象:很多學(xué)生對程序語法結(jié)構(gòu)掌握得很好,但往往碰到實際問題時就束手無策,不知道如何用學(xué)到的知識加以解決,究其根源,這是算法能力欠缺的一種表現(xiàn)。有些教師在講課時經(jīng)常注重分析程序代碼中每條語句的含義,卻忽略了算法描述過程的展現(xiàn),造成學(xué)生知其然,不知其所以然,只會完成自己曾經(jīng)做過的題目。其實,在程序設(shè)計課程中,算法設(shè)計是它的核心。如果學(xué)生掌握了良好的算法設(shè)計能力,也就掌握了程序設(shè)計的靈魂,無論遇到什么問題都可以很好地解決。當然,在教學(xué)中可以通過多種方法培養(yǎng)學(xué)生的算法設(shè)計能力:
(1)詳細講解常用的算法。對同一個問題,算法可能都有很多種,但學(xué)生一般只要掌握常用的、經(jīng)典成熟的就可以了。例如:排序問題,前人總結(jié)歸納的就有很多種算法,比如簡單插入排序,冒泡排序,希爾排序,快速排序,簡單選擇排序,堆排序等。但是我們要求學(xué)生掌握冒泡排序、選擇排序的算法就足夠了,只要這兩種排序的算法弄清楚了,其他的也就輕而易舉了。
(2)教師帶領(lǐng)學(xué)生多閱讀程序,分析程序功能和代碼實現(xiàn)過程,吸取他人的經(jīng)驗和成熟的算法,使學(xué)生少走彎路或不走彎路。其實很多問題,都有比較成熟的算法設(shè)計。閱讀程序關(guān)鍵一點就是要善于總結(jié)、歸納,吸取精髓,變別人的東西為自己所有。比如獲得每個漢字拼音的首字母,在網(wǎng)上或書本上都有現(xiàn)成的代碼,我們就可以通過程序代碼分析其實現(xiàn)的原理,徹底搞清楚,今后如果要用到這一功能時,就可以直接拿來用。
(3)多用打比方分析問題。用打比方的方法分析問題不僅簡單,而且容易懂,學(xué)生能很快接受。例如,在計算機等級考試或?qū)嶋H生活中,我們經(jīng)常遇到這樣的問題:將一篇英語文章中的所有大寫字母轉(zhuǎn)換成相應(yīng)小寫字母,而小寫字母相應(yīng)的轉(zhuǎn)換成大寫字母,其他字符則保持不變。一看到這道題,許多學(xué)生都不知道怎么下手。但是我們仔細思考、分析,就可以將上述題目轉(zhuǎn)換為這樣一個實際問題:小明寫了一篇英語文章,我們?nèi)绾螌⑦@篇文章中的大小寫字母進行相應(yīng)轉(zhuǎn)換呢?大家根據(jù)平時的理解和處理方式很快就能想到,要解決這個問題,不外乎存在以下三個關(guān)鍵步驟:
從文章開頭到文章結(jié)尾,必須完整瀏覽一遍。
從前往后或從后往前依次找出每一個英文字母進行判斷,它是大寫字母還是小寫字母,或是其他字符。
判斷后根據(jù)要求進行轉(zhuǎn)換,是大寫就轉(zhuǎn)換成小寫,是小寫就轉(zhuǎn)換成大寫,其他字符就不轉(zhuǎn)換。
大家想一想,按照這三個步驟做完,問題不就解決了嗎?最后,根據(jù)思考步驟自然想到用循環(huán)結(jié)構(gòu),結(jié)合查找、轉(zhuǎn)換函數(shù)等知識點編寫相應(yīng)代碼就可以輕松實現(xiàn)。
(4)學(xué)生之間多交流。要實現(xiàn)一個功能,解決一個問題,編程方式可能有多種,但究竟哪一種好呢,可以讓學(xué)生之間多討論、多比較,最后落實到算法上。經(jīng)過長期的這種方式的培養(yǎng)鍛煉,學(xué)生在今后的編寫代碼過程中肯定會充分考慮算法的時間復(fù)雜度。
三、養(yǎng)成多讀、多寫程序的習(xí)慣
程序設(shè)計課程的實踐性很強,“精講多練”是程序設(shè)計課程教學(xué)的一大特點,實踐教學(xué)在程序設(shè)計教學(xué)中起著重要的作用,學(xué)生只有通過自己親自分析問題,親手編寫程序、上機調(diào)試程序這一恒定過程,才能從中理解程序設(shè)計的思想方法,積累程序調(diào)試的經(jīng)驗,體會成功的樂趣,才會有成就感,從而激發(fā)學(xué)生的學(xué)習(xí)興趣,學(xué)起來也才會從容自如。學(xué)生只聽不練根本達不到學(xué)習(xí)的目的。在教學(xué)中,就經(jīng)常發(fā)現(xiàn),對某個問題老師分析的時候,學(xué)生都能聽懂,寫代碼的時候,也都能理解。但是一旦叫他們自己分析編程的時候,就顯得毫無辦法。我認為這種情況就是學(xué)生獨立思考、獨立編程時間太少造成的。
四、以學(xué)生學(xué)習(xí)內(nèi)容為中心,完善考核形式
考試是測試學(xué)生的知識與能力、評價教學(xué)質(zhì)量的基本手段。是教學(xué)過程中的重要一環(huán),也是對一階段教學(xué)工作的總結(jié)與檢查,也是檢驗學(xué)生學(xué)習(xí)效果、評價學(xué)生學(xué)習(xí)業(yè)績的重要環(huán)節(jié),考試的形式對教學(xué)目標、教學(xué)過程有著相當大的影響。我認為,在程序設(shè)計課程中采用“筆試+實例操作”的考核方式比較好。筆試著重于理論體系(主要是讀程序、程序填空等)。實例操作則著重于培養(yǎng)學(xué)生分析問題、解決問題以及團隊協(xié)作的能力。
比如,給學(xué)生上C#程序設(shè)計課,在學(xué)期快結(jié)束時,我就將班上學(xué)生分成幾個小組,每小組完成一個具體實例,這些實例應(yīng)該是學(xué)生經(jīng)常遇到的,與生活息息相關(guān)的,比如簡單打字軟件、斗地主撲克牌發(fā)放程序、五子棋游戲、俄羅斯方塊等等。這樣,學(xué)生就會主動積極思考、討論,想盡一切辦法尋求答案。在這個過程中,學(xué)生親自動手解決具有一定難度的實際問題,為之設(shè)計合適的算法,經(jīng)過實踐去培養(yǎng)他們的創(chuàng)新意識、應(yīng)用意識和探究能力。這些意識和能力一旦形成,就會使他們利用程序解決實際問題能力得到很快的提高,對今后從事計算機軟件開發(fā)也是大有好處的。
總之,程序設(shè)計課程,在高校的計算機基礎(chǔ)教學(xué)中占據(jù)著十分重要的位置,教學(xué)方法在程序設(shè)計教學(xué)中的舉足輕重制約著程序設(shè)計教學(xué)的效率??茖W(xué)的教學(xué)方法一定會為學(xué)生提供良好的幫助。我們在教學(xué)過程中應(yīng)以學(xué)生為主體,教師為主導(dǎo),采用符合學(xué)生認知規(guī)律的、科學(xué)的教學(xué)方法,充分調(diào)動學(xué)生學(xué)習(xí)的主動性,讓老師不再難教,學(xué)生不再難學(xué)。同時,采用綜合評價學(xué)生的方式,努力培養(yǎng)學(xué)生自主學(xué)習(xí)的興趣,提高學(xué)生實際應(yīng)用能力,從而使得程序設(shè)計課程的教學(xué)質(zhì)量得到不斷提高。
參考文獻:
周蕾.程序設(shè)計課程教學(xué)方法探討[J].電腦知識與技術(shù),2012.
編輯 段麗君