999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Karel在面向對象程序設計課程教學中的應用

2015-05-30 10:48:04趙欽佩李江峰史揚
計算機教育 2015年11期

趙欽佩 李江峰 史揚

文章編號:1672-5913(2015)11-0061-06

中圖分類號:G642

摘要:探討教育編程語言Karel在面向對象程序設計課程入門介紹中的應用,通過實踐和調查指出教育編程語言可以降低學習難度,利用Karel設計的游戲競賽可以顯著提高Java初學編程者的興趣。

關鍵詞:面向對象;教育編程語言Karel;程序設計;編程初學者;游戲競賽

0 引 言

隨著計算機編程技術的發展,面向對象的程序設計(obj ect-oriented program,OOP)是目前軟件開發人員所必須掌握的一項基本技術,因此面向對象的編程語言如面向對象的C++、Java也成為軟件工程專業的基礎課程。面向對象程序設計理念以“對象”代表一個客觀世界中的具體事物,而將具有相同屬性和操作的對象集合定義為“類”的概念,每個對象是類的實例化。另外,與過程式編程語言相比,OOP加入了繼承性和多態性,這些基本概念如對象、類、繼承和派生等往往是編程初學者的“攔路虎”。對于教師而言,在入門介紹時單純地講解概念一般得不到很好的教學效果;對于學生而言,晦澀的概念和枯燥的語法很容易打擊他們的學習積極性;另外,對于軟件工程專業來說,編程基礎是整個課程體系的基礎,由此可見面向對象程序設計課程的重要性。

對于以實踐操作為主、技術性較強的計算機語言來說,面向對象程序設計課程教學需要一種理論和實踐融合的教學方法和模式,以培養學生根據實際問題動手的能力。結合現場編程和啟發式的教學方式是比較常見的,案例教學被認為是一種具有發展潛力的教學方法。雖然案例教學對初學者學習編程具有一定的作用,但是學生在選擇案例材料并以此進行課程設計時則感覺比較困難。針對編程入門課程,國外大學引入競爭模式和團隊合作項目,這種模式對于增強課程的趣味性有一定幫助。通過對程序設計類課程的教學特點和方法進行研究,結合國內外的教學經驗,我們在面向對象程序設計課程的入門介紹中引入教育編程語言。教育編程語言是一種教育性質的程序設計語言,每種語言都建立在其他語言的基礎上,使得學生能夠適應從簡單又易于理解的娛樂性編程環境到專業開發環境的轉變。適用于學習OOP的教育編程語言,第一個被引入的是Karel。Karel給編程初學者提供一個簡單直觀的環境,使得他們能擺脫大多數編程語言復雜的特性,學習基本的編程思想。在這個思路上,類似的教學編程語言還包括Jeroo等。

1 課程特點及難點

1.1 課程間的聯動性

面向對象程序設計方法是在吸收了軟件工程領域實踐經驗的基礎上而發展起來的一種軟件開發方法,它集抽象性、封裝性、繼承性和多態性于一體,可以幫助人們開發出模塊化,數據抽象程度高,體現信息隱蔽、可復用、易修改和擴充等特性的程序。面向對象程序設計課程是軟件工程專業基礎課程,由于和Java編程與應用結合緊密,因此可將Java語言作為學生學習面向對象程序設計方法的途徑。由于Java的特性給其他課程如數據庫原理、算法與數據結構、移動計算等的學習提供了方便,而課程之間具有聯動性,因此學生學習該課程的效果可能會直接影響其他課程的教學效果。

1.2 入門介紹的復雜性

“萬事開頭難”,編程語言的入門介紹往往比較困難。傳統的入門介紹往往從簡單的程序開始如“Hello World”,逐漸地引入復雜的編程案例和項目。這種傳統的入門介紹方法提供了一個平緩的學習曲線,能為學習者遞增地提供吸收和構建知識結構的時間。然而,我們認為在進行面向對象程序設計課程的入門介紹時,應該考慮以下幾點。

首先需要考慮授課對象。大學低年級的編程初學者往往具有參差不齊的能力和分散的興趣點,因而一種能激起所有學生積極參與的教學方式對于改進教學效果有很大的幫助。在編程入門介紹課程中,教學方式往往具有多樣性,然而這些教學方式有一個共同點,就是刺激初學者使其能更加積極主動地學習。我們認為,游戲競爭的方式可以激發初學者積極參與的動力。

其次需要考慮授課內容。面向對象的程序設計涉及內容太多、太雜,分散了學生的精力和學習重點。我們根據教學經驗發現,編程初學者往往對面向對象編程語言所提出的新概念如類、對象、繼承等難以掌握。例如,如何設計一個類、對象是如何使用的、怎么區分過程式編程語言(如C)和面向對象編程語言(如Java)等問題。除了基本的概念,異常處理、I/O、網絡通信、數據庫訪問、GUI編程等都是面向對象編程語言的難點。

最后是預期的教學結果。對于編程初學者而言,具有濃厚的編程興趣和具備基本的編程技能是教學結果最大的預期。

將以上幾點融人課程設計中才是一個好的入門介紹。培養學習興趣是入門介紹中最重要的輸出。

1.3 競賽中的趣味性

編程能力的培養需要從編程理念和實際動手能力的培養兩方面出發。動手能力差是很多初學者普遍存在的問題,有時一個“;”都會令很多學生找不到問題所在,最終導致他們對編程喪失興趣。在編譯出錯后,一些學生根據英文的錯誤提示往往能定位出大部分的錯誤,這也是需要大量的實踐積累才能獲得的經驗。在這種情況下,選擇合適的上機內容并提高趣味性,對于提高學生的動手能力非常重要。很多學生學習積極性差,卻在游戲競技方面顯現出濃厚的興趣,因而將游戲引入到面向對象程序設計過程中使學習更加有趣,不失為一個促進學習的好方法。文獻中介紹了如何將游戲引入編程課程并取得了一定的成果。

2 教育編程語言的應用

教育編程語言是教育性質的程序設計語言,是與用于編寫真實環境下應用程序的編程語言不大相同的一種編程語言。理解編程概念最好的方式就是將其轉化成現實中的東西,教育性編程語言往往有很強大的可視化/圖形組件,幫助面向對象的初學者“看”到實際對象。

2.1 Karel小機器人

小機器人Karel作為一門教育編程語言被設計用來幫助面向對象編程的初學者。在編程基礎的教學中,學生需要擺脫大多數編程語言復雜的特性,學習基本的編程思想。面向對象編程語言中的語法限制很少,最大的特點是具有可拖拽的界面,操作性強。Karel的原理使其自身產生了多個變種,隨著Java的流行,新的Karel設計兼容Java及其集成開發環境(IDE) Eclipse。作為一個入門編程環境,Karel具有簡單易用的界面,能讓學生教一個機器人解決簡單的問題。

Karel生活在一個簡單的世界中(如圖1所示),這個世界是由墻壁Wall、水平和垂直的街道、Karel機器人以及蜂鳴器Beeper組成。

簡單的Karel具有4種功能/方法:①move()往前單步走;②turnLeft()Karel左轉90°;③putBeeper()在Karel所處的位置放置一個蜂鳴器;④pickBeeper()Karel將所在位置的蜂鳴器撿走。Karel的世界是由墻壁包圍起來的,Karel不能穿過墻壁,而只能在墻的周邊走動,整個世界的大小可以隨著需求而作調節。當Karel試圖穿墻或撿起不存在的蜂鳴器時,就會出現錯誤提示。

預定義的命令和語法規則定義了Karel編程語言。類似于孩童玩的樂高玩具,利用Karel編程所做的工作就是將Karel所具有的功能組合成更高級的功能并執行某些任務。

2.2 Karel在面向對象編程入門上的應用

該課程的一個重要目的是讓初學者學習和理解面向對象的概念,如繼承、多態、類、異常等,這些概念使得面向對象的編程語言區別于基于過程的編程語言,也是多數學生容易產生困惑的地方。大多數時候,該課程在入門時的授課內容常局限于利用辦公軟件PPT進行舉例講解,然而,我們發現學生對于這些概念往往是在后期的實踐中輔以實際的編程經驗才會慢慢理解。因此,我們引入Karel用以介紹面向對象的基本概念,通過游戲競爭的方式讓學生自己領悟編程基礎,對面向對象的基礎概念有初步了解,方便后續內容的介紹。在教學環節上,除了理論課教學、課內實驗、課外作業等,我們還分配12個課內學時用以入門介紹,包括面向對象基本思想、語法特性、基本概念以及方法與技術。

在引入Karel后,我們期待學生能有一定的收獲。首先,他們可以了解Java的集成開發環境Eclipse,作為主要的開發工具,Eclipse的使用不需要過多地介紹界面,真正需要的是熟練使用,因此通過使用Karel,學生可以在實踐中慢慢地熟悉Eclipse;其次,在Karel編程中,學生可以學習基本的編程語言規則,如循環語句、判斷語句、函數/方法等,另外,由于良好的可視化界面,學生可以通過Karel理解面向對象編程語言中的基本概念,如類、對象、繼承等;最后,解決問題的能力是最重要的收獲,通過簡單的語法和界面,學生可以學習從宏觀的角度利用編程語言解決問題,完成任務。

2.3 基于Karel的程序設計實踐

在學習了Eclipse和Karel的基本概念以后,我們設計了4個階段的程序設計實踐環節,通過循序漸進的方式讓學生了解、掌握并精通Karel的程序設計方法。基于Karel的程序設計實踐要求學生以小組形式完成,這一方面有助于減少初學者的畏懼心理,另一方面可以增加團隊合作和競爭的趣味性。

1)基礎版。

基礎版的程序設計中,我們首先要求每個小組設計一個10×10大小的迷宮,Karel初始狀態在左下角;然后每個小組在自己設計的迷宮上,利用Karel基本的方法如move()、turnLeft()等編寫程序,使得Karel走到迷宮右上角,學生可以有半小時的練習時間;接著,各個小組之間交換迷宮,使得每個小組都是在其他組的迷宮上完成任務。此次競賽的獲勝標準是時間,哪組最快地完成任務將獲勝。由于時間是決勝關鍵,因此團隊間需要分工合作,有人負責將其他組的迷宮畫出來、有人可以將路線通過編程語言表述出來、有人負責驗證等。

基礎版程序設計實踐的內容比較簡單,初學者只需要會運用Karel的基本函數,是否有編程基礎對結果的影響不是很大。此競賽容易調動初學者的興趣,不會令初學者在開始的時候被一堆概念所嚇倒。

2)提升版。

提升版的程序設計實踐是基礎版的升級。我們設定所有組在同一個迷宮上以最少的代碼完成任務的組將贏得競賽,這需要學生在編程過程中思考,學習運用循環結構和方法的概念。舉例來說(如圖2所示),基本的Karel沒有提供右轉的方法,我們可以通過3個左轉完成一個右轉;通過Karel提供的單步走move(),我們可以設計多步走的函數moveSteps()。

提升版的程序設計實踐需要學生開始思考,通過自己設計方法了解方法( method)的定義、方法之間的調用關系等,此處漸漸引入了編程的基礎概念。

3)高級版。

在基礎版和提升版程序設計實踐的基礎上,我們還設計了一個提高版的問題。Karel中除了簡單版的Karel類,還有一個SuperKarel類,該類中包含的功能更多,如可以判斷前方是否有阻礙frontIsClear()等。學生可以在課后考慮利用SuperKarel類設計一段適用于所有迷宮場景的代碼,這個思考題需要學生學習算法的概念。算法也是編程語言中需要學習的一個重要概念,通過此題,學生可以理解算法在解決問題中的作用。

再深入地,我們借由Karel可以引入面向對象編程語言的一些基本概念如類。機器人Karel就是一個類,這個類集合了所有Karel對象的共同行為和狀態屬性;SuperKarel也是一個類,這個類繼承了Karel類的所有功能,但同時還具有Karel類所沒有的功能;我們自己設計的類也繼承了Karel類。一個類的實例即對象可以通過它在空間中的位置、面向的方向、所擁有蜂鳴器的個數等一些特性指定;對象也具有行為,即它在世界中響應來自其他對象的命令的方法,每個小組設計的迷宮中的Karel機器人就是一個對象。

3 教學效果

為了了解學生對于在面向對象程序設計課程中引入教育編程語言Karel的反應和教學效果,我們設計了一份問卷調查并進行總結整理。參與調查問卷的為學習該課程的學生,有效的問卷為58份。其中,63.8%為男性,36.2%為女性;曾經學習過一門編程語言的占67.2%;100%的參與者認為在課程中引入競賽機制使用Karel比較有意思。問卷調查統計后部分結果如圖3所示,其中支持Karel用于教學的支持度(10%~30%、30%-60%、60%-90%、>90%)的比例如圖3 (a),支持度在90%以上的占調查人群的65.40%;在教學中引入Karel之后,學生的興趣顯著提高(圖3(b)),興趣大增的占調查人群的52.80%。

另外,我們分析了編程基礎與引入Karel后編程興趣提高之間的關系,以及參與者編程基礎對于Karel的支持程度的影響。從圖3(c)和3(d)可知,沒有編程基礎的參與者在引入Karel后編程興趣明顯提高,有編程基礎的有5.4%的參與者認為Karel沒有提高他們的編程興趣,其余的人則認為有提高;在對Karel的支持度方面,同樣也是沒有基礎的參與者給予的支持力度比有基礎的參與者高。從兩個結果可知,Karel對于入門級編程者的作用更大一點。

在引入Karel后,40%的學生對Java的集成開發環境(IDE)工具Eclipse有了更深一步的了解,26.7%的參與者認為自己對Java語言的語法規范有了更深的認識,22.7%的人了解了Java原理。對于面向對象程序設計中的基本概念如類、對象、方法、繼承性、多態性等,70.7%的參與者有模糊、基礎的認識,20.7%的人則認為非常了解。通過這些數據和分析,我們發現Karel在面向對象程序設計課程中對于提高學生學習興趣和教學效果有積極的作用。

4 相關討論

面向對象的基礎概念(如對象實例化、方法調用、繼承等)在課程中出現的時機往往很難把握。過早地介紹概念,學生沒有足夠的時間消化,過晚地介紹使得很多其他的概念得不到很好地解釋,因此在整個課程教學中,教師往往需要不停地講解這些概念。學生雖然可能熟知名詞,但是不一定能真正理解面向對象的設計理念。

我們在授課過程中發現給編程初學者進行入門介紹非常關鍵。如果入門介紹過多地關注理論概念,學生的接受程度不是很高;而啟發式或案例式的教學方式需要合適的案例供學生進行討論和分析,為入門級概念選取合適的案例具有一定挑戰性。目前,也有用教育編程軟件為初學編程者提供入門級介紹。教育編程軟件Karel在斯坦福大學計算機一年級課程CSI上的成功應用給了我們啟發,我們在面向對象的程序設計課程中引入Java版的Karel。由于用Karel編程降低了編程初學者所面臨的復雜細節,提供了對象的設計方法以及可視化的界面,因而可以降低初學者在入門初期的學習難度。在授課過程中,采用競賽的方式介紹理論知識還比較少見,我們認為競爭意識和游戲會給學生帶來激情和創造力,也能吸引學生注意力。通過問卷調查,學生對課程中引入Karel的支持度也得到了證實。在后期的工作中,我們將在課程中完善基于Karel的程序設計實踐部分,不止是單純的迷宮找路線游戲,還會將引入Karel之后的學生成績進行分析,通過統計分析更確鑿地驗證課程中引入Karel后的實質作用。

5 結語

在面向對象的程序設計這門課程中,面向對象的基礎(如類、對象、繼承等)和傳統過程式編程基礎(如循環、迭代、選擇等)給教師和學生都帶來了挑戰。我們介紹了在課程入門階段引入教育編程軟件Karel,通過問卷調查的方式對其在編程初學者接納編程語言時的作用進行了統計分析,結果證明Karel給教師和學生都帶來了學習編程的快樂,使學生更容易理解編程語言的設計理念,提高了編程初學者對編程的興趣,取得了一定的教學效果。

主站蜘蛛池模板: 日本亚洲最大的色成网站www| 欧美在线天堂| 久久一色本道亚洲| 日韩国产欧美精品在线| 中文字幕在线日韩91| 久久国产免费观看| 538国产在线| 韩日免费小视频| 欧美日韩第三页| 九九久久精品国产av片囯产区| 欧美午夜小视频| 亚洲午夜国产片在线观看| 日韩视频免费| 狼友视频一区二区三区| 中文字幕日韩久久综合影院| 亚洲成A人V欧美综合| 国产香蕉在线视频| 福利在线不卡| 国产欧美日韩在线在线不卡视频| 久久96热在精品国产高清| 国产永久无码观看在线| 国产乱人乱偷精品视频a人人澡| 亚洲国产系列| 99精品福利视频| 亚洲中文久久精品无玛| 国产97色在线| 国产精品丝袜在线| 色综合久久久久8天国| 国产精品女人呻吟在线观看| 亚洲国语自产一区第二页| 另类欧美日韩| 一个色综合久久| 91伊人国产| 久草性视频| 国产成人一区在线播放| 国产精品无码AV片在线观看播放| 日本a级免费| 成年看免费观看视频拍拍| 国产美女无遮挡免费视频网站| 久久无码av三级| 亚洲自拍另类| 久久中文字幕不卡一二区| 欧美在线黄| 日韩毛片在线视频| 欧美精品黑人粗大| 久久国产精品麻豆系列| 色噜噜在线观看| 亚洲Av综合日韩精品久久久| 一级一级一片免费| 为你提供最新久久精品久久综合| 一级毛片高清| 亚洲一本大道在线| 久久a毛片| 无码aaa视频| 蜜臀av性久久久久蜜臀aⅴ麻豆| 免费一级无码在线网站 | 92精品国产自产在线观看| 成人国产三级在线播放| 亚洲大学生视频在线播放| 久久久久久国产精品mv| 成人午夜亚洲影视在线观看| 免费一看一级毛片| 中国一级特黄大片在线观看| 精品亚洲欧美中文字幕在线看| 欧美不卡视频一区发布| 欧美yw精品日本国产精品| 精品日韩亚洲欧美高清a| 91色老久久精品偷偷蜜臀| 高清国产va日韩亚洲免费午夜电影| 国产免费人成视频网| 久久特级毛片| 国产美女人喷水在线观看| av手机版在线播放| 91麻豆国产视频| 久久精品这里只有精99品| 伊人婷婷色香五月综合缴缴情| 国产女同自拍视频| 69国产精品视频免费| 国产精品爽爽va在线无码观看| 色悠久久久| 久久 午夜福利 张柏芝| 亚洲一区毛片|