時間:2023-03-08 14:53:06
序論:好文章的創(chuàng)作是一個不斷探索和完善的過程,我們?yōu)槟扑]十篇計算機程序設(shè)計語言范例,希望它們能助您一臂之力,提升您的閱讀品質(zhì),帶來更深刻的閱讀感受。
關(guān)鍵詞:計算機程序設(shè)計語言;層次化教學(xué);C++
中圖分類號:G642
文獻(xiàn)標(biāo)識碼:A
1“計算機程序設(shè)計語言”教學(xué)現(xiàn)狀
“計算機程序設(shè)計語言”是普通高校計算機教育的基本專業(yè)課程,在計算機領(lǐng)域的各個專業(yè)的課程體系中都處于核心的地位。這門課程不僅可使學(xué)生獲得基本的程序設(shè)計能力及鍛煉學(xué)生的邏輯思維能力,它還極大地影響著學(xué)生對計算機領(lǐng)域的興趣和理解,對引導(dǎo)和培養(yǎng)學(xué)生在計算機工程及理論方面的研究興趣起著先導(dǎo)性和基礎(chǔ)性的作用。因此,“計算機程序設(shè)計語言”的教學(xué)質(zhì)量成為影響大學(xué)本科計算機教學(xué)質(zhì)量和效果的一個關(guān)鍵的因素。
影響課程教學(xué)質(zhì)量的主要三個因素為教學(xué)內(nèi)容、教學(xué)方法和實驗設(shè)計。當(dāng)前,大部分教師受傳統(tǒng)教學(xué)模式的影響,教學(xué)的重點都放在程序語言的基本語法的講授,課堂所設(shè)計的程序?qū)嵗蟛糠謬@語法規(guī)則的演示和說明,這種模式同樣也影響到實驗環(huán)節(jié)的設(shè)計。這種就事論事,形而上學(xué)的教學(xué)模式具有許多明顯的弊端,主要體現(xiàn)在以下幾方面:
(1) 不利于培養(yǎng)學(xué)生的學(xué)習(xí)興趣
許多從事程序設(shè)計語言教學(xué)的教師(包括筆者)都有這樣的感受:每講授一門新的程序設(shè)計語言課,初期學(xué)生都抱著積極,對獲取知識的極大熱情投入課程的學(xué)習(xí),但隨著教學(xué)過程的深入,這種熱情往往不能持久。導(dǎo)致這種局面的原因固然有教師本身的教學(xué)方法和教學(xué)手段的缺陷,但根本原因還是教學(xué)內(nèi)容的設(shè)置不科學(xué)。在單純以講授語法規(guī)則這種教學(xué)模式下,學(xué)生難以保持長久的學(xué)習(xí)興趣和動力。
(2) 不利于學(xué)生建立綜合化,系統(tǒng)化的知識體系
程序設(shè)計語言是表達(dá)設(shè)計者思想和計算機計算邏輯的符號系統(tǒng),具有多層面、多視角的內(nèi)涵。要把學(xué)生培養(yǎng)為具有高素質(zhì)的程序設(shè)計人員,僅僅熟悉沒有精神的符號及符號規(guī)則遠(yuǎn)遠(yuǎn)不夠,這需要學(xué)生具備設(shè)計高質(zhì)量程序的綜合化的知識體系,而當(dāng)前的程序設(shè)計語言的教學(xué)現(xiàn)狀并不能滿足這種需求。
(3) 不利于培養(yǎng)學(xué)生解決實際問題的綜合能力及創(chuàng)新意識和思想
當(dāng)前,素質(zhì)教育成為各級教育系統(tǒng),包括高等院校所關(guān)注的熱點,知識高等院校所關(guān)注的“素質(zhì)”內(nèi)涵不同。筆者認(rèn)為高校大學(xué)畢業(yè)生應(yīng)具備的素質(zhì)包括:綜合化、系統(tǒng)化的專業(yè)知識體系;應(yīng)有已有的知識體系解決實際問題的能力;具有創(chuàng)新的意識和思想。總體而言,大部分教師對程序設(shè)計語言課程所采取的教學(xué)不利于這種素質(zhì)的培養(yǎng)。
針對這種現(xiàn)狀,結(jié)合我國高等教育發(fā)展的現(xiàn)狀,本文提出程序設(shè)計語言的層次化教學(xué)目標(biāo)的思想,并以面向?qū)ο蟪绦蛘Z言為例,論述在層次化教學(xué)目標(biāo)驅(qū)動下的課程設(shè)計。
2層次化的教學(xué)目標(biāo)
各項教學(xué)活動有效展開的基本條件是合理的教學(xué)目標(biāo)的確定,但單一的教學(xué)目標(biāo)并不能適用當(dāng)前中國復(fù)雜的高等教育現(xiàn)狀。社會經(jīng)濟的快速發(fā)展產(chǎn)生了明顯的多類型、層次化的人才需求,這種趨勢在各類軟件公司里表現(xiàn)得尤其明顯。為了適用這種人才需求的轉(zhuǎn)變,高等教育領(lǐng)域在這些年相應(yīng)地發(fā)生了巨大的變化,各種類型、各種不同層次的教育機構(gòu)大量出現(xiàn),改變了過去高等教育機構(gòu)單純負(fù)責(zé)培養(yǎng)具有從事復(fù)雜腦力勞動的高級專業(yè)人才的狀況。這些變化最終體現(xiàn)為教師的工作,體現(xiàn)為教師針對不同的教學(xué)對象所制定的教學(xué)目標(biāo)體系。
當(dāng)前,由于社會信息化的發(fā)展,各類計算機類課程已經(jīng)滲透到各個學(xué)科,例如筆者所在的蘇州大學(xué),幾乎所有的院系都設(shè)置了信息技術(shù)類的有關(guān)課程,大約超過一半的院系設(shè)置了“計算機程序設(shè)計語言”的課程,因此“計算機語言設(shè)計課程”的教學(xué)質(zhì)量是總體教學(xué)質(zhì)量評估的重要組成部分。筆者多年來一直在蘇州大學(xué)承擔(dān)程序設(shè)計語言的課程,包括一類本科計算機專業(yè)基礎(chǔ)課程、二類本科專業(yè)基礎(chǔ)課和公共基礎(chǔ)課程。大量的教學(xué)實踐表明單一的教學(xué)目標(biāo)不能適用多樣化的教學(xué)對象、多樣化的人才需求和程序設(shè)計語言知識邏輯在廣度和深度方面所具有的層次化的特點。下面將論述程序設(shè)計語言課程的層次化的教學(xué)目標(biāo)體系及各層的具體內(nèi)涵。
2.1低級目標(biāo)
該目標(biāo)要求掌握標(biāo)準(zhǔn)化的程序語言語法體系,以學(xué)生掌握基本的標(biāo)準(zhǔn)語法體系為基本要求,并能初步應(yīng)用語言開發(fā)較小型的簡單應(yīng)用程序,具備初步的程序設(shè)計能力。低級目標(biāo)要使得學(xué)生對所學(xué)知識“知其然”,課程教學(xué)內(nèi)容主要圍繞標(biāo)準(zhǔn)的語法規(guī)則,課堂和實驗環(huán)節(jié)所選定的程序?qū)嵗蠖鄧@著驗證和演示語法規(guī)則及語法規(guī)則之間的聯(lián)系進(jìn)行設(shè)計。在以低級目標(biāo)驅(qū)動的教學(xué)中,因為重在基本知識的傳授,因此核心教學(xué)內(nèi)容的選擇是第一位的要素。當(dāng)然每門程序設(shè)計語言課程都有其固有的核心內(nèi)容,例如,在C++語言中,核心的教學(xué)內(nèi)容為:面向?qū)ο蟮母拍?、繼承、多態(tài)、模板及異常等,即使如此,還需要根據(jù)教學(xué)對象,對教學(xué)內(nèi)容和授課方式進(jìn)行選擇和取舍??偟脑瓌t是圍繞重點概念和知識采取“精講多練”和“突出重點”的方式進(jìn)行教學(xué)。
2.2中級目標(biāo)
中級目標(biāo)則要要求學(xué)生圍繞目標(biāo)程序設(shè)計語言,具備系統(tǒng)化的程序設(shè)計方法和技巧,逐漸使學(xué)生“知其所以然”。該層目標(biāo)不僅要讓學(xué)生掌握“語法”,還要讓學(xué)生掌握“語義”;不僅讓學(xué)生掌握語言本身,還要讓學(xué)生擴展思維,了解、理解更多的外延的知識;不僅要讓學(xué)生掌握基本的程序設(shè)計方法,要讓學(xué)生初步掌握系統(tǒng)化的程序設(shè)計方法和建立起程序質(zhì)量的觀點。程序設(shè)計語言的外延知識涉及計算機專業(yè)許多重要的核心課程,包括編譯原理、算法分析與設(shè)計、計算機組成與結(jié)構(gòu)、離散數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)和軟件工程等。當(dāng)然,不可能指望通過一門課程的學(xué)習(xí),使學(xué)生有效地、完整地掌握所有這些知識,只能使與實現(xiàn)中級目標(biāo)有緊密聯(lián)系的知識能滲入到重點的知識講授和實驗的安排中。
2.3高級目標(biāo)
不管是初級目標(biāo)的“知其然”,還是中級目標(biāo)的“知其所以然”,都是知識學(xué)習(xí),而高級目標(biāo)階段的重點是運用知識,體驗知識,要求學(xué)生具備利用目標(biāo)程序設(shè)計語言解決一定復(fù)雜度和規(guī)模的實際問題的能力,建立抽象的程序設(shè)計思想、方法和質(zhì)量的觀點。高級目標(biāo)的教學(xué)內(nèi)容的重點在如何在所講授的語言框架里解決一定規(guī)模的應(yīng)用問題,并從具體的實現(xiàn)里提煉出抽象的設(shè)計思想,分析實現(xiàn)的質(zhì)量,總結(jié)好的實現(xiàn)方法和設(shè)計思想。
確立了教學(xué)目標(biāo),下一步的焦點為圍繞實現(xiàn)具體的教學(xué)目標(biāo),制定各教學(xué)環(huán)節(jié)的具體的教學(xué)內(nèi)容和教學(xué)手段,主要包括課堂教學(xué)環(huán)節(jié)和上機實踐環(huán)節(jié)。結(jié)合筆者的教學(xué)實踐,下一節(jié)將圍繞這方面的內(nèi)容展開論述。
3層次化的目標(biāo)引導(dǎo)的課程設(shè)計
C++語言因其強大的功能及廣泛的實用性而日益成為當(dāng)前高校理工類專業(yè)程序設(shè)計的主流教學(xué)語言,因此本節(jié)將以C++為例,討論層次化教學(xué)目標(biāo)思想如何在教學(xué)實踐中得到貫徹。C++程序設(shè)計語言的教學(xué)涉及課堂教學(xué)和實踐教學(xué)兩個環(huán)節(jié),下面將就這兩方面展開論述。
3.1課堂教學(xué)
確定目標(biāo)課程的教學(xué)內(nèi)容是開展有效的課堂教學(xué),取得既定的教學(xué)目標(biāo)的前提和基本要求。針對本文所提出的層次化的教學(xué)目標(biāo)體系的基本內(nèi)涵,C++程序語言的課堂教學(xué)內(nèi)容在深度和廣度上也應(yīng)該展現(xiàn)出層次化,遞進(jìn)性的特點。
在低級目標(biāo)中,掌握本程序語言的基本語法體系是最重要的目標(biāo),在教學(xué)內(nèi)容的設(shè)計上,應(yīng)確定語言的最核心最重要的語法現(xiàn)象。過程化程序設(shè)計向?qū)ο蠡绦蛟O(shè)計是C++語言的最重要的特征,因此“對象”和“類”,以及由此產(chǎn)生的“繼承”,“封裝”,“多態(tài)”和“異?!?成為最核心的教學(xué)內(nèi)容。在教學(xué)時應(yīng)集中注意力于這些類對象的關(guān)鍵個性技術(shù),圍繞關(guān)鍵技術(shù)“精講多練”,使學(xué)生深刻理解面向?qū)ο驝++的這些關(guān)鍵技術(shù);要有重點,不能面面俱到,有所失,才能有所得。
低級目標(biāo)是為了使學(xué)生掌握知識,使其“知其然”,那么中級目標(biāo)則要逐漸使受教育者“知其所以然”,教學(xué)的重點從對語法的訓(xùn)練轉(zhuǎn)向?qū)φZ義的理解,包括靜態(tài)結(jié)構(gòu)語義和程序執(zhí)行語義。在C++的教學(xué)中,以C++對象模型作為教學(xué)內(nèi)容的重點,通過從靜態(tài)的程序代碼結(jié)構(gòu)和運行的程序狀態(tài)兩方面展開課堂教學(xué),這樣在知識語言的“所以然”的基礎(chǔ)上,學(xué)生不僅知道什么是“多態(tài)”,并且知識“多態(tài)”是怎么實現(xiàn)的;什么是運行時類型檢查(RTTI),運行時類型檢查能提供什么程序設(shè)計策略等;許多的外延知識能沿課堂展開,例如編譯原理、算法分析與設(shè)計等。由Stanley B. Lippman所著的《Inside The C++ Object Model》為我們設(shè)計課程材料提供了方向性的指導(dǎo)。
低級目標(biāo)和中級目標(biāo)都是針對知識的學(xué)習(xí),而高級目標(biāo)則針對知識運用,提高運用知識進(jìn)行設(shè)計的能力。此層次涉及知識的學(xué)習(xí)、理解和綜合運用,要在有限的時間內(nèi),實現(xiàn)教學(xué)目標(biāo),在課程教學(xué)內(nèi)容的選取和設(shè)計及課時的安排上,具有一定的難度,對教者和學(xué)者都具有一定的挑戰(zhàn)性?!霸O(shè)計模式”可以成為本層次的基本或延展性的教學(xué)內(nèi)容。設(shè)計模式雖然不與具體的設(shè)計語言有著必然的、密切的聯(lián)系,但事實上各種技術(shù)性、或純教學(xué)性的書籍中,都把面向?qū)ο笳Z言作為實現(xiàn)各種設(shè)計思想的不二選擇。通過設(shè)計模式內(nèi)容的講授,可以使得學(xué)生對面向?qū)ο蟮幕A(chǔ)知識有更深刻的理解,同時增強靈活運用所學(xué)知識的能力,體驗面向?qū)ο蟪绦蛟O(shè)計方法學(xué)所帶來的設(shè)計上的“美”,激發(fā)學(xué)生的創(chuàng)造力。
當(dāng)然,上面針對課堂教學(xué)內(nèi)容的論述僅僅進(jìn)行了基本的界定和論述,需要通過下面幾方面來貫徹實施,以達(dá)到各個層次的教學(xué)目標(biāo):
(1) 通過教者的努力,設(shè)計出豐富的、具體的課程素材;
(2) 針對不同的教學(xué)內(nèi)容,設(shè)計多樣化的教學(xué)手段和方法;
(3) 針對不同的教學(xué)內(nèi)容布置合理的作業(yè)和考核方法。
3.2實踐教學(xué)
在程序設(shè)計語言的教學(xué)中,課堂教學(xué)和上機實踐教學(xué)是并重的環(huán)節(jié),不可偏廢,一起決定著教學(xué)的質(zhì)量和教學(xué)目標(biāo)的取得。如何設(shè)計安排上機環(huán)節(jié)通過大量的教學(xué)實踐,已經(jīng)總結(jié)出了大量的行之有效的方法。下文就實驗內(nèi)容及實驗的組織形式進(jìn)行一些必要的、有益的討論。
結(jié)合課堂內(nèi)容,以往的實踐環(huán)節(jié)主要由學(xué)生編制一些小的程序,進(jìn)行語法現(xiàn)象的演示及驗證。但筆者通過大量的教學(xué)實踐發(fā)現(xiàn):這種普遍采用的,且行之有效的方法,對于學(xué)生鞏固知識,提高調(diào)試程序的能力和技巧具有顯著的效果。但隨著教學(xué)的深入,這種方法也顯示出種種的弊端,例如:學(xué)生專著于知識點,必然缺乏對知識的整體把握;學(xué)生容不易形成良好的編程習(xí)慣等。針對這種情況,筆者在實踐的環(huán)節(jié)中,增加“讀程序”的分量。教師提供一些高質(zhì)量的程序范例讓學(xué)生進(jìn)行閱讀、理解,并對范例的程序風(fēng)格和設(shè)計方法進(jìn)行總結(jié)比較,以提高學(xué)者的綜合能力,尤其是到了后期,所提供的范例更具有綜合性、全面性和示范性,能極大地提高學(xué)生掌握知識的深度和廣度,激發(fā)他們的學(xué)習(xí)熱情。
在實踐人員的組織形式上,一般在程序設(shè)計語言的教學(xué)中,都是學(xué)生獨立進(jìn)行的。在教學(xué)實踐中,也可引進(jìn)一些軟件開發(fā)中的方法,比如采用小組制的形式,根據(jù)實踐內(nèi)容的不同,小組或大或小。即使是在低層目標(biāo)為導(dǎo)向的教學(xué)中,也可采用小組的方法進(jìn)行實踐環(huán)節(jié)的教學(xué),不過此時小組人數(shù)不宜過多,最佳數(shù)目為二人。采用這樣的方法,有以下的益處:
(1) 便于學(xué)生進(jìn)行交流,以達(dá)到取長補短的目的;
(2) 提高教學(xué)效率,以較少教學(xué)活動取得同樣甚至更好的效果;
(3) 培養(yǎng)團隊合作精神等。
在以中級和高級目標(biāo)為導(dǎo)向的教學(xué)中,實踐環(huán)節(jié)應(yīng)從語法演示和驗證為重點轉(zhuǎn)變?yōu)橐灾R的理解和知識的運用為重點,因此除了結(jié)合教學(xué)內(nèi)容設(shè)計相應(yīng)的實踐內(nèi)容外,最顯著的特點是增加綜合性的項目開發(fā)環(huán)節(jié),以達(dá)到知識的綜合掌握和運用。
當(dāng)前以語法的演示和驗證目的實踐環(huán)節(jié)的設(shè)計具有大量的教學(xué)實踐可資借鑒和學(xué)習(xí),但針對更高兩層教學(xué)目標(biāo)的實踐環(huán)節(jié)則缺乏有效的素材和經(jīng)驗可以利用,需要通過進(jìn)一步的教學(xué)實踐活動加以積累和總結(jié)。當(dāng)前的一些做法是借用開發(fā)一個具有一定規(guī)模的項目來彌補純語法的演示和驗證實踐方法的不足。
4結(jié)論
本文針對當(dāng)前在程序設(shè)計語言的教學(xué)中存在的問題,提出了多層次教學(xué)目標(biāo)的觀念,并介紹了各層次目標(biāo)的具體內(nèi)容和以此目標(biāo)為導(dǎo)向的主要的教學(xué)環(huán)節(jié)的設(shè)計。各個層次的教學(xué)內(nèi)容和教學(xué)方法手段并不是彼此割裂的,如何針對各種不同的教學(xué)對象進(jìn)行合理的課程設(shè)計,以提高教學(xué)質(zhì)量有待于進(jìn)一步的大量的教學(xué)實踐活動。下一步最主要的工作總結(jié)探索各種教學(xué)資源以及相應(yīng)的考核方法,尤其是用于中級目標(biāo)和高級目標(biāo)為導(dǎo)向的教學(xué)活動。
參考文獻(xiàn):
[1] 吳乃陵. 面向?qū)ο驝++程序設(shè)計教學(xué)改革[J]. 電氣電子教學(xué)學(xué)報,2003,25(2):9-11.
[2] 徐宏,聶影,黃征華,等. 計算機程序設(shè)計語言的教學(xué)探索[J]. 教學(xué)研究,2004(2):89-93.
[3] 沈軍. 程序設(shè)計語言類課程的教學(xué)思路研究[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
在教學(xué)中與一些應(yīng)用軟件或工具軟件相比,編程課程的教學(xué)具有較大的靈活性。很多學(xué)生的學(xué)習(xí)能力較差,課后不肯花時間,久而久之,導(dǎo)致聽不懂,給計算機編程語言課的教學(xué)帶來一定的難度。采用何種教學(xué)模式進(jìn)行教學(xué)就成為編程
語言教學(xué)的一個關(guān)鍵。
一、引言
根據(jù)以往的教學(xué)經(jīng)驗和通過與學(xué)生、同事之間的交流,得知部分學(xué)生反映上課時都能聽懂講解,可在涉及到具體的編程及上機操作時,往往會出現(xiàn)沒有思路、無從下手或錯誤百出,不會調(diào)試程序等各種情況,究其原因,在教學(xué)方面可能存在以下2個問題。
(一)過于注重對語句語法的講解,缺乏以算法為核心的編程題教學(xué)。教師鐘情于舉一反三地對使用語句、語法的深入教學(xué),而不是有機地結(jié)合算法思想進(jìn)行教學(xué),貼近生活并引起學(xué)生興趣的編程題講得很少。由于教學(xué)不是站在如何應(yīng)用計算機工具編程解決實際問題或?qū)嶋H項目的角度,就沒有把邏輯與編程解題思路放在主體地位,也就沒有很好講解如何分析問題和解決問題。結(jié)果導(dǎo)致學(xué)生程序設(shè)計能力、上機解題能力訓(xùn)練不夠,更談不上引導(dǎo)學(xué)生進(jìn)行課題研究和科研探索。
(二)學(xué)生厭倦傳統(tǒng)的課堂教學(xué),缺乏師生之間的溝通交流學(xué)生對于先講后編、先聽后編這一傳統(tǒng)的課堂教學(xué)方式有厭倦心理。課堂成了教師的“一言堂”,教與學(xué)不能銜接起來。有時教師為了趕進(jìn)度,講授法成了唯一的教學(xué)方法,師生之間缺乏足夠的交流和溝通,學(xué)生沒有有效、實用的學(xué)習(xí)輔助途徑,也間接影響著學(xué)生的學(xué)習(xí)興趣和學(xué)習(xí)效果。
二、程序設(shè)計能力認(rèn)識
程序是軟件的本體,程序設(shè)計(Programming)是指設(shè)計、編制、調(diào)試程序的方法和過程。它應(yīng)排除軟件開發(fā)中的工程與管理因素,主要指軟件開發(fā)過程中的技術(shù)因素,尤其是計算機技術(shù)因素。
根據(jù)調(diào)查分析,合格程序員必須具有:1.扎實的專業(yè)基礎(chǔ)知識;2.很強的綜合分析和解決問題的能力;3.熟練的編程調(diào)試能力;4.創(chuàng)新能力;5.團隊合作能力;6.持續(xù)的自學(xué)能力;7.強烈的好奇心;8.較高的英語水平和軟件工程的實踐能力等。
應(yīng)看到,程序設(shè)計能力,并非完全等價于程序員所應(yīng)具備的專業(yè)素質(zhì),它還包括其他一些內(nèi)容,如:1.理解問題,根據(jù)已知條件,找出求解該問題的數(shù)學(xué)方法或建立相應(yīng)的數(shù)學(xué)模型;2.歸納程序的基本功能;3.設(shè)計數(shù)據(jù)結(jié)構(gòu)和算法;4.用程序設(shè)計語言實現(xiàn)算法描述;5.編譯與調(diào)試;6.測試程序,保證程序正常運行。
綜上所述,可以將程序設(shè)計能力定義為:依據(jù)程序設(shè)計思想與觀念,應(yīng)用程序設(shè)計語言,采用相應(yīng)程序開發(fā)技術(shù)和環(huán)境,進(jìn)行程序設(shè)計并達(dá)到預(yù)計結(jié)果的程度。
三、要點分析
基于對程序設(shè)計教學(xué)思想、程序設(shè)計能力的認(rèn)識,為使學(xué)生充分掌握程序設(shè)計的思想和方法,有效實現(xiàn)程序設(shè)計課程教學(xué)目標(biāo),我認(rèn)為程序設(shè)計教學(xué)還應(yīng)注意并強調(diào)以下幾個基本的教學(xué)任務(wù)和要求。
(一)應(yīng)著重培養(yǎng)學(xué)生的結(jié)構(gòu)化程序設(shè)計的基本觀念。結(jié)構(gòu)化程序設(shè)計的基本思想是采用“自頂向下,逐步求精”的程序設(shè)計方法和“單入口單出口”的控制結(jié)構(gòu),它是程序設(shè)計的基本原理之一。貫徹課程始終、通過具體實例潛移默化地培養(yǎng)這一思想,比在軟件工程中空洞的說教,更容易被學(xué)生理解和接收。
(二)為了使初學(xué)者能盡快地掌握計算機知識,進(jìn)入計算機的應(yīng)用領(lǐng)域,在課程講授過程中,要特別注意培養(yǎng)學(xué)生的學(xué)習(xí)興趣。學(xué)習(xí)興趣就是學(xué)生在心理上對學(xué)習(xí)活動產(chǎn)生愛好、追求和向往的傾向,是推動學(xué)生積極主動學(xué)習(xí)的直接動力。學(xué)習(xí)興趣直接關(guān)系到教學(xué)效果的好壞。為提高學(xué)生的學(xué)習(xí)興趣,筆者歸納出6個辦法:1.通過演示程序突出程序語言的實用性;2.通過簡單的編程練習(xí)突出語言的易學(xué)性;3.運用恰當(dāng)?shù)念惐仁箯?fù)雜問題形象化、簡單化;4.做到一題多解;5.要善于舉一反三;6.通過解決實際問題使學(xué)生樂學(xué)。
中圖分類號:TP311.138-4 文獻(xiàn)標(biāo)識碼:A文章編號:1007-9599(2012)05-0000-02
在我國,高職教育是高等教育中的重要組成部分,占據(jù)著相當(dāng)大的比例,在高職院校的計算機專業(yè)課程中,程序設(shè)計語言教學(xué)是最為重要的教學(xué)內(nèi)容之一,程序設(shè)計語言的掌握情況直接關(guān)系著計算機相關(guān)內(nèi)容的后續(xù)學(xué)習(xí)情況,對學(xué)生畢業(yè)后從事計算機行業(yè)也是很重要的。
一、計算機程序設(shè)計概述
計算機程序設(shè)計是指運用某種計算機的語言,對某一特定功能程序進(jìn)行編制完成的過程,它涉及到開發(fā)、描述以及有效實現(xiàn)求解的相關(guān)活動,是運用計算機來實現(xiàn)自動化的很重要手段,計算機這門學(xué)科主要是研究信息描述及變換算法的過程,包括計算機的理論、設(shè)計、分析、效率、實現(xiàn)及應(yīng)用,可以說與算法相關(guān)的基本問題都可以圍繞著什么可以被自動化,怎么自動化,而這個實現(xiàn)自動化的過程即是計算機的程序設(shè)計過程。程序設(shè)計語言是人類進(jìn)行計算機的最基本工具,更是學(xué)習(xí)計算機基礎(chǔ)應(yīng)用知識最基本的課程,通過計算機程序設(shè)計語言的學(xué)習(xí),學(xué)生能夠掌握與之相關(guān)的基本概念、方法和基本知識,從而形成良好的程序設(shè)計風(fēng)格,得到基本的程序設(shè)計練習(xí),能夠編寫簡單的程序解決實際的問題,在計算機程序設(shè)計語言教學(xué)中,需要學(xué)生具有閱讀判斷、抽象表達(dá)、工具利用、分析思考及綜合創(chuàng)造等技能,是抽象、理論、設(shè)計及應(yīng)用等綜合能力的培養(yǎng)過程,因此,作為專門輸送高技能的高等職業(yè)院校來說,程序設(shè)計語言教學(xué)是計算機教學(xué)的重要內(nèi)容,對培養(yǎng)計算機專業(yè)人才是非常重要的。
二、高職計算機程序設(shè)計語言教學(xué)現(xiàn)狀
在高職計算機教學(xué)中,我們經(jīng)??梢钥吹竭@樣的情況,很多學(xué)生在進(jìn)行計算機操作的課程時,他們的接受能力是很強的,但是在進(jìn)行程序設(shè)計語言教學(xué)時,很多學(xué)生就產(chǎn)生了膽怯的心理,不能像學(xué)習(xí)其他學(xué)科一樣,進(jìn)行充分地學(xué)習(xí)了,直到離開學(xué)校時,在這門課程上都還留有遺憾的,對于高職院校的計算機學(xué)生來說,他們具有一定的計算機理論基礎(chǔ),又有較強的計算機實際操作能力,基本上是一畢業(yè)就能夠找到相應(yīng)的工作,具有著明顯的競爭優(yōu)勢,但這需要高職學(xué)生既要有硬件技術(shù),又具有程序設(shè)計語言能力,這也是計算機專業(yè)學(xué)習(xí)者所必須要有的技術(shù)素質(zhì),硬件技術(shù)是計算機掌握的基礎(chǔ),而程序設(shè)計語言的掌握能夠?qū)τ布M(jìn)行充分的利用,它們之間是相互關(guān)聯(lián),不可缺少的,哪一方面的缺失都會造成計算機學(xué)科學(xué)習(xí)的不完善,在高職學(xué)生學(xué)習(xí)計算機程序設(shè)計語言時,已經(jīng)學(xué)習(xí)了多年的英語,以及高等數(shù)學(xué)和計算機基礎(chǔ)知識的學(xué)習(xí),他們已經(jīng)具備了學(xué)習(xí)計算機程序設(shè)計語言的基本條件,要想讓高職學(xué)生克服心理問題,發(fā)揮自身的優(yōu)勢,有效地掌握這門計算機程序設(shè)計語言課程,對于這門課程教師來說,是一個最為關(guān)鍵的問題,需要教師結(jié)合高職學(xué)生及這門課程的特點進(jìn)行不斷地探索與思考。
三、對高職計算機程序設(shè)計語言教學(xué)方法的探索與思考
(一)任務(wù)驅(qū)動教學(xué)法
任務(wù)驅(qū)動教學(xué)是探究教學(xué)模式中的一種教學(xué)方法,要是通過學(xué)生的角度來看,它也是一種學(xué)習(xí)方法,這種教學(xué)方法又可稱為單刀直入法,其特征是:在教學(xué)中,教師的教和學(xué)生的學(xué)都在圍繞著一個共同的目標(biāo),是根據(jù)幾項任務(wù)來完成的,這種教學(xué)方法能夠培養(yǎng)學(xué)生的獨立分析問題的能力、自學(xué)的能力及解決問題的能力,是非常適合計算機程序設(shè)計語言教學(xué)的。像教師在講授VB語言中的簡單計算器的教學(xué)時,教師就可以單刀直入地給學(xué)生布置任務(wù)了,設(shè)計一個和WindowsXP附件中一樣的簡單計算器,可以圍繞著這個簡單的計算器再給學(xué)生進(jìn)行分配任務(wù),如計算器的界面都包括哪些控件,每個控件的功能,學(xué)生通過仔細(xì)的分析,很快就可以設(shè)計出相關(guān)的界面,并且知道每個控件的功能,之后教師還可以提出新的任務(wù),帶小數(shù)點數(shù)據(jù)的輸入形式,又是怎么進(jìn)行控制的,學(xué)生經(jīng)過思考之后,可以知道通過布爾型小數(shù)點的設(shè)置標(biāo)志flag對數(shù)據(jù)輸入的小數(shù)點進(jìn)行保證,這樣通過幾次任務(wù)的布置,學(xué)生就能夠設(shè)計出符合相關(guān)要求的計算器了。這種方法減少高職學(xué)生的自卑心理和為難害怕的情緒,因為教師通過任務(wù)教學(xué)法,可以將計算機程序設(shè)計語言中的復(fù)雜任務(wù)分解為簡單子任務(wù),可以讓學(xué)生完成每個簡單子任務(wù),再組合為一個整體,從而讓學(xué)生克服自卑的心理,產(chǎn)生一種成就感。需要注意的問題是,首先要明確計算機程序設(shè)計語言教學(xué)中,每個階段的任務(wù),對每個問題要精心的設(shè)計并創(chuàng)造相應(yīng)的情景,愛因斯坦就曾說過,提出問題要比解決問題重要得多了。教師要明確地向?qū)W生提出這個課程,這個階段,單元及這個課時的基本學(xué)習(xí)任務(wù),要讓學(xué)生帶著任務(wù)去學(xué)習(xí)和思考,在上機實踐前,教師要讓學(xué)生自己去查閱資料及研究,并在上機的過程中及時地給予幫助與指導(dǎo),這樣才能起到事半功倍的效果。其次是要進(jìn)行多種教學(xué)方法的教學(xué),驅(qū)動任務(wù)教學(xué)法并不是指僅能運用這種教學(xué)方法,而是根據(jù)這種教學(xué)方法的優(yōu)點,結(jié)合啟發(fā)式、雙向式、多媒體等形式進(jìn)行教學(xué),不要死板的固定于一種教學(xué)方法上,然后是在教學(xué)過程中要注意學(xué)生自學(xué)能力的培養(yǎng)。
(二)案例教學(xué)法
案例教學(xué)最早是被應(yīng)用在醫(yī)學(xué)、法律及工商管理的教學(xué)領(lǐng)域中,是實踐教學(xué)的重要教學(xué)方法,這種教學(xué)法在我國教育領(lǐng)域應(yīng)用的要稍晚些,但現(xiàn)在這種教學(xué)方法已被廣泛的應(yīng)用到教學(xué)中,對于計算機程序設(shè)計語言教學(xué)是很實用的一種教學(xué)方法,在教學(xué)中,教師可以通過小型應(yīng)用程序的描述,引導(dǎo)學(xué)生對這個程序進(jìn)行討論,并在這個討論中掌握計算機程序設(shè)計的語法知識、編程思想及編程技巧的教學(xué)方法,這種教學(xué)方法可以使教師和學(xué)生擁有更多的交流空間,充分地體現(xiàn)教學(xué)中的要踢人為本的教學(xué)。像在教Java程序設(shè)計語言教學(xué)中的GUI的程序設(shè)計時,由于Java前期的學(xué)習(xí)中是不帶界面的基本語言知識的學(xué)習(xí),在進(jìn)行GUI教學(xué)時,選擇帶有界面的應(yīng)用程序是很重要的,選擇適當(dāng)?shù)陌咐M(jìn)行教學(xué),可以讓學(xué)生在應(yīng)用程序中,既可以了解到基本控件和高級控件的編程、循環(huán)及分支等,還實現(xiàn)排序算法,這樣既學(xué)習(xí)了GUI編程又重新復(fù)習(xí)了Java的語法知識,從而起到了良好的教學(xué)效果。這種教學(xué)方法的優(yōu)點是通過案例對計算機程序進(jìn)行描述,在這中間會遇到一個或多個的問題,而同時它又包含了基本的解決方法,能夠有效的培養(yǎng)學(xué)生的實際解決問題的能力和創(chuàng)造的能力,不僅可以習(xí)得固定的原理、基本語法知識,還能掌握獲得知識的方法,實際上這是種做中學(xué)的教學(xué)方法。這種教學(xué)方法中所要注意的是,在進(jìn)行案例教學(xué)時,要考慮案例的現(xiàn)實性、高職學(xué)生的自身特點以及他們已掌握知識的情況等,還要注意案例的熟悉度、理解及掌握程度,同時還要考慮到案例所展現(xiàn)的未來性,這對于高職計算機學(xué)生的今后學(xué)習(xí)具有很大的指導(dǎo)意義。
總結(jié):
在高職計算機程序設(shè)計語言教學(xué)中,教師要結(jié)合學(xué)生的實際情況,運用多種教學(xué)方法進(jìn)行教學(xué),沒有必要固定在一種教學(xué)方法上,并不是說某種教學(xué)方法有很多優(yōu)點,就僅用一種教學(xué)方法進(jìn)行教學(xué),這是不可取的,而且無論運用哪種教學(xué)都要發(fā)揮學(xué)生的主體性,激發(fā)學(xué)生學(xué)習(xí)計算機程序設(shè)計語言的興趣為主。
參考文獻(xiàn):
所謂適當(dāng)?shù)摹叭蝿?wù)”,是建立在對學(xué)生的了解之上的,讓學(xué)生通過適當(dāng)?shù)呐δ茌^好地完成,在完成任務(wù)的過程中,學(xué)會學(xué)習(xí)。在職業(yè)中學(xué)教學(xué)中,程序語言設(shè)計相對較難,對學(xué)生的思維訓(xùn)練也是多方面的,相對于其他學(xué)科也有其獨特之處。如果采用傳統(tǒng)的教學(xué)方法,簡單地按照從易到難,從簡單到復(fù)雜的順序循序漸進(jìn)地進(jìn)行教學(xué),學(xué)生處在被動的學(xué)習(xí)狀態(tài)中,容易感到厭倦。采用任務(wù)驅(qū)動教學(xué)法,有利于培養(yǎng)學(xué)生自主學(xué)習(xí)、合作精神和探究能力,有利于培養(yǎng)學(xué)生的信息素養(yǎng)和綜合素質(zhì)。
根據(jù)學(xué)生的現(xiàn)狀,本人把任務(wù)設(shè)計成幾個有一定聯(lián)系的幾個任務(wù)。按進(jìn)度分別提出:請你給學(xué)生編寫一個加法練習(xí)程序;請你給學(xué)生編寫一個加法練習(xí)程序,正確的顯示“OK”,錯誤的顯示“wrong”;請你給學(xué)生編寫一個加法練習(xí)程序,每套10道題,每題正確的加10分,錯誤的不給分,并計算總分等。
當(dāng)?shù)谝粋€任務(wù)提出時,學(xué)生都覺得很簡單,但無從下手。本人圍繞這個問題先開辟“有意義接受學(xué)習(xí)空間”,進(jìn)行必要的教學(xué),學(xué)生的學(xué)習(xí)也顯得特別認(rèn)真。
二、運用任務(wù)驅(qū)動教學(xué)法于程序設(shè)計語言教學(xué),在形式上是:提出任務(wù)師生共同分析完成任務(wù)的方法和步驟適當(dāng)講解或自學(xué)或協(xié)作學(xué)習(xí)完成任務(wù)實踐交流或歸納。
在程序設(shè)計語言教學(xué)中,傳統(tǒng)的教學(xué)形式是:語句格式功能介紹舉例解釋鞏固型獨立練習(xí)小結(jié)評講上機練習(xí)。在這個過程中,學(xué)生的學(xué)習(xí)基本上是被動的。采用任務(wù)驅(qū)動教學(xué)法,在課堂教學(xué)中,首先提出一個需要完成的具體任務(wù),與學(xué)生共同分析解決該問題所需的知識,方法和步驟,有時先開辟有意義接受學(xué)習(xí)空間,圍繞具體任務(wù)進(jìn)行適量的概念教學(xué)和舉例講解,或開辟自主學(xué)習(xí)空間以及協(xié)作學(xué)習(xí)空間,學(xué)生來完成任務(wù),可以獨立完成,也可以合作完成。目的是的通過完成任務(wù),掌握學(xué)習(xí)內(nèi)容,學(xué)會學(xué)習(xí),培養(yǎng)綜合能力。在這個過程中,教師參與探索和指導(dǎo),引導(dǎo)學(xué)生掌握教學(xué)內(nèi)容,適時在班級交流,發(fā)現(xiàn)新思路,推廣新思路,鼓勵創(chuàng)新。教師進(jìn)行比較、評講、歸納,或由計算機執(zhí)行,學(xué)生從中得出結(jié)論,引導(dǎo)交流,共同進(jìn)步。如:在讀語句和寫語句教學(xué)時,在教學(xué)前先提出一個任務(wù),即:“請你給學(xué)生編寫一個加法練習(xí)程序”。圍繞這個任務(wù),討論分析需要解決的問題,程序需要提供的功能,需要通過那些途徑來實現(xiàn):出題顯示要用一個寫語句;出題要一個隨機函數(shù);回答問題要用一個讀語句;答案顯示也要一個寫語句。
然后介紹讀語句和寫語句的格式及其功能、介紹隨機函數(shù)。學(xué)生獨立閱讀課本上的例題;學(xué)生獨立或合作完成任務(wù)。教師或查看學(xué)生在電腦上的執(zhí)行情況,或參與一些學(xué)生的討論或探討,發(fā)現(xiàn)問題,個別問題的個別回答,帶有普遍性問題的在全班回答或講解。
就在完成本任務(wù)的過程中,有的同學(xué)提出了正誤判斷問題,一次練習(xí)做多個題目等問題。由學(xué)生導(dǎo)引出了后續(xù)問題。
采用任務(wù)驅(qū)動教學(xué)法進(jìn)行教學(xué),教師的教和學(xué)生的學(xué)都是圍繞如何完成一個具體的任務(wù)進(jìn)行的。教師教學(xué)思路清晰,學(xué)生學(xué)習(xí)目的明確,學(xué)習(xí)變成了學(xué)生的主動行為,在用的需求下學(xué),學(xué)以致用,更容易掌握學(xué)習(xí)內(nèi)容。比如在前面提到的條件語句的教學(xué),按任務(wù)驅(qū)動教學(xué)法,不是孤立地介紹有關(guān)概念,而是將同學(xué)們所關(guān)心的正誤判別問題加以解決。這樣教學(xué),提高學(xué)生的主動參與意識。
三、運用任務(wù)驅(qū)動教學(xué)法于程序設(shè)計語言教學(xué),在教學(xué)內(nèi)涵上是符合探究式教學(xué)模式的。
從學(xué)習(xí)者的角度說,任務(wù)驅(qū)動教學(xué)法是一種學(xué)習(xí)方法,適用于學(xué)習(xí)技能型知識,尤其適用于學(xué)習(xí)信息技術(shù)應(yīng)用方面的知識和技能,也能適合程序設(shè)計語言的學(xué)習(xí)。
任務(wù)驅(qū)動教學(xué)法使學(xué)習(xí)目標(biāo)十分明確。在某個學(xué)習(xí)階段,緊緊圍繞這一既定的目標(biāo),學(xué)習(xí)和運用相關(guān)的知識和方法。一個“任務(wù)”完成了,一個目標(biāo)達(dá)到了,會產(chǎn)生新的任務(wù),新的目標(biāo)。例如,在上述第一個任務(wù)進(jìn)行時,就有學(xué)生提出了新的問題。隨著一個個任務(wù)的完成,初學(xué)者將逐步消除對編程的畏懼,還不斷地體會到成功的喜悅。任務(wù)驅(qū)動教學(xué)法,符合計算機系統(tǒng)的層次性和實用性,提供了由表及里、逐層深入、逐步求精的學(xué)習(xí)途徑,便于學(xué)生由淺入深、循序漸進(jìn)地學(xué)好有關(guān)的知識和技能;提供了三個學(xué)習(xí)空間,也鼓勵了學(xué)生的學(xué)習(xí)主動性。而且,采用這種方法,伴隨著學(xué)生的是一個跟著一個的成就感。
從教師的角度說,任務(wù)驅(qū)動教學(xué)法是一種建立在建構(gòu)主義教學(xué)理論基礎(chǔ)上的教學(xué)方法,符合既發(fā)揮教師的主導(dǎo)作用,又體現(xiàn)學(xué)生的認(rèn)知主體作用,有利于培養(yǎng)學(xué)生的自學(xué)能力和相對獨立地分析問題、解決問題的能力,以及探究精神、合作精神和團隊精神。在程序設(shè)計語言教學(xué)中可以采用這種教學(xué)模式。
《c語言程序設(shè)計》是計算機相關(guān)專業(yè)及其他理工科專業(yè)的基礎(chǔ)課,它是一門實踐性很強的計算機基礎(chǔ)課程。教學(xué)目標(biāo)是通過課程的學(xué)習(xí),學(xué)生不僅要掌握C語言程序設(shè)計的語言知識、編程技術(shù)和基本算法,更重要的是在實踐中逐步掌握程序設(shè)計的思想和方法,培養(yǎng)學(xué)生問題求解和程序語言的應(yīng)用能力,為后續(xù)專業(yè)課程的學(xué)習(xí)打好基礎(chǔ)。
由上述的教學(xué)目標(biāo)我們知道C語言程序設(shè)計這門課程中教師不僅講授C語言語法知識,還要幫助學(xué)生掌握程序設(shè)計的能力。但目前c語言程序設(shè)計課程教學(xué)中只注重知識講解,而忽略了程序設(shè)計思維的培養(yǎng),導(dǎo)致學(xué)生只會看不會寫。鑒于此,本文提出基于“計算思維”培養(yǎng)程序設(shè)計能力的教學(xué)方法,并將其運用于《c語言程序設(shè)計》課程教學(xué)實踐。
1C語言教學(xué)存在的問題
對于程序設(shè)計的初學(xué)者,編寫程序包含至少兩個方面的要素:1)程序設(shè)計語言的語法知識;2)計算思維,即算法,也就是用計算機的思維把客觀世界的問題分解成計算機所能處理的步驟,并描述出來。
目前大學(xué)《c語言程序設(shè)計》教學(xué)普遍存在的關(guān)鍵問題是:重語法,輕算法,注重傳授知識,忽略程序設(shè)計思維培養(yǎng)。大多數(shù)教師強調(diào)C語言語法知識的講授,造成學(xué)生死記硬背C語言的語法知識,卻不會運用,導(dǎo)致理論與實踐相分離,使學(xué)生誤以為C語言是枯燥的理論課程,從而產(chǎn)生厭煩情緒,失去C語言課程學(xué)習(xí)的興趣和動力;部分教師并沒有在課堂上帶領(lǐng)學(xué)生一起完成程序從無到有的編寫過程,學(xué)生不能形成程序設(shè)計思維,導(dǎo)致學(xué)生產(chǎn)生這樣的疑問:“程序為什么要這樣寫?”,大部分學(xué)生處于“看得懂別人寫的程序,但自己不會寫程序”的狀態(tài)。
著名國內(nèi)計算機教育專家譚浩強教授指出算法是程序的靈魂,在他所編寫的《c程序設(shè)計》一書中,“算法”這一章里用了幾種方法闡述如何描述算法,這其實包含了把客觀世界中問題的解決方法轉(zhuǎn)換成為用計算機思維解決問題這一重要思想!筆者與同行交流討論時發(fā)現(xiàn),竟然有部分老師跳過“算法”這一章節(jié),這是典型的重語法,輕算法,只注重傳授知識,而忽略程序設(shè)計思維培養(yǎng)。
2以計算思維培養(yǎng)程序設(shè)計能力教學(xué)法的運用
據(jù)筆者多年從事計算機程序設(shè)計語言教學(xué)工作經(jīng)驗及教學(xué)過程中所做的調(diào)查了解到這樣一種情況:許多學(xué)生面對某個編程題,不知道如何下手,并非學(xué)生不會用所學(xué)的數(shù)理化知識解決該問題,只是不知道如何用計算機編程來解決問題。這種情況的根本原因就是學(xué)生不知道如何把解決該問題的方法轉(zhuǎn)換成計算機思維表示出來。進(jìn)一步說就是沒有形成計算思維。
計算思維的含義是運用計算機科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、系統(tǒng)設(shè)計以及人類行為理解等涵蓋計算機科學(xué)之廣度的一系列思維活動。其本質(zhì)內(nèi)容體現(xiàn)了抽象、約簡、規(guī)劃、關(guān)注點分離、遞歸、優(yōu)化、分解等思維特征-引。顯然如果學(xué)生不明白計算思維,不理解計算機是如何解決問題的,那么他一定不會編寫程序。因此想要培養(yǎng)學(xué)生程序設(shè)計能力那么必須使學(xué)生養(yǎng)成計算思維,使用計算思維去把客觀問題的解決方法轉(zhuǎn)換成計算機所能處理的步驟(即算法)描述出來,最后再將算法轉(zhuǎn)換成程序語言代碼,即編寫出程序。
2.1通過案例驅(qū)動逐步建立計算思維
對于程序設(shè)計初學(xué)者,在開始時先通過案例讓學(xué)生逐步了解計算思維,讓學(xué)生知道計算機是怎樣來解決問題的,更具體的來說是讓學(xué)生知道計算機是通過什么樣基本步驟的組合或者重復(fù)來解決問題的,從而學(xué)生知道要讓計算機來解決問題,就要把問題分解成計算機所能處理的基本步驟,計算機通過重復(fù)執(zhí)行這些基本步驟即可解決問題。通過反復(fù)的練習(xí)與加強讓學(xué)生逐步建立計算思維,掌握分析問題和用計算機的思維方式來解決問題的能力。
下面通過案例w現(xiàn)計算思維。
高校的C族語言教學(xué)總是按照先學(xué)C語言,再學(xué)C++的順序進(jìn)行,這種學(xué)習(xí)順序隨著C++標(biāo)準(zhǔn)的不斷升級改革后變得越來越不適用。早期的C++屬于多面性語言,即可以像C一樣進(jìn)行模塊化的面向過程的編程設(shè)計,也可以像Java一樣進(jìn)行抽象的面向?qū)ο蟪绦蛟O(shè)計。那時的教學(xué)者考慮的是學(xué)生應(yīng)當(dāng)從較為便于理解的面向過程的編程思路入門學(xué)習(xí)C語言編程,然后在熟練了面向過程的編程方式后再從C語言延伸到C++,轉(zhuǎn)而學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計。可是隨著面向?qū)ο蟮某绦蛟O(shè)計在應(yīng)用市場上占領(lǐng)了絕對的主導(dǎo)地位后,再讓學(xué)生從面向過程著手就等于是浪費學(xué)習(xí)時間。加上C++和C兩門語言的初級語法思想是完全一致的,開設(shè)兩門課程浪費了學(xué)時,也耽誤后續(xù)更重要的核心課程的學(xué)習(xí)。
1程序設(shè)計語言C與C++的比較
1.1C與C++的共性。一般簡要的介紹是把C++當(dāng)作C的加強版,這種認(rèn)知當(dāng)然是錯誤的,C++語言的設(shè)計者在設(shè)計之初為了保障自家語言會受到開發(fā)者的關(guān)注,所以兼容了的C的語法,這就自然使得C++可以使用C的編程方式進(jìn)行程序設(shè)計,所以也導(dǎo)致了很多人對這兩種語言的關(guān)系產(chǎn)生了錯誤的認(rèn)知。同時由于C語言本身設(shè)定上的優(yōu)越性,所以C++在進(jìn)行自我定義的時候也沿用了C語言很多優(yōu)良的性質(zhì)?;A(chǔ)數(shù)據(jù)結(jié)構(gòu)一致,C與C++的基礎(chǔ)數(shù)據(jù)類型都是以變量和常量作為基本屬性劃分,類型上有字符型、整型、長整型、單精度浮點型和雙精度浮點型,不過C++額外增設(shè)了布爾型。復(fù)合型數(shù)據(jù)結(jié)構(gòu)上也都同時具有數(shù)組、多維數(shù)組、結(jié)構(gòu)體、枚舉類型和共同體,但是C++增設(shè)了字符串類型以替代C語言中的字符數(shù)組,功能上更加強大,也更加便捷。在語法方面,聲明、賦值、循環(huán)、選擇的結(jié)構(gòu)和實現(xiàn)都是一致的,并且C++雖然提倡使用類和對象的概念去設(shè)計程序結(jié)構(gòu),可也同樣支持函數(shù)體結(jié)構(gòu)的程序設(shè)計結(jié)構(gòu)。并且C語言中函數(shù)的賦值都是間接調(diào)用,在使用C語言函數(shù)時總是會在指針上出現(xiàn)各種紕漏,但是C++的函數(shù)體可以使用引用參數(shù),這就使得C++的函數(shù)體比之C的更加好用??偟恼f來就是,C++標(biāo)準(zhǔn)下用戶可以完全使用C語法進(jìn)行編程而不會出現(xiàn)任何BUG,同時C++自身的優(yōu)越設(shè)定和標(biāo)準(zhǔn)使得其設(shè)計能力比C要強大數(shù)倍,是目前市場上大型程序開發(fā)的首選語言。
1.2C與C++的不同。上一節(jié)介紹了C++和C的基礎(chǔ)語法上的區(qū)別,這些區(qū)別都是C++的作者在C的基礎(chǔ)之上修訂而來的結(jié)果,是為了讓C++標(biāo)準(zhǔn)下得面向過程的程序設(shè)計比之單純的C更加便捷方便。但是C++的誕生伊始,就是一門向上使用面對對象的程序設(shè)計思想的高級編程語言。它的封裝性、繼承性、多態(tài)性和對象唯一性才是C++成為強大高級語言的重要原因,這些特性都是C語言不可能擁有的。所以C能夠?qū)崿F(xiàn)的程序,C++能夠?qū)崿F(xiàn)并且實現(xiàn)的更為方便,C不能實現(xiàn)的程序,C++同樣可以實現(xiàn)。
1.3C++的特色。承接上一節(jié),C++和C之間最大的不同,也是C++自身最值得夸耀的特性,就是面向?qū)ο蟪绦蛟O(shè)計思想。這種思想使得C++語言設(shè)計出來的程序,變成了類和對象的有機結(jié)合,這種結(jié)合的代碼比之面向過程的函數(shù)體架構(gòu)的代碼更加易讀,共同開發(fā)起來容易上手,后續(xù)的維護(hù)者也不用費更多的腦筋去理解前人的代碼含義。而類和對象的設(shè)計思路,使得開發(fā)者合作時相互之間的工作變的更為獨立,雙方之間只需要知道對方所寫的類實現(xiàn)的功能和包含的數(shù)據(jù)就行。這種特性我們稱之為良好的封裝性,開發(fā)者之間不需要去知道對方的代碼是如何實現(xiàn),甚至在此之上還可以保證良好的代碼健壯性。因為類的引入,更先進(jìn)的作用域機制也被引入進(jìn)來,類的書寫者往往會將自己類中的數(shù)據(jù)進(jìn)行嚴(yán)格的作用域限定,防止其他合作者擅自去修改和使用自己類中的數(shù)據(jù)。合作者想要知道類中的數(shù)據(jù)或者使用類中的數(shù)據(jù),只能通過類的書寫者定義的帶有檢查機制的方法才行。這樣會使得很多人合作開發(fā)的大型項目的穩(wěn)定性和安全性比之用C語言開發(fā)時再上一個臺階。同時類的概念中還有一個先進(jìn)的設(shè)定就是繼承性,并且由這個繼承性還延伸出了接口的概念。有了可以繼承的接口和類,那么開發(fā)者在對程序進(jìn)行迭代的瀑布開發(fā)流程時,就可以很好的使用自己曾經(jīng)開發(fā)的源代碼,或者借用其他項目的源代碼,因為只要學(xué)會科學(xué)的使用繼承機制,就不僅僅是節(jié)約程序員的代碼時間,也減少了程序員在回顧曾經(jīng)代碼時發(fā)生的錯誤和歧義。而與繼承機制配合使用的是多態(tài)性,曾經(jīng)C語言中定義的函數(shù),其靈活度非常差,特定的函數(shù)只能滿足特定程序定義的需求,想要重用曾經(jīng)的源代碼是幾乎不可能的事情。我們剛才提到的繼承機制使得C++開發(fā)者復(fù)用源代碼成為了一種習(xí)慣,但是復(fù)用時不可避免的修改問題又?jǐn)[到了臺面上,多態(tài)機制順應(yīng)而生了。多態(tài)機制使得類不僅可以繼承其他類,將父類的數(shù)據(jù)和方法都在本類體中自如的使用,同時還可以用本類中新的定義和代碼去覆蓋父類中的數(shù)據(jù)定義和方法。這就讓程序員變的更加自由,想用父類的數(shù)據(jù)和方法時就去繼承,但是不想全部使用時就加上多態(tài)機制去覆蓋。這樣代碼之間的重復(fù)利用率變得十分客觀,節(jié)約了大量的開發(fā)時間和開發(fā)成本。
2程序設(shè)計語言C與C++開設(shè)建議
C++課程的內(nèi)容應(yīng)當(dāng)如下安排:第一部分,教授C++的基礎(chǔ)語法,讓學(xué)生可以編寫出在DOS命令行下輸入輸出的程序,了解編程的基本概念和思想。并且這時應(yīng)當(dāng)同時進(jìn)行C和C++的雙向語法教學(xué),為日后學(xué)生進(jìn)入高年級后的方向選擇打下基礎(chǔ)。此部分使用半個學(xué)期最為適宜,并且此時并不灌輸學(xué)生何為面向?qū)ο蠛螢槊嫦蜻^程,而主在讓學(xué)生使用基礎(chǔ)語法進(jìn)行最基本的編程探索。第二部分,在學(xué)生有了基礎(chǔ)編程知識后,將數(shù)據(jù)結(jié)構(gòu)的內(nèi)容放入課程中去,用半學(xué)期的時間教授學(xué)生用C++實現(xiàn)的各類常見數(shù)據(jù)結(jié)構(gòu)。并且結(jié)合實際開發(fā)項目中的代碼作為閱讀補充,讓學(xué)生明白數(shù)據(jù)結(jié)構(gòu)的知識對程序開發(fā)的意義,然后將簡化后的小項目作為課堂的主要內(nèi)容,用實際的代碼讓學(xué)生去理解那些枯燥的數(shù)學(xué)定理和概念。而且在實現(xiàn)數(shù)據(jù)結(jié)構(gòu)的過程中,必然會面對一些更為高級的C++語法和概念??偟膩碚f,用大一上的一個學(xué)期讓學(xué)生對于基礎(chǔ)編程有了良好的認(rèn)知和深入,是十分值得和有效的。第三部分,在學(xué)生有了數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)和C++的基本語法掌握后,應(yīng)當(dāng)面對一些實際的開發(fā)項目和問題。當(dāng)然實際的問題還是需要老師進(jìn)行簡化,其主要目的是讓學(xué)生掌握C++的高級特性和實際軟件開發(fā)的過程與思路,并且想學(xué)生傳授基礎(chǔ)的算法。這一部分較為困難,應(yīng)當(dāng)使用一個學(xué)期讓學(xué)生慢慢的掌握和熟悉。第四部分,在學(xué)生算是對C++語言和數(shù)據(jù)結(jié)構(gòu)與算法都有了基礎(chǔ)的入門后,再進(jìn)行課堂教學(xué)意義就不大了,應(yīng)當(dāng)再大二上學(xué)期開設(shè)一門課程設(shè)計實驗課,讓學(xué)生完成幾個難度從小到大的項目,循序漸進(jìn)的掌握基本的實際開發(fā)技巧和思維。
參考文獻(xiàn)
[1]羅莉.計算機程序設(shè)計的多應(yīng)用型開發(fā)與實現(xiàn)[J].產(chǎn)業(yè)與科技論壇,2015(14):54-55.
二、教學(xué)模式創(chuàng)新
為了培養(yǎng)面向工程應(yīng)用的C++程序設(shè)計人才,在知識、能力、應(yīng)用、創(chuàng)新等各方面全面培養(yǎng)大學(xué)生,本文提出“雙主互動為綱、兩個創(chuàng)新、兩個學(xué)習(xí)、兩個支持、四個課堂”的教學(xué)模式,使得學(xué)生能夠達(dá)到掌握理論知識和具備編程能力的工程應(yīng)用水平。教學(xué)模式創(chuàng)新的基本框架如圖1所示。
本課題組的教學(xué)模式采用雙主互動教學(xué)為綱,即基于師生互動的教師主導(dǎo)學(xué)習(xí)和學(xué)生自主學(xué)習(xí)。兩個創(chuàng)新是指對教學(xué)內(nèi)容和教學(xué)方法分別進(jìn)行創(chuàng)新。教學(xué)內(nèi)容創(chuàng)新是指教師對教學(xué)內(nèi)容進(jìn)行梳理分解,突出重點,并及時將新內(nèi)容、新科研成果、新概念、新技術(shù)等內(nèi)容補充進(jìn)來,改善課程知識結(jié)構(gòu),以適應(yīng)社會對計算機編程人才的需求。教學(xué)方法創(chuàng)新是指采用互動式、全方位的教學(xué)方法,進(jìn)行理論與實踐相結(jié)合、教學(xué)與科研相結(jié)合、課內(nèi)與課外相結(jié)合。兩個學(xué)習(xí)是指將學(xué)生分成多個小組進(jìn)行討論學(xué)習(xí)、對C++的開發(fā)環(huán)境進(jìn)行學(xué)習(xí),使得學(xué)生面向?qū)W以致用的培養(yǎng)環(huán)境。兩個支持是指教師要采用各種手段和方法對學(xué)生的學(xué)習(xí)進(jìn)行指導(dǎo)支持,包括面授支持、電話支持、e-mail和QQ等網(wǎng)絡(luò)支持。四個課堂是指理論教學(xué)課堂、上機實踐課堂、課程設(shè)計課堂和其它課余時間的課堂。
三、采用自然語言啟發(fā)式教學(xué)方法,提高學(xué)生理解能力
C++語言是一門計算機程序設(shè)計語言。C++語言教材從前到后系統(tǒng)性特別強,前后章節(jié)之間環(huán)環(huán)相扣,聯(lián)系緊密。由于面向?qū)ο蟮暮芏嘈碌母拍畋容^抽象,如果教師在教學(xué)中僅僅把教材上的語法知識照本宣科地講給學(xué)生聽,會導(dǎo)致下面大部分學(xué)生聽不懂,學(xué)生會很容易感到枯燥乏味和厭倦疲勞,從而產(chǎn)生排斥和厭學(xué)情緒。這種抵抗情緒一旦從開始就產(chǎn)生,則將影響后續(xù)整個學(xué)期的教學(xué)效果。由于從頭到尾都聽不懂,老師在課堂上提出的問題學(xué)生也無法進(jìn)行互動,這種灌輸式的教學(xué)方法效果非常差。而教師要根據(jù)課堂實際情況,采用互動式教學(xué)方法,培養(yǎng)學(xué)生的主動學(xué)習(xí)能力,才能得到良好的教學(xué)效果。
1.第一次課程教學(xué)中,明確C++語言課程的重要性
目前C++語言是大多數(shù)電子、信息、計算機相關(guān)專業(yè)的非常重要的程序設(shè)計課程,也是這些大學(xué)生后續(xù)專業(yè)課學(xué)習(xí)、畢業(yè)設(shè)計、以后上研究生或參加工作進(jìn)行計算機軟件和IT開發(fā)的主要編程語言,廣泛應(yīng)用于軟件設(shè)計和開發(fā)中。要讓大學(xué)生有危機意識,在大學(xué)生就業(yè)如此嚴(yán)峻的情況下,學(xué)好C++語言,能夠提高大學(xué)生以后在就業(yè)競爭中的籌碼。
2.講課過程中,對C++語言中的很多概念,結(jié)合自然語言進(jìn)行講解
C++語言作為一門計算機語言,它和人類的自然語言相比,既有區(qū)別,又有聯(lián)系。在講解一些關(guān)鍵概念時,采用一些淺顯的自然語言的例子,提高學(xué)生的理解能力。本文作者在講述一些關(guān)鍵概念時,將這些概念和自然語言結(jié)合進(jìn)行循序漸進(jìn)啟發(fā)式講解,激發(fā)學(xué)生的學(xué)習(xí)興趣,起到了非常好的效果。下面舉幾個例子。
(1)引用是C++語言中第一個新的概念。引用類似于自然語言中的別名或者綽號,是正名的別名,沒有正名就沒有別名。例如唐太宗就是李世民的引用。李世民是正名,唐太宗是別名。正名和別名屬于一個變量,共用同一片內(nèi)存空間。引用主要用作函數(shù)的參數(shù)傳遞,形實結(jié)合后不會產(chǎn)生臨時的變量,節(jié)省了內(nèi)存空間
(2)類和對象是C++語言區(qū)別于C語言中普通數(shù)據(jù)類型和變量的概念。類是具有相同屬性和行為的一組對象的集合,它為屬于這個類的所有對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和行為兩個主要部分。類和對象的關(guān)系就像模具和鑄件的關(guān)系一樣,類就相當(dāng)于模具,對象就相當(dāng)于鑄件。一個模具可以生產(chǎn)出成千上萬個鑄件。
(3)友元是C++語言中另一個新的概念。在數(shù)據(jù)共享與保護(hù)中,友元類似于自然語言中的朋友,但是友元和自然語言中的朋友既有聯(lián)系又有區(qū)別。人類的朋友關(guān)系通常是雙向的、可以傳遞的,但是C++中的友元關(guān)系是單向的、不能傳遞的。
3.引導(dǎo)學(xué)生合理安排課程的學(xué)習(xí)時間,培養(yǎng)學(xué)生的學(xué)習(xí)興趣
教師可以把學(xué)生分成若干個小組并布置一些編程作業(yè),培養(yǎng)他們的團隊協(xié)作意識,并共享小組編程成果,使得他們對自己編制的程序能夠運行和產(chǎn)生正確的結(jié)果具有自豪感,提高學(xué)生的學(xué)習(xí)興趣。由每一個小組各自給全班同學(xué)講授和演示自己的算法、編程思路、運行結(jié)果,既能夠鍛煉學(xué)生的編程與演講能力,又能夠在課堂中產(chǎn)生良好的互動。
4.講課過程中盡量做到幽默風(fēng)趣,靈活運用教學(xué)手段
教師在上課時,要做到風(fēng)趣幽默、聲音洪亮、帶人真誠、平易近人、知識淵博、通俗易懂,才能產(chǎn)生良好的教學(xué)效果。教師要靈活運用多種教學(xué)手段,盡量采用多媒體教學(xué),在PPT幻燈片中多做一些動畫效果,或者以Flas演示程序的動態(tài)運行過程。教師在C++語言教學(xué)過程中要根據(jù)課堂中學(xué)生的反應(yīng),隨機應(yīng)變,結(jié)合我國傳統(tǒng)文化與最新國內(nèi)外時事,讓學(xué)生潛移默化地學(xué)習(xí)一些難以理解的語法,則能達(dá)到事半功倍的效果。
四、對一些難以區(qū)分的概念采用表格形式進(jìn)行對比和總結(jié)
C++語言是在C語言基礎(chǔ)上發(fā)展起來的面向?qū)ο蟮母呒壵Z言,全面兼容C,但是又增加了很多新的較為復(fù)雜的語法知識點。對于一些學(xué)生難以理解和掌握的語法知識點,如果教師不幫助學(xué)生及時進(jìn)行總結(jié)和舉一反三,按照大學(xué)生初學(xué)的水平很難真正達(dá)到掌握和編程應(yīng)用的水平。因此,教師可以在講完某些知識點后采用表格的形式進(jìn)行對比和總結(jié)。例如,C++中引用和指針的區(qū)別總結(jié)表,普通指針、指向常量的指針和常指針三種指針?biāo)赶虻膬?nèi)容和指針本身能否改變對比總結(jié)表,對基類中具有不同訪問屬性的成員經(jīng)過不同方式繼承后在派生類中的訪問權(quán)限的比較和總結(jié)表,運算符重載時重載為類的成員函數(shù)和友元函數(shù)、前置、后置自增、自減運算符參數(shù)個數(shù)總結(jié)表。
五、熟悉Visual C++編程環(huán)境,具備圖形界面編程能力
目前,Visual C++ 6.0是比較經(jīng)典的開發(fā)環(huán)境。即使掌握了C++基礎(chǔ)知識,仍然難以高效掌握使用Visual C++的編譯器。為了培養(yǎng)實用型軟件開發(fā)人才,教師還應(yīng)該進(jìn)行Visual C++編譯器的入門教學(xué),培養(yǎng)學(xué)生掌握如下知識:
1.能夠使用Visual C++開發(fā)環(huán)境進(jìn)行界面設(shè)計;
2.能夠創(chuàng)建簡單的基于MFC的應(yīng)用程序;
3.能夠使用類、函數(shù)和消息映射機制;
4.能夠利用開發(fā)環(huán)境有效創(chuàng)建對話框、按鈕和菜單等資源。
當(dāng)然,對于Visual C++的學(xué)習(xí),一本好的教材也至關(guān)重要,現(xiàn)在的書店和圖書館各種Visual C++的學(xué)習(xí)教材五花八門,不泛互相抄襲、錯誤百出、誤人子弟的教材。如何從這些書籍的海洋中找到合適的入門教材,對于作為初學(xué)者的大學(xué)生來說有點難為他們。本文作者也買過不少Visual C++學(xué)習(xí)的書籍,其中不少書就沒有任何學(xué)習(xí)價值,既浪費錢,又浪費時間。作為教師,有責(zé)任和義務(wù)為學(xué)生挑選一本優(yōu)秀的、很容易入門的教材。本文作者和周圍很多從事Visual C++語言開發(fā)的朋友們都認(rèn)為Jon Bates主編的《實用Visual C++ 6.0教程》是一本非常不錯的教材。本人在每個學(xué)期給學(xué)生教學(xué)時,都會將這本教材的電子版發(fā)給同學(xué)們,而且從他們的反饋來說,效果確實不錯。
六、理論與實踐相結(jié)合,提高程序編程與調(diào)試能力
理論必須與實踐相結(jié)合,才能得到驗證,否則只是紙上談兵。作為一門計算機語言,C++程序設(shè)計的實踐性操作特點決定了上機實踐是課程學(xué)習(xí)中的重要環(huán)節(jié)。授之以魚,不如授之以漁。幫助學(xué)生編程序或調(diào)試程序,不如教會學(xué)生編程序或調(diào)試程序。因此,在教學(xué)中,教師可以從如下幾個方面進(jìn)行考慮:
1.上課時教師提前給同學(xué)們將上機編譯器環(huán)境、各種單步調(diào)試、斷點調(diào)試的方法傳授給學(xué)生,并布置好上機操作的題目,這樣學(xué)生在上機前就會有充分的準(zhǔn)備,做到有的放矢。
2.針對性地給學(xué)生布置一些具有趣味性的程序設(shè)計題目,讓學(xué)生通過查資料、上網(wǎng)和請教老師等多種方式編程調(diào)試,培養(yǎng)學(xué)生解決問題的能力,讓學(xué)生感到有成就感,提高學(xué)生的學(xué)習(xí)興趣。
3.對學(xué)生的上機存在的問題進(jìn)行總結(jié),對于一些普遍存在的問題要在課堂上統(tǒng)一進(jìn)行講解。并且也要對對自己的教學(xué)方法和教學(xué)模式進(jìn)行實時總結(jié)和改進(jìn),形成閉環(huán)。
按照本文作者研究的教學(xué)方法,經(jīng)過一個學(xué)期的理論教學(xué)與上機實踐學(xué)習(xí),在學(xué)期期末考試前的一個月對2010級計算機科學(xué)與技術(shù)專業(yè)1班全班52個學(xué)生劃分為13個小組布置了課程設(shè)計項目。每4人一個小組,由每個小組自己推選出1個組長、1個副組長和組員。組長負(fù)責(zé)課程設(shè)計項目的總體實施和分工,副組長協(xié)助,組員配合。課程設(shè)計的考核是每個小組交一份打印課程設(shè)計報告,包括項目題目、小組成員、程序設(shè)計結(jié)構(gòu)、流程圖、源程序、實驗運行結(jié)果。每個小組推舉一名學(xué)生在講臺上進(jìn)行10分鐘的PPT演講,老師和學(xué)生進(jìn)行5分鐘左右的提問??己顺煽兪怯衫蠋煾鶕?jù)課程設(shè)計報告、演講PPT內(nèi)容、回答問題效果等項目進(jìn)行打分。經(jīng)過一個學(xué)期的C++理論學(xué)習(xí)和一個月的課程設(shè)計,全部小組都按時遞交了課程設(shè)計報告和進(jìn)行了匯報演講,其中不少學(xué)生講的非常精彩,這對于他們也是一種不可多得的實戰(zhàn)鍛煉。學(xué)生普遍反映通過理論與實踐結(jié)合的學(xué)習(xí)開闊了視野,提高了工程應(yīng)用能力,培養(yǎng)了團隊協(xié)作能力,增強了學(xué)習(xí)信心,達(dá)到了前所未有的良好效果。
七、結(jié)論
本文作者根據(jù)多年來的教學(xué)體會,提出將滿堂灌式的教學(xué)方法轉(zhuǎn)變?yōu)橐詫W(xué)生為主體、以活躍式課堂為形式、以課程實際相結(jié)合的多模式創(chuàng)新教學(xué)方法,真正實現(xiàn)教師為主導(dǎo)、學(xué)生為主體的互動式高效教學(xué)創(chuàng)新模式。
參考文獻(xiàn):
[1]鄭莉. C++語言程序設(shè)計[M].北京:清華大學(xué)出版社,2010.
[2]錢能. C++程序設(shè)計教程[M].北京:清華大學(xué)出版社,2009.
[3]譚浩強. C++面向?qū)ο蟪绦蛟O(shè)計[M].北京:清華大學(xué)出版社,2006.
0引言
說起我國非計算機專業(yè)編程語言教學(xué)的走向,就不得不提到我國高等學(xué)校計算機基礎(chǔ)教育發(fā)展的歷史。我國的計算機基礎(chǔ)教育始于20世紀(jì)80年代初期,從80年代初以來,高校的計算機基礎(chǔ)教育大致上經(jīng)歷了三個發(fā)展階段:80年代是起步階段,90年代是規(guī)范階段,進(jìn)入21世紀(jì),開始了第三階段,即深化提高階段。
計算機基礎(chǔ)教育是指面向大學(xué)中非計算機專業(yè)學(xué)生的計算機教育,這部分學(xué)生約占全體大學(xué)生的95%以上。非計算機專業(yè)中進(jìn)行計算機教育的目的是培養(yǎng)大批能使用計算機的人才,而不同于計算機專業(yè)的培養(yǎng)計劃,可以說他們是計算機應(yīng)用人才,學(xué)習(xí)計算機的目的完全為了應(yīng)用,計算機只是作為一種現(xiàn)代工具來掌握,而不能當(dāng)做純理論的課程來學(xué)習(xí)。明確了這個培養(yǎng)目標(biāo),那就可以有的放矢。
目前各高校非計算機專業(yè)編程語言教學(xué)的現(xiàn)狀是:學(xué)時是有限的,學(xué)習(xí)內(nèi)容是繁雜的,由此對學(xué)生產(chǎn)生的學(xué)習(xí)壓力不僅苦不堪言,而現(xiàn)實更是多數(shù)非計算機專業(yè)的學(xué)生在畢業(yè)后,對于大學(xué)期間學(xué)習(xí)的編程語言大部分是忘記,若想拾起來重新使用,也不是一件易事。如何解決非計算機專業(yè)編程語言教學(xué)和實際使用二者之間存在的矛盾這個問題,是我們每個從事高等計算機基礎(chǔ)教育的老師不得不思考的問題。
1非計算機專業(yè)編程語言教學(xué)的現(xiàn)狀
對于現(xiàn)存的高等院校非計算機專業(yè)編程語言教學(xué)的弊端,我們做以下幾點分析說明:
(1) 非計算機專業(yè)編程語言教學(xué)培養(yǎng)目標(biāo)定位有誤
對于非計算機專業(yè)學(xué)生進(jìn)行的編程語言教學(xué),應(yīng)與計算機專業(yè)的學(xué)生有所不同。計算機專業(yè)培養(yǎng)的是計算機專門人才,將來從事信息技術(shù)理論研究、科研教學(xué)、系統(tǒng)開發(fā)等專業(yè)性的工作,而在非計算機專業(yè)中進(jìn)行編程語言教學(xué)的目的是培養(yǎng)大批能使用計算機的新型人才,他們需要達(dá)到的程度僅僅是使用計算機這個工具。作為高等院校非計算機專業(yè)編程語言教學(xué)計劃的制定者,對于專業(yè)和非專業(yè)要達(dá)到的目標(biāo)一定要明確,否則有可能南轅北轍。
(2) 非計算機專業(yè)的編程語言教學(xué)設(shè)置好大喜功
經(jīng)過作者在國內(nèi)各大高校做的調(diào)查,幾乎各大高校對于非計算機專業(yè)編程語言教學(xué)一般從大學(xué)一年級就開始,陸續(xù)開有VB、C、FoxPro、SQL、C++、PB、Delphi、Java等,有的院校在高年級非計算機專業(yè)還開有計算機編程語言課程,美名其曰:多學(xué)點東西,增加就業(yè)砝碼。
誠然多學(xué)點東西是不會有什么害處,但是不知道說這個話的人有沒有想過:對于非計算機專業(yè)的學(xué)生來說,能有多少比例的學(xué)生在真正學(xué)這些開設(shè)的計算機編程語言課程,更多的恐怕是在各種考試之間疲于應(yīng)付。當(dāng)大家手捧畢業(yè)證書的時候,手拿四年所修的學(xué)分成績單的時候,當(dāng)大家面試應(yīng)聘的時候,留在大家腦海中的計算機編程語言可能屈指可數(shù),可以炫耀的可能僅僅是修過的計算機課程的數(shù)量。
作為從事高等教育的老師,我們不能為了這些表面的假象自欺欺人。如何在有限的學(xué)時內(nèi)進(jìn)行優(yōu)化選擇,使學(xué)生學(xué)到最需要的知識。當(dāng)然不僅是指當(dāng)前最需要,而且也包括今后踏上工作崗位,對于需要用到的計算機編程語言知識的時候也可以信手拈來,不用再重新學(xué)過。因此,對于非計算機專業(yè)的學(xué)生,我們應(yīng)該敢于摒棄學(xué)習(xí)那些當(dāng)前為了考試,今后根本用不多,僅僅是為了增加學(xué)分的計算機編程課程。
(3) 系統(tǒng)本身龐大,掌握的知識有限,學(xué)不能使其精
對于現(xiàn)存的計算機程序設(shè)計的任何一門語言,如VB、Visual Fox、SQL等,系統(tǒng)都是很龐大的。以一個簡單的例子,VB為例來說明,VB采用的事件驅(qū)動的編程機制,提供了動態(tài)數(shù)據(jù)交換(DDE)和對象鏈接與嵌入(OLE)等技術(shù)。在數(shù)據(jù)庫方面,VB具有很強的數(shù)據(jù)庫管理功能,不僅可以管理MS Access格式的數(shù)據(jù)庫,還能訪問其他外部數(shù)據(jù)庫,如FoxPro、Paradox等格式的數(shù)據(jù)庫。另外,VB還提供了開放式數(shù)據(jù)連接(ODBC)功能。
對于VB強大功能,我相信學(xué)過VB的用戶,都是普遍承認(rèn)的,這個不需要多說,但是對于這么大的一個系統(tǒng),如何能通過簡簡單單的幾個學(xué)時就能夠完全掌握呢?即使說你上課的時候多么專心地聽講,多么用功地做筆記,都是無濟于事的,非要通過系統(tǒng)地做上幾個項目才能掌握一二,更不要說是對于僅僅是通過教材上的幾個簡單例子學(xué)習(xí)的學(xué)生了,這幾乎是不太可能的事情。那么有沒有學(xué)習(xí)起來比較容易上手的工具了,答案是肯定的。
(4) 快速記憶,快速忘記
在高等院校里不排除有些用功的學(xué)生,學(xué)習(xí)每門功課都是用功之極,當(dāng)然也不排除用功是為了在考試中拿個高分,爭取獎學(xué)金的可能性存在。一個學(xué)期,說的更多一點一年對一門語言的學(xué)習(xí),在短時間之內(nèi)掌握某一項技能之后,一旦長時間不使用,肯定會生疏,這是人類不能抗拒的生理現(xiàn)象。而且目前高校里的學(xué)生學(xué)習(xí)的現(xiàn)狀是:平時基本不看,考前拼命熬夜苦讀,這種短時間內(nèi)強迫大腦記憶的東西,肯定是經(jīng)不起時間的考驗的,尤其是在一個人不愿意學(xué)習(xí)這門功課的時候,這是自然規(guī)律。
假設(shè)你當(dāng)時學(xué)會了VB,而且在大學(xué)畢業(yè)參加工作的時候也沒有忘記,是不是說你就能很好地做自己的事情了呢?答案也是否定的,因為你掌握的是VB,而在工作單位的PC機上或許并沒有安裝VB的運行環(huán)境,這樣是不是就為你的使用又出了一道難題。
有沒有一勞永逸的工具,只需要簡單的學(xué)習(xí),而且不論在安裝或者未安裝VB運行環(huán)境的PC機上都能很好的完成自己想做的工作。通過作者親身實踐,本文中提倡的這個方法就可以達(dá)到這樣的功效。
(5) 支持知識產(chǎn)權(quán)保護(hù)
如何做才能既使用正版,又不卷入知識產(chǎn)權(quán)的糾紛中呢,這里我們提倡在高校中推廣,使用VBScript腳本語言在記事本環(huán)境下編程,在IE瀏覽器中運行,就可以達(dá)到這樣雙重效果。
(6) 程序交流困難
一個用戶編寫的程序如果僅僅是自己使用,這個時候程序的使用有一定的局限性,如果能夠拿出去跟別的用戶交流,就具有了更大的價值。假設(shè)有兩個用戶A和B,A在VB環(huán)境下編寫了一段程序,在自己的機器上可以正常運行,當(dāng)A把這段程序拷貝到B的機器上和B交流的時候,B機器上恰好沒有安裝VB環(huán)境,此時對于二者的交流可能存在障礙。
針對上述,我國高校計算機基礎(chǔ)教育體制中存在的諸多問題,作者提出了一種新的思路。
對于一臺安裝了操作系統(tǒng)(Windows XP、Windows 2000 Professional、Windows ME、Win 98等)的PC機來說,擁有IE瀏覽器和記事本是再簡單不過的事情,作者推薦給大家的就是使用VBScript語言來完成自己想要做的工作。下面我們通過例子來做進(jìn)一步的說明,以此來演示如何更好的結(jié)合二者,使之發(fā)揮作用。
在數(shù)學(xué)或工程應(yīng)用中,常常存在著大量的數(shù)值計算和數(shù)值分析問題,如:復(fù)合梯形公式、復(fù)合Simpson公式、Romberg求積公式等。通過編寫簡單的程序,就可以讓計算機代替人類來做一些復(fù)雜的計算任務(wù),在這里以數(shù)值計算中一個常見的問題來說明一下如何使用提倡的方法完成計算任務(wù),這里以復(fù)合Simpson公式的計算為例。程序是通過輸入給定的三個初始值:a、b和n,如圖1所示。
圖1 數(shù)據(jù)輸入界面
計算設(shè)計大致上分為三個步驟:
(1) 在記事本中編寫程序代碼如下示:
圖2 程序源代碼
從上述源代碼中可以看出:第一,VBScript使用的僅僅是VB中簡單的程序設(shè)計思想的三種結(jié)構(gòu):順序、選擇和循環(huán),不涉及復(fù)雜的結(jié)構(gòu),對于非計算機專業(yè)的用戶來說是非常容易的事情。第二,在程序開始寫了一個自定義的函數(shù),在后面對該函數(shù)進(jìn)行了調(diào)用,可以達(dá)到程序復(fù)用的作用。
(2) 將該文件保存為一個html格式的文件,如:a.html。
(3) 運行該程序只需要雙擊該文件圖標(biāo)就可以在IE瀏覽器環(huán)境下運行,在指定的文本框中輸入符合計算要求的數(shù)據(jù)點擊確定就可以得到計算的結(jié)果,如圖3和圖4所示。
圖3 程序初始界面
圖4 運行結(jié)果
3小結(jié)
通過上述例子我們可以得出以下結(jié)論:
(1) 在記事本環(huán)境下,僅僅使用了一些簡單的VBScript腳本語句就可以完成復(fù)雜的數(shù)值計算任務(wù)。VBScript是介于HTML語言和Visual Basic、Java等高級語言之間的一種腳本語言,它接近于高級語言的大部分功能,但卻比高級語言簡單易學(xué)。
(2) 在運行該程序時,不像其他的程序設(shè)計語言需要經(jīng)過編譯或解釋等步驟,以此來生成目標(biāo)文件、連接文件以及可執(zhí)行文件等,使用VBScript在記事本中編寫的程序需要做的工作僅僅是雙擊該文件名,而不會生成其他的中間文件,這樣就大大節(jié)省了系統(tǒng)的存儲空間。
(3) 在運行該程序時,對運行環(huán)境沒有提出特別的要求,僅僅是需要一個IE瀏覽器。這對于擁有一臺PC機的用戶是輕而易舉的事情。
(4) 當(dāng)你還在費盡心思考慮程序的在多臺機器之間傳遞的時候,使用在此提倡的方法無需有這方面的顧慮。對于在任何一臺PC機上編寫的 .html文件,你可以輕松在多臺機器上拷貝和運行,而無需進(jìn)行額外的路徑配置等工作。
當(dāng)然,我們提倡的這種方法并不是十全十美,如:對于需要大量使用界面圖形來處理的問題,或者需要使用數(shù)據(jù)庫的問題,該方法就有所欠缺,但是該方法對于僅僅是為了自己方便,進(jìn)行一些數(shù)據(jù)處理來說,是再合適不過的了。
全社會的計算機普及,為大學(xué)的非計算機編程教育創(chuàng)造了良好的氛圍和外部環(huán)境,使廣大非專業(yè)人員學(xué)習(xí)和使用計算機編程語言變得更加容易,如何使學(xué)有所用,使高等教育成為社會發(fā)展的推動力量,是高校非計算機專業(yè)編程教學(xué)面臨的嚴(yán)重的挑戰(zhàn),這也是本文的初衷。
參考文獻(xiàn)
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2013)17-4064-03
C語言是一種通用的計算機程序設(shè)計語言,對于計算機專業(yè)的學(xué)生來說,它是最重要的一門基礎(chǔ)課程。學(xué)習(xí)C語言之后,可以為后面繼續(xù)學(xué)習(xí)其他的高級程序設(shè)計語言打下堅實的基礎(chǔ)。通過對C語言的學(xué)習(xí),可以培養(yǎng)學(xué)生的提出問題、分析問題、解決問題的能力。在計算機專業(yè)的課程設(shè)計中,C語言程序設(shè)計是數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、面向?qū)ο蟪绦蛟O(shè)計等多門課程的先修課程,對這些課程的教學(xué)有著直接的影響[2]。
學(xué)習(xí)C語言不止對計算機專業(yè)的學(xué)生來說重要,對非計算機專業(yè)的學(xué)生也是相當(dāng)?shù)闹匾?。隨著社會的發(fā)展,科技的進(jìn)步,用人單位對員工的要求等的越來越高,加上應(yīng)屆畢業(yè)生的求職門檻越來越高,很多非計算機專業(yè)的學(xué)生也紛紛學(xué)習(xí)C語言,因為它不僅可以證明其具有一定的計算機操作的能力,如果拿到國家計算機等級考試C語言二級證書的話,還能在求職過程中,占據(jù)相當(dāng)大的優(yōu)勢,贏得面試官的親睞。所以大量的非計算機專業(yè)的學(xué)生學(xué)習(xí)C語言,而因為其計算機基礎(chǔ)很弱,甚至有的為零,那么怎樣才能讓其將C語言學(xué)會,學(xué)好,并能靈活運用呢?這就是本文的探討所在。
目前,在各大高校的非計算機專業(yè)都會設(shè)置相應(yīng)的C語言程序設(shè)計課程,不僅如此,還有大量的培訓(xùn)機構(gòu)招收非計算機專業(yè)的學(xué)生進(jìn)行培訓(xùn),以達(dá)到獲得國家C語言二級證書,或使其具備一定的編程能力以備求職所用,可見C語言的重要性。
1 存在的問題
1.1 學(xué)生的問題
在近幾年的教學(xué)實踐中,發(fā)現(xiàn)學(xué)生普遍認(rèn)為這門課難度很大,不容易學(xué),而且即使懂了理論也不會做題或編寫程序。究其原因,主要有:
1)很多學(xué)生的學(xué)習(xí)目的是不明確的[3]。經(jīng)過相應(yīng)的調(diào)查,發(fā)現(xiàn)在高等院校中,很多學(xué)生只是順從學(xué)?;?qū)W院的安排,盲目地去上課,根本就不清楚自己為什么要學(xué)習(xí)C語言,所以一旦遇到困難,就會覺得難學(xué),甚至?xí)X得學(xué)了也沒用,導(dǎo)致學(xué)習(xí)興趣以及熱情的下降,這樣就會缺乏學(xué)習(xí)的積極性和主動性。
2)學(xué)生的實踐動手能力不高。C語言是一門邏輯性和操作性都很強的計算機語言,而很多學(xué)生都不明確上機實驗的目的,甚至有的學(xué)生連實驗的內(nèi)容都不清楚,到了機房就是一盤散沙,不知道要做什么,導(dǎo)致動手能力不高。當(dāng)然在上機的過程中,也難免會出現(xiàn)某些學(xué)生玩游戲等這樣的情況,所以這也是實踐課程中管理的疏忽。
3)對于高等院校的非計算機專業(yè)的學(xué)生來說,他們對學(xué)校安排的計算機課程的重視度不高。認(rèn)為本門課程不是主課,僅僅是為應(yīng)付考試而去學(xué)習(xí),所以學(xué)習(xí)積極性不高,有時可能會發(fā)生上課不聽講,下課不看書的現(xiàn)象[4]。
4)教學(xué)過程中,發(fā)現(xiàn)在學(xué)生中存在一種普遍現(xiàn)象,即程序設(shè)計能力和調(diào)試能力都比較弱。究其原因,主要是因為其對于算法不夠熟練,靈活運用知識的能力比較弱,編程的時候程序結(jié)構(gòu)不清晰,標(biāo)點符號等語法錯誤較多,不夠細(xì)心。
1.2 教師的問題
教學(xué)的過程是教與學(xué)的過程,是教師的教與學(xué)生的學(xué)相結(jié)合的。國內(nèi)著名的教育技術(shù)專家何克抗教授提出來“主導(dǎo)-主體”教學(xué)理論[5],他認(rèn)為教學(xué)活動應(yīng)該以教師為主導(dǎo)以學(xué)生為主體,突出教師在教學(xué)活動中主導(dǎo)者地位的同時,要注重對學(xué)生創(chuàng)新思維和創(chuàng)新能力的培養(yǎng),避免學(xué)生被動學(xué)習(xí)。
1)在課堂教學(xué)過程中,太重理論的講解,而忽視了對學(xué)生實踐操作的引導(dǎo)。這就要求教師在備課過程中,必須清楚整個教學(xué)大綱的內(nèi)容,做到有的放矢,理論講解的同時,注重對鍛煉學(xué)生動手能力的實踐做相應(yīng)的指導(dǎo)。
2)在上機實踐時,容易放心讓學(xué)生自己練習(xí),導(dǎo)致學(xué)生動手能力未能得到確切的提高。這樣就可能會導(dǎo)致很多學(xué)生在實驗課上玩耍而不做任何實驗。所以這就要求老師事前必須得做好實驗課內(nèi)容的設(shè)計,并嚴(yán)格要求學(xué)生達(dá)到什么樣的效果,讓學(xué)生自己動手操作,以達(dá)到鍛煉提高的目的。
2 解決方案
基于上述問題的存在,并結(jié)合近幾年的教學(xué)經(jīng)驗,該文提出一些改進(jìn)的教學(xué)方法,以達(dá)到提高非計算機專業(yè)的學(xué)生學(xué)習(xí)C語言的學(xué)習(xí)效果。做到盡量讓學(xué)生感覺學(xué)習(xí)C語言很輕松,很有趣,且能將其學(xué)會并靈活應(yīng)用。
2.1首因效應(yīng)
作為一名教師,應(yīng)該很清楚第一堂課是非常重要的。首先應(yīng)該與學(xué)生互動,相互了解,建立良好的師生關(guān)系,拉近彼此間的距離,如果一個老師的氣場足夠吸引學(xué)生的話,后面的教學(xué)過程中的任何問題都能很好地解決,缺課現(xiàn)象也會少之又少。其次要消除學(xué)生對于C語言程序設(shè)計課程的陌生感和神秘感,使其明白C語言對于我們而言,其實并不陌生,它存在于我們的日常生活中。舉例如計算器、手機等電子產(chǎn)品、各種游戲軟件、操作系統(tǒng)、智能電器等的功能都可以由C語言程序設(shè)計實現(xiàn)。最后充分調(diào)動學(xué)生學(xué)習(xí)的興趣,使其明白學(xué)習(xí)C語言并沒有想象中的那么難。
在第一堂課時,可以少講課程內(nèi)容,必須得讓學(xué)生明白其學(xué)習(xí)目的,可以通過現(xiàn)場調(diào)查法了解學(xué)生的想法,并引導(dǎo)其明白學(xué)習(xí)本課程的目標(biāo)。這樣能使學(xué)生具有更大的學(xué)習(xí)動力。充分調(diào)動學(xué)生的積極性,激發(fā)其興趣,這有利于日后的教學(xué)工作的進(jìn)行,以及改變學(xué)生學(xué)習(xí)的氛圍。
2.2 教學(xué)方法
要想提高學(xué)生的學(xué)習(xí)效果,就必須得注重教學(xué)方法的使用。只有方法對,使用得當(dāng),才會達(dá)到事半功倍的效果。針對非計算機專業(yè)的學(xué)生來說,該文總結(jié)出下面幾種方法。
2.2.1 示例教學(xué)法
項目教學(xué)法在文獻(xiàn)[6]中闡述得很清楚,它是通過實施一個完整的項目而進(jìn)行的教學(xué)活動,使學(xué)生通過對所選項目的完成來完成對C語言的學(xué)習(xí)。這樣的方法有一定的效果,但是在實施方面的難度比較大,比如所選項目的難易如何把握,時間如何分配(尤其是在高等院校的日常教學(xué)中),達(dá)到的效果如何衡量等。這些都很難有一個標(biāo)尺來衡量。有兩種效果,一是對C語言掌握得非常的好,應(yīng)用能力很強;二是對C語言一頭霧水,云里霧里,不知所云。所以對此本文提出一種結(jié)合項目教學(xué)法的優(yōu)勢與高等院校特點于一體的示例教學(xué)方法。此方法是在傳統(tǒng)教學(xué)方法的基礎(chǔ)上,對于課堂的設(shè)計有所改變。傳統(tǒng)教學(xué)注重理論的講解,而此方法是在簡要講解理論的基礎(chǔ)上,針對某些重點知識的運用,例舉一些具體的有趣且貼近生活的實例,做出相應(yīng)的講解后,加以演示,讓學(xué)生對此程序的運行結(jié)果等有一個直觀的感受;而且在演示的過程中,還可以教學(xué)生相應(yīng)的一些調(diào)試程序找錯的方法,這樣學(xué)生自己上機練習(xí)的時候,調(diào)試能力會大大的增強。通過示例教學(xué)法,可以使學(xué)生對知識點的掌握以及運用能力得到很大的提高。
2.2.2 誘導(dǎo)法
傳統(tǒng)教學(xué)模式是針對什么內(nèi)容就很直白的講解相應(yīng)的內(nèi)容,這樣會使學(xué)生覺得枯燥乏味,久而久之會產(chǎn)生相應(yīng)的厭學(xué)情緒,導(dǎo)致學(xué)習(xí)效率低下,學(xué)習(xí)效果低。該文針對此現(xiàn)象提出相應(yīng)的改進(jìn)方法,即誘導(dǎo)學(xué)習(xí)法。在課堂上,學(xué)生是主體,教師應(yīng)該設(shè)計好所講授內(nèi)容的先后連接順序,做到連貫有序。比如引入一個新的知識點之前,先提出問題,引導(dǎo)學(xué)生思考相應(yīng)的解決方法,或讓學(xué)生相互討論,最終引出知識點進(jìn)行講解。這樣更能提高學(xué)生課堂上學(xué)習(xí)的積極性。比如在學(xué)習(xí)數(shù)組之前,先提出問題,如果用一般的變量存放學(xué)生的年齡,需要存放幾萬學(xué)生的年齡,則需要幾萬個的變量,這樣的編程量是非常大的,引導(dǎo)學(xué)生思考解決方法,并引出數(shù)組的概念和作用,這樣學(xué)生比較容易接受,而且也不會覺得很突然或陌生,更能輕易得接受并學(xué)習(xí)。
2.2.3 對比法
根據(jù)人類認(rèn)識事物的規(guī)律,在課堂上采取對比教學(xué)法會得到的非常好的效果。從常理出發(fā),人們習(xí)慣性地會對比身邊的事物,從而認(rèn)識相應(yīng)的事物。所以在課堂上講解知識點的時候,恰到好處地運用好此方法的話,教學(xué)效果是非常好的。比如在學(xué)習(xí)數(shù)組的時候,當(dāng)學(xué)習(xí)完一維數(shù)組之后,學(xué)維數(shù)組的時候,就可以以類比的方法來介紹二維數(shù)組,學(xué)生會很快學(xué)會并吸收二維數(shù)組的內(nèi)容。這樣的效果是非常顯著的。
2.2.4 抽象具體化
C語言中,有很多抽象的專業(yè)性描述的概念理論,而對這些理論的講解是比較難的。對于學(xué)生而言,這些內(nèi)容在頭腦里是很抽象難以理解的。所以這時就需要教師在講解內(nèi)容時,少用專業(yè)術(shù)語進(jìn)行解釋。比如講解C語言充有且只能有一個main函數(shù),且程序從main函數(shù)開始到main函數(shù)結(jié)束時,很多學(xué)生不是很理解,教師就可以舉例說一個學(xué)校只有一個大門,學(xué)生要想進(jìn)入學(xué)校逛耍就只能通過大門走進(jìn),而逛耍完后想要走出學(xué)校時,也只能通過大門才能出去。學(xué)校的大門就類似于main函數(shù),要想進(jìn)入學(xué)校只能從大門進(jìn)或出,而C語言程序的開始結(jié)束也只能從main函數(shù)開始或結(jié)束。這樣的話,學(xué)生比較能接受并理解此知識點,而且會覺得有趣。
2.2.5 組隊上機法
此方法主要是針對上機實驗課。傳統(tǒng)的實驗課是學(xué)生進(jìn)入機房之后,個人練習(xí),各練各的,學(xué)生之間缺少交流溝通。對此,該文提出的組隊上機法可以有效地改善此現(xiàn)象,并得到相應(yīng)的效果的提高。事先將學(xué)生進(jìn)行分組,然后對每個小組分配任務(wù),并提出要求及實驗結(jié)果,還可以制定一些相應(yīng)的獎懲制度,當(dāng)然獎懲制度得切實可行。上機實踐時,小組成員之間相互探討問題,互動地學(xué)習(xí),這樣可以激發(fā)學(xué)生的求知欲,也能鍛煉學(xué)生的團隊協(xié)作能力。相互之間有競爭,就可以刺激學(xué)生的學(xué)習(xí)欲望。
2.3 課后溝通
因為高校的老師和學(xué)生之間見面的機會最多的就是上課時間,而學(xué)生有問題又不可能在課堂上問。針對這種現(xiàn)象,如果老師能和學(xué)生打成一片,加入學(xué)生的QQ學(xué)習(xí)群里,課后有任何的問題,大家都可以通過互聯(lián)網(wǎng)在QQ群里討論,老師也可解答問題。這樣的學(xué)習(xí)效率是很高的,學(xué)生覺得老師負(fù)責(zé),他的學(xué)習(xí)激情會更大,潛能也會被激發(fā)。
3 總結(jié)
教學(xué)實踐證明,針對目前非計算機專業(yè)的學(xué)生學(xué)習(xí)C語言的現(xiàn)狀,該文所提出的解決方案教學(xué)方法是切實可行的,且教學(xué)效果得到了確切的提高。利用這些方法,不僅可以激發(fā)學(xué)生的學(xué)習(xí)興趣,更能增強學(xué)生分析處理問題的能力。學(xué)生在一種快樂融洽的氛圍中學(xué)習(xí),學(xué)習(xí)效率是非常高的。
參考文獻(xiàn):
[1] 謝競博.C語言程序設(shè)計教學(xué)中的問題及改革建議[J].重慶郵電大學(xué)學(xué)報:社會科學(xué)報,2008(2).
[2] 王繼東,趙瑞斌,陳桂林.計算機專業(yè)C語言程序設(shè)計課程教學(xué)改革探索[J].計算機時代,2012(2).
[3] 牛熠,董阿妮,吳燕玲.C語言教學(xué)中學(xué)生興趣的培養(yǎng)[J].東莞理工學(xué)院學(xué)報,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文獻(xiàn)標(biāo)識碼:A 文章編號:2095-2104(2013)
引言
隨著城市規(guī)劃法和房地產(chǎn)管理法的頒布實施以及市場經(jīng)濟的飛速發(fā)展、住房的商品化和貨幣化進(jìn)程的迅猛推進(jìn),對各地房地產(chǎn)產(chǎn)權(quán)產(chǎn)籍的管理工作提出了更高和更復(fù)雜的要求。房產(chǎn)面積計算準(zhǔn)確與否,不僅關(guān)系到房產(chǎn)開發(fā)商的經(jīng)濟利益,還直接影響到千家萬戶的利益。房產(chǎn)面積計算系統(tǒng)正是應(yīng)此呼聲而產(chǎn)生,它可使房產(chǎn)部門從繁鎖的面積計算中解脫,可大幅度提高工作效率,減少面積計算工作中不必要的錯誤。
本文根據(jù)作者多年經(jīng)驗及相關(guān)房產(chǎn)資料,對房產(chǎn)面積計算模型進(jìn)行了歸納、分析、總結(jié),提出了解決問題的設(shè)想并完成了房產(chǎn)面積計算系統(tǒng)程序的設(shè)計。
一、系統(tǒng)平臺和標(biāo)準(zhǔn)
AutoCAD 2000是當(dāng)今主流的CAD應(yīng)用平臺,其強大的圖形編輯功能與圖形處理功能深受用戶歡迎。房產(chǎn)面積計算系統(tǒng)內(nèi)嵌于該平臺,利用目前流行的開發(fā)語言 VBA與LISP 進(jìn)行程序開發(fā),使用了面向?qū)ο蟮脑O(shè)計思想,采用了先進(jìn)的內(nèi)嵌式SQL語言,通過對數(shù)據(jù)庫的操作,實現(xiàn)圖形與屬性數(shù)據(jù)完美的結(jié)合。房產(chǎn)面積計算系統(tǒng)的面積分?jǐn)傆嬎闶歉鶕?jù)最新的國家房產(chǎn)測量規(guī)范(GB/T 17986.1—2000)設(shè)計而成的,適用于各地房產(chǎn)部門的房產(chǎn)面積計算。
二、程序設(shè)計思想
1.為了管理上的方便,系統(tǒng)按丘進(jìn)行圖形及屬性管理。系統(tǒng)在每建立一個丘時,會自動以“丘名”建立一個文件夾,并在此文件夾目錄下自動建立兩個文件,一個是存放丘信息的屬性數(shù)據(jù)庫,其命名格式為“丘名.mdb”;另一個是存放本丘各幢樓平面圖的文件夾,其命名格式為“丘名+Dwg”。經(jīng)分析可知,每新建一個丘時都要創(chuàng)建兩個相同的文件,因此系統(tǒng)設(shè)計了一個模板數(shù)據(jù)庫,每建立一個丘時只要把模板數(shù)據(jù)庫進(jìn)行拷貝即可。當(dāng)進(jìn)行圖形操作時,每幢樓會自動建立一個 Dwg 文件,其命名規(guī)則是“幢號.Dwg”,此 Dwg 文件存入選定的丘文件夾中。每幢樓的各樓層在 Auto CAD 2000 中建立一個對應(yīng)的圖層。系統(tǒng)實現(xiàn)面積、尺寸自動標(biāo)注,并把各標(biāo)注放在單一的圖層,用戶可方便地進(jìn)行面積、尺寸標(biāo)注圖層的開關(guān)。在 CAD 中主要用層來實現(xiàn)各幢樓圖形的管理。
2.在CAD中用戶以中軸線繪出各幢各層各戶平面圖, 在圖形上用系統(tǒng)規(guī)定的代號標(biāo)出各功能區(qū)。程序根據(jù)標(biāo)出的各功能代號自動搜索其圍成閉合區(qū)域的面積并進(jìn)行分?jǐn)傆嬎悖@是本系統(tǒng)提出的新思想。用戶只要按系統(tǒng)規(guī)定作圖、標(biāo)功能代號,程序可快速、準(zhǔn)確的進(jìn)行面積分?jǐn)傆嬎恪?/p>
如圖所示:
(圖 1)
圖上Q、A、YA、H、YH即為系統(tǒng)規(guī)定的代號,系統(tǒng)會根據(jù)代號及各戶號進(jìn)行面積搜索并進(jìn)行分?jǐn)傆嬎恪F渲蠶代表全樓共用建筑面積(暫不包括外墻體一半的建筑面積),YA代表計算陽臺全部的建筑面積,YH代表計算陽臺一半的建筑面積。各功能區(qū)代號有:Z代表住宅,ZD代表住宅獨用;B代表商業(yè),BD代表商業(yè)獨用等。
系統(tǒng)根據(jù)這一思想進(jìn)行面積計算,程序相當(dāng)復(fù)雜,但對于用戶來說,操作方法簡單,只需要點幾下菜單即可完成各項復(fù)雜的計算,很適合基層用戶操作。
三、數(shù)據(jù)庫設(shè)計
因為每個丘要建立一個數(shù)據(jù)庫,因此設(shè)計了一個模板數(shù)據(jù)庫,在每建立一個丘時系統(tǒng)自動對模板數(shù)據(jù)庫進(jìn)行復(fù)制。數(shù)據(jù)庫中的各表通過幢號、層號進(jìn)行圖形與屬性數(shù)據(jù)關(guān)聯(lián)。用戶輸入的所有數(shù)據(jù)與程序自動計算完畢的數(shù)據(jù)全部存入數(shù)據(jù)庫,最后可供用戶查詢、打印輸出。
數(shù)據(jù)庫中主要有功能區(qū)表、幢屬性表、樓層表、戶表、分?jǐn)傁到y(tǒng)表等多個關(guān)聯(lián)表。功能區(qū)表主要是用來存放各功能區(qū)代號及其屬性的;幢屬性表記錄每幢房屋的基本信息,如:坐落、圖幅號、丘號、幢號、產(chǎn)權(quán)單位等信息。戶表記錄各戶的基本信息,如:戶號、戶主、戶產(chǎn)權(quán)面積、分?jǐn)偯娣e等。
四、系統(tǒng)模塊介紹
房產(chǎn)面積計算系統(tǒng)分為五大功能模塊來實現(xiàn):
此模塊主要用來實現(xiàn)各幢各層基本屬性數(shù)據(jù)的錄入。
2.面積計算模塊
此模塊程序根據(jù)標(biāo)出的各功能代號自動提取面積進(jìn)行分?jǐn)傆嬎悴⑷霂臁?/p>
3.數(shù)據(jù)管理及資料查詢模塊
此模塊主要用來實現(xiàn)圖形與屬性數(shù)據(jù)的雙向查詢。本模塊使用了功能強大的 SQL (結(jié)構(gòu)化查詢語言)進(jìn)行各種數(shù)據(jù)查詢,用戶可以按任意條件進(jìn)行單項、多項組合查詢??蓮膶傩哉{(diào)圖,也可從圖讀屬性。
4.圖形處理工具模塊
此模塊主要有常用繪圖工具,可使用戶加快作圖效率。
5.報表輸入模塊
實現(xiàn)各種報表打印,如幢基本屬性表、功能區(qū)建筑面積匯總表、分戶明細(xì)表及各戶示意圖。
五、程序計算流程
房產(chǎn)面積計算按其類型分為多層住宅樓、商住兩用樓、多功能綜合樓三種類型。每一幢樓只有一個全樓共用建筑面積分?jǐn)傁禂?shù);每一功能區(qū)有一個功能區(qū)分?jǐn)傁禂?shù);某一局部分?jǐn)傆钟幸粋€獨立的分?jǐn)傁禂?shù)。在一幢樓中,有可能只有一個功能區(qū),有可能有多個功能區(qū);局部可進(jìn)行多次分?jǐn)?。因此,程序計算之前,必須?zhǔn)確劃分各功能區(qū),確定各功能區(qū)獨自共用的建筑面積,準(zhǔn)確標(biāo)注各功能部位。只有這樣,系統(tǒng)才會根據(jù)代號計算出準(zhǔn)確的面積。
在進(jìn)行程序設(shè)計時,考慮到用戶是在CAD中用中軸線繪圖的,因此在計算各層建筑面積、共用建筑面積時應(yīng)注意加上各層外墻一半的建筑面積;注意一些實體的計算,分清是計算其全部面積還是計算其一半的建筑面積(如陽臺)。具體是怎樣進(jìn)行計算,用戶只要標(biāo)注好功能代號,程序能自動識別并計算。
根據(jù)分析結(jié)果,可以總結(jié)出共用建筑面積分?jǐn)傆嬎懔鞒虨椋合日w分?jǐn)傆嬎?,后局部分?jǐn)傆嬎恪<聪冗M(jìn)行“整幢樓分?jǐn)偂庇嬎?,然后進(jìn)行“各功能區(qū)分?jǐn)偂庇嬎悖乱徊降健皹菍娱g分?jǐn)偂庇嬎?,再進(jìn)行各“局部分?jǐn)偂庇嬎?,最后“分?jǐn)偟礁鲬簟?。在此值得注意的是,上一層次分?jǐn)傆嬎愕慕Y(jié)果作為下一層次分?jǐn)偟墓灿媒ㄖ娣e的一部分,如分?jǐn)偟侥场肮δ軈^(qū)”的全樓共用建筑面積在進(jìn)行本功能區(qū)分?jǐn)傆嬎銜r就與“本功能區(qū)”類型的共用建筑面積一起參與分?jǐn)傆嬎?,最后分?jǐn)偟矫刻祝☉簦?/p>
分?jǐn)傆嬎憧捎脠D(1)表示:
(圖 2)
從圖2 就可看出,共用建筑面積分?jǐn)偟捻樞蚣礊橄日w,后局部。先分?jǐn)側(cè)珮枪灿媒ㄖ娣e到各功能區(qū),如在功能區(qū)內(nèi)沒有各樓層分?jǐn)?,則按(A)直接分?jǐn)偟礁鲬?;如果在功能區(qū)內(nèi)要進(jìn)行各樓層分?jǐn)偅瑒t按(B)進(jìn)行各層分?jǐn)傆嬎?,再分?jǐn)偟礁鲬?。在進(jìn)行以上各項分?jǐn)偼戤吅?,如還有特殊要求要進(jìn)行局部分?jǐn)偟模瑒t要根據(jù)需要進(jìn)行局部分?jǐn)傆嬎恪?/p>
六、房產(chǎn)面積計算系統(tǒng)實現(xiàn)的關(guān)鍵技術(shù)
1.面積自動搜索
程序根據(jù)標(biāo)出的各功能代號自動搜索其圍成閉合區(qū)域的面積,這是程序要實現(xiàn)的關(guān)鍵,也是程序開發(fā)時遇到的技術(shù)難點。在程序中能不能實現(xiàn)這一步是關(guān)系到整個程序成敗的關(guān)鍵。因為整個程序所有的面積數(shù)據(jù)都是根據(jù)各標(biāo)識提出來的。我們在程序中通過屬性設(shè)置,邊界搜索來實現(xiàn)這一功能。
2.局部面積分?jǐn)傆嬎?/p>
當(dāng)要進(jìn)行局部分?jǐn)倳r,用戶可指定分?jǐn)倢ο笈c被分?jǐn)倢ο筮M(jìn)行分?jǐn)傆嬎?。在CAD平面圖中,用戶只要選擇分?jǐn)倢ο?,再選擇被分?jǐn)倢ο螅绦蚩砂驯环謹(jǐn)倢ο蟀疵娣e比例自動分到分?jǐn)倢ο笾?。如圖所示:
圖(3)
當(dāng)走廊要分?jǐn)偨o01、02、03三戶時,只要選擇分?jǐn)倢ο螅ㄗ呃龋?,再點擊01、02、03,程序即可自動把走廊部分按面積比例分?jǐn)偟礁鲬?,?shù)據(jù)此時會根據(jù)分?jǐn)偟拿娣e自動進(jìn)行更新。
3.在報表打印時,要打印各套(戶)平面圖這也是一個技術(shù)難點。
在打印各戶平面圖時,怎樣根據(jù)各戶號把圖廓加上,怎樣進(jìn)行圖廓自動切割。
以上三個關(guān)鍵技術(shù)通過VBA與LISP兩者相結(jié)合,再通過一定的算法,在程序中得到了很好的解決。
七、結(jié)束語
房產(chǎn)面積計算系統(tǒng)內(nèi)嵌于Auto CAD 2000平臺,該系統(tǒng)充分運用了計算機的優(yōu)勢及Auto CAD 2000強大的圖形編輯功能與圖形處理功能。用戶可很方便的進(jìn)行圖形、屬性數(shù)據(jù)的雙向查詢。房產(chǎn)面積計算系統(tǒng)的建立,減輕了房產(chǎn)部門繁瑣的計算過程,提高了工作效率。
參 考 文 獻(xiàn)