時間:2023-03-08 14:53:06
序論:好文章的創作是一個不斷探索和完善的過程,我們為您推薦十篇計算機程序設計語言范例,希望它們能助您一臂之力,提升您的閱讀品質,帶來更深刻的閱讀感受。
中圖分類號:G642
文獻標識碼:A
1“計算機程序設計語言”教學現狀
“計算機程序設計語言”是普通高校計算機教育的基本專業課程,在計算機領域的各個專業的課程體系中都處于核心的地位。這門課程不僅可使學生獲得基本的程序設計能力及鍛煉學生的邏輯思維能力,它還極大地影響著學生對計算機領域的興趣和理解,對引導和培養學生在計算機工程及理論方面的研究興趣起著先導性和基礎性的作用。因此,“計算機程序設計語言”的教學質量成為影響大學本科計算機教學質量和效果的一個關鍵的因素。
影響課程教學質量的主要三個因素為教學內容、教學方法和實驗設計。當前,大部分教師受傳統教學模式的影響,教學的重點都放在程序語言的基本語法的講授,課堂所設計的程序實例大部分圍繞語法規則的演示和說明,這種模式同樣也影響到實驗環節的設計。這種就事論事,形而上學的教學模式具有許多明顯的弊端,主要體現在以下幾方面:
(1) 不利于培養學生的學習興趣
許多從事程序設計語言教學的教師(包括筆者)都有這樣的感受:每講授一門新的程序設計語言課,初期學生都抱著積極,對獲取知識的極大熱情投入課程的學習,但隨著教學過程的深入,這種熱情往往不能持久。導致這種局面的原因固然有教師本身的教學方法和教學手段的缺陷,但根本原因還是教學內容的設置不科學。在單純以講授語法規則這種教學模式下,學生難以保持長久的學習興趣和動力。
(2) 不利于學生建立綜合化,系統化的知識體系
程序設計語言是表達設計者思想和計算機計算邏輯的符號系統,具有多層面、多視角的內涵。要把學生培養為具有高素質的程序設計人員,僅僅熟悉沒有精神的符號及符號規則遠遠不夠,這需要學生具備設計高質量程序的綜合化的知識體系,而當前的程序設計語言的教學現狀并不能滿足這種需求。
(3) 不利于培養學生解決實際問題的綜合能力及創新意識和思想
當前,素質教育成為各級教育系統,包括高等院校所關注的熱點,知識高等院校所關注的“素質”內涵不同。筆者認為高校大學畢業生應具備的素質包括:綜合化、系統化的專業知識體系;應有已有的知識體系解決實際問題的能力;具有創新的意識和思想。總體而言,大部分教師對程序設計語言課程所采取的教學不利于這種素質的培養。
針對這種現狀,結合我國高等教育發展的現狀,本文提出程序設計語言的層次化教學目標的思想,并以面向對象程序語言為例,論述在層次化教學目標驅動下的課程設計。
2層次化的教學目標
各項教學活動有效展開的基本條件是合理的教學目標的確定,但單一的教學目標并不能適用當前中國復雜的高等教育現狀。社會經濟的快速發展產生了明顯的多類型、層次化的人才需求,這種趨勢在各類軟件公司里表現得尤其明顯。為了適用這種人才需求的轉變,高等教育領域在這些年相應地發生了巨大的變化,各種類型、各種不同層次的教育機構大量出現,改變了過去高等教育機構單純負責培養具有從事復雜腦力勞動的高級專業人才的狀況。這些變化最終體現為教師的工作,體現為教師針對不同的教學對象所制定的教學目標體系。
當前,由于社會信息化的發展,各類計算機類課程已經滲透到各個學科,例如筆者所在的蘇州大學,幾乎所有的院系都設置了信息技術類的有關課程,大約超過一半的院系設置了“計算機程序設計語言”的課程,因此“計算機語言設計課程”的教學質量是總體教學質量評估的重要組成部分。筆者多年來一直在蘇州大學承擔程序設計語言的課程,包括一類本科計算機專業基礎課程、二類本科專業基礎課和公共基礎課程。大量的教學實踐表明單一的教學目標不能適用多樣化的教學對象、多樣化的人才需求和程序設計語言知識邏輯在廣度和深度方面所具有的層次化的特點。下面將論述程序設計語言課程的層次化的教學目標體系及各層的具體內涵。
2.1低級目標
該目標要求掌握標準化的程序語言語法體系,以學生掌握基本的標準語法體系為基本要求,并能初步應用語言開發較小型的簡單應用程序,具備初步的程序設計能力。低級目標要使得學生對所學知識“知其然”,課程教學內容主要圍繞標準的語法規則,課堂和實驗環節所選定的程序實例大多圍繞著驗證和演示語法規則及語法規則之間的聯系進行設計。在以低級目標驅動的教學中,因為重在基本知識的傳授,因此核心教學內容的選擇是第一位的要素。當然每門程序設計語言課程都有其固有的核心內容,例如,在C++語言中,核心的教學內容為:面向對象的概念、繼承、多態、模板及異常等,即使如此,還需要根據教學對象,對教學內容和授課方式進行選擇和取舍。總的原則是圍繞重點概念和知識采取“精講多練”和“突出重點”的方式進行教學。
2.2中級目標
中級目標則要要求學生圍繞目標程序設計語言,具備系統化的程序設計方法和技巧,逐漸使學生“知其所以然”。該層目標不僅要讓學生掌握“語法”,還要讓學生掌握“語義”;不僅讓學生掌握語言本身,還要讓學生擴展思維,了解、理解更多的外延的知識;不僅要讓學生掌握基本的程序設計方法,要讓學生初步掌握系統化的程序設計方法和建立起程序質量的觀點。程序設計語言的外延知識涉及計算機專業許多重要的核心課程,包括編譯原理、算法分析與設計、計算機組成與結構、離散數學、數據結構和軟件工程等。當然,不可能指望通過一門課程的學習,使學生有效地、完整地掌握所有這些知識,只能使與實現中級目標有緊密聯系的知識能滲入到重點的知識講授和實驗的安排中。
2.3高級目標
不管是初級目標的“知其然”,還是中級目標的“知其所以然”,都是知識學習,而高級目標階段的重點是運用知識,體驗知識,要求學生具備利用目標程序設計語言解決一定復雜度和規模的實際問題的能力,建立抽象的程序設計思想、方法和質量的觀點。高級目標的教學內容的重點在如何在所講授的語言框架里解決一定規模的應用問題,并從具體的實現里提煉出抽象的設計思想,分析實現的質量,總結好的實現方法和設計思想。
確立了教學目標,下一步的焦點為圍繞實現具體的教學目標,制定各教學環節的具體的教學內容和教學手段,主要包括課堂教學環節和上機實踐環節。結合筆者的教學實踐,下一節將圍繞這方面的內容展開論述。
3層次化的目標引導的課程設計
C++語言因其強大的功能及廣泛的實用性而日益成為當前高校理工類專業程序設計的主流教學語言,因此本節將以C++為例,討論層次化教學目標思想如何在教學實踐中得到貫徹。C++程序設計語言的教學涉及課堂教學和實踐教學兩個環節,下面將就這兩方面展開論述。
3.1課堂教學
確定目標課程的教學內容是開展有效的課堂教學,取得既定的教學目標的前提和基本要求。針對本文所提出的層次化的教學目標體系的基本內涵,C++程序語言的課堂教學內容在深度和廣度上也應該展現出層次化,遞進性的特點。
在低級目標中,掌握本程序語言的基本語法體系是最重要的目標,在教學內容的設計上,應確定語言的最核心最重要的語法現象。過程化程序設計向對象化程序設計是C++語言的最重要的特征,因此“對象”和“類”,以及由此產生的“繼承”,“封裝”,“多態”和“異常” 成為最核心的教學內容。在教學時應集中注意力于這些類對象的關鍵個性技術,圍繞關鍵技術“精講多練”,使學生深刻理解面向對象C++的這些關鍵技術;要有重點,不能面面俱到,有所失,才能有所得。
低級目標是為了使學生掌握知識,使其“知其然”,那么中級目標則要逐漸使受教育者“知其所以然”,教學的重點從對語法的訓練轉向對語義的理解,包括靜態結構語義和程序執行語義。在C++的教學中,以C++對象模型作為教學內容的重點,通過從靜態的程序代碼結構和運行的程序狀態兩方面展開課堂教學,這樣在知識語言的“所以然”的基礎上,學生不僅知道什么是“多態”,并且知識“多態”是怎么實現的;什么是運行時類型檢查(RTTI),運行時類型檢查能提供什么程序設計策略等;許多的外延知識能沿課堂展開,例如編譯原理、算法分析與設計等。由Stanley B. Lippman所著的《Inside The C++ Object Model》為我們設計課程材料提供了方向性的指導。
低級目標和中級目標都是針對知識的學習,而高級目標則針對知識運用,提高運用知識進行設計的能力。此層次涉及知識的學習、理解和綜合運用,要在有限的時間內,實現教學目標,在課程教學內容的選取和設計及課時的安排上,具有一定的難度,對教者和學者都具有一定的挑戰性。“設計模式”可以成為本層次的基本或延展性的教學內容。設計模式雖然不與具體的設計語言有著必然的、密切的聯系,但事實上各種技術性、或純教學性的書籍中,都把面向對象語言作為實現各種設計思想的不二選擇。通過設計模式內容的講授,可以使得學生對面向對象的基礎知識有更深刻的理解,同時增強靈活運用所學知識的能力,體驗面向對象程序設計方法學所帶來的設計上的“美”,激發學生的創造力。
當然,上面針對課堂教學內容的論述僅僅進行了基本的界定和論述,需要通過下面幾方面來貫徹實施,以達到各個層次的教學目標:
(1) 通過教者的努力,設計出豐富的、具體的課程素材;
(2) 針對不同的教學內容,設計多樣化的教學手段和方法;
(3) 針對不同的教學內容布置合理的作業和考核方法。
3.2實踐教學
在程序設計語言的教學中,課堂教學和上機實踐教學是并重的環節,不可偏廢,一起決定著教學的質量和教學目標的取得。如何設計安排上機環節通過大量的教學實踐,已經總結出了大量的行之有效的方法。下文就實驗內容及實驗的組織形式進行一些必要的、有益的討論。
結合課堂內容,以往的實踐環節主要由學生編制一些小的程序,進行語法現象的演示及驗證。但筆者通過大量的教學實踐發現:這種普遍采用的,且行之有效的方法,對于學生鞏固知識,提高調試程序的能力和技巧具有顯著的效果。但隨著教學的深入,這種方法也顯示出種種的弊端,例如:學生專著于知識點,必然缺乏對知識的整體把握;學生容不易形成良好的編程習慣等。針對這種情況,筆者在實踐的環節中,增加“讀程序”的分量。教師提供一些高質量的程序范例讓學生進行閱讀、理解,并對范例的程序風格和設計方法進行總結比較,以提高學者的綜合能力,尤其是到了后期,所提供的范例更具有綜合性、全面性和示范性,能極大地提高學生掌握知識的深度和廣度,激發他們的學習熱情。
在實踐人員的組織形式上,一般在程序設計語言的教學中,都是學生獨立進行的。在教學實踐中,也可引進一些軟件開發中的方法,比如采用小組制的形式,根據實踐內容的不同,小組或大或小。即使是在低層目標為導向的教學中,也可采用小組的方法進行實踐環節的教學,不過此時小組人數不宜過多,最佳數目為二人。采用這樣的方法,有以下的益處:
(1) 便于學生進行交流,以達到取長補短的目的;
(2) 提高教學效率,以較少教學活動取得同樣甚至更好的效果;
(3) 培養團隊合作精神等。
在以中級和高級目標為導向的教學中,實踐環節應從語法演示和驗證為重點轉變為以知識的理解和知識的運用為重點,因此除了結合教學內容設計相應的實踐內容外,最顯著的特點是增加綜合性的項目開發環節,以達到知識的綜合掌握和運用。
當前以語法的演示和驗證目的實踐環節的設計具有大量的教學實踐可資借鑒和學習,但針對更高兩層教學目標的實踐環節則缺乏有效的素材和經驗可以利用,需要通過進一步的教學實踐活動加以積累和總結。當前的一些做法是借用開發一個具有一定規模的項目來彌補純語法的演示和驗證實踐方法的不足。
4結論
本文針對當前在程序設計語言的教學中存在的問題,提出了多層次教學目標的觀念,并介紹了各層次目標的具體內容和以此目標為導向的主要的教學環節的設計。各個層次的教學內容和教學方法手段并不是彼此割裂的,如何針對各種不同的教學對象進行合理的課程設計,以提高教學質量有待于進一步的大量的教學實踐活動。下一步最主要的工作總結探索各種教學資源以及相應的考核方法,尤其是用于中級目標和高級目標為導向的教學活動。
參考文獻:
[1] 吳乃陵. 面向對象C++程序設計教學改革[J]. 電氣電子教學學報,2003,25(2):9-11.
[2] 徐宏,聶影,黃征華,等. 計算機程序設計語言的教學探索[J]. 教學研究,2004(2):89-93.
[3] 沈軍. 程序設計語言類課程的教學思路研究[J]. 高等工程教育研究,2001(1):80-82.
[4] Stanley B. Lippman. Inside The C++ Object Model [M]. Addison-Wesley Publisher, 1996.
[5] Erich Gamma, Richard Helm, Ralph Johnson ,et al. Design Pattern: Elements of Reusable Object Oriented Software [M]. Addison-Wesley Publisher,1995.
Research on Teaching of Programming Language
CHEN Dong-huo,YAO Wang-shu
Teaching Main Point Analysis of Computer Programming Language Courses
Li Yongliang
(Shandong Transport Vocational College,Weifang261206,China)
Abstract:In computer science and computer non-computer major teaching,almost all schools set up high-level language programming course.Programming language teaching although it is difficult,but very meaningful,it is beneficial to develop creative thinking,help students develop problem-solving through computer awareness and ways.
Keywords:Programming language;Programming skills;Analysis
main points
在教學中與一些應用軟件或工具軟件相比,編程課程的教學具有較大的靈活性。很多學生的學習能力較差,課后不肯花時間,久而久之,導致聽不懂,給計算機編程語言課的教學帶來一定的難度。采用何種教學模式進行教學就成為編程
語言教學的一個關鍵。
一、引言
根據以往的教學經驗和通過與學生、同事之間的交流,得知部分學生反映上課時都能聽懂講解,可在涉及到具體的編程及上機操作時,往往會出現沒有思路、無從下手或錯誤百出,不會調試程序等各種情況,究其原因,在教學方面可能存在以下2個問題。
(一)過于注重對語句語法的講解,缺乏以算法為核心的編程題教學。教師鐘情于舉一反三地對使用語句、語法的深入教學,而不是有機地結合算法思想進行教學,貼近生活并引起學生興趣的編程題講得很少。由于教學不是站在如何應用計算機工具編程解決實際問題或實際項目的角度,就沒有把邏輯與編程解題思路放在主體地位,也就沒有很好講解如何分析問題和解決問題。結果導致學生程序設計能力、上機解題能力訓練不夠,更談不上引導學生進行課題研究和科研探索。
(二)學生厭倦傳統的課堂教學,缺乏師生之間的溝通交流學生對于先講后編、先聽后編這一傳統的課堂教學方式有厭倦心理。課堂成了教師的“一言堂”,教與學不能銜接起來。有時教師為了趕進度,講授法成了唯一的教學方法,師生之間缺乏足夠的交流和溝通,學生沒有有效、實用的學習輔助途徑,也間接影響著學生的學習興趣和學習效果。
二、程序設計能力認識
程序是軟件的本體,程序設計(Programming)是指設計、編制、調試程序的方法和過程。它應排除軟件開發中的工程與管理因素,主要指軟件開發過程中的技術因素,尤其是計算機技術因素。
根據調查分析,合格程序員必須具有:1.扎實的專業基礎知識;2.很強的綜合分析和解決問題的能力;3.熟練的編程調試能力;4.創新能力;5.團隊合作能力;6.持續的自學能力;7.強烈的好奇心;8.較高的英語水平和軟件工程的實踐能力等。
應看到,程序設計能力,并非完全等價于程序員所應具備的專業素質,它還包括其他一些內容,如:1.理解問題,根據已知條件,找出求解該問題的數學方法或建立相應的數學模型;2.歸納程序的基本功能;3.設計數據結構和算法;4.用程序設計語言實現算法描述;5.編譯與調試;6.測試程序,保證程序正常運行。
綜上所述,可以將程序設計能力定義為:依據程序設計思想與觀念,應用程序設計語言,采用相應程序開發技術和環境,進行程序設計并達到預計結果的程度。
三、要點分析
基于對程序設計教學思想、程序設計能力的認識,為使學生充分掌握程序設計的思想和方法,有效實現程序設計課程教學目標,我認為程序設計教學還應注意并強調以下幾個基本的教學任務和要求。
(一)應著重培養學生的結構化程序設計的基本觀念。結構化程序設計的基本思想是采用“自頂向下,逐步求精”的程序設計方法和“單入口單出口”的控制結構,它是程序設計的基本原理之一。貫徹課程始終、通過具體實例潛移默化地培養這一思想,比在軟件工程中空洞的說教,更容易被學生理解和接收。
(二)為了使初學者能盡快地掌握計算機知識,進入計算機的應用領域,在課程講授過程中,要特別注意培養學生的學習興趣。學習興趣就是學生在心理上對學習活動產生愛好、追求和向往的傾向,是推動學生積極主動學習的直接動力。學習興趣直接關系到教學效果的好壞。為提高學生的學習興趣,筆者歸納出6個辦法:1.通過演示程序突出程序語言的實用性;2.通過簡單的編程練習突出語言的易學性;3.運用恰當的類比使復雜問題形象化、簡單化;4.做到一題多解;5.要善于舉一反三;6.通過解決實際問題使學生樂學。
中圖分類號:TP311.138-4 文獻標識碼:A文章編號:1007-9599(2012)05-0000-02
在我國,高職教育是高等教育中的重要組成部分,占據著相當大的比例,在高職院校的計算機專業課程中,程序設計語言教學是最為重要的教學內容之一,程序設計語言的掌握情況直接關系著計算機相關內容的后續學習情況,對學生畢業后從事計算機行業也是很重要的。
一、計算機程序設計概述
計算機程序設計是指運用某種計算機的語言,對某一特定功能程序進行編制完成的過程,它涉及到開發、描述以及有效實現求解的相關活動,是運用計算機來實現自動化的很重要手段,計算機這門學科主要是研究信息描述及變換算法的過程,包括計算機的理論、設計、分析、效率、實現及應用,可以說與算法相關的基本問題都可以圍繞著什么可以被自動化,怎么自動化,而這個實現自動化的過程即是計算機的程序設計過程。程序設計語言是人類進行計算機的最基本工具,更是學習計算機基礎應用知識最基本的課程,通過計算機程序設計語言的學習,學生能夠掌握與之相關的基本概念、方法和基本知識,從而形成良好的程序設計風格,得到基本的程序設計練習,能夠編寫簡單的程序解決實際的問題,在計算機程序設計語言教學中,需要學生具有閱讀判斷、抽象表達、工具利用、分析思考及綜合創造等技能,是抽象、理論、設計及應用等綜合能力的培養過程,因此,作為專門輸送高技能的高等職業院校來說,程序設計語言教學是計算機教學的重要內容,對培養計算機專業人才是非常重要的。
二、高職計算機程序設計語言教學現狀
在高職計算機教學中,我們經常可以看到這樣的情況,很多學生在進行計算機操作的課程時,他們的接受能力是很強的,但是在進行程序設計語言教學時,很多學生就產生了膽怯的心理,不能像學習其他學科一樣,進行充分地學習了,直到離開學校時,在這門課程上都還留有遺憾的,對于高職院校的計算機學生來說,他們具有一定的計算機理論基礎,又有較強的計算機實際操作能力,基本上是一畢業就能夠找到相應的工作,具有著明顯的競爭優勢,但這需要高職學生既要有硬件技術,又具有程序設計語言能力,這也是計算機專業學習者所必須要有的技術素質,硬件技術是計算機掌握的基礎,而程序設計語言的掌握能夠對硬件進行充分的利用,它們之間是相互關聯,不可缺少的,哪一方面的缺失都會造成計算機學科學習的不完善,在高職學生學習計算機程序設計語言時,已經學習了多年的英語,以及高等數學和計算機基礎知識的學習,他們已經具備了學習計算機程序設計語言的基本條件,要想讓高職學生克服心理問題,發揮自身的優勢,有效地掌握這門計算機程序設計語言課程,對于這門課程教師來說,是一個最為關鍵的問題,需要教師結合高職學生及這門課程的特點進行不斷地探索與思考。
三、對高職計算機程序設計語言教學方法的探索與思考
(一)任務驅動教學法
任務驅動教學是探究教學模式中的一種教學方法,要是通過學生的角度來看,它也是一種學習方法,這種教學方法又可稱為單刀直入法,其特征是:在教學中,教師的教和學生的學都在圍繞著一個共同的目標,是根據幾項任務來完成的,這種教學方法能夠培養學生的獨立分析問題的能力、自學的能力及解決問題的能力,是非常適合計算機程序設計語言教學的。像教師在講授VB語言中的簡單計算器的教學時,教師就可以單刀直入地給學生布置任務了,設計一個和WindowsXP附件中一樣的簡單計算器,可以圍繞著這個簡單的計算器再給學生進行分配任務,如計算器的界面都包括哪些控件,每個控件的功能,學生通過仔細的分析,很快就可以設計出相關的界面,并且知道每個控件的功能,之后教師還可以提出新的任務,帶小數點數據的輸入形式,又是怎么進行控制的,學生經過思考之后,可以知道通過布爾型小數點的設置標志flag對數據輸入的小數點進行保證,這樣通過幾次任務的布置,學生就能夠設計出符合相關要求的計算器了。這種方法減少高職學生的自卑心理和為難害怕的情緒,因為教師通過任務教學法,可以將計算機程序設計語言中的復雜任務分解為簡單子任務,可以讓學生完成每個簡單子任務,再組合為一個整體,從而讓學生克服自卑的心理,產生一種成就感。需要注意的問題是,首先要明確計算機程序設計語言教學中,每個階段的任務,對每個問題要精心的設計并創造相應的情景,愛因斯坦就曾說過,提出問題要比解決問題重要得多了。教師要明確地向學生提出這個課程,這個階段,單元及這個課時的基本學習任務,要讓學生帶著任務去學習和思考,在上機實踐前,教師要讓學生自己去查閱資料及研究,并在上機的過程中及時地給予幫助與指導,這樣才能起到事半功倍的效果。其次是要進行多種教學方法的教學,驅動任務教學法并不是指僅能運用這種教學方法,而是根據這種教學方法的優點,結合啟發式、雙向式、多媒體等形式進行教學,不要死板的固定于一種教學方法上,然后是在教學過程中要注意學生自學能力的培養。
(二)案例教學法
案例教學最早是被應用在醫學、法律及工商管理的教學領域中,是實踐教學的重要教學方法,這種教學法在我國教育領域應用的要稍晚些,但現在這種教學方法已被廣泛的應用到教學中,對于計算機程序設計語言教學是很實用的一種教學方法,在教學中,教師可以通過小型應用程序的描述,引導學生對這個程序進行討論,并在這個討論中掌握計算機程序設計的語法知識、編程思想及編程技巧的教學方法,這種教學方法可以使教師和學生擁有更多的交流空間,充分地體現教學中的要踢人為本的教學。像在教Java程序設計語言教學中的GUI的程序設計時,由于Java前期的學習中是不帶界面的基本語言知識的學習,在進行GUI教學時,選擇帶有界面的應用程序是很重要的,選擇適當的案例進行教學,可以讓學生在應用程序中,既可以了解到基本控件和高級控件的編程、循環及分支等,還實現排序算法,這樣既學習了GUI編程又重新復習了Java的語法知識,從而起到了良好的教學效果。這種教學方法的優點是通過案例對計算機程序進行描述,在這中間會遇到一個或多個的問題,而同時它又包含了基本的解決方法,能夠有效的培養學生的實際解決問題的能力和創造的能力,不僅可以習得固定的原理、基本語法知識,還能掌握獲得知識的方法,實際上這是種做中學的教學方法。這種教學方法中所要注意的是,在進行案例教學時,要考慮案例的現實性、高職學生的自身特點以及他們已掌握知識的情況等,還要注意案例的熟悉度、理解及掌握程度,同時還要考慮到案例所展現的未來性,這對于高職計算機學生的今后學習具有很大的指導意義。
總結:
在高職計算機程序設計語言教學中,教師要結合學生的實際情況,運用多種教學方法進行教學,沒有必要固定在一種教學方法上,并不是說某種教學方法有很多優點,就僅用一種教學方法進行教學,這是不可取的,而且無論運用哪種教學都要發揮學生的主體性,激發學生學習計算機程序設計語言的興趣為主。
參考文獻:
所謂適當的“任務”,是建立在對學生的了解之上的,讓學生通過適當的努力能較好地完成,在完成任務的過程中,學會學習。在職業中學教學中,程序語言設計相對較難,對學生的思維訓練也是多方面的,相對于其他學科也有其獨特之處。如果采用傳統的教學方法,簡單地按照從易到難,從簡單到復雜的順序循序漸進地進行教學,學生處在被動的學習狀態中,容易感到厭倦。采用任務驅動教學法,有利于培養學生自主學習、合作精神和探究能力,有利于培養學生的信息素養和綜合素質。
根據學生的現狀,本人把任務設計成幾個有一定聯系的幾個任務。按進度分別提出:請你給學生編寫一個加法練習程序;請你給學生編寫一個加法練習程序,正確的顯示“OK”,錯誤的顯示“wrong”;請你給學生編寫一個加法練習程序,每套10道題,每題正確的加10分,錯誤的不給分,并計算總分等。
當第一個任務提出時,學生都覺得很簡單,但無從下手。本人圍繞這個問題先開辟“有意義接受學習空間”,進行必要的教學,學生的學習也顯得特別認真。
二、運用任務驅動教學法于程序設計語言教學,在形式上是:提出任務師生共同分析完成任務的方法和步驟適當講解或自學或協作學習完成任務實踐交流或歸納。
在程序設計語言教學中,傳統的教學形式是:語句格式功能介紹舉例解釋鞏固型獨立練習小結評講上機練習。在這個過程中,學生的學習基本上是被動的。采用任務驅動教學法,在課堂教學中,首先提出一個需要完成的具體任務,與學生共同分析解決該問題所需的知識,方法和步驟,有時先開辟有意義接受學習空間,圍繞具體任務進行適量的概念教學和舉例講解,或開辟自主學習空間以及協作學習空間,學生來完成任務,可以獨立完成,也可以合作完成。目的是的通過完成任務,掌握學習內容,學會學習,培養綜合能力。在這個過程中,教師參與探索和指導,引導學生掌握教學內容,適時在班級交流,發現新思路,推廣新思路,鼓勵創新。教師進行比較、評講、歸納,或由計算機執行,學生從中得出結論,引導交流,共同進步。如:在讀語句和寫語句教學時,在教學前先提出一個任務,即:“請你給學生編寫一個加法練習程序”。圍繞這個任務,討論分析需要解決的問題,程序需要提供的功能,需要通過那些途徑來實現:出題顯示要用一個寫語句;出題要一個隨機函數;回答問題要用一個讀語句;答案顯示也要一個寫語句。
然后介紹讀語句和寫語句的格式及其功能、介紹隨機函數。學生獨立閱讀課本上的例題;學生獨立或合作完成任務。教師或查看學生在電腦上的執行情況,或參與一些學生的討論或探討,發現問題,個別問題的個別回答,帶有普遍性問題的在全班回答或講解。
就在完成本任務的過程中,有的同學提出了正誤判斷問題,一次練習做多個題目等問題。由學生導引出了后續問題。
采用任務驅動教學法進行教學,教師的教和學生的學都是圍繞如何完成一個具體的任務進行的。教師教學思路清晰,學生學習目的明確,學習變成了學生的主動行為,在用的需求下學,學以致用,更容易掌握學習內容。比如在前面提到的條件語句的教學,按任務驅動教學法,不是孤立地介紹有關概念,而是將同學們所關心的正誤判別問題加以解決。這樣教學,提高學生的主動參與意識。
三、運用任務驅動教學法于程序設計語言教學,在教學內涵上是符合探究式教學模式的。
從學習者的角度說,任務驅動教學法是一種學習方法,適用于學習技能型知識,尤其適用于學習信息技術應用方面的知識和技能,也能適合程序設計語言的學習。
任務驅動教學法使學習目標十分明確。在某個學習階段,緊緊圍繞這一既定的目標,學習和運用相關的知識和方法。一個“任務”完成了,一個目標達到了,會產生新的任務,新的目標。例如,在上述第一個任務進行時,就有學生提出了新的問題。隨著一個個任務的完成,初學者將逐步消除對編程的畏懼,還不斷地體會到成功的喜悅。任務驅動教學法,符合計算機系統的層次性和實用性,提供了由表及里、逐層深入、逐步求精的學習途徑,便于學生由淺入深、循序漸進地學好有關的知識和技能;提供了三個學習空間,也鼓勵了學生的學習主動性。而且,采用這種方法,伴隨著學生的是一個跟著一個的成就感。
從教師的角度說,任務驅動教學法是一種建立在建構主義教學理論基礎上的教學方法,符合既發揮教師的主導作用,又體現學生的認知主體作用,有利于培養學生的自學能力和相對獨立地分析問題、解決問題的能力,以及探究精神、合作精神和團隊精神。在程序設計語言教學中可以采用這種教學模式。
《c語言程序設計》是計算機相關專業及其他理工科專業的基礎課,它是一門實踐性很強的計算機基礎課程。教學目標是通過課程的學習,學生不僅要掌握C語言程序設計的語言知識、編程技術和基本算法,更重要的是在實踐中逐步掌握程序設計的思想和方法,培養學生問題求解和程序語言的應用能力,為后續專業課程的學習打好基礎。
由上述的教學目標我們知道C語言程序設計這門課程中教師不僅講授C語言語法知識,還要幫助學生掌握程序設計的能力。但目前c語言程序設計課程教學中只注重知識講解,而忽略了程序設計思維的培養,導致學生只會看不會寫。鑒于此,本文提出基于“計算思維”培養程序設計能力的教學方法,并將其運用于《c語言程序設計》課程教學實踐。
1C語言教學存在的問題
對于程序設計的初學者,編寫程序包含至少兩個方面的要素:1)程序設計語言的語法知識;2)計算思維,即算法,也就是用計算機的思維把客觀世界的問題分解成計算機所能處理的步驟,并描述出來。
目前大學《c語言程序設計》教學普遍存在的關鍵問題是:重語法,輕算法,注重傳授知識,忽略程序設計思維培養。大多數教師強調C語言語法知識的講授,造成學生死記硬背C語言的語法知識,卻不會運用,導致理論與實踐相分離,使學生誤以為C語言是枯燥的理論課程,從而產生厭煩情緒,失去C語言課程學習的興趣和動力;部分教師并沒有在課堂上帶領學生一起完成程序從無到有的編寫過程,學生不能形成程序設計思維,導致學生產生這樣的疑問:“程序為什么要這樣寫?”,大部分學生處于“看得懂別人寫的程序,但自己不會寫程序”的狀態。
著名國內計算機教育專家譚浩強教授指出算法是程序的靈魂,在他所編寫的《c程序設計》一書中,“算法”這一章里用了幾種方法闡述如何描述算法,這其實包含了把客觀世界中問題的解決方法轉換成為用計算機思維解決問題這一重要思想!筆者與同行交流討論時發現,竟然有部分老師跳過“算法”這一章節,這是典型的重語法,輕算法,只注重傳授知識,而忽略程序設計思維培養。
2以計算思維培養程序設計能力教學法的運用
據筆者多年從事計算機程序設計語言教學工作經驗及教學過程中所做的調查了解到這樣一種情況:許多學生面對某個編程題,不知道如何下手,并非學生不會用所學的數理化知識解決該問題,只是不知道如何用計算機編程來解決問題。這種情況的根本原因就是學生不知道如何把解決該問題的方法轉換成計算機思維表示出來。進一步說就是沒有形成計算思維。
計算思維的含義是運用計算機科學的基礎概念進行問題求解、系統設計以及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動。其本質內容體現了抽象、約簡、規劃、關注點分離、遞歸、優化、分解等思維特征-引。顯然如果學生不明白計算思維,不理解計算機是如何解決問題的,那么他一定不會編寫程序。因此想要培養學生程序設計能力那么必須使學生養成計算思維,使用計算思維去把客觀問題的解決方法轉換成計算機所能處理的步驟(即算法)描述出來,最后再將算法轉換成程序語言代碼,即編寫出程序。
2.1通過案例驅動逐步建立計算思維
對于程序設計初學者,在開始時先通過案例讓學生逐步了解計算思維,讓學生知道計算機是怎樣來解決問題的,更具體的來說是讓學生知道計算機是通過什么樣基本步驟的組合或者重復來解決問題的,從而學生知道要讓計算機來解決問題,就要把問題分解成計算機所能處理的基本步驟,計算機通過重復執行這些基本步驟即可解決問題。通過反復的練習與加強讓學生逐步建立計算思維,掌握分析問題和用計算機的思維方式來解決問題的能力。
下面通過案例w現計算思維。
高校的C族語言教學總是按照先學C語言,再學C++的順序進行,這種學習順序隨著C++標準的不斷升級改革后變得越來越不適用。早期的C++屬于多面性語言,即可以像C一樣進行模塊化的面向過程的編程設計,也可以像Java一樣進行抽象的面向對象程序設計。那時的教學者考慮的是學生應當從較為便于理解的面向過程的編程思路入門學習C語言編程,然后在熟練了面向過程的編程方式后再從C語言延伸到C++,轉而學習面向對象的程序設計。可是隨著面向對象的程序設計在應用市場上占領了絕對的主導地位后,再讓學生從面向過程著手就等于是浪費學習時間。加上C++和C兩門語言的初級語法思想是完全一致的,開設兩門課程浪費了學時,也耽誤后續更重要的核心課程的學習。
1程序設計語言C與C++的比較
1.1C與C++的共性。一般簡要的介紹是把C++當作C的加強版,這種認知當然是錯誤的,C++語言的設計者在設計之初為了保障自家語言會受到開發者的關注,所以兼容了的C的語法,這就自然使得C++可以使用C的編程方式進行程序設計,所以也導致了很多人對這兩種語言的關系產生了錯誤的認知。同時由于C語言本身設定上的優越性,所以C++在進行自我定義的時候也沿用了C語言很多優良的性質。基礎數據結構一致,C與C++的基礎數據類型都是以變量和常量作為基本屬性劃分,類型上有字符型、整型、長整型、單精度浮點型和雙精度浮點型,不過C++額外增設了布爾型。復合型數據結構上也都同時具有數組、多維數組、結構體、枚舉類型和共同體,但是C++增設了字符串類型以替代C語言中的字符數組,功能上更加強大,也更加便捷。在語法方面,聲明、賦值、循環、選擇的結構和實現都是一致的,并且C++雖然提倡使用類和對象的概念去設計程序結構,可也同樣支持函數體結構的程序設計結構。并且C語言中函數的賦值都是間接調用,在使用C語言函數時總是會在指針上出現各種紕漏,但是C++的函數體可以使用引用參數,這就使得C++的函數體比之C的更加好用。總的說來就是,C++標準下用戶可以完全使用C語法進行編程而不會出現任何BUG,同時C++自身的優越設定和標準使得其設計能力比C要強大數倍,是目前市場上大型程序開發的首選語言。
1.2C與C++的不同。上一節介紹了C++和C的基礎語法上的區別,這些區別都是C++的作者在C的基礎之上修訂而來的結果,是為了讓C++標準下得面向過程的程序設計比之單純的C更加便捷方便。但是C++的誕生伊始,就是一門向上使用面對對象的程序設計思想的高級編程語言。它的封裝性、繼承性、多態性和對象唯一性才是C++成為強大高級語言的重要原因,這些特性都是C語言不可能擁有的。所以C能夠實現的程序,C++能夠實現并且實現的更為方便,C不能實現的程序,C++同樣可以實現。
1.3C++的特色。承接上一節,C++和C之間最大的不同,也是C++自身最值得夸耀的特性,就是面向對象程序設計思想。這種思想使得C++語言設計出來的程序,變成了類和對象的有機結合,這種結合的代碼比之面向過程的函數體架構的代碼更加易讀,共同開發起來容易上手,后續的維護者也不用費更多的腦筋去理解前人的代碼含義。而類和對象的設計思路,使得開發者合作時相互之間的工作變的更為獨立,雙方之間只需要知道對方所寫的類實現的功能和包含的數據就行。這種特性我們稱之為良好的封裝性,開發者之間不需要去知道對方的代碼是如何實現,甚至在此之上還可以保證良好的代碼健壯性。因為類的引入,更先進的作用域機制也被引入進來,類的書寫者往往會將自己類中的數據進行嚴格的作用域限定,防止其他合作者擅自去修改和使用自己類中的數據。合作者想要知道類中的數據或者使用類中的數據,只能通過類的書寫者定義的帶有檢查機制的方法才行。這樣會使得很多人合作開發的大型項目的穩定性和安全性比之用C語言開發時再上一個臺階。同時類的概念中還有一個先進的設定就是繼承性,并且由這個繼承性還延伸出了接口的概念。有了可以繼承的接口和類,那么開發者在對程序進行迭代的瀑布開發流程時,就可以很好的使用自己曾經開發的源代碼,或者借用其他項目的源代碼,因為只要學會科學的使用繼承機制,就不僅僅是節約程序員的代碼時間,也減少了程序員在回顧曾經代碼時發生的錯誤和歧義。而與繼承機制配合使用的是多態性,曾經C語言中定義的函數,其靈活度非常差,特定的函數只能滿足特定程序定義的需求,想要重用曾經的源代碼是幾乎不可能的事情。我們剛才提到的繼承機制使得C++開發者復用源代碼成為了一種習慣,但是復用時不可避免的修改問題又擺到了臺面上,多態機制順應而生了。多態機制使得類不僅可以繼承其他類,將父類的數據和方法都在本類體中自如的使用,同時還可以用本類中新的定義和代碼去覆蓋父類中的數據定義和方法。這就讓程序員變的更加自由,想用父類的數據和方法時就去繼承,但是不想全部使用時就加上多態機制去覆蓋。這樣代碼之間的重復利用率變得十分客觀,節約了大量的開發時間和開發成本。
2程序設計語言C與C++開設建議
C++課程的內容應當如下安排:第一部分,教授C++的基礎語法,讓學生可以編寫出在DOS命令行下輸入輸出的程序,了解編程的基本概念和思想。并且這時應當同時進行C和C++的雙向語法教學,為日后學生進入高年級后的方向選擇打下基礎。此部分使用半個學期最為適宜,并且此時并不灌輸學生何為面向對象何為面向過程,而主在讓學生使用基礎語法進行最基本的編程探索。第二部分,在學生有了基礎編程知識后,將數據結構的內容放入課程中去,用半學期的時間教授學生用C++實現的各類常見數據結構。并且結合實際開發項目中的代碼作為閱讀補充,讓學生明白數據結構的知識對程序開發的意義,然后將簡化后的小項目作為課堂的主要內容,用實際的代碼讓學生去理解那些枯燥的數學定理和概念。而且在實現數據結構的過程中,必然會面對一些更為高級的C++語法和概念。總的來說,用大一上的一個學期讓學生對于基礎編程有了良好的認知和深入,是十分值得和有效的。第三部分,在學生有了數據結構的基礎和C++的基本語法掌握后,應當面對一些實際的開發項目和問題。當然實際的問題還是需要老師進行簡化,其主要目的是讓學生掌握C++的高級特性和實際軟件開發的過程與思路,并且想學生傳授基礎的算法。這一部分較為困難,應當使用一個學期讓學生慢慢的掌握和熟悉。第四部分,在學生算是對C++語言和數據結構與算法都有了基礎的入門后,再進行課堂教學意義就不大了,應當再大二上學期開設一門課程設計實驗課,讓學生完成幾個難度從小到大的項目,循序漸進的掌握基本的實際開發技巧和思維。
參考文獻
[1]羅莉.計算機程序設計的多應用型開發與實現[J].產業與科技論壇,2015(14):54-55.
二、教學模式創新
為了培養面向工程應用的C++程序設計人才,在知識、能力、應用、創新等各方面全面培養大學生,本文提出“雙主互動為綱、兩個創新、兩個學習、兩個支持、四個課堂”的教學模式,使得學生能夠達到掌握理論知識和具備編程能力的工程應用水平。教學模式創新的基本框架如圖1所示。
本課題組的教學模式采用雙主互動教學為綱,即基于師生互動的教師主導學習和學生自主學習。兩個創新是指對教學內容和教學方法分別進行創新。教學內容創新是指教師對教學內容進行梳理分解,突出重點,并及時將新內容、新科研成果、新概念、新技術等內容補充進來,改善課程知識結構,以適應社會對計算機編程人才的需求。教學方法創新是指采用互動式、全方位的教學方法,進行理論與實踐相結合、教學與科研相結合、課內與課外相結合。兩個學習是指將學生分成多個小組進行討論學習、對C++的開發環境進行學習,使得學生面向學以致用的培養環境。兩個支持是指教師要采用各種手段和方法對學生的學習進行指導支持,包括面授支持、電話支持、e-mail和QQ等網絡支持。四個課堂是指理論教學課堂、上機實踐課堂、課程設計課堂和其它課余時間的課堂。
三、采用自然語言啟發式教學方法,提高學生理解能力
C++語言是一門計算機程序設計語言。C++語言教材從前到后系統性特別強,前后章節之間環環相扣,聯系緊密。由于面向對象的很多新的概念比較抽象,如果教師在教學中僅僅把教材上的語法知識照本宣科地講給學生聽,會導致下面大部分學生聽不懂,學生會很容易感到枯燥乏味和厭倦疲勞,從而產生排斥和厭學情緒。這種抵抗情緒一旦從開始就產生,則將影響后續整個學期的教學效果。由于從頭到尾都聽不懂,老師在課堂上提出的問題學生也無法進行互動,這種灌輸式的教學方法效果非常差。而教師要根據課堂實際情況,采用互動式教學方法,培養學生的主動學習能力,才能得到良好的教學效果。
1.第一次課程教學中,明確C++語言課程的重要性
目前C++語言是大多數電子、信息、計算機相關專業的非常重要的程序設計課程,也是這些大學生后續專業課學習、畢業設計、以后上研究生或參加工作進行計算機軟件和IT開發的主要編程語言,廣泛應用于軟件設計和開發中。要讓大學生有危機意識,在大學生就業如此嚴峻的情況下,學好C++語言,能夠提高大學生以后在就業競爭中的籌碼。
2.講課過程中,對C++語言中的很多概念,結合自然語言進行講解
C++語言作為一門計算機語言,它和人類的自然語言相比,既有區別,又有聯系。在講解一些關鍵概念時,采用一些淺顯的自然語言的例子,提高學生的理解能力。本文作者在講述一些關鍵概念時,將這些概念和自然語言結合進行循序漸進啟發式講解,激發學生的學習興趣,起到了非常好的效果。下面舉幾個例子。
(1)引用是C++語言中第一個新的概念。引用類似于自然語言中的別名或者綽號,是正名的別名,沒有正名就沒有別名。例如唐太宗就是李世民的引用。李世民是正名,唐太宗是別名。正名和別名屬于一個變量,共用同一片內存空間。引用主要用作函數的參數傳遞,形實結合后不會產生臨時的變量,節省了內存空間
(2)類和對象是C++語言區別于C語言中普通數據類型和變量的概念。類是具有相同屬性和行為的一組對象的集合,它為屬于這個類的所有對象提供了統一的抽象描述,其內部包括屬性和行為兩個主要部分。類和對象的關系就像模具和鑄件的關系一樣,類就相當于模具,對象就相當于鑄件。一個模具可以生產出成千上萬個鑄件。
(3)友元是C++語言中另一個新的概念。在數據共享與保護中,友元類似于自然語言中的朋友,但是友元和自然語言中的朋友既有聯系又有區別。人類的朋友關系通常是雙向的、可以傳遞的,但是C++中的友元關系是單向的、不能傳遞的。
3.引導學生合理安排課程的學習時間,培養學生的學習興趣
教師可以把學生分成若干個小組并布置一些編程作業,培養他們的團隊協作意識,并共享小組編程成果,使得他們對自己編制的程序能夠運行和產生正確的結果具有自豪感,提高學生的學習興趣。由每一個小組各自給全班同學講授和演示自己的算法、編程思路、運行結果,既能夠鍛煉學生的編程與演講能力,又能夠在課堂中產生良好的互動。
4.講課過程中盡量做到幽默風趣,靈活運用教學手段
教師在上課時,要做到風趣幽默、聲音洪亮、帶人真誠、平易近人、知識淵博、通俗易懂,才能產生良好的教學效果。教師要靈活運用多種教學手段,盡量采用多媒體教學,在PPT幻燈片中多做一些動畫效果,或者以Flas演示程序的動態運行過程。教師在C++語言教學過程中要根據課堂中學生的反應,隨機應變,結合我國傳統文化與最新國內外時事,讓學生潛移默化地學習一些難以理解的語法,則能達到事半功倍的效果。
四、對一些難以區分的概念采用表格形式進行對比和總結
C++語言是在C語言基礎上發展起來的面向對象的高級語言,全面兼容C,但是又增加了很多新的較為復雜的語法知識點。對于一些學生難以理解和掌握的語法知識點,如果教師不幫助學生及時進行總結和舉一反三,按照大學生初學的水平很難真正達到掌握和編程應用的水平。因此,教師可以在講完某些知識點后采用表格的形式進行對比和總結。例如,C++中引用和指針的區別總結表,普通指針、指向常量的指針和常指針三種指針所指向的內容和指針本身能否改變對比總結表,對基類中具有不同訪問屬性的成員經過不同方式繼承后在派生類中的訪問權限的比較和總結表,運算符重載時重載為類的成員函數和友元函數、前置、后置自增、自減運算符參數個數總結表。
五、熟悉Visual C++編程環境,具備圖形界面編程能力
目前,Visual C++ 6.0是比較經典的開發環境。即使掌握了C++基礎知識,仍然難以高效掌握使用Visual C++的編譯器。為了培養實用型軟件開發人才,教師還應該進行Visual C++編譯器的入門教學,培養學生掌握如下知識:
1.能夠使用Visual C++開發環境進行界面設計;
2.能夠創建簡單的基于MFC的應用程序;
3.能夠使用類、函數和消息映射機制;
4.能夠利用開發環境有效創建對話框、按鈕和菜單等資源。
當然,對于Visual C++的學習,一本好的教材也至關重要,現在的書店和圖書館各種Visual C++的學習教材五花八門,不泛互相抄襲、錯誤百出、誤人子弟的教材。如何從這些書籍的海洋中找到合適的入門教材,對于作為初學者的大學生來說有點難為他們。本文作者也買過不少Visual C++學習的書籍,其中不少書就沒有任何學習價值,既浪費錢,又浪費時間。作為教師,有責任和義務為學生挑選一本優秀的、很容易入門的教材。本文作者和周圍很多從事Visual C++語言開發的朋友們都認為Jon Bates主編的《實用Visual C++ 6.0教程》是一本非常不錯的教材。本人在每個學期給學生教學時,都會將這本教材的電子版發給同學們,而且從他們的反饋來說,效果確實不錯。
六、理論與實踐相結合,提高程序編程與調試能力
理論必須與實踐相結合,才能得到驗證,否則只是紙上談兵。作為一門計算機語言,C++程序設計的實踐性操作特點決定了上機實踐是課程學習中的重要環節。授之以魚,不如授之以漁。幫助學生編程序或調試程序,不如教會學生編程序或調試程序。因此,在教學中,教師可以從如下幾個方面進行考慮:
1.上課時教師提前給同學們將上機編譯器環境、各種單步調試、斷點調試的方法傳授給學生,并布置好上機操作的題目,這樣學生在上機前就會有充分的準備,做到有的放矢。
2.針對性地給學生布置一些具有趣味性的程序設計題目,讓學生通過查資料、上網和請教老師等多種方式編程調試,培養學生解決問題的能力,讓學生感到有成就感,提高學生的學習興趣。
3.對學生的上機存在的問題進行總結,對于一些普遍存在的問題要在課堂上統一進行講解。并且也要對對自己的教學方法和教學模式進行實時總結和改進,形成閉環。
按照本文作者研究的教學方法,經過一個學期的理論教學與上機實踐學習,在學期期末考試前的一個月對2010級計算機科學與技術專業1班全班52個學生劃分為13個小組布置了課程設計項目。每4人一個小組,由每個小組自己推選出1個組長、1個副組長和組員。組長負責課程設計項目的總體實施和分工,副組長協助,組員配合。課程設計的考核是每個小組交一份打印課程設計報告,包括項目題目、小組成員、程序設計結構、流程圖、源程序、實驗運行結果。每個小組推舉一名學生在講臺上進行10分鐘的PPT演講,老師和學生進行5分鐘左右的提問。考核成績是由老師根據課程設計報告、演講PPT內容、回答問題效果等項目進行打分。經過一個學期的C++理論學習和一個月的課程設計,全部小組都按時遞交了課程設計報告和進行了匯報演講,其中不少學生講的非常精彩,這對于他們也是一種不可多得的實戰鍛煉。學生普遍反映通過理論與實踐結合的學習開闊了視野,提高了工程應用能力,培養了團隊協作能力,增強了學習信心,達到了前所未有的良好效果。
七、結論
本文作者根據多年來的教學體會,提出將滿堂灌式的教學方法轉變為以學生為主體、以活躍式課堂為形式、以課程實際相結合的多模式創新教學方法,真正實現教師為主導、學生為主體的互動式高效教學創新模式。
參考文獻:
[1]鄭莉. C++語言程序設計[M].北京:清華大學出版社,2010.
[2]錢能. C++程序設計教程[M].北京:清華大學出版社,2009.
[3]譚浩強. C++面向對象程序設計[M].北京:清華大學出版社,2006.
0引言
說起我國非計算機專業編程語言教學的走向,就不得不提到我國高等學校計算機基礎教育發展的歷史。我國的計算機基礎教育始于20世紀80年代初期,從80年代初以來,高校的計算機基礎教育大致上經歷了三個發展階段:80年代是起步階段,90年代是規范階段,進入21世紀,開始了第三階段,即深化提高階段。
計算機基礎教育是指面向大學中非計算機專業學生的計算機教育,這部分學生約占全體大學生的95%以上。非計算機專業中進行計算機教育的目的是培養大批能使用計算機的人才,而不同于計算機專業的培養計劃,可以說他們是計算機應用人才,學習計算機的目的完全為了應用,計算機只是作為一種現代工具來掌握,而不能當做純理論的課程來學習。明確了這個培養目標,那就可以有的放矢。
目前各高校非計算機專業編程語言教學的現狀是:學時是有限的,學習內容是繁雜的,由此對學生產生的學習壓力不僅苦不堪言,而現實更是多數非計算機專業的學生在畢業后,對于大學期間學習的編程語言大部分是忘記,若想拾起來重新使用,也不是一件易事。如何解決非計算機專業編程語言教學和實際使用二者之間存在的矛盾這個問題,是我們每個從事高等計算機基礎教育的老師不得不思考的問題。
1非計算機專業編程語言教學的現狀
對于現存的高等院校非計算機專業編程語言教學的弊端,我們做以下幾點分析說明:
(1) 非計算機專業編程語言教學培養目標定位有誤
對于非計算機專業學生進行的編程語言教學,應與計算機專業的學生有所不同。計算機專業培養的是計算機專門人才,將來從事信息技術理論研究、科研教學、系統開發等專業性的工作,而在非計算機專業中進行編程語言教學的目的是培養大批能使用計算機的新型人才,他們需要達到的程度僅僅是使用計算機這個工具。作為高等院校非計算機專業編程語言教學計劃的制定者,對于專業和非專業要達到的目標一定要明確,否則有可能南轅北轍。
(2) 非計算機專業的編程語言教學設置好大喜功
經過作者在國內各大高校做的調查,幾乎各大高校對于非計算機專業編程語言教學一般從大學一年級就開始,陸續開有VB、C、FoxPro、SQL、C++、PB、Delphi、Java等,有的院校在高年級非計算機專業還開有計算機編程語言課程,美名其曰:多學點東西,增加就業砝碼。
誠然多學點東西是不會有什么害處,但是不知道說這個話的人有沒有想過:對于非計算機專業的學生來說,能有多少比例的學生在真正學這些開設的計算機編程語言課程,更多的恐怕是在各種考試之間疲于應付。當大家手捧畢業證書的時候,手拿四年所修的學分成績單的時候,當大家面試應聘的時候,留在大家腦海中的計算機編程語言可能屈指可數,可以炫耀的可能僅僅是修過的計算機課程的數量。
作為從事高等教育的老師,我們不能為了這些表面的假象自欺欺人。如何在有限的學時內進行優化選擇,使學生學到最需要的知識。當然不僅是指當前最需要,而且也包括今后踏上工作崗位,對于需要用到的計算機編程語言知識的時候也可以信手拈來,不用再重新學過。因此,對于非計算機專業的學生,我們應該敢于摒棄學習那些當前為了考試,今后根本用不多,僅僅是為了增加學分的計算機編程課程。
(3) 系統本身龐大,掌握的知識有限,學不能使其精
對于現存的計算機程序設計的任何一門語言,如VB、Visual Fox、SQL等,系統都是很龐大的。以一個簡單的例子,VB為例來說明,VB采用的事件驅動的編程機制,提供了動態數據交換(DDE)和對象鏈接與嵌入(OLE)等技術。在數據庫方面,VB具有很強的數據庫管理功能,不僅可以管理MS Access格式的數據庫,還能訪問其他外部數據庫,如FoxPro、Paradox等格式的數據庫。另外,VB還提供了開放式數據連接(ODBC)功能。
對于VB強大功能,我相信學過VB的用戶,都是普遍承認的,這個不需要多說,但是對于這么大的一個系統,如何能通過簡簡單單的幾個學時就能夠完全掌握呢?即使說你上課的時候多么專心地聽講,多么用功地做筆記,都是無濟于事的,非要通過系統地做上幾個項目才能掌握一二,更不要說是對于僅僅是通過教材上的幾個簡單例子學習的學生了,這幾乎是不太可能的事情。那么有沒有學習起來比較容易上手的工具了,答案是肯定的。
(4) 快速記憶,快速忘記
在高等院校里不排除有些用功的學生,學習每門功課都是用功之極,當然也不排除用功是為了在考試中拿個高分,爭取獎學金的可能性存在。一個學期,說的更多一點一年對一門語言的學習,在短時間之內掌握某一項技能之后,一旦長時間不使用,肯定會生疏,這是人類不能抗拒的生理現象。而且目前高校里的學生學習的現狀是:平時基本不看,考前拼命熬夜苦讀,這種短時間內強迫大腦記憶的東西,肯定是經不起時間的考驗的,尤其是在一個人不愿意學習這門功課的時候,這是自然規律。
假設你當時學會了VB,而且在大學畢業參加工作的時候也沒有忘記,是不是說你就能很好地做自己的事情了呢?答案也是否定的,因為你掌握的是VB,而在工作單位的PC機上或許并沒有安裝VB的運行環境,這樣是不是就為你的使用又出了一道難題。
有沒有一勞永逸的工具,只需要簡單的學習,而且不論在安裝或者未安裝VB運行環境的PC機上都能很好的完成自己想做的工作。通過作者親身實踐,本文中提倡的這個方法就可以達到這樣的功效。
(5) 支持知識產權保護
如何做才能既使用正版,又不卷入知識產權的糾紛中呢,這里我們提倡在高校中推廣,使用VBScript腳本語言在記事本環境下編程,在IE瀏覽器中運行,就可以達到這樣雙重效果。
(6) 程序交流困難
一個用戶編寫的程序如果僅僅是自己使用,這個時候程序的使用有一定的局限性,如果能夠拿出去跟別的用戶交流,就具有了更大的價值。假設有兩個用戶A和B,A在VB環境下編寫了一段程序,在自己的機器上可以正常運行,當A把這段程序拷貝到B的機器上和B交流的時候,B機器上恰好沒有安裝VB環境,此時對于二者的交流可能存在障礙。
針對上述,我國高校計算機基礎教育體制中存在的諸多問題,作者提出了一種新的思路。
對于一臺安裝了操作系統(Windows XP、Windows 2000 Professional、Windows ME、Win 98等)的PC機來說,擁有IE瀏覽器和記事本是再簡單不過的事情,作者推薦給大家的就是使用VBScript語言來完成自己想要做的工作。下面我們通過例子來做進一步的說明,以此來演示如何更好的結合二者,使之發揮作用。
在數學或工程應用中,常常存在著大量的數值計算和數值分析問題,如:復合梯形公式、復合Simpson公式、Romberg求積公式等。通過編寫簡單的程序,就可以讓計算機代替人類來做一些復雜的計算任務,在這里以數值計算中一個常見的問題來說明一下如何使用提倡的方法完成計算任務,這里以復合Simpson公式的計算為例。程序是通過輸入給定的三個初始值:a、b和n,如圖1所示。
圖1 數據輸入界面
計算設計大致上分為三個步驟:
(1) 在記事本中編寫程序代碼如下示:
圖2 程序源代碼
從上述源代碼中可以看出:第一,VBScript使用的僅僅是VB中簡單的程序設計思想的三種結構:順序、選擇和循環,不涉及復雜的結構,對于非計算機專業的用戶來說是非常容易的事情。第二,在程序開始寫了一個自定義的函數,在后面對該函數進行了調用,可以達到程序復用的作用。
(2) 將該文件保存為一個html格式的文件,如:a.html。
(3) 運行該程序只需要雙擊該文件圖標就可以在IE瀏覽器環境下運行,在指定的文本框中輸入符合計算要求的數據點擊確定就可以得到計算的結果,如圖3和圖4所示。
圖3 程序初始界面
圖4 運行結果
3小結
通過上述例子我們可以得出以下結論:
(1) 在記事本環境下,僅僅使用了一些簡單的VBScript腳本語句就可以完成復雜的數值計算任務。VBScript是介于HTML語言和Visual Basic、Java等高級語言之間的一種腳本語言,它接近于高級語言的大部分功能,但卻比高級語言簡單易學。
(2) 在運行該程序時,不像其他的程序設計語言需要經過編譯或解釋等步驟,以此來生成目標文件、連接文件以及可執行文件等,使用VBScript在記事本中編寫的程序需要做的工作僅僅是雙擊該文件名,而不會生成其他的中間文件,這樣就大大節省了系統的存儲空間。
(3) 在運行該程序時,對運行環境沒有提出特別的要求,僅僅是需要一個IE瀏覽器。這對于擁有一臺PC機的用戶是輕而易舉的事情。
(4) 當你還在費盡心思考慮程序的在多臺機器之間傳遞的時候,使用在此提倡的方法無需有這方面的顧慮。對于在任何一臺PC機上編寫的 .html文件,你可以輕松在多臺機器上拷貝和運行,而無需進行額外的路徑配置等工作。
當然,我們提倡的這種方法并不是十全十美,如:對于需要大量使用界面圖形來處理的問題,或者需要使用數據庫的問題,該方法就有所欠缺,但是該方法對于僅僅是為了自己方便,進行一些數據處理來說,是再合適不過的了。
全社會的計算機普及,為大學的非計算機編程教育創造了良好的氛圍和外部環境,使廣大非專業人員學習和使用計算機編程語言變得更加容易,如何使學有所用,使高等教育成為社會發展的推動力量,是高校非計算機專業編程教學面臨的嚴重的挑戰,這也是本文的初衷。
參考文獻
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2013)17-4064-03
C語言是一種通用的計算機程序設計語言,對于計算機專業的學生來說,它是最重要的一門基礎課程。學習C語言之后,可以為后面繼續學習其他的高級程序設計語言打下堅實的基礎。通過對C語言的學習,可以培養學生的提出問題、分析問題、解決問題的能力。在計算機專業的課程設計中,C語言程序設計是數據結構、操作系統、面向對象程序設計等多門課程的先修課程,對這些課程的教學有著直接的影響[2]。
學習C語言不止對計算機專業的學生來說重要,對非計算機專業的學生也是相當的重要。隨著社會的發展,科技的進步,用人單位對員工的要求等的越來越高,加上應屆畢業生的求職門檻越來越高,很多非計算機專業的學生也紛紛學習C語言,因為它不僅可以證明其具有一定的計算機操作的能力,如果拿到國家計算機等級考試C語言二級證書的話,還能在求職過程中,占據相當大的優勢,贏得面試官的親睞。所以大量的非計算機專業的學生學習C語言,而因為其計算機基礎很弱,甚至有的為零,那么怎樣才能讓其將C語言學會,學好,并能靈活運用呢?這就是本文的探討所在。
目前,在各大高校的非計算機專業都會設置相應的C語言程序設計課程,不僅如此,還有大量的培訓機構招收非計算機專業的學生進行培訓,以達到獲得國家C語言二級證書,或使其具備一定的編程能力以備求職所用,可見C語言的重要性。
1 存在的問題
1.1 學生的問題
在近幾年的教學實踐中,發現學生普遍認為這門課難度很大,不容易學,而且即使懂了理論也不會做題或編寫程序。究其原因,主要有:
1)很多學生的學習目的是不明確的[3]。經過相應的調查,發現在高等院校中,很多學生只是順從學校或學院的安排,盲目地去上課,根本就不清楚自己為什么要學習C語言,所以一旦遇到困難,就會覺得難學,甚至會覺得學了也沒用,導致學習興趣以及熱情的下降,這樣就會缺乏學習的積極性和主動性。
2)學生的實踐動手能力不高。C語言是一門邏輯性和操作性都很強的計算機語言,而很多學生都不明確上機實驗的目的,甚至有的學生連實驗的內容都不清楚,到了機房就是一盤散沙,不知道要做什么,導致動手能力不高。當然在上機的過程中,也難免會出現某些學生玩游戲等這樣的情況,所以這也是實踐課程中管理的疏忽。
3)對于高等院校的非計算機專業的學生來說,他們對學校安排的計算機課程的重視度不高。認為本門課程不是主課,僅僅是為應付考試而去學習,所以學習積極性不高,有時可能會發生上課不聽講,下課不看書的現象[4]。
4)教學過程中,發現在學生中存在一種普遍現象,即程序設計能力和調試能力都比較弱。究其原因,主要是因為其對于算法不夠熟練,靈活運用知識的能力比較弱,編程的時候程序結構不清晰,標點符號等語法錯誤較多,不夠細心。
1.2 教師的問題
教學的過程是教與學的過程,是教師的教與學生的學相結合的。國內著名的教育技術專家何克抗教授提出來“主導-主體”教學理論[5],他認為教學活動應該以教師為主導以學生為主體,突出教師在教學活動中主導者地位的同時,要注重對學生創新思維和創新能力的培養,避免學生被動學習。
1)在課堂教學過程中,太重理論的講解,而忽視了對學生實踐操作的引導。這就要求教師在備課過程中,必須清楚整個教學大綱的內容,做到有的放矢,理論講解的同時,注重對鍛煉學生動手能力的實踐做相應的指導。
2)在上機實踐時,容易放心讓學生自己練習,導致學生動手能力未能得到確切的提高。這樣就可能會導致很多學生在實驗課上玩耍而不做任何實驗。所以這就要求老師事前必須得做好實驗課內容的設計,并嚴格要求學生達到什么樣的效果,讓學生自己動手操作,以達到鍛煉提高的目的。
2 解決方案
基于上述問題的存在,并結合近幾年的教學經驗,該文提出一些改進的教學方法,以達到提高非計算機專業的學生學習C語言的學習效果。做到盡量讓學生感覺學習C語言很輕松,很有趣,且能將其學會并靈活應用。
2.1首因效應
作為一名教師,應該很清楚第一堂課是非常重要的。首先應該與學生互動,相互了解,建立良好的師生關系,拉近彼此間的距離,如果一個老師的氣場足夠吸引學生的話,后面的教學過程中的任何問題都能很好地解決,缺課現象也會少之又少。其次要消除學生對于C語言程序設計課程的陌生感和神秘感,使其明白C語言對于我們而言,其實并不陌生,它存在于我們的日常生活中。舉例如計算器、手機等電子產品、各種游戲軟件、操作系統、智能電器等的功能都可以由C語言程序設計實現。最后充分調動學生學習的興趣,使其明白學習C語言并沒有想象中的那么難。
在第一堂課時,可以少講課程內容,必須得讓學生明白其學習目的,可以通過現場調查法了解學生的想法,并引導其明白學習本課程的目標。這樣能使學生具有更大的學習動力。充分調動學生的積極性,激發其興趣,這有利于日后的教學工作的進行,以及改變學生學習的氛圍。
2.2 教學方法
要想提高學生的學習效果,就必須得注重教學方法的使用。只有方法對,使用得當,才會達到事半功倍的效果。針對非計算機專業的學生來說,該文總結出下面幾種方法。
2.2.1 示例教學法
項目教學法在文獻[6]中闡述得很清楚,它是通過實施一個完整的項目而進行的教學活動,使學生通過對所選項目的完成來完成對C語言的學習。這樣的方法有一定的效果,但是在實施方面的難度比較大,比如所選項目的難易如何把握,時間如何分配(尤其是在高等院校的日常教學中),達到的效果如何衡量等。這些都很難有一個標尺來衡量。有兩種效果,一是對C語言掌握得非常的好,應用能力很強;二是對C語言一頭霧水,云里霧里,不知所云。所以對此本文提出一種結合項目教學法的優勢與高等院校特點于一體的示例教學方法。此方法是在傳統教學方法的基礎上,對于課堂的設計有所改變。傳統教學注重理論的講解,而此方法是在簡要講解理論的基礎上,針對某些重點知識的運用,例舉一些具體的有趣且貼近生活的實例,做出相應的講解后,加以演示,讓學生對此程序的運行結果等有一個直觀的感受;而且在演示的過程中,還可以教學生相應的一些調試程序找錯的方法,這樣學生自己上機練習的時候,調試能力會大大的增強。通過示例教學法,可以使學生對知識點的掌握以及運用能力得到很大的提高。
2.2.2 誘導法
傳統教學模式是針對什么內容就很直白的講解相應的內容,這樣會使學生覺得枯燥乏味,久而久之會產生相應的厭學情緒,導致學習效率低下,學習效果低。該文針對此現象提出相應的改進方法,即誘導學習法。在課堂上,學生是主體,教師應該設計好所講授內容的先后連接順序,做到連貫有序。比如引入一個新的知識點之前,先提出問題,引導學生思考相應的解決方法,或讓學生相互討論,最終引出知識點進行講解。這樣更能提高學生課堂上學習的積極性。比如在學習數組之前,先提出問題,如果用一般的變量存放學生的年齡,需要存放幾萬學生的年齡,則需要幾萬個的變量,這樣的編程量是非常大的,引導學生思考解決方法,并引出數組的概念和作用,這樣學生比較容易接受,而且也不會覺得很突然或陌生,更能輕易得接受并學習。
2.2.3 對比法
根據人類認識事物的規律,在課堂上采取對比教學法會得到的非常好的效果。從常理出發,人們習慣性地會對比身邊的事物,從而認識相應的事物。所以在課堂上講解知識點的時候,恰到好處地運用好此方法的話,教學效果是非常好的。比如在學習數組的時候,當學習完一維數組之后,學維數組的時候,就可以以類比的方法來介紹二維數組,學生會很快學會并吸收二維數組的內容。這樣的效果是非常顯著的。
2.2.4 抽象具體化
C語言中,有很多抽象的專業性描述的概念理論,而對這些理論的講解是比較難的。對于學生而言,這些內容在頭腦里是很抽象難以理解的。所以這時就需要教師在講解內容時,少用專業術語進行解釋。比如講解C語言充有且只能有一個main函數,且程序從main函數開始到main函數結束時,很多學生不是很理解,教師就可以舉例說一個學校只有一個大門,學生要想進入學校逛耍就只能通過大門走進,而逛耍完后想要走出學校時,也只能通過大門才能出去。學校的大門就類似于main函數,要想進入學校只能從大門進或出,而C語言程序的開始結束也只能從main函數開始或結束。這樣的話,學生比較能接受并理解此知識點,而且會覺得有趣。
2.2.5 組隊上機法
此方法主要是針對上機實驗課。傳統的實驗課是學生進入機房之后,個人練習,各練各的,學生之間缺少交流溝通。對此,該文提出的組隊上機法可以有效地改善此現象,并得到相應的效果的提高。事先將學生進行分組,然后對每個小組分配任務,并提出要求及實驗結果,還可以制定一些相應的獎懲制度,當然獎懲制度得切實可行。上機實踐時,小組成員之間相互探討問題,互動地學習,這樣可以激發學生的求知欲,也能鍛煉學生的團隊協作能力。相互之間有競爭,就可以刺激學生的學習欲望。
2.3 課后溝通
因為高校的老師和學生之間見面的機會最多的就是上課時間,而學生有問題又不可能在課堂上問。針對這種現象,如果老師能和學生打成一片,加入學生的QQ學習群里,課后有任何的問題,大家都可以通過互聯網在QQ群里討論,老師也可解答問題。這樣的學習效率是很高的,學生覺得老師負責,他的學習激情會更大,潛能也會被激發。
3 總結
教學實踐證明,針對目前非計算機專業的學生學習C語言的現狀,該文所提出的解決方案教學方法是切實可行的,且教學效果得到了確切的提高。利用這些方法,不僅可以激發學生的學習興趣,更能增強學生分析處理問題的能力。學生在一種快樂融洽的氛圍中學習,學習效率是非常高的。
參考文獻:
[1] 謝競博.C語言程序設計教學中的問題及改革建議[J].重慶郵電大學學報:社會科學報,2008(2).
[2] 王繼東,趙瑞斌,陳桂林.計算機專業C語言程序設計課程教學改革探索[J].計算機時代,2012(2).
[3] 牛熠,董阿妮,吳燕玲.C語言教學中學生興趣的培養[J].東莞理工學院學報,2006(1).
Abstract: Most of the current real estate sector in the real estate information management and housing area calculation also failed to realize automation, the informatization, standardization, did not give full play to the function of powerful computer. Based on the analysis of real data, the housing area calculation models are summarized, analysis, summary, ideas to solve the problems is proposed and completed the design of housing area calculation system.
Key words: common construction area; assessment area apportion coefficient; functional area
中圖分類號:F293.3文獻標識碼:A 文章編號:2095-2104(2013)
引言
隨著城市規劃法和房地產管理法的頒布實施以及市場經濟的飛速發展、住房的商品化和貨幣化進程的迅猛推進,對各地房地產產權產籍的管理工作提出了更高和更復雜的要求。房產面積計算準確與否,不僅關系到房產開發商的經濟利益,還直接影響到千家萬戶的利益。房產面積計算系統正是應此呼聲而產生,它可使房產部門從繁鎖的面積計算中解脫,可大幅度提高工作效率,減少面積計算工作中不必要的錯誤。
本文根據作者多年經驗及相關房產資料,對房產面積計算模型進行了歸納、分析、總結,提出了解決問題的設想并完成了房產面積計算系統程序的設計。
一、系統平臺和標準
AutoCAD 2000是當今主流的CAD應用平臺,其強大的圖形編輯功能與圖形處理功能深受用戶歡迎。房產面積計算系統內嵌于該平臺,利用目前流行的開發語言 VBA與LISP 進行程序開發,使用了面向對象的設計思想,采用了先進的內嵌式SQL語言,通過對數據庫的操作,實現圖形與屬性數據完美的結合。房產面積計算系統的面積分攤計算是根據最新的國家房產測量規范(GB/T 17986.1—2000)設計而成的,適用于各地房產部門的房產面積計算。
二、程序設計思想
1.為了管理上的方便,系統按丘進行圖形及屬性管理。系統在每建立一個丘時,會自動以“丘名”建立一個文件夾,并在此文件夾目錄下自動建立兩個文件,一個是存放丘信息的屬性數據庫,其命名格式為“丘名.mdb”;另一個是存放本丘各幢樓平面圖的文件夾,其命名格式為“丘名+Dwg”。經分析可知,每新建一個丘時都要創建兩個相同的文件,因此系統設計了一個模板數據庫,每建立一個丘時只要把模板數據庫進行拷貝即可。當進行圖形操作時,每幢樓會自動建立一個 Dwg 文件,其命名規則是“幢號.Dwg”,此 Dwg 文件存入選定的丘文件夾中。每幢樓的各樓層在 Auto CAD 2000 中建立一個對應的圖層。系統實現面積、尺寸自動標注,并把各標注放在單一的圖層,用戶可方便地進行面積、尺寸標注圖層的開關。在 CAD 中主要用層來實現各幢樓圖形的管理。
2.在CAD中用戶以中軸線繪出各幢各層各戶平面圖, 在圖形上用系統規定的代號標出各功能區。程序根據標出的各功能代號自動搜索其圍成閉合區域的面積并進行分攤計算,這是本系統提出的新思想。用戶只要按系統規定作圖、標功能代號,程序可快速、準確的進行面積分攤計算。
如圖所示:
(圖 1)
圖上Q、A、YA、H、YH即為系統規定的代號,系統會根據代號及各戶號進行面積搜索并進行分攤計算。其中Q代表全樓共用建筑面積(暫不包括外墻體一半的建筑面積),YA代表計算陽臺全部的建筑面積,YH代表計算陽臺一半的建筑面積。各功能區代號有:Z代表住宅,ZD代表住宅獨用;B代表商業,BD代表商業獨用等。
系統根據這一思想進行面積計算,程序相當復雜,但對于用戶來說,操作方法簡單,只需要點幾下菜單即可完成各項復雜的計算,很適合基層用戶操作。
三、數據庫設計
因為每個丘要建立一個數據庫,因此設計了一個模板數據庫,在每建立一個丘時系統自動對模板數據庫進行復制。數據庫中的各表通過幢號、層號進行圖形與屬性數據關聯。用戶輸入的所有數據與程序自動計算完畢的數據全部存入數據庫,最后可供用戶查詢、打印輸出。
數據庫中主要有功能區表、幢屬性表、樓層表、戶表、分攤系統表等多個關聯表。功能區表主要是用來存放各功能區代號及其屬性的;幢屬性表記錄每幢房屋的基本信息,如:坐落、圖幅號、丘號、幢號、產權單位等信息。戶表記錄各戶的基本信息,如:戶號、戶主、戶產權面積、分攤面積等。
四、系統模塊介紹
房產面積計算系統分為五大功能模塊來實現:
此模塊主要用來實現各幢各層基本屬性數據的錄入。
2.面積計算模塊
此模塊程序根據標出的各功能代號自動提取面積進行分攤計算并入庫。
3.數據管理及資料查詢模塊
此模塊主要用來實現圖形與屬性數據的雙向查詢。本模塊使用了功能強大的 SQL (結構化查詢語言)進行各種數據查詢,用戶可以按任意條件進行單項、多項組合查詢。可從屬性調圖,也可從圖讀屬性。
4.圖形處理工具模塊
此模塊主要有常用繪圖工具,可使用戶加快作圖效率。
5.報表輸入模塊
實現各種報表打印,如幢基本屬性表、功能區建筑面積匯總表、分戶明細表及各戶示意圖。
五、程序計算流程
房產面積計算按其類型分為多層住宅樓、商住兩用樓、多功能綜合樓三種類型。每一幢樓只有一個全樓共用建筑面積分攤系數;每一功能區有一個功能區分攤系數;某一局部分攤又有一個獨立的分攤系數。在一幢樓中,有可能只有一個功能區,有可能有多個功能區;局部可進行多次分攤。因此,程序計算之前,必須準確劃分各功能區,確定各功能區獨自共用的建筑面積,準確標注各功能部位。只有這樣,系統才會根據代號計算出準確的面積。
在進行程序設計時,考慮到用戶是在CAD中用中軸線繪圖的,因此在計算各層建筑面積、共用建筑面積時應注意加上各層外墻一半的建筑面積;注意一些實體的計算,分清是計算其全部面積還是計算其一半的建筑面積(如陽臺)。具體是怎樣進行計算,用戶只要標注好功能代號,程序能自動識別并計算。
根據分析結果,可以總結出共用建筑面積分攤計算流程為:先整體分攤計算,后局部分攤計算。即先進行“整幢樓分攤”計算,然后進行“各功能區分攤”計算,下一步到“樓層間分攤”計算,再進行各“局部分攤”計算,最后“分攤到各戶”。在此值得注意的是,上一層次分攤計算的結果作為下一層次分攤的共用建筑面積的一部分,如分攤到某“功能區”的全樓共用建筑面積在進行本功能區分攤計算時就與“本功能區”類型的共用建筑面積一起參與分攤計算,最后分攤到每套(戶)。
分攤計算可用圖(1)表示:
(圖 2)
從圖2 就可看出,共用建筑面積分攤的順序即為先整體,后局部。先分攤全樓共用建筑面積到各功能區,如在功能區內沒有各樓層分攤,則按(A)直接分攤到各戶;如果在功能區內要進行各樓層分攤,則按(B)進行各層分攤計算,再分攤到各戶。在進行以上各項分攤完畢后,如還有特殊要求要進行局部分攤的,則要根據需要進行局部分攤計算。
六、房產面積計算系統實現的關鍵技術
1.面積自動搜索
程序根據標出的各功能代號自動搜索其圍成閉合區域的面積,這是程序要實現的關鍵,也是程序開發時遇到的技術難點。在程序中能不能實現這一步是關系到整個程序成敗的關鍵。因為整個程序所有的面積數據都是根據各標識提出來的。我們在程序中通過屬性設置,邊界搜索來實現這一功能。
2.局部面積分攤計算
當要進行局部分攤時,用戶可指定分攤對象與被分攤對象進行分攤計算。在CAD平面圖中,用戶只要選擇分攤對象,再選擇被分攤對象,程序可把被分攤對象按面積比例自動分到分攤對象中。如圖所示:
圖(3)
當走廊要分攤給01、02、03三戶時,只要選擇分攤對象(走廊),再點擊01、02、03,程序即可自動把走廊部分按面積比例分攤到各戶,數據此時會根據分攤的面積自動進行更新。
3.在報表打印時,要打印各套(戶)平面圖這也是一個技術難點。
在打印各戶平面圖時,怎樣根據各戶號把圖廓加上,怎樣進行圖廓自動切割。
以上三個關鍵技術通過VBA與LISP兩者相結合,再通過一定的算法,在程序中得到了很好的解決。
七、結束語
房產面積計算系統內嵌于Auto CAD 2000平臺,該系統充分運用了計算機的優勢及Auto CAD 2000強大的圖形編輯功能與圖形處理功能。用戶可很方便的進行圖形、屬性數據的雙向查詢。房產面積計算系統的建立,減輕了房產部門繁瑣的計算過程,提高了工作效率。
參 考 文 獻