国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

悅趣化學習在面向對象程序設計教學中的應用研究

2013-12-31 00:00:00冀津王冠宇
計算機教育 2013年18期

摘要:悅趣化學習是一種“玩中學”的學習方式,通過激發(fā)學習者的學習動機促進學習,將學習融入游戲中,又稱“游戲化學習”。悅趣化學習方式多種多樣,文章就Robocode軟件在面向對象程序設計聾學中的應用進行研究,闡述Robocode在程序設計學習中的價值,論述Robocode在程序設計教學中的組織應用,同時也對悅趣化學習進行總結和反思。

文章編號:1672-5913(2013)18-0099-04

中圖分類號:G642

0 引言

悅趣化數(shù)字學習又稱數(shù)字游戲式學習(Digital Game-Based Learning,DGBL),是強調以學生為中心并融合數(shù)字游戲的創(chuàng)新教學方式,即學生以小組合作的方式,通過解決數(shù)字游戲中的問題與挑戰(zhàn)來學習知識。一邊游戲一邊學習可以為學習者提供一個充滿樂趣與挑戰(zhàn)的學習環(huán)境,更能強化學習動機,加快知識的充分吸收。臺灣學者將這種學習方式譯為“悅趣化學習”。

面向對象程序設計(OOP)課程在整個計算機課程教學中占據(jù)非常重要的地位,目前國內高校計算機專業(yè)普遍開設了此類課程。類和對象是面向對象程序設計中最重要的概念,目前多數(shù)教材對這些概念以文字進行介紹,對學習者而言,這些概念難以理解,學習效果不甚理想。建構主義教學論原則指出:“復雜的學習領域應針對學習者先前的經(jīng)驗和學習者的興趣,只有這樣,才能激發(fā)學習者的學習積極性,學習才可能是主動的”。為了激發(fā)學生持久的學習興趣,讓學生產(chǎn)生學習的內在驅動力,教育工作者在一直不停地進行著積極的探索。在面向對象程序設計課程教學過程中引入“悅趣化學習”就是一個行之有效的方法。悅趣化學習的方式多種多樣,如模擬仿真類游戲“模擬城市(SimCi-ty)”、可用于學習地理的“大航海時代(Great Age of Voyage)”等。

Robocode是一款基于Java語言的坦克機器人作戰(zhàn)游戲。此款游戲在沒有用戶輸入的狀態(tài)下,讓許多坦克機器人在一個競技場中比賽,而且用戶必須編制一個高效的坦克機器人來取勝。Robocode像一場坦克機器人的大混戰(zhàn),它們互相開火直到只剩一個勝利者。Robocode要求使用Java語言對坦克機器人的動作進行編程,并設計不同的決策方案指揮坦克機器人的運行。Java初學者可以在讓自己的坦克機器人戰(zhàn)勝對手坦克機器人的代碼編寫過程中,掌握Java語言,提高程序設計能力。

1 悅趣化學習在程序設計學習中的價值

1)激發(fā)學習動機。

學習動機是學生學習面向對象程序設計過程中一個非常重要的因素,很多學生學習積極性較差,卻在游戲方面顯出較高興趣。若將游戲的特點應用到面向對象程序設計過程中,使學習更加有趣,不失為一個促進學習的好方法。Robocode是一款機器人作戰(zhàn)游戲,符合青少年熱衷網(wǎng)絡游戲的特點,可以使學生在設計代碼完成游戲的過程中提高學習面向對象程序設計的積極熊。

2)體驗式學習過程。

體驗式學習(Experimental Learning)是指以學習者為中心,通過實踐與反思相結合來獲得知識、技能和態(tài)度的學習方式。簡言之,體驗式學習遵循了4個階段模型:首先從具體體驗開始,然后是觀察和反思,進而形成抽象的概念和普遍的原理,最后將形成的理論應用到新情境的實踐當中。

在面向對象程序設計的教學中,教師一般要先講一下相關的概念和語句,但學生未必都能理解,學生在Robocode應用中,為了游戲的順利進行,必須不斷調試程序。教師要及時引導學生將注意力轉移到教學的實質階段——編程知識的學習。當講解到一些技術要點時,演示該技術在游戲中的具體運用,往往能夠更加吸引學生,從而達到在游戲中學習的目的。

3)提高解決問題能力。

游戲往往充滿了挑戰(zhàn),不論是戰(zhàn)斗還是增強技巧,都需要游戲者千方百計地解決問題。因此,游戲可以提高游戲者解決問題的能力。Whitebread認為解決問題是一個復雜的智力過程,包括一系列的能力:①理解和描述問題的能力(包括找出相關資訊的能力);②收集和組織相關資訊的能力;③制訂和管理行動計劃或策略的能力;④問題推斷和決斷能力;⑤使用各種解決問題的工具的能力。

學生為了能夠完成Robocode實驗平臺的搭建,就需要解決如何在Eclipse開發(fā)平臺上建立Robocode平臺的問題;為了了解如何設計機器人坦克,就需要解決如何使用API幫助文檔的問題;如果在競爭中失利,為了打敗對手,就會產(chǎn)生強烈的了解對手機器人坦克是怎么編程設計的念頭,于是會閱讀對手機器人坦克的源代碼,進一步達到提高閱讀源代碼水平的能力。

4)提高協(xié)作學習能力。

網(wǎng)絡游戲本身就需要和其他人互動,并在互動過程中形成游戲虛擬團隊。在應用Robocode進行游戲時,指導教師對學生進行分組,讓學生以小組為單位協(xié)作學習,每個小組有3~4名組員,開發(fā)3~5段坦克控制程序,各組進行競賽,加載各組的坦克機器人進行對決。組內學生為了獲勝,相互交流編程技術,以便設計出更為強大的機器人。各組學生直接交流獲勝經(jīng)驗,不僅提高編程能力,更樹立了協(xié)作意識。

5)提升創(chuàng)造能力。

創(chuàng)造能力又稱創(chuàng)造力或創(chuàng)新能力,是當前各行各業(yè)都非??粗氐哪芰?。雖然創(chuàng)造力有天賦的成分,不過學者們認為創(chuàng)造力是可以通過后天努力培養(yǎng)的。游戲可以用來培養(yǎng)學習者的創(chuàng)造能力。在應用Robocode進行游戲時,學生可以查看坦克機器人的源代碼,模擬游戲系統(tǒng)給出的模板機器人進行設計。但為了在競賽中獲勝,學生往往要在此基礎上進行改造創(chuàng)新,從而設計出具有各種不同能力的機器人。

2 Robocode在程序設計教學中的組織應用

1)類、對象和包。

對象(Obiect)是類(Class)的一個實例。面向對象程序設計的重點是類的設計。Robocode機器人是一個圖形化的坦克,每個機器人都由一個或多個Java類構成。學生從菜單操作中新建一個機器人,首先輸入機器人的名字,名字首字母要大寫,然后輸入包的名字,這樣就生成了一個機器人的對象。

2)屬性。

封裝是面向對象的特點,即通過訪問器(get和set)進行屬性訪問。Robocode機器人Vehicle(見圖1)有一門可以旋轉的炮Gun,炮上方的雷達Radar也是可以旋轉的。機器人坦克車(Vehicle)、炮(Gun)以及雷達(Radar)都可以單獨旋轉,也就是說,機器人坦克車、炮以及雷達都是機器人坦克這個類的屬性,都可以轉向不同的方向。

3)方法。

方法是類中用于執(zhí)行計算或進行其他操作的函數(shù)成員。如對象圖片體現(xiàn)、刷新、可見與不可見、自動行走等就可以使用方法來完成,再在另一個類中調用。

要讓學生理解創(chuàng)建的機器人坦克就是一個類,它繼承于robocode,Robot類,而Robot類本身含有許多方法。機器人坦克要生命不息,戰(zhàn)斗不止,就要調用如下方法:

ahead(100);(前進100像素)

tumGunRight(360);(轉動炮塔360度)

back(100);(后退100像素)

turnRight(60);(右轉60度)

fire(1);(開火)

4)事件。

事件是對象發(fā)送消息、信號通知客戶發(fā)生了操作。圖形用戶界面通過事件機制響應用戶和程序的交互。響應用戶時間通常稱為事件處理。學生在編寫程序時很少需要委托和事件,重點是對已有對象、控件的事件使用,了解“方法是必須是通過寫代碼來調用,而事件由自己觸發(fā)”的基礎原理。

在教學過程中,結合Robocode可以使學生很容易理解事件處理。如幾個關鍵的事件類:

ScannedRobotEvent:雷達發(fā)現(xiàn)敵坦克事件類,它用作參數(shù)被onScannedRobot(ScannedRobotEvent e)方法處理,當雷達檢測到機器人時,就調用該方法。

HitByBulletEvent:被敵坦克擊中事件類,它用作參數(shù)被onHitByBullet(HitByBuUetEvent event)方法處理。當機器人被炮彈擊中時,就調用該方法。

HitRobotEvent:通過覆蓋onHitRobot()方法來處理HitRobotEvent。當機器人擊中另外一個機器人時,就調用該方法。

HitWallEvent:撞墻事件類,它用作參數(shù)被onHitWall(HitWallEvent eventl方法處理。當機器人撞到墻時,就調用該方法。

5)繼承。

繼承是使用已存在類的定義作為基礎建立新類的技術。新類的定義可以增加新的數(shù)據(jù)或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。這種技術使得復用以前的代碼變得非常容易,能夠大大縮短開發(fā)周期,降低開發(fā)費用。例如可以先定義一個類:車,車有以下屬性:車體大小、顏色、方向盤、輪胎,而由車這個類派生出轎車和卡車兩個類,為轎車添加一個小后備箱,而為卡車添加一個大貨箱。

每個學生創(chuàng)建的機器人坦克類都繼承Robot類,也就是說都具有onScannedRobot、onHitByBullet、onHitRobot、onHitWall等方法。

6)多態(tài)。

首先向學生講明多態(tài)的理論概念,即重載和重寫。重載發(fā)生在一個類中,重寫發(fā)生在子類中,意思就是子類重寫父類中相同名稱的方法。

每個學生在創(chuàng)建機器人坦克類時,為了躲避敵方坦克的炮火,為了迷惑敵方坦克、不讓對方雷達過多地掃描到自己,為了盡量不撞到墻,就要編寫自己的策略代碼,覆蓋onScannedRobot、onHitByBullet、onHitRobot、onHitWall等方法。這樣學生就會明白在面向對象編程中這就是多態(tài)。

3 悅趣化學習的反思

通過一個學期的教學,采用悅趣化學習方式,將游戲Robocode引入面向對象程序設計課程的教學中,使學生對Java語言產(chǎn)生了濃厚的學習興趣,提高了學生的編程能力。在教學過程中,教師及時引導學生將注意力集中到編程知識的學習中并演示具體技術在游戲中的運用,會有更好的課堂教學效果。

采用悅趣化教學也存在下面一些問題:

(1)有的學生過多地使用了“試誤”的策略,這些學生對面向對象的編程一知半解,只管隨便編寫機器人坦克類的編碼,結果也可想而知。其實試誤也是一種重要的解決問題的策略,只不過這種學習有一定的盲目性,學習效率自然不是很高。

(2)低效的協(xié)作。有的學生經(jīng)常向學習好的學生請教問題,但是別人告訴他的只是一些支離破碎的知識點,而不是系統(tǒng)的答案,因此,不能很好地掌握機器人坦克設計的技巧。

(3)膚淺的反思。許多學者都認為在游戲進行過程中和游戲結束后進行反思和總結是提高學習成效的有效方法,因此在面向對象程序設計教學中要特別強調反思。從課后分析中可以看出,大部分學生也都在努力反思,但不一定深刻和全面,如有的學生也反思過自己設計的坦克被擊中卻沒做出反應的錯誤,但是后面還是會經(jīng)常重復類似的錯誤。

(4)簡單的查找。教師在面向對象程序設計教學中鼓勵學生在學習、游戲的過程中要善于通過網(wǎng)絡查找資料,但是有的學生只是簡單地查找API手冊,得到一些孤立的知識點。例如,有的學生也知道自己的坦克被擊中后要躲閃、反擊,但只是簡單的幾條語句的算法,并沒有系統(tǒng)地設計一個完整的算法。

4 結語

教學實踐證明,編寫Robocode不但會用到面向對象程序設計的知識,還會涉及數(shù)據(jù)結構、人工智能等知識與技術,并且在游戲的過程中能夠完成學習任務,充分地調動了學生學習的積極性、主動性和創(chuàng)造性,培養(yǎng)了學生分析問題和解決問題的能力,以及團隊協(xié)作精神,對提高面向對象程序設計課程的教學質量有較大的幫助。當然,Robocode游戲不可能囊括面向對象程序設計的所有方面,但是作為輔助教學工具,足以引起計算機教師的重視。下一步,我們還要對其中存在的一些問題進行研究。

(見習編輯:劉麗麗)

博客| 论坛| 米林县| 剑阁县| 武定县| 云龙县| 天镇县| 永胜县| 额尔古纳市| 峨山| 台北市| 信宜市| 滁州市| 海阳市| 建水县| 桑日县| 册亨县| 宜宾县| 澄江县| 水城县| 建始县| 菏泽市| 衢州市| 双鸭山市| 永川市| 滕州市| 台南县| 封丘县| 平谷区| 获嘉县| 离岛区| 阳春市| 兰坪| 如皋市| 惠来县| 弥勒县| 临泽县| 五家渠市| 灵石县| 吴忠市| 神池县|