摘要:由于編譯原理課程理論性強、抽象度高、算法體系復雜等特點,難以取得良好的教學效果。本文基于VS2010的C#設計實現了一個編譯算法動態演示系統,對該課程中的大量算法的實現過程進行了形象、直觀的動態演示,使學生在有限的教學時間里掌握更多的知識,具有提高教學效果、擴大教學范圍和延伸教師功能的作用。
關鍵詞:編譯原理;算法;動態演示;C#
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2013)43-0157-02
《編譯原理》是計算機專業的一門重要專業基礎課。課程涉及形式語言、有窮自動機等抽象內容,從詞法分析直到代碼生成的各個階段中包含了大量復雜抽象的算法。所以該課程本身邏輯性、理論性和實踐性強,學生普遍存在畏難情緒,教學效果不理想。作為授課教師,如何使這門課教學的效果得到改觀,是一個需要研究的課題。近年來,CAI(計算機輔助教學)日益成為教育領域中的主要手段,而我院《編譯原理》課程輔助教學系統僅僅是利用PowerPoint制作的幻燈片。所以,計算機輔助教學在該課程中的應用還非常不足。為此,我們設計了該算法動態演示系統。學生通過該系統能清楚地觀察算法的步驟、動作及關聯的數據。因其具有形象、直觀等特點可以將教師從煩瑣的推導和講解中解脫出來,使學生在有限的教學時間里理解和掌握更多的知識,使教學突破了空間和時間的限制,具有提高教學效果、擴大教學范圍和延伸教師功能的作用。
一、系統設計原則
設計本演示系統時遵循以下設計原則:
1.正確性原則。本系統作為一種教學資源,不能出現科學性錯誤,絕對不能把錯誤的概念和理論傳授給學生。所以我們將正確性作為第一設計原則。
2.輔助性原則。引進CAI技術,利用動態的教學演示系統能充分刺激感官,吸引注意力,有利于激發學生的學習興趣和主動性的發揮,從而有效地突破教學重點、難點。但筆者始終認為計算機只能起到輔助教學的作用,它絕對不能取代教師的作用。因此,在設計系統過程中應按照教學過程的普遍規律,堅持教師的主體地位。
3.適用性原則。系統的制作必須從教學實際出發,按照教學的要求提取出重點和難點內容,考慮這些內容是否適合用計算機進行輔助教學。一味地追求使用輔助教學系統,會導致輔助系統成為教學的干擾因素。
二、系統的總體結構和功能
編譯程序一般包括詞法分析、語法分析、語義分析、中間代碼生成、代碼優化、目標代碼生成六個階段,除此之外,還有表格管理和出錯處理程序。由于本系統的開發依托于校級教改項目,最終受益于教師的課堂教學和學生的課下自主學習,所以結合課程所使用教材,按教材章節劃分模塊。主界面中的每章標題都為超鏈接,點擊后可進入各章界面。每章界面風格保持一致性原則,左側為導航鏈接,右側為演示區,在演示系統構造過程中,我們注意了系統的簡約性。本系統的畫面布局突出主體對象,演示算法所涉及的圖表也都盡量簡約化。同時,同一畫面色彩數量也不多。在系統中我們大量減少了文字數量,過多的文字閱讀不但容易使人疲勞,而且還會干擾學生對系統中知識的感知學習。
三、系統的設計與實現
語法分析是編譯程序的核心部分。在編譯原理中語法分析包括多種分析方法,其中LR分析法適用范圍廣但又難于理解,所以本節以LR分析法為例來說明系統的設計思路及過程。LR分析法根據現行輸入符號和分析棧頂的狀態來查看分析表,并根據分析表元素的指示動作采取相應的分析動作,包括移進、歸約、接受、報錯四類,每一類動作涉及的操作各不相同,其中以歸約動作最復雜,涉及產生式、棧頂若干符號和狀態的出棧、歸約后的符號入棧、轉移到新的狀態入棧等子動作。要想清晰演示LR語法分析方法,算法所涉及的分析動作和相關數據的動態變化過程是演示的重點。因此,必須在演示界面上顯示分析動作及文法產生式、輸入串、分析表、分析棧等數據的變化過程。為了控制演示系統的運行,應考慮各種控制按鈕。本系統通過“上一步”和“下一步”按鈕可自行控制演示步驟及過程,當演示過程結束后,需重新演示一遍時,不必關閉程序重新運行,因此設置了“重新開始”按鈕進行清屏。LR分析法演示界面如圖1所示。本動態演示系統能夠逐步演示算法從初始化到結束的每一個步驟,對于每一種動作,我們都進行了不同程度的分解,用顏色或指針等手段突出顯示算法的分析動作和關聯數據的變化情況。這些動作的分解和涉及的演示操作方法如表1所示。
根據表1所列的動作分類,在演示過程中按照對應的演示方法逐步演示,直到程序接受或者報錯為止。通過逐步演示算法的分析執行過程,學生可以清楚地觀察到LR分析算法的分析動作及相應數據的動態變化過程,從而幫助學生深刻理解LR語法分析算法。
本文利用C#語言設計實現了一個編譯算法動態演示系統。該演示系統能夠通過人機交互的方式,形象細致地展示編譯原理中幾個核心算法的基本思想、框架結構與執行步驟,使學生能夠在界面友好的條件下輕松地掌握編譯算法中的重點和難點。該動態演示系統是本院《編譯原理》課程校級教改項目的成果,在實際的應用中取得了良好的教學效果。
參考文獻:
[1]張晶,陳香凝,董德義,李鑫,趙曦.編譯原理[M].哈爾濱:哈爾濱工程大學出版社,2011.
[2]王強,馮燕.編譯原理算法的形象教學[J].計算機教育,2010,(3).
[3]諶志群,王榮波.基于Flash的編譯算法動態演示系統設計[J].計算機時代,2011,(9).
基金項目:2011年天津工業大學校級教改項目
作者簡介:趙曦(1979-),女,河北人,講師,碩士研究生,研究方向為計算機算法與理論研究。