中文物件导向语言之设计理念与实现_第1页
中文物件导向语言之设计理念与实现_第2页
中文物件导向语言之设计理念与实现_第3页
中文物件导向语言之设计理念与实现_第4页
中文物件导向语言之设计理念与实现_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文物件導向語言之設計理念與實現TheDesignandImplementationofChineseObject-OrientedLanguage張礎鴻*,黃永廣*,蘇順隆***國立雲林科技大學電子與資訊工程研究所joel@.twwongwk@.tw**國立雲林科技大學文理通識學科數學組susl@.tw在本篇論文中,我們將提出『中文物件導向描述語言(COOL:ChineseObject–OrientedLanguage)』在幾何知識表達上的應用。經由預先定義的各種幾何物件,例如:點、線段、三角形等類別型態,透過設定物件的各種屬性,將各種知識表達運用架構和語意網的方式呈現,讓學習者可以簡單的憑著對幾何物件的概念,直接透過描述語言繪製出所要的幾何圖形,達到電腦輔助學習的目的。描述語言則被轉譯成CLogo(ChineseLogo)程式碼,在本實驗室所開發的CLogo繪圖環境中將圖形繪製出來。Inthispaper,weproposetherepresentationofgeometricknowledgewiththeChineseObject-OrientedLanguage(COOL).Usingthegeometricclassdefinitionsofpoint,linesegment,triangleetc.,theattributesoftheobjectscanbeeasilysetinaCOOLprogramindeclarativewayslikethoseofframesandsemanticnets.Thishelpsuserstodrawgeometricfigureswithasimple,declarativeCOOLprograminacomputer-assistedlearningenvironment.TheCOOLprogramisinterpretedasCLogo(ChineseLogo)sourcecode,whichwillbeexecutedandvisualizedinaCLogolearningenvironment.關鍵字:幾何教育、人工智慧、程式語言、視覺化學習環境。一、引言資訊教育的重要性不斷提高,使得學生在小學時期就開始接觸電腦,學習電腦語言,但是對於非英語系國家的我們,小學生學習程式語言必須克服語言所帶來的阻礙;為此,本實驗室將Logo語言中文化成為CLogo(ChineseLogo)語言,並提供一個完全中文化的CLogo語言學習環境[2]。配合CLogo語言的學習,學生在學習幾何時,運用CLogo語言來繪製幾何圖形,但是繪製圖形時需要撰寫一大堆的CLogo程式碼,很難直接由程式中看出幾何物件的特性,因此為了培養學習興趣和幫助學生學習幾何圖形,本實驗室又發展了一套中文物件導向描述語言(COOL:ChineseObject-OrientedLanguage)[2,6,7,9]的友善學習環境,藉由COOL對幾何特性的知識表達,利用預先定義好的各種幾何物件類別型態,例如:點、線段、三角形等,讓學生將幾何知識用描述語言來敘述,建構出幾何圖形。由描述語言所建構出來的幾何物件則被轉譯成CLogo程式碼,在本實驗室所開發出來的CLogo繪圖環境中描繪出幾何圖形,學生可以立即由圖形中知道自己的幾何觀念是否正確,達到電腦輔助學習的目的。在本文中將會提出整個學習環境的介紹,COOL的特性和幾何描述語言,及如何將描述語言所建構的物件轉譯成CLogo語言。二、COOL網路繪圖學習環境在COOL網路學習環境中,學習者只要輸入COOLScript就能得到其所要的幾何圖形,也可以看到繪出這圖形的CLogo程式碼。COOL的學習環境是透過瀏覽器連接上COOL的網路學習網站,如圖1所示,學習者可在『COOLScript』區域編輯想要繪製幾何物件的COOLScript,當按下Enter鍵後,COOLScript會被傳入網站後端的COOLServer,如圖2所示,當COOLServer收到COOLScript,COOLServer會檢查使用者建構的物件是否符合幾何物件的特性,並將訊息傳回網頁的『Result』區域中,如果輸入的幾何特性並不符合則顯示條件不符,並將錯誤條件顯示出來,如果條件符合COOLServer則會將這幾何物件的CLogo程式碼傳回網頁中的『CLogo』區域中,讓使用者能看到畫出這幾何圖形的CLogo程式碼,幫助其學習CLogo語言。而『History』區域中會紀錄著過去所畫的幾何物件的COOLScript。圖1:COOL網路繪圖學習環境圖2:COOLServer

三、中文物件導向描述語言物件導向的程式改變了傳統以『程序』為思考的模式,改為以『資料』為主的設計方式。『類別』是一群具有類似或相同性質的物體的抽象描述,而『物件』則是這類別的一個具體實例。這與資料緊密結合的特性,促使我們選擇發展中文物件導向描述語言。如何把人類所認知的知識在電腦中表達出來,而能運用於解決問題,在人工智慧領域裡有許多的專家不斷的投入,也提出了許多系統結構。如Mylopoulos和Levesque[1984]曾經把知識表達基模(knowledgerepresentationscheme)分成四種不同的類型[1,2,7]:邏輯表達式(logicalrepresentation),例如:PROLOG程式語言。程序性表達式(proceduralrepresentation),例如:規則式產生器(rule-basedproductionsystem)。網路表達式(networkrepresentation),例如:語意網路(semanticnetwork)。結構性表達式(structurerepresentation),例如:LISP程式語言中的一種-CLOS(CommonLispObjectSystem)。而COOL則是屬於第四種類型,根據我們觀察幾何圖形特性的結構,歸納出類別名稱、繼承、屬性、隨機範圍、限制條件、計算公式、繪圖條件、繪圖方法等特性,我們將以直角三角形的類別定義來解釋COOL所使用特性架構:([]表特性名稱)[類別名稱]直角三角形 [繼承]三角形[屬性][隨機範圍][限制條件]角1.角度=90||角2.角度=90||角3.角度=90(角1表示此物件的屬性;“||”此符號意思為”或”)[計算公式][繪圖條件][繪圖方法][繼承]是我們可以由一個類別衍生出許多新的類別,而不需要重複為這些類別撰寫相同的程式碼,如衍生類別(DerivedClass)直角三角形可以從其父類別(ParentClass)三角形繼承所有的類別特性,如此的定義則凸顯出物件導向語言程式碼的重複使用性,類別可以快速的被建構出來。[屬性]則記錄著各種幾何物件所擁有的一些屬性,例如三角形的屬性如下:點1.座標點2.座標點3.座標邊1.長度邊2.長度邊3.長度角1.角度角2.角度角3.角度這些屬性也是構成幾何圖形的基本元素,使用者可在COOLScript設定這些屬性的值。[隨機範圍]則是將屬性的限定範圍定義出來,當系統自行隨機產生屬性的值時,會由這隨機範圍的限定中產生。[限制條件]則是定義著構成這幾何物件各屬性之間的關係,符合這些關係才能構成這物件,所以對使用者所輸入或由系統產生的各種屬性都必須符合這些限定條件才能產生這個幾何物件。在條件的判斷中會出現數值的準確值問題,我們採取其誤差不超過屬性本身數值的千分之一。[計算公式]定義著一些由屬性所構成的方程式,主要用於當使用者輸入的屬性不完全時則由系統自行計算出來,以滿足使用者所要繪製的幾何圖形,或檢查輸入條件之矛盾情形。[繪圖條件]則定義著要由CLogo程式碼繪製出來的幾何圖形需要哪些屬性,符合哪一種繪圖方法,最後則由[繪圖方法]中找到對應的CLogo程式碼而將所需要的屬性資訊帶入方法中。四、實例說明使用者現在要畫出一個直角三角形,且知道其中一角度為30度,其只要寫出以下的COOLScript就可以了。直角三角形T1T1.角1.角度=30直角三角形T1.畫當COOLServer收到這COOLScript會先載入該類別的定義,直角三角形是繼承自三角形這個類別,所以系統還會載入三角形類別的定義,然後開始自COOLScript讀入屬性的值,但是只有角1的角度。對於構成三角形所需的資訊還不足,系統會在屬性的特性範圍內隨機產生,原先我們選擇運用三角形的繪圖方法如SAS、ASA產生所需要的屬性值,但是選用這方法有一缺點是當給定如三角形ABC的角ABC和線段AC的值時,系統會根據SAS的方法產生線段AB和線段BC,結果忽略了線段AC的值,畫出來的三角形ABC中,線段AC的值並不等於原先設定的值。我們採用將所有屬性的值計算出來,然後才繪製圖形,因此在類別定義裡增加[計算公式]如下所示:角1.角度+角2.角度+角3.角度=180(1)邊1.長度*Sin(角2.角度)=邊2.長度*Sin(角1.角度)(2)邊1.長度*Sin(角3.角度)=邊3.長度*Sin(角1.角度)(3)邊2.長度*Sin(角3.角度)=邊3.長度*Sin(角2.角度)(4)[計算公式]在系統執行時會被同時載入到[限制條件]中,在[限制條件]中的所有關係式的觸發條件必須是式子中所有屬性值都存在才會被觸發檢查,並不做計算的功能。[計算公式]的式子則是在只有一個未知數時才進行計算出這個未知的屬性值,以這直角三角形為例,已知角1的角度為30度,因為直角三角形必有一角為90度,這在[限制條件]裡定義著,如下所示:角1.角度=90||角2.角度=90||角3.角度=90系統會自動選定角2或角3為90度,假設選定角2為90度,根據公式(1)則可以計算角3的度數為60度。在COOLScript裡使用者沒有設定邊長,系統會亂數產生,先產生邊1的長度,假設由亂數自動產生為20,則根據公式(2)(3)得以下式子:20*Sin90=邊2.長度*Sin30邊2.長度=4020*Sin60=邊3.長度*Sin30邊3.長度=35計算出邊2為40,邊3為35。所有屬性都決定了,系統進入產生CLogo階段,根據屬性由[繪圖條件]中選擇了所要使用的[繪圖方式]產生的CLogo程式碼如下:歸位顯示龜定方向90記錄"點2位置前進20記錄"點3位置左轉(180-60)前進40記錄"點1位置左轉(180-30)前進35左轉(180-90)藏龜這Clogo程式會被傳回給使用者的CLogo繪圖環境中繪出圖形來,也許圖形的大小不是使用者所希望的,因為未設定其餘邊長的大小,使用者如果不滿意可以再重新設定,給定的屬性的值越詳細,所產生的圖形則會越準確。五、教育應用當學生運用CLogo在繪製幾何圖形時,因為幾何圖形的一些特性,使得學生在構圖時常會需要一些複雜的計算,算出幾何圖形的一些邊長,或角度。例如學生只想要畫一個直角三角形,其斜邊長為40,且其中有一角度為30度,這在三角形的繪圖上因條件的不足無法直接繪出。但是當他運用COOLScript來繪圖時,其只要輸入以下的指令:直角三角形T1T1.直角.角度=90T1.斜邊.邊長=40T1.底角.角度=30直角三角形T1.畫這時透過COOLServer可以將其他的邊長和角度算出來,並將計算過程告訴使用者,系統會算出另一角為60度,由公式(1)計算出來,公式(2)和(3)分別可以計算出兩股長;角1.角度+角2.角度+角3.角度=180(1)邊1.長度*Sin(角2.角度)=邊2.長度*Sin(角1.角度)(2)邊1.長度*Sin(角3.角度)=邊3.長度*Sin(角1.角度)(3)由公式(1)得90+30+@角3.角度=180角3.角度=60由公式(2)得40*Sin(30)=邊2.長度*Sin(90)邊2.長度=20由公式(3)得40*Sin(60)=邊3.長度*Sin(90)邊3.長度=34.6計算出來的兩股長分別為34.6和20,有了所需要的屬性值,就可以產生類似前面例子的CLogo的程式碼,系統就可以繪製出圖形。學生在這時不但可以學習到運用CLogo語言繪製圖形,也可以學習簡單的幾何圖形。當學生在設定幾何圖形的一些屬性時,忽略或不知道幾何圖形的一些特性時,如忘記三角形的內角和是180度,給定三個角分別為65,75,50時,COOLServer就會檢查出其與三角形的內角和為180度這一條件不符,系統就會告知學生無法繪製其所要的三角形,因不符合下面的式子,角1.角度+角2.角度+角3.角度=180所以學生在看到之後,可以知道三角形的內角和是180度,學習到各種幾何圖形的一些定理,然後可以進行修正,這對於學生不再只是死背這些定理而已,而可以真正運用到實際的幾何圖形上,幫助學生更靈活的學會這些幾何圖形的一些定理,同時從一些嘗試繪圖的過程中,也增加了學習的樂趣。學生也可以藉著改變屬性的值,觀察並歸納出屬性之間的關係。例如,學生可以任意的改變三角形的三邊長度和三個角度,觀察屬性三角形.重心.頂點.距離和屬性三角形.重心.邊.距離的變化,可以從各種圖形的數據當中歸納出定理:三角形的重心到一頂點的距離等於重心到對邊中點距離的兩倍。類似上述的情形,學生可以在不同的圖形間觀察屬性之間的變化,找到定理,增加學習的樂趣和效果。[3][4]六、討論在幾何物件中,屬性與屬性之間的關係,影響著圖形的變化,如三角形的邊和角的關係中,三邊相等,也會形成三個角相等,在這我們要進一步說明要如何處理知道三邊相等而同時推理出三個角相等的邏輯關係式,在[限定條件]裡的關係式中,屬性值會彼此影響判斷的條件,如以下的條件關係式:角1.角度=角2.角度邊1.長度=邊2.長度||角2.角度=角3.角度邊2.長度=邊3.長度||角1.角度=角3.角度邊1.長度=邊3.長度||這是在等腰三角形的[限制條件]裡的關係式,由其中一組屬性值而推導出另一組屬性值,如已知等腰三角形的三邊長邊1、邊2、邊3,假設為65、65、83.6,則角1.角度=角2.角度,因此計算三邊長度時必須將角1.角度=角2.角度代入[計算公式]中和這式子如下所示,一起計算才能計算出正確的邊長出來,角1.角度+角2.角度+角3.角度=180邊1.長度*Sin(角3.角度)=邊3.長度*Sin(角1.角度)由這兩個方程式來解聯立方程式設角1和角2的角度為θ1,角3的角度為θ2,邊1的長度為S1,邊3的長度為S3,則方程式可改為2θ1+θ2=180(1)S1*Sin(θ2)=S3*Sin(θ1)(2)由(1)式得到θ2=180-2θ1(3)(3)代入(2)得S1*Sin(180-2θ1)=S3*Sin(θ1)(4)S1*Sin(2θ1)=S3*Sin(θ1)S1*2*Sin(θ1)*Cos(θ1)=S3*Sin(θ1)計算出角1的角度為50。而一般的三角形我們則採用以下的方程式計算,將這方程式加入到[計算公式],可直接計算出角1的角度,這些方程式可以幫助我們形成更符合使用者所要求的圖形。同樣的方法我們也可以計算角2和角3的角度,但是我們並不需要將每個方程式都列入,可以由其他的方式計算出來,如下列的方程式中就可算出角2、角3的值。邊1.長度*Sin(角2.角度)=邊2.長度*Sin(角1.角度)邊1.長度*Sin(角3.角度)=邊3.長度*Sin(角1.角度)[計算公式]中加入太多的方程式會有許多的重複計算情形,這會浪費許多系統執行時間,使得執行效率受到影響,所以在加入方程式時必須審慎的考量。七、結論目前的COOL,還有許多不足的地方,如各COOLScript所描述的物件還各自獨立,其中的關係還未能建立,如兩幾何物件有共用點或共用邊。這是我們要繼續努力的方向;COOL目前的發展主要是輔助學生學習幾何圖形與CLogo語言,其與一般的程式語言如C,Pascal不同,COOL主要是用作知識的表達,所以並不負責資料的處理和流程的控制;未來COOL也可以應用在其他方面,如基礎物理的力矩應用-蹺蹺板,類別定義如下:[類別名稱]蹺蹺板[繼承]力矩[屬性]物件1.重量物件2.重量物件1.距離物件2.距離力矩1力矩2[隨機範圍][限制條件]力矩1=物件1.重量*物件1.距離力矩2=物件2.重量*物件2.距離力矩1=力矩2[計算公式]所以COOL並不侷限於只應用在幾何方面;對於未來我們也期望COOL能作為語意與CLogo之間的橋樑,能將由文字敘述所描述的幾何圖形,經過語意的理解,產生相對應的COOL,再由COOL轉譯成CLogo語言,繪出文字敘述的圖形來,這是我們對於整個CLogo網路繪圖環境所期望實現的目標。參考文獻[1]Mylopoulos,J.andLevesque,H.J.Anoverviewofknowledgerepresentationlanguages.InBrodie,M.L.,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论