摘 要:程序設(shè)計(jì)基礎(chǔ)是軟件工程專業(yè)一門重要的基礎(chǔ)課,它以計(jì)算機(jī)語(yǔ)言為基礎(chǔ),以程序設(shè)計(jì)邏輯和思想為導(dǎo)向,運(yùn)用特定的算法進(jìn)行程序設(shè)計(jì)與專業(yè)素養(yǎng)的培養(yǎng)。該課程具有很強(qiáng)的理論性與實(shí)踐性,因此需要任課教師采用一定的教學(xué)方法,加深學(xué)生對(duì)理論的理解與應(yīng)用,激發(fā)學(xué)生的學(xué)習(xí)熱情,達(dá)到高效的教學(xué)目的。
關(guān)鍵詞:指針 程序設(shè)計(jì) 算法 程序自動(dòng)評(píng)測(cè)
中圖分類號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1674-098X(2011)01(b)-0167-01
“程序設(shè)計(jì)基礎(chǔ)”是軟件工程專業(yè)本科生開設(shè)的第一門專業(yè)課,這門課程對(duì)于計(jì)算機(jī)類專業(yè)來說是一門歷史悠久的基礎(chǔ)課,其授課內(nèi)容從最初的非結(jié)構(gòu)化BASIC,到后期的結(jié)構(gòu)化PASCAL、C語(yǔ)言,授課的思路與方式隨著計(jì)算機(jī)領(lǐng)域軟、硬件的推陳出新,也悄然發(fā)生著變化。從授課方式上,從黑板加粉筆轉(zhuǎn)換為以多媒體為主要教學(xué)媒介的現(xiàn)代教學(xué)技術(shù)與手段自不必說了;以C為語(yǔ)言基礎(chǔ)的程序設(shè)計(jì),也通過一門優(yōu)秀的程序設(shè)計(jì)語(yǔ)言為編程設(shè)計(jì)打開了一扇廣闊之門。
該門課程對(duì)于學(xué)生專業(yè)素養(yǎng)的培養(yǎng)和專業(yè)思維的導(dǎo)向具有一定的指導(dǎo)作用。在該門課程的授課之中,我有以下的一些體會(huì)和心得。
1 講透指針與指針的運(yùn)用
程序設(shè)計(jì)類課程猶如學(xué)習(xí)寫作藝術(shù),首先要對(duì)所用語(yǔ)言的語(yǔ)法規(guī)則了如指掌,然后才能在此基礎(chǔ)上提升到藝術(shù)的高度。C語(yǔ)言作為一門程序設(shè)計(jì)語(yǔ)言,本身具有可移植性強(qiáng)、執(zhí)行效率高等特點(diǎn),既可以作為應(yīng)用軟件,也可以作為系統(tǒng)軟件的開發(fā)工具。而在C語(yǔ)言的學(xué)習(xí)和使用中,指針可以說是其特色和精華所在,它和數(shù)組、字符串以及函數(shù)間的數(shù)據(jù)傳遞有著密不可分的聯(lián)系,且在某些場(chǎng)合,指針是解決運(yùn)算的唯一途徑,它可以有效的表示和實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
指針是與計(jì)算機(jī)系統(tǒng)內(nèi)部密切相關(guān)的一種處理形式,指針的概念不直觀,學(xué)習(xí)起來難度較大。首先引入“地址”的概念,這個(gè)“地址”就是變量所占存儲(chǔ)單元的第一個(gè)字節(jié)的地址。其次,要區(qū)分指針和指針變量這兩個(gè)概念:指針即地址;而指針變量是用于保存某一具體數(shù)據(jù)類型變量地址的特殊變量,重點(diǎn)它是一個(gè)變量。有了這個(gè)基礎(chǔ)以后,才可以順其自然地引出指針運(yùn)算以及指針與數(shù)組、指針與函數(shù)等兩兩關(guān)系的介紹。
在這部分內(nèi)容中,要強(qiáng)調(diào)幾個(gè)指針運(yùn)用中須注意的地方:(1)在引用一個(gè)指針變量前必須讓該指針指向一個(gè)變量;(2)區(qū)分指針的類型和指針?biāo)赶虻念愋?(3)指針的算術(shù)運(yùn)算只對(duì)數(shù)組的應(yīng)用是有意義的,且運(yùn)算結(jié)果不能超出數(shù)組的范圍;(4)作為指針常量的數(shù)組名和指針變量的區(qū)別。最后,有幾個(gè)引申概念是難以理解和掌握的:指針數(shù)組、數(shù)組指針及指向指針的指針,也就是所謂的二級(jí)指針。
在這里,我運(yùn)用一種對(duì)比記憶和理解的教學(xué)方法:先給出各個(gè)概念的定義及其語(yǔ)法,在理解概念的同時(shí)區(qū)分語(yǔ)法格式上的差別;然后結(jié)合具體問題的講解,使學(xué)生對(duì)其各自的應(yīng)用有實(shí)質(zhì)上的理解;最后總結(jié)出其實(shí)質(zhì)與共性。
2 歸納總結(jié)程序設(shè)計(jì)算法
程序是為實(shí)現(xiàn)特定目標(biāo)或解決特定問題而用計(jì)算機(jī)語(yǔ)言編寫的,可以連續(xù)執(zhí)行并能夠完成一定任務(wù)的指令序列的集合[1]。瑞士計(jì)算機(jī)科學(xué)家尼克勞斯·沃思(Niklaus Wirth)曾提出“程序=數(shù)據(jù)結(jié)構(gòu)+算法”這一著名公式,數(shù)據(jù)結(jié)構(gòu)是對(duì)程序中數(shù)據(jù)流或者說數(shù)據(jù)組織形式的描述,在語(yǔ)言基礎(chǔ)中我們介紹了C語(yǔ)言的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)及其基本的使用方法;算法是對(duì)程序控制流的描述,即對(duì)數(shù)據(jù)所進(jìn)行操作的步驟。數(shù)據(jù)和算法之間的對(duì)立統(tǒng)一體現(xiàn)了程序要處理數(shù)據(jù)對(duì)象與處理數(shù)據(jù)對(duì)象方法之間的關(guān)系。算法脫離于語(yǔ)言之外,具有通用性,是程序設(shè)計(jì)的靈魂;所以說程序設(shè)計(jì)基礎(chǔ)這門課,除了打下堅(jiān)實(shí)的語(yǔ)言基礎(chǔ)以外,還要分類介紹一些常用的基礎(chǔ)的程序設(shè)計(jì)算法:比如多項(xiàng)式的求和與求積運(yùn)算、遍歷或窮舉求解、數(shù)列的排序問題以及矩陣運(yùn)算等等。
分類講解這些算法的時(shí)候,結(jié)合授課過程中遇到的例題、習(xí)題,以及本節(jié)課給出的更具代表性的實(shí)際問題或具體應(yīng)用,首先把各個(gè)算法的含義講解清楚,然后分步驟地給出各算法的設(shè)計(jì)思路;對(duì)于同類問題,比較不同的算法的空間與時(shí)間利用效率,從而總結(jié)更適用于哪些情況,這樣對(duì)后繼課程“算法分析與設(shè)計(jì)”也起到一個(gè)入門和先導(dǎo)的作用。
與依靠記憶的課程不同,程序設(shè)計(jì)基礎(chǔ)是一門理解性和實(shí)踐性非常強(qiáng)的課程,也是一門知識(shí)和能力并重的課程。因此,對(duì)于語(yǔ)言運(yùn)用與算法的掌握,不可能僅僅依靠老師的講解與學(xué)生的思考,還需要引導(dǎo)學(xué)生借助所學(xué)語(yǔ)言與計(jì)算機(jī)這兩種軟硬件工具自行實(shí)踐該算法,變被動(dòng)為主動(dòng),加深對(duì)抽象知識(shí)的理解與運(yùn)用,從而引發(fā)對(duì)更深層次問題的思考與討論。
3 引入自動(dòng)化程序評(píng)測(cè)系統(tǒng)批改學(xué)生作業(yè)
現(xiàn)在已有不少學(xué)校采用由計(jì)算機(jī)進(jìn)行編程作業(yè)評(píng)判的方式來對(duì)學(xué)生的作業(yè)進(jìn)行考核。但更多的情況下是學(xué)生的編程作業(yè)通過FTP,Email甚至是紙質(zhì)的方式提交給老師,由老師對(duì)程序以及程序的相關(guān)文檔進(jìn)行閱讀和評(píng)判,其繁重的工作量和低效率的教學(xué)方式對(duì)于程序設(shè)計(jì)課程非常不適宜。在高等院校的教學(xué)中,計(jì)算機(jī)方面的課程,特別是程序設(shè)計(jì)語(yǔ)言課程,具有實(shí)踐性特別強(qiáng)的特點(diǎn)。因此,采用計(jì)算機(jī)對(duì)程序直接進(jìn)行評(píng)判是一種智能化的高效的教學(xué)手段。
采用程序在線評(píng)測(cè)系統(tǒng)后,老師可以通過對(duì)參數(shù)進(jìn)行設(shè)置,限制學(xué)生提交的編程作業(yè)的類型、文件大小、運(yùn)行時(shí)間長(zhǎng)短和空間大小。學(xué)生在提交編程作業(yè)的時(shí)候能很快地得到作業(yè)是否正確的反饋。一方面,程序在線評(píng)測(cè)系統(tǒng)可以對(duì)作業(yè)進(jìn)行自動(dòng)編譯,檢查出程序是否存在語(yǔ)法錯(cuò)誤;另一方面,它還能驗(yàn)證程序是否能得到正確結(jié)果,以及所花費(fèi)的代價(jià)(時(shí)間和空間上的)。根據(jù)后處理的結(jié)果與相應(yīng)的參數(shù)設(shè)置,程序在線評(píng)測(cè)系統(tǒng)能自動(dòng)給出學(xué)生此次編程作業(yè)的成績(jī)。這大大地減小了學(xué)生提交錯(cuò)誤程序的概率,還能給出與程序相應(yīng)的成績(jī)。當(dāng)然老師也可以進(jìn)行再次審查,對(duì)學(xué)生的作業(yè)提出評(píng)語(yǔ),修改成績(jī)等。
這種方式完全模擬了使用程序設(shè)計(jì)語(yǔ)言解決實(shí)際問題的過程,編寫程序、不斷測(cè)試修改、根據(jù)結(jié)果反饋修改程序。這樣的考試方式對(duì)學(xué)生的學(xué)習(xí)過程具有很好的指導(dǎo)作用。與此同時(shí),還消除了老師在檢查作業(yè)的過程中的主觀因素,增加了學(xué)生之間的公平性。
4 結(jié)語(yǔ)
經(jīng)過教學(xué)過程的實(shí)踐與學(xué)生反饋,引入研究性的這種教學(xué)方法和互動(dòng)的教學(xué)過程收到了良好的效果,經(jīng)過調(diào)查86%的學(xué)生接受并且對(duì)這種教學(xué)方式感興趣;因?yàn)樗麄冊(cè)诶斫庀嚓P(guān)理論的同時(shí),不僅做到“知其然知其所以然”,而且把它們運(yùn)用到實(shí)際問題當(dāng)中,并且在解決問題的過程中及時(shí)得到反饋,增強(qiáng)了他們解決問題的熱情,從而提高了學(xué)習(xí)效率。
參考文獻(xiàn)
[1] 高克寧,李金雙,趙長(zhǎng)寬,等.程序設(shè)計(jì)基礎(chǔ)[M].北京:清華大學(xué)出版社,2009:3~27.
[2] 張玉清,王群.“算法分析與設(shè)計(jì)”教學(xué)方法探索[J].中國(guó)地質(zhì)教育,2006(4):119~120.
[3] 段巖,尹立杰,等.C語(yǔ)言程序設(shè)計(jì)的教學(xué)技術(shù)整體性的應(yīng)用研究[J].中國(guó)地質(zhì)教育,2006(3):49~51.
[4] 高閣.C語(yǔ)言指針教學(xué)的研究與探討[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2010(1):185~186.