時(shí)間:2023-11-25 09:29:48
序論:好文章的創(chuàng)作是一個(gè)不斷探索和完善的過(guò)程,我們?yōu)槟扑]十篇程序設(shè)計(jì)的基本結(jié)構(gòu)范例,希望它們能助您一臂之力,提升您的閱讀品質(zhì),帶來(lái)更深刻的閱讀感受。
計(jì)算機(jī)科學(xué)是一種創(chuàng)造性思維活動(dòng),其教育必須面向設(shè)計(jì)。計(jì)算機(jī)的本質(zhì)是“程序的機(jī)器”, 只有懂得程序設(shè)計(jì),才能懂得計(jì)算機(jī),真正了解計(jì)算機(jī)是怎樣工作的。培養(yǎng)學(xué)生程序設(shè)計(jì)能力對(duì)計(jì)算機(jī)專業(yè)的學(xué)生來(lái)說(shuō)不僅是培養(yǎng)職業(yè)技能的需要,也是培養(yǎng)大學(xué)生創(chuàng)造性思維的重要途徑。學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言可以培養(yǎng)學(xué)生運(yùn)用算法來(lái)解決實(shí)際問(wèn)題的能力,這種解決問(wèn)題的方式是計(jì)算機(jī)所獨(dú)有的,也只有通過(guò)對(duì)計(jì)算機(jī)的程序設(shè)計(jì)語(yǔ)言和程序設(shè)計(jì)方法的學(xué)習(xí)才有可能獲得這種解決問(wèn)題的能力。
1 程序設(shè)計(jì)在計(jì)算機(jī)學(xué)科中的地位
程序設(shè)計(jì)是利用某種計(jì)算機(jī)語(yǔ)言,編制完成某一特定功能的程序的過(guò)程,是涉及描述、開發(fā)及有效實(shí)現(xiàn)求解的一系列活動(dòng),是利用計(jì)算機(jī)實(shí)現(xiàn)自動(dòng)化的重要手段。
計(jì)算機(jī)學(xué)科主要是系統(tǒng)地研究信息描述和變換的算法過(guò)程,包括它們的理論、分析、設(shè)計(jì)、效率、實(shí)現(xiàn)和應(yīng)用。可以這樣說(shuō),一切算法的基本問(wèn)題是“什么能被自動(dòng)化”以及“如何有效地自動(dòng)化”。這個(gè)自動(dòng)化的過(guò)程就是程序設(shè)計(jì)的過(guò)程。
程序設(shè)計(jì)語(yǔ)言是人們學(xué)習(xí)計(jì)算機(jī)的最基本的工具,也是人們學(xué)習(xí)計(jì)算機(jī)基礎(chǔ)與應(yīng)用知識(shí)的基本課程。通過(guò)學(xué)習(xí),使學(xué)生掌握程序設(shè)計(jì)的基本概念、基本知識(shí)和基本方法,養(yǎng)成良好的程序設(shè)計(jì)風(fēng)格,得到一定的程序設(shè)計(jì)訓(xùn)練,具備初步編寫程序解決實(shí)際問(wèn)題的能力。程序設(shè)計(jì)也正是有形表達(dá)抽象思維的方法,在程序設(shè)計(jì)過(guò)程中貫穿閱讀判斷、分析思考、工具利用、抽象表達(dá)、綜合創(chuàng)造等多項(xiàng)技能,是理論、抽象、設(shè)計(jì)和應(yīng)用的綜合能力培養(yǎng)過(guò)程。因此程序設(shè)計(jì)是計(jì)算機(jī)學(xué)科教學(xué)的重要內(nèi)容之一,對(duì)計(jì)算機(jī)專業(yè)人才素質(zhì)的培養(yǎng)至關(guān)重要。
2 程序設(shè)計(jì)的知識(shí)和能力構(gòu)成
根據(jù)循序漸進(jìn)的原則,與程序設(shè)計(jì)有關(guān)的教學(xué)內(nèi)容主要有:計(jì)算機(jī)基礎(chǔ)知識(shí)和操作、程序設(shè)計(jì)語(yǔ)言和基本的程序設(shè)計(jì)方法、最基本的數(shù)據(jù)結(jié)構(gòu)及其基本算法、常用的算法設(shè)計(jì)方法等。在學(xué)習(xí)這些知識(shí)的同時(shí),必須與能力的訓(xùn)練有機(jī)地結(jié)合起來(lái)。程序設(shè)計(jì)能力表現(xiàn)在以下幾個(gè)方面:
1)自然語(yǔ)言能力。要有較強(qiáng)的運(yùn)用自然語(yǔ)言描述現(xiàn)實(shí)事物的能力,只有運(yùn)用背景知識(shí)正確且清晰地陳述問(wèn)題及其求解目標(biāo),才能確定程序的功能。
2)數(shù)學(xué)描述能力。程序設(shè)計(jì)是為了告訴計(jì)算機(jī)做什么和如何做。這就需要利用定義、定理、公式、函數(shù)等數(shù)學(xué)工具把問(wèn)題形式化,建立數(shù)學(xué)模型。
3)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)能力。選擇合理的存儲(chǔ)結(jié)構(gòu),在計(jì)算機(jī)中表示數(shù)學(xué)模型,是程序設(shè)計(jì)的一個(gè)重要方面。
4)算法構(gòu)造能力。好的程序由精心構(gòu)造的、好的算法構(gòu)成。給出問(wèn)題求解的離散化計(jì)算過(guò)程,是程序設(shè)計(jì)中最具有創(chuàng)造性的工作。
5)程序編碼能力。用某種程序設(shè)計(jì)語(yǔ)言表達(dá)算法,盡管這種能力往往被認(rèn)為技術(shù)含量不高,但也需要對(duì)程序設(shè)計(jì)語(yǔ)言的熟練掌握和對(duì)算法設(shè)計(jì)的深刻理解。
6)程序調(diào)試能力。程序調(diào)試能力是一種專業(yè)綜合技能,需要對(duì)程序設(shè)計(jì)語(yǔ)言和程序結(jié)構(gòu)有深刻的理解,需要熟練的操作技能,需要會(huì)設(shè)置測(cè)試數(shù)據(jù)和設(shè)置程序斷點(diǎn),這些都有待于學(xué)生在實(shí)踐中逐步積累經(jīng)驗(yàn)。
可以說(shuō),程序設(shè)計(jì)能力的高低很大程度上反映在駕馭自然語(yǔ)言、數(shù)學(xué)語(yǔ)言和計(jì)算機(jī)語(yǔ)言的能力上。這3種語(yǔ)言是人們畢生有用的3種通用智能工具。前兩者是后者的基礎(chǔ),良好的英語(yǔ)和數(shù)學(xué)訓(xùn)練是學(xué)好程序設(shè)計(jì)語(yǔ)言和培養(yǎng)程序設(shè)計(jì)能力的重要基礎(chǔ)。
3 培養(yǎng)程序設(shè)計(jì)能力的有效策略
知識(shí)的價(jià)值在于運(yùn)用,知識(shí)的運(yùn)用需要技能,而技能的形成則依賴訓(xùn)練。程序設(shè)計(jì)知識(shí)的學(xué)習(xí)和能力的培養(yǎng)需要各方面的知識(shí)基礎(chǔ),它是一個(gè)系統(tǒng)的教育訓(xùn)練過(guò)程,需要多個(gè)教學(xué)環(huán)節(jié)的緊密配合才能完成。
1)明確教學(xué)要求
程序設(shè)計(jì)語(yǔ)言課程一般是為應(yīng)用性教學(xué)而設(shè)置的,因此,課程的教學(xué)不僅僅是傳授知識(shí),而且應(yīng)該強(qiáng)調(diào)應(yīng)用性,應(yīng)該以培養(yǎng)學(xué)生的能力為主。程序設(shè)計(jì)語(yǔ)言的內(nèi)容比較豐富,在教學(xué)中如果面面俱到,必會(huì)耗費(fèi)較多課時(shí),而且教學(xué)效果不一定好。因?yàn)檫^(guò)分強(qiáng)調(diào)程序設(shè)計(jì)語(yǔ)言的系統(tǒng)性和完整性就可能會(huì)轉(zhuǎn)移學(xué)生對(duì)課程重點(diǎn)的注意力,關(guān)鍵在于教會(huì)學(xué)生如何正確運(yùn)用程序設(shè)計(jì)語(yǔ)言編寫程序,訓(xùn)練實(shí)用編程能力。所以必須突出重點(diǎn),突出應(yīng)用性,側(cè)重教思想,即把程序設(shè)計(jì)語(yǔ)言的基本思想、基本環(huán)境、基本概念、基本知識(shí)和基本方法教給學(xué)生,使他們?cè)趯W(xué)習(xí)中對(duì)硬件、軟件環(huán)境、程序設(shè)計(jì)的基本思想和基本技巧,所學(xué)程序設(shè)計(jì)語(yǔ)言的基本概念和使用方法以及編程技術(shù)有一個(gè)比較全面的感性認(rèn)識(shí),從而提高解決實(shí)際問(wèn)題的能力。
2)打好數(shù)學(xué)基礎(chǔ)。嚴(yán)格的數(shù)學(xué)訓(xùn)練是程序設(shè)計(jì)能力的基礎(chǔ),學(xué)習(xí)和加強(qiáng)排列與組合、數(shù)列、數(shù)學(xué)歸納法等離散系統(tǒng)的數(shù)學(xué)方法對(duì)提高程序設(shè)計(jì)能力尤為重要。問(wèn)題描述和建立數(shù)學(xué)模型是程序設(shè)計(jì)的前奏,數(shù)學(xué)歸納法、窮舉法、構(gòu)造證明法等證明技巧是算法設(shè)計(jì)方法的基礎(chǔ)。
3)強(qiáng)化英語(yǔ)水平。程序設(shè)計(jì)語(yǔ)言的符號(hào)系統(tǒng)以英語(yǔ)為基礎(chǔ),程序設(shè)計(jì)文檔語(yǔ)言首選英語(yǔ)。英文資料是計(jì)算機(jī)最新和最大的技術(shù)資料來(lái)源,英語(yǔ)水平是我國(guó)軟件產(chǎn)業(yè)發(fā)展和參與國(guó)際競(jìng)爭(zhēng)的制約因素。
4)重視閱讀訓(xùn)練。從某種意義上來(lái)說(shuō),程序設(shè)計(jì)是用程序設(shè)計(jì)語(yǔ)言和方法進(jìn)行的一種寫作??梢韵胂?如果學(xué)生沒(méi)有閱讀過(guò)一份完整、規(guī)范、有實(shí)用價(jià)值的標(biāo)準(zhǔn)程序,即使記住了有關(guān)語(yǔ)言的語(yǔ)法規(guī)則,也不可能寫出像樣的程序。所以,大量閱讀、分析、修改和擴(kuò)充典型的算法和程序,是提高程序?qū)懽髂芰Φ挠行緩?。而這個(gè)重要學(xué)習(xí)環(huán)節(jié)往往未得到應(yīng)有的重視,缺乏配套的程序設(shè)計(jì)閱讀分析教材。教師應(yīng)經(jīng)常指導(dǎo)學(xué)生閱讀程序,理解程序,提高學(xué)生分析程序的能力。
5)注重算法設(shè)計(jì),突出數(shù)據(jù)結(jié)構(gòu)內(nèi)容。瑞士科學(xué)家、PASCAL語(yǔ)言和MODULA-2語(yǔ)言的發(fā)明者沃思(Wirth)教授提出了著名的公式:程序=算法+數(shù)據(jù)結(jié)構(gòu)。這個(gè)公式表達(dá)了程序的實(shí)質(zhì),說(shuō)明對(duì)于一個(gè)程序設(shè)計(jì)問(wèn)題來(lái)講,算法與程序設(shè)計(jì)是緊密聯(lián)系的,絕不能脫離數(shù)據(jù)結(jié)構(gòu)去講解算法設(shè)計(jì)。程序設(shè)計(jì)語(yǔ)言的教學(xué)應(yīng)該結(jié)合數(shù)據(jù)結(jié)構(gòu)的基本內(nèi)容。對(duì)于同一個(gè)計(jì)算問(wèn)題,選用不同的數(shù)據(jù)結(jié)構(gòu),其算法大不一樣,算法的優(yōu)劣程度也不同。因此,要教會(huì)學(xué)生對(duì)不同的問(wèn)題選擇合適的數(shù)據(jù)結(jié)構(gòu)。在整個(gè)程序設(shè)計(jì)課程中,必須強(qiáng)調(diào)算法設(shè)計(jì)方法,通過(guò)不斷的算法設(shè)計(jì)訓(xùn)練,使學(xué)生切實(shí)掌握迭代、枚舉、遞歸、分類等常用算法設(shè)計(jì)方法。
6)更新教學(xué)內(nèi)容。計(jì)算機(jī)學(xué)科是一門綜合性學(xué)科,而且程序設(shè)計(jì)語(yǔ)言的應(yīng)用領(lǐng)域在不斷擴(kuò)大和發(fā)展。因此,在教學(xué)中應(yīng)結(jié)合專業(yè)的特點(diǎn)和教學(xué)的要求,將軟件工程的思想方法貫穿于整個(gè)教學(xué)過(guò)程,介紹程序設(shè)計(jì)語(yǔ)言的最新發(fā)展和應(yīng)用,重視面向?qū)ο蟪绦蛟O(shè)計(jì)方法的引入,搞好教材內(nèi)容的更新。如圖形程序設(shè)計(jì)、下拉式或彈出式菜單、計(jì)算機(jī)病毒防治等等。這樣不僅能把最新的知識(shí)和最新發(fā)展動(dòng)態(tài)充實(shí)到教學(xué)上來(lái),大大豐富了教學(xué)內(nèi)容,而且使學(xué)生加深對(duì)程序設(shè)計(jì)語(yǔ)言的理解和掌握,保持對(duì)信息技術(shù)和專業(yè)的興趣,及時(shí)跟上信息技術(shù)日新月異的發(fā)展趨勢(shì),在今后工作中保持領(lǐng)先地位。
7)采用先進(jìn)教學(xué)手段。用傳統(tǒng)的課堂教學(xué)方法講授動(dòng)態(tài)的算法和數(shù)據(jù)結(jié)構(gòu)是十分低效的,像排序、遞歸等抽象動(dòng)態(tài)的內(nèi)容講解就常常是費(fèi)力不討好。應(yīng)該根據(jù)課程特點(diǎn),采用先進(jìn)的現(xiàn)代教學(xué)方法,如直觀教學(xué)方法:利用掛圖、教具等講解,以及計(jì)算機(jī)輔助教學(xué)(CAI)和計(jì)算機(jī)輔助學(xué)習(xí)(Computer Aided Learning,簡(jiǎn)稱CAL)進(jìn)行教學(xué),通常開發(fā)利用與課程內(nèi)容與教學(xué)特點(diǎn)相適應(yīng)的多媒體課件進(jìn)行教學(xué)。它們是講解算法和進(jìn)行程序設(shè)計(jì)訓(xùn)練的最佳教學(xué)平臺(tái),既能增加學(xué)習(xí)的趣味性,又可利用圖形的直觀性幫助抽象和動(dòng)態(tài)過(guò)程的理解。
8)加強(qiáng)實(shí)踐環(huán)節(jié),強(qiáng)化創(chuàng)造性思維能力培養(yǎng)。在教學(xué)中,常常聽到學(xué)生提出這樣的問(wèn)題:“程序設(shè)計(jì)語(yǔ)言有什么用?”,有的學(xué)生還反映:“程序設(shè)計(jì)語(yǔ)言并不難學(xué),就是不知道如何應(yīng)用?”一些學(xué)生學(xué)到了一定的科學(xué)知識(shí),但上機(jī)動(dòng)手水平低。這種現(xiàn)象與普遍忽視實(shí)踐環(huán)節(jié)有關(guān)。為了扭轉(zhuǎn)這一局面,在整個(gè)教學(xué)過(guò)程中,必須強(qiáng)調(diào)實(shí)踐環(huán)節(jié)的重要性,充分安排上機(jī)實(shí)踐時(shí)間,加強(qiáng)系統(tǒng)訓(xùn)練和實(shí)踐能力的培養(yǎng),強(qiáng)化創(chuàng)造性思維能力培養(yǎng)。根據(jù)課程特點(diǎn),在教學(xué)中,采用案例驅(qū)動(dòng)教學(xué),進(jìn)行興趣引導(dǎo);在實(shí)踐中,可以精心組織一系列由易到難、由淺入深、配套銜接、結(jié)合學(xué)科學(xué)習(xí)、有一定設(shè)計(jì)技巧的程序設(shè)計(jì)作業(yè),最后再安排一次綜合性強(qiáng)、有一定難度的課程設(shè)計(jì)實(shí)踐,對(duì)學(xué)生進(jìn)行項(xiàng)目訓(xùn)練,提高學(xué)生應(yīng)用能力。通過(guò)上機(jī)作業(yè)和課程設(shè)計(jì)的完成,使學(xué)生獨(dú)立思考,各顯才干,總結(jié)經(jīng)驗(yàn),培養(yǎng)他們的動(dòng)手能力和編程能力,以及分析問(wèn)題和解決問(wèn)題的能力。
4 結(jié)論
總之,培養(yǎng)學(xué)生計(jì)算機(jī)程序設(shè)計(jì)能力的方法和途徑很多,但是編程序不難,編好程序不易。作為教師,必須從培養(yǎng)學(xué)生編程思維的角度出發(fā),按照以上策略認(rèn)真進(jìn)行編程知識(shí)的教學(xué)和技能的培養(yǎng),加強(qiáng)實(shí)踐,提高學(xué)生科學(xué)思維的能力,真正學(xué)會(huì)程序設(shè)計(jì)的真本領(lǐng)。
參考文獻(xiàn):
[1] ,王楠.淺談程序設(shè)計(jì)語(yǔ)言課程教學(xué)方法[J].吉林大學(xué)學(xué)報(bào)(信息科學(xué)版),2005(S2).
[2] 徐進(jìn)華.提高學(xué)生程序設(shè)計(jì)能力的幾個(gè)措施[J].計(jì)算機(jī)時(shí)代,2005(11).
關(guān)鍵詞:C語(yǔ)言;程序設(shè)計(jì);教學(xué)內(nèi)容;教學(xué)角度
中圖分類號(hào):G64 文獻(xiàn)標(biāo)識(shí)碼:A
1教學(xué)現(xiàn)狀
在高等學(xué)校的本科教育中,“C語(yǔ)言程序設(shè)計(jì)”幾乎成了所有專業(yè)的必開課程,從計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程、網(wǎng)絡(luò)工程等相關(guān)專業(yè),到電子信息類理工科各專業(yè),乃至理工科院校的所有非計(jì)算機(jī)專業(yè),有的是專業(yè)基礎(chǔ)課,有的是公共必修基礎(chǔ)課,有的是“非計(jì)算機(jī)專業(yè)的計(jì)算機(jī)基礎(chǔ)課”。只是課程名稍有差異,常見的有“C語(yǔ)言程序設(shè)計(jì)”、“高級(jí)語(yǔ)言程序設(shè)計(jì)”、“C語(yǔ)言”、“C程序設(shè)計(jì)”、“結(jié)構(gòu)化程序設(shè)計(jì)”等。無(wú)論叫什么樣的課程名,也無(wú)論是哪類專業(yè),其課程的教學(xué)要求和教材選用卻無(wú)太大差別,只是課時(shí)分配差異較大。
從網(wǎng)絡(luò)調(diào)查的16所不同類型高校的“C語(yǔ)言程序設(shè)計(jì)”教學(xué)大綱看,普遍都包含“通過(guò)本課程的學(xué)習(xí),使學(xué)生了解有關(guān)程序設(shè)計(jì)的基本概念、術(shù)語(yǔ)及C語(yǔ)言的特點(diǎn),掌握C語(yǔ)言基本數(shù)據(jù)類型、語(yǔ)法規(guī)則、程序控制結(jié)構(gòu)、常用的標(biāo)準(zhǔn)庫(kù)函數(shù),培養(yǎng)學(xué)生的程序設(shè)計(jì)技能,初步積累編程經(jīng)驗(yàn)”的教學(xué)基本要求;約百分之八十左右的“C語(yǔ)言程序設(shè)計(jì)”課程都選用由譚浩強(qiáng)主編、清華大學(xué)出版社出版的“C程序設(shè)計(jì)”作為主教材;課時(shí)分配從30~108課時(shí)不等,其中80課時(shí)以上的多為應(yīng)用型本科院校的計(jì)算機(jī)相關(guān)專業(yè)以及綜合性大學(xué)的非計(jì)算機(jī)專業(yè),理論課時(shí)與實(shí)驗(yàn)課時(shí)的比例一般為1:1到1:1.2。與此同時(shí),其他專業(yè)基礎(chǔ)課(如計(jì)算機(jī)組成原理、操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)等)的課時(shí)一般為54課時(shí),最多不超過(guò)72學(xué)時(shí)。相比之下,“C語(yǔ)言程序設(shè)計(jì)”所占課時(shí)是其他專業(yè)基礎(chǔ)課的1.5倍至2倍。
從教學(xué)目的看,非計(jì)算機(jī)專業(yè)的“C語(yǔ)言程序設(shè)計(jì)”課程主要目的是“掌握語(yǔ)法規(guī)則和程序結(jié)構(gòu),具備一定的程序設(shè)計(jì)能力”,而計(jì)算機(jī)相關(guān)專業(yè)的“C語(yǔ)言程序設(shè)計(jì)”課的教學(xué)目的則要分為三個(gè)層次,一是使學(xué)生全面理解計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的基本內(nèi)容和結(jié)構(gòu);二是通過(guò)算法掌握程序設(shè)計(jì)的基本方法和步驟,并具備一定的程序設(shè)計(jì)能力;三是為后續(xù)課程的算法描述和其他程序設(shè)計(jì)語(yǔ)言的學(xué)習(xí)奠定基礎(chǔ)。
2教學(xué)誤區(qū)
從以上的教學(xué)現(xiàn)狀(特別是課時(shí)分配)看,長(zhǎng)期以來(lái),“C語(yǔ)言程序設(shè)計(jì)”的課程教學(xué)存在“教學(xué)內(nèi)容背離教學(xué)要求和教學(xué)目的”的誤區(qū),主要表現(xiàn)在教材誤區(qū)、講授誤區(qū)和考核誤區(qū)三個(gè)方面。
2.1教材誤區(qū)
國(guó)內(nèi)高校的“C語(yǔ)言程序設(shè)計(jì)”課大多選用譚浩強(qiáng)主編、清華大學(xué)出版社出版的“C程序設(shè)計(jì)”[1]為主教材,目前使用的是2005年7月修訂出版的第三版,教材共363頁(yè),主體內(nèi)容分為14章,其中,第3章的數(shù)據(jù)類型與表達(dá)式占用30頁(yè),第4章的格式輸入輸出占用12頁(yè),前9章共占用218頁(yè),后5章共占用145頁(yè)。占用如此大篇幅的原因是教材中除了介紹相關(guān)語(yǔ)法格式外,還增加了相當(dāng)多“特殊格式”和“特殊情況”的解釋和說(shuō)明,因此,該教材的最大優(yōu)點(diǎn)就是“內(nèi)容詳盡、解釋清晰”。然而,對(duì)于初學(xué)者來(lái)說(shuō),學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言就是為了“為計(jì)算機(jī)描述求解問(wèn)題的過(guò)程”,過(guò)于詳細(xì)但又遠(yuǎn)離現(xiàn)實(shí)問(wèn)題的“特殊格式”和“特殊情況”的解釋,使得學(xué)習(xí)內(nèi)容復(fù)雜化,增加了程序設(shè)計(jì)語(yǔ)言學(xué)習(xí)的難度,誤導(dǎo)了學(xué)習(xí)者的學(xué)習(xí)重點(diǎn),由此也賦予了該教材無(wú)法掩飾的缺點(diǎn),那就是教材編寫的指導(dǎo)思想和教材內(nèi)容的組織脫離了高校各專業(yè)“C語(yǔ)言程序設(shè)計(jì)”課程的教學(xué)目標(biāo),過(guò)分強(qiáng)調(diào)語(yǔ)法細(xì)節(jié)而忽略了程序設(shè)計(jì)語(yǔ)言的“正向表達(dá)能力”的應(yīng)用,過(guò)分強(qiáng)調(diào)“語(yǔ)言的靈活性”而導(dǎo)致教材主體內(nèi)容的“復(fù)雜化”,從而誤導(dǎo)“C語(yǔ)言程序設(shè)計(jì)”課程的教學(xué)內(nèi)容朝著“重語(yǔ)法學(xué)習(xí)、輕算法描述”的“語(yǔ)言研究”方向發(fā)展。
2.2講授誤區(qū)
由于教材內(nèi)容的“復(fù)雜”,課堂講授自然需要較多課時(shí),教學(xué)重點(diǎn)當(dāng)然也放在了“語(yǔ)法研究”上。從網(wǎng)上下載的“C程序設(shè)計(jì)(第三版)”的配套教學(xué)課件以及有關(guān)院校的“C語(yǔ)言程序設(shè)計(jì)”教學(xué)課件的內(nèi)容組織上可以清楚的給出以上判斷。“語(yǔ)法研究”型的課堂講授,更加放大了教材對(duì)“C語(yǔ)言程序設(shè)計(jì)”課程內(nèi)容的“扭曲”程度,給學(xué)生提供了錯(cuò)誤的程序設(shè)計(jì)語(yǔ)言學(xué)習(xí)方法,把簡(jiǎn)單問(wèn)題復(fù)雜化,更為嚴(yán)重的是,挫傷了學(xué)生學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的興趣和積極性,把本應(yīng)“主動(dòng)學(xué)習(xí)”的課程成引入了“被動(dòng)學(xué)習(xí)”的歧途,直接導(dǎo)致“懂語(yǔ)法、會(huì)做題,但不會(huì)編程序”的教學(xué)后果。
2.3考核誤區(qū)
多年來(lái),“C語(yǔ)言程序設(shè)計(jì)”的主體考試內(nèi)容就是“語(yǔ)法”,無(wú)論是選擇題、填空題還是程序閱讀題,大多都無(wú)法逃脫“語(yǔ)法”的束縛。考試方式以筆試為主。這在某種程度上肯定了“語(yǔ)言研究”的教學(xué)角度,促使“C語(yǔ)言程序設(shè)計(jì)”的教學(xué)重點(diǎn)更向“語(yǔ)法研究”的方向傾斜,最終誤入“增加課時(shí),強(qiáng)化語(yǔ)法,還是不會(huì)編程序”的怪圈。
3應(yīng)有的教學(xué)角度
按照網(wǎng)上調(diào)查的各專業(yè)教學(xué)大綱中“培養(yǎng)具有一定程序設(shè)計(jì)能力”的教學(xué)目的,“C語(yǔ)言程序設(shè)計(jì)”課程的教學(xué)落腳點(diǎn)應(yīng)該更確切的理解為培養(yǎng)“能用程序設(shè)計(jì)語(yǔ)言描述求解問(wèn)題過(guò)程”的一般程序設(shè)計(jì)者,而不是造就“全面掌握程序設(shè)計(jì)語(yǔ)言語(yǔ)法、能設(shè)計(jì)高效、難懂程序”的程序設(shè)計(jì)語(yǔ)言方面的“作家”。因此,“C語(yǔ)言程序設(shè)計(jì)”課程教學(xué)相當(dāng)于自然語(yǔ)言中的“基本語(yǔ)言能力”教學(xué),而不是“語(yǔ)言研究”或“高級(jí)寫作”能力培養(yǎng)。
3.1自然語(yǔ)言與計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言
計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言是用人和計(jì)算機(jī)都能識(shí)別的方式描述計(jì)算機(jī)求解問(wèn)題過(guò)程的過(guò)程描述語(yǔ)言,它具有和人所使用的自然語(yǔ)言相同或相似的組成和結(jié)構(gòu)特點(diǎn),對(duì)于已經(jīng)掌握了至少一門自然語(yǔ)言(比如漢語(yǔ)或英語(yǔ))并具備一定文化程度的人來(lái)說(shuō),學(xué)習(xí)一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言并非難事。自然語(yǔ)言的基本組成包括符號(hào)集合、字、詞、句、數(shù)據(jù)及其運(yùn)算規(guī)則等基本要素,學(xué)習(xí)過(guò)程包括認(rèn)識(shí)符號(hào)、發(fā)音、識(shí)字、組詞、學(xué)語(yǔ)法并造句、學(xué)文法并寫短文、練習(xí)寫文章等基本階段,在具備了基本的語(yǔ)言能力之后,擴(kuò)充詞匯量和提高寫作能力將成為終身學(xué)習(xí)的基本內(nèi)容。按照自然語(yǔ)言的基本組成和學(xué)習(xí)過(guò)程,也可將計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的基本組成歸納為字符集、標(biāo)識(shí)符(常量、變量、保留字等)、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、語(yǔ)句、程序格式等基本要素,其中,字符集和數(shù)據(jù)類型是定義程序設(shè)計(jì)語(yǔ)言的基礎(chǔ),字符按一定規(guī)則組成標(biāo)識(shí)符,用來(lái)充當(dāng)常量名、變量名或其他標(biāo)識(shí),在自然語(yǔ)言中被人們公認(rèn)的特殊標(biāo)識(shí)符被賦予特定的語(yǔ)言含義,專門為語(yǔ)言系統(tǒng)所用(用戶不得再次定義其意義),稱為保留字;字符集中的特殊符號(hào)(如+、-、*、/)被賦予特定的運(yùn)算意義(如加、減、乘、除)稱為運(yùn)算符;不同數(shù)據(jù)類型的常量、變量用運(yùn)算符按一定規(guī)則連接起來(lái)組成的式子就構(gòu)成表達(dá)式;將特定的保留字與表達(dá)式等語(yǔ)言要素按照語(yǔ)法規(guī)則組合起來(lái)就形成相應(yīng)的語(yǔ)句;將語(yǔ)句按照要描述的求解問(wèn)題的邏輯順序排列起來(lái),就構(gòu)成了某種程序設(shè)計(jì)語(yǔ)言求解特定問(wèn)題的一段程序。
3.2C語(yǔ)言的特殊性
一方面,C語(yǔ)言是程序設(shè)計(jì)語(yǔ)言的一種,具備一般程序設(shè)計(jì)語(yǔ)言的基本組成要素和結(jié)構(gòu)特點(diǎn)。另一方面,C語(yǔ)言能成為面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言的代表,也有其自身的特殊性。首先,C語(yǔ)言的數(shù)據(jù)類型極為豐富。除了基本數(shù)據(jù)類型外,還有構(gòu)造類型、指針類型、空類型和用戶自定義類型,其中,構(gòu)造類型包括數(shù)組、結(jié)構(gòu)體(struct)、共用體(union)和枚舉類型(enum)等四種數(shù)據(jù)結(jié)構(gòu)。其次,C語(yǔ)言具有位操作能力。除了能夠?qū)Ω黝愖兞窟M(jìn)行操作外,C語(yǔ)言還具備“按位”進(jìn)行邏輯“與”、“或”、“非”、“異或”運(yùn)算和“左”、“右”移位運(yùn)算,這使得C語(yǔ)言具備了更強(qiáng)的系統(tǒng)開發(fā)能力。第三,C語(yǔ)言具有顯著的結(jié)構(gòu)化程序設(shè)計(jì)能力,并通過(guò)完整的函數(shù)定義來(lái)實(shí)現(xiàn)。第四,C語(yǔ)言的最大特點(diǎn)就是“語(yǔ)法限制不嚴(yán),解釋靈活”。第五,C語(yǔ)言允許直接訪問(wèn)物理地址,可直接對(duì)硬件端口進(jìn)行操作。第六,C語(yǔ)言沒(méi)有輸入/輸出語(yǔ)句,信息輸入/輸出功能由標(biāo)準(zhǔn)函數(shù)庫(kù)中相應(yīng)的I/O函數(shù)來(lái)完成。
C語(yǔ)言的這些特殊性,決定了C語(yǔ)言的教、學(xué)過(guò)程不同于其他程序設(shè)計(jì)語(yǔ)言的教學(xué)過(guò)程。
3.3C語(yǔ)言的教學(xué)角度
根據(jù)一般程序設(shè)計(jì)語(yǔ)言的基本組成與結(jié)構(gòu)特點(diǎn),結(jié)合C語(yǔ)言的特殊性,“C語(yǔ)言程序設(shè)計(jì)”課程的教學(xué)角度應(yīng)該是:從介紹程序設(shè)計(jì)語(yǔ)言的基本概念入手,重點(diǎn)介紹語(yǔ)言的“正
向”設(shè)計(jì)功能而非“特殊格式”或“特殊語(yǔ)法”說(shuō)明,側(cè)重學(xué)生的程序閱讀和程序設(shè)計(jì)能力培養(yǎng),從教學(xué)內(nèi)容的廣度和深度兩個(gè)方面,恰當(dāng)把握教學(xué)角度。
“C語(yǔ)言程序設(shè)計(jì)”課程的內(nèi)容可分為三個(gè)基本模塊,教學(xué)過(guò)程從第一個(gè)模塊切入,逐漸擴(kuò)展到第二和第三個(gè)模塊。第一個(gè)模塊可稱為“程序設(shè)計(jì)語(yǔ)言公共模塊”,主要包括程序設(shè)計(jì)語(yǔ)言的基本概念、程序設(shè)計(jì)語(yǔ)言的基本要素(字符集、標(biāo)識(shí)符、常量變量以及保留字、基本數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、語(yǔ)句與控制結(jié)構(gòu)、程序結(jié)構(gòu)以及程序書寫規(guī)范等)以及輸入/輸出格式等內(nèi)容;第二個(gè)模塊是C語(yǔ)言的主體,主要包括函數(shù)、數(shù)組、指針、文件等;第三個(gè)模塊是高級(jí)編程內(nèi)容,主要包括結(jié)構(gòu)體(struct)、共用體(union)、枚舉類型(enum)以及用戶自定義類型等。
在教學(xué)深度方面,各模塊的教學(xué)重點(diǎn)應(yīng)放在“規(guī)范的語(yǔ)法描述和直觀易懂而且正確的語(yǔ)義表述上”,避免涉及各種過(guò)細(xì)的“不符合人類閱讀習(xí)慣”的語(yǔ)義描述,暫時(shí)避開“特殊格式”或“特殊情況”的糾纏,擺脫“研究語(yǔ)法”的錯(cuò)誤向?qū)АT诖嘶A(chǔ)上,第一模塊的教學(xué)可與自然語(yǔ)言相比對(duì),通過(guò)學(xué)生已有的自然語(yǔ)言學(xué)習(xí)經(jīng)驗(yàn)和語(yǔ)言要素,使學(xué)生快速建立程序設(shè)計(jì)語(yǔ)言的基本概念,正確理解程序設(shè)計(jì)語(yǔ)言的基本要素及其關(guān)系,掌握基本語(yǔ)法和程序基本控制結(jié)構(gòu)(順序、選擇、循環(huán)),并通過(guò)算法歸納求解問(wèn)題的過(guò)程,正確理解算法不同描述方式(自然語(yǔ)言、傳統(tǒng)流程圖、N-S流程圖、偽代碼、程序設(shè)計(jì)語(yǔ)言)的作用和差異,特別是從“問(wèn)題”到“程序”的漸進(jìn)轉(zhuǎn)化過(guò)程,從而培養(yǎng)學(xué)生的基本程序設(shè)計(jì)能力。通過(guò)第二模塊的教學(xué),使學(xué)生明確函數(shù)、數(shù)組、指針、文件等概念和作用,掌握它們的定義和引用方法,能進(jìn)行相應(yīng)數(shù)據(jù)類型的編程,進(jìn)而掌握用函數(shù)定義的結(jié)構(gòu)化模塊程序設(shè)計(jì)的方法;通過(guò)第三個(gè)模塊的教學(xué),將程序的數(shù)據(jù)處理能力擴(kuò)展到結(jié)構(gòu)體、共用體、枚舉類型以及用戶自定義類型等復(fù)雜數(shù)據(jù)類型的處理上來(lái),通過(guò)恰當(dāng)?shù)睦討?yīng)用這些數(shù)據(jù)類型,向?qū)W生展示C語(yǔ)言強(qiáng)有力的數(shù)據(jù)表示和處理能力。
另外,可以將C語(yǔ)言中的“語(yǔ)法靈活性”和不同部分的各種“特殊情況”分類總結(jié),歸納整理成“語(yǔ)言參考手冊(cè)”等形式,以附錄的形式提供給學(xué)生,以便需要時(shí)“備查”。這樣既可節(jié)省教學(xué)課時(shí),又可向?qū)W生提供學(xué)習(xí)語(yǔ)言的主動(dòng)權(quán)。
3.4教學(xué)策略和方法
“C語(yǔ)言程序設(shè)計(jì)”屬語(yǔ)言類課程,教學(xué)過(guò)程充滿了逐步完善和熟練的基本特點(diǎn),因此,從教學(xué)安排的策略上要分重點(diǎn)、分階段逐步進(jìn)行,每個(gè)階段的教學(xué)方法應(yīng)該采用建立在一定基礎(chǔ)上的有重點(diǎn)的“部分教學(xué)法”,以核心內(nèi)容為基礎(chǔ),向外逐漸延伸,部分學(xué)習(xí),漸進(jìn)掌握。盡可能避免不分主次、不論難易、不顧急緩,盲目一次性掃清各類知識(shí)點(diǎn)的“地毯式”教授方法或?qū)W習(xí)方法,同時(shí)強(qiáng)調(diào)自學(xué)和上機(jī)驗(yàn)證,強(qiáng)化在特定環(huán)境下(如Turbo C++ 3.0)的程序設(shè)計(jì)訓(xùn)練,做到“精講多練[2]”,從小程序練起,逐漸過(guò)渡到求解較大或?qū)嶋H問(wèn)題的程序設(shè)計(jì)上來(lái)。
4結(jié)束語(yǔ)
從目前的教學(xué)現(xiàn)狀看,無(wú)論是計(jì)算機(jī)相關(guān)專業(yè),還是理工科的電子信息類專業(yè),乃至綜合性大學(xué)的非計(jì)算機(jī)專業(yè),“C語(yǔ)言程序設(shè)計(jì)”的課程教學(xué)均占有重要的教學(xué)地位,在全面提高教學(xué)質(zhì)量和教學(xué)效率的今天,不同類型專業(yè)結(jié)合自身優(yōu)勢(shì)和程序設(shè)計(jì)語(yǔ)言類課程的特點(diǎn),選擇合適的角度組織和實(shí)施“C語(yǔ)言程序設(shè)計(jì)”課程的教學(xué)活動(dòng)非常重要,而且很有必要。筆者的教學(xué)實(shí)踐證明,避開“語(yǔ)法研究”的程序設(shè)計(jì)教學(xué)不僅可減少課時(shí),更可提高學(xué)生利用程序設(shè)計(jì)語(yǔ)言“表述求解問(wèn)題過(guò)程”的能力。
當(dāng)前,計(jì)算機(jī)技術(shù)飛速發(fā)展,程序設(shè)計(jì)技術(shù)已從結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)向面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)過(guò)渡,對(duì)一個(gè)規(guī)模較大的應(yīng)用程序,總體框架是由面向?qū)ο蟪绦蛟O(shè)計(jì)構(gòu)搭而成,而在局部實(shí)現(xiàn)時(shí)仍需采用結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)。C語(yǔ)言是一種很好的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,因此,筆者論述了C中的的結(jié)構(gòu)化程序設(shè)計(jì)的方法。
結(jié)構(gòu)化程序設(shè)計(jì)(STRUCTURED PROGRAMING,簡(jiǎn)稱SP)的概念是由荷蘭學(xué)者E·W.DUKSTRA等人在20世紀(jì)60年代后期提出的,是以模塊化設(shè)計(jì)為中心,將原來(lái)較為復(fù)雜的問(wèn)題化簡(jiǎn)為一系列簡(jiǎn)單模塊的設(shè)計(jì),也就是將—個(gè)大的計(jì)算任務(wù)劃分為一個(gè)個(gè)比較小的任務(wù),這些小任務(wù)均由函數(shù)來(lái)完成。而函數(shù)既可以是C的標(biāo)準(zhǔn)庫(kù)函數(shù)。也可以是自定義函數(shù)。在C中,一個(gè)具備一定規(guī)模的C程序往往是由多個(gè)函數(shù)組成,其中必有一個(gè)名為main的主函數(shù),由main來(lái)調(diào)用其他函數(shù),必要的話,其他函數(shù)還可以調(diào)用另外的函數(shù)。同一函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用一次或多次。模塊的獨(dú)立性還為擴(kuò)充已有的系統(tǒng)、建立新系統(tǒng)帶來(lái)了不少的方便,因?yàn)槲覀兛梢猿浞掷矛F(xiàn)有的模塊作積木式的擴(kuò)展。
結(jié)構(gòu)化程序設(shè)計(jì)的思想是一個(gè)程序的任何邏輯問(wèn)題,均可用順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)這3種基本結(jié)構(gòu)來(lái)描述。順序結(jié)構(gòu)的程序流程是按語(yǔ)句的書寫順序依次執(zhí)行;選擇結(jié)構(gòu)是對(duì)給定條件進(jìn)行判斷,根據(jù)判斷結(jié)果決定執(zhí)行兩分支中的一個(gè)分支或多分支中的一個(gè)分支;循環(huán)結(jié)構(gòu)是在給定條件成立的情況下,反復(fù)執(zhí)行某個(gè)程序段。實(shí)現(xiàn)這些程序流程的語(yǔ)句都是流程控制語(yǔ)句。流程控制語(yǔ)句在程序設(shè)計(jì)中起著重要的作用,通過(guò)3種基本控制結(jié)構(gòu)使結(jié)構(gòu)化程序具有唯一的人口和出口,沒(méi)有死循環(huán),而且程序的靜態(tài)形式與動(dòng)態(tài)執(zhí)行形式之間具有良好的對(duì)應(yīng)關(guān)系。在C語(yǔ)言中,有4種語(yǔ)句是順序執(zhí)行的:①空語(yǔ)句,光有一個(gè)分號(hào)“;”作為語(yǔ)句結(jié)束符,它表示什么也不做。②表達(dá)式語(yǔ)句,表達(dá)式后面加一個(gè)分號(hào),表達(dá)式語(yǔ)句主要有賦值語(yǔ)句、自加減運(yùn)算符構(gòu)成的語(yǔ)句和逗號(hào)表達(dá)式語(yǔ)句。③函數(shù)調(diào)用語(yǔ)句,它是由一個(gè)函數(shù)調(diào)用加上一個(gè)分號(hào)組成的。④復(fù)合語(yǔ)句,由“{”和“}”把一些變量說(shuō)明和語(yǔ)句組合放在一起,又稱為語(yǔ)句塊。選擇語(yǔ)句有if語(yǔ)句和switch語(yǔ)句。循環(huán)語(yǔ)句有for,while和do-while語(yǔ)句以及一些輔助流程轉(zhuǎn)向語(yǔ)句如continue,break,goto等。順序結(jié)構(gòu),選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元,由這3種結(jié)構(gòu)經(jīng)過(guò)反復(fù)嵌套構(gòu)成的程序稱為結(jié)構(gòu)化程序,也就是說(shuō),結(jié)構(gòu)化程序是由上述3種基本結(jié)構(gòu)組成的。但如果在編程過(guò)程中無(wú)限制地使用轉(zhuǎn)移語(yǔ)句(-goto),會(huì)使程序的控制流程強(qiáng)制性地向前或向后跳轉(zhuǎn)而導(dǎo)致程序的流程無(wú)序可循,結(jié)構(gòu)雜亂無(wú)章。結(jié)構(gòu)化構(gòu)造減少了程序的復(fù)雜性,提高了可靠性、可測(cè)試性和可維護(hù)性,使用少數(shù)的基本結(jié)構(gòu),就可使程序邏輯結(jié)構(gòu)清晰,易讀易懂,并且容易驗(yàn)證程序的正確性。對(duì)—個(gè)初學(xué)計(jì)算機(jī)語(yǔ)言的人來(lái)說(shuō)。最重要的就是要有正確的程序流程概念,不僅要懂得而且要靈活應(yīng)用。由此可見,用結(jié)構(gòu)化方法設(shè)計(jì)的結(jié)構(gòu)是清晰的,有利于編寫出結(jié)構(gòu)良好的程序。因此。結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為自頂向下,逐步求精,模塊化,限制使用goto語(yǔ)句。
中圖分類號(hào):TP311.12-4
《高級(jí)語(yǔ)言程序設(shè)計(jì)》是計(jì)算機(jī)相關(guān)專業(yè)必修的一門專業(yè)課[1],在這門課程中,掌握順序、選擇、循環(huán)三大結(jié)構(gòu)是學(xué)好程序設(shè)計(jì)的基礎(chǔ),在大多數(shù)程序中都會(huì)包含選擇結(jié)構(gòu),C語(yǔ)言主要有if和switch兩種選擇語(yǔ)句[2],其中,if語(yǔ)句的應(yīng)用更為常見一些,它分為簡(jiǎn)單分支、雙分支和復(fù)雜分支。if語(yǔ)句的用法對(duì)于有程序設(shè)計(jì)經(jīng)驗(yàn)的學(xué)生來(lái)講輕而易舉,但是對(duì)于那些沒(méi)有編程經(jīng)驗(yàn)的新生來(lái)講,卻很難掌握,因此,在學(xué)習(xí)語(yǔ)法的同時(shí)更要注重學(xué)生編程能力的培養(yǎng)。筆者從初學(xué)者角度,用案例分析法對(duì)if語(yǔ)句進(jìn)行教學(xué)探討,以便提高教學(xué)質(zhì)量。
1 案例分析法
案例分析法是通過(guò)一個(gè)具體的教育情景描述,引導(dǎo)學(xué)生對(duì)這些特殊情景進(jìn)行討論的一種教學(xué)方法,用于提高學(xué)生解決和分析實(shí)際問(wèn)題的能力。
2 案例分析法在教學(xué)中的應(yīng)用舉例
2.1 案例選擇
用if語(yǔ)句評(píng)定和輸出某個(gè)或多個(gè)學(xué)生的成績(jī)等級(jí),是選擇結(jié)構(gòu)的典型應(yīng)用之一。對(duì)于這一類型的題目,解題的關(guān)鍵在于讓學(xué)生用一個(gè)嵌套的if語(yǔ)句來(lái)表示一個(gè)分段函數(shù)。
若用Xi表示凱里學(xué)院信12計(jì)專班中第i個(gè)學(xué)生ai的數(shù)據(jù)結(jié)構(gòu)考試成績(jī),用Y表示其等級(jí),第i個(gè)學(xué)生ai的成績(jī)Xi與等級(jí)Y之間存在下面的數(shù)學(xué)關(guān)系[3]:
3 結(jié)束語(yǔ)
針對(duì)上面案例中出現(xiàn)的情況,筆者運(yùn)用事前分析估算的方法來(lái)提高程序的執(zhí)行效率,這是編程者需要考慮的問(wèn)題,也是程序設(shè)計(jì)的基本要求,教學(xué)時(shí)教師可提醒學(xué)生檢驗(yàn)一下是否依據(jù)最好的策略進(jìn)行編程,使學(xué)生更加透徹地理解和掌握程序設(shè)計(jì)中的基本思想,領(lǐng)會(huì)程序設(shè)計(jì)的精髓,教師在授課過(guò)程中要注意向?qū)W生灌輸這種思想,為后續(xù)課程的進(jìn)一步學(xué)習(xí)和高級(jí)編程打基礎(chǔ)。
參考文獻(xiàn):
[1]蔣然.高職院?!禖語(yǔ)言程序設(shè)計(jì)》教學(xué)改革探討[J].福建電腦,2010(10):206.
[2]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第四版)[M].北京:清華大學(xué)出版社,2010.
[3]宋蘭霞.《數(shù)據(jù)結(jié)構(gòu)》教學(xué)方法探討[J].電腦知識(shí)與技術(shù),2013(14).
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2012)02(c)-0000-00
1 概述
計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,通常簡(jiǎn)稱為編程語(yǔ)言,是一組用來(lái)定義計(jì)算機(jī)程序的語(yǔ)法規(guī)則。它是一種被標(biāo)準(zhǔn)化的交流技巧,用來(lái)向計(jì)算機(jī)發(fā)出指令。
當(dāng)今計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言種類繁多、共性大、更新速度快,同時(shí)軟件工程和項(xiàng)目管理的蓬勃發(fā)展使得計(jì)算機(jī)軟件開發(fā)從業(yè)人員的職業(yè)分工更為明確。從人力資源與社會(huì)保障部頒布的“計(jì)算機(jī)程序設(shè)計(jì)員國(guó)家職業(yè)標(biāo)準(zhǔn)”上看,除了要求從業(yè)者必須要有扎實(shí)的基本功外,還要具備解決問(wèn)題的綜合能力。因此計(jì)算機(jī)程序設(shè)計(jì)員專業(yè)的學(xué)生在計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的知識(shí)和技能的學(xué)習(xí)中,不能再僅僅孤立地教授幾門編程語(yǔ)言、幾門相關(guān)的專業(yè)課程而已,而是要教會(huì)學(xué)生掌握通過(guò)計(jì)算機(jī)程序設(shè)計(jì)來(lái)解決實(shí)際問(wèn)題的知識(shí)和技能,成為一名合格的“軟件藍(lán)領(lǐng)”。這就要求我們不能延續(xù)傳統(tǒng)的學(xué)歷教育方法,計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言教學(xué)需要改革,需要一種全新的教學(xué)理念和模式。
當(dāng)前的教學(xué)改革更多的體現(xiàn)在教學(xué)方法和內(nèi)容上,“學(xué)習(xí)領(lǐng)域”、“任務(wù)驅(qū)動(dòng)”、“職業(yè)崗位導(dǎo)向”、“面向工作”等各種課程設(shè)計(jì)方法層出不窮。然而,縱觀大部分課程改革,我們發(fā)現(xiàn)其教學(xué)改革更多體現(xiàn)在獨(dú)立的課程中,并沒(méi)有在課程與課程的銜接上下功夫。大部分院校均先后開設(shè)VB、C、C++、JAVA等多門程序設(shè)計(jì)語(yǔ)言和數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫(kù)管理系統(tǒng)等專業(yè)課程,學(xué)生雖然學(xué)習(xí)了多門程序設(shè)計(jì)語(yǔ)言,然而每一門語(yǔ)言都只學(xué)了皮毛,每一門課程都學(xué)了基礎(chǔ),只能完成課堂和課后的作業(yè)和練習(xí),而對(duì)于能解決什么問(wèn)題,怎么解決問(wèn)題,如何綜合解決問(wèn)題一籌莫展,碰到問(wèn)題時(shí)往往覺(jué)得無(wú)從下手。
2 程序設(shè)計(jì)語(yǔ)言教學(xué)探索與改革:C語(yǔ)言學(xué)習(xí)三部曲
C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn),同時(shí)很多新型的語(yǔ)言都是衍生自C語(yǔ)言,,掌握了C語(yǔ)言,經(jīng)過(guò)簡(jiǎn)單的再學(xué)習(xí),就可以用其他新型的語(yǔ)言去進(jìn)行程序開發(fā)了。因此,在計(jì)算機(jī)專業(yè)的課程中,只要把C語(yǔ)言學(xué)扎實(shí)了、學(xué)透了,就可以說(shuō)掌握了計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的精粹。在課程設(shè)計(jì)中,我們以C語(yǔ)言為主線,以一脈相承的C語(yǔ)言、C++語(yǔ)言、C#語(yǔ)言為基本知識(shí)內(nèi)容,配合上數(shù)據(jù)結(jié)構(gòu)、UML、數(shù)據(jù)庫(kù)等相關(guān)知識(shí)點(diǎn),提出語(yǔ)言知識(shí)入門、語(yǔ)言能力提高、語(yǔ)言技能應(yīng)用三個(gè)階段和應(yīng)用層次的“C語(yǔ)言學(xué)習(xí)三部曲”的課程改革方案。
第一階段:語(yǔ)言知識(shí)入門――C語(yǔ)言與數(shù)據(jù)結(jié)構(gòu)整合
1、課程知識(shí)要求:
1) 掌握C語(yǔ)言的基本語(yǔ)法,如數(shù)據(jù)類型,3種語(yǔ)句結(jié)構(gòu),數(shù)組,指針等。
2) 掌握數(shù)據(jù)基本結(jié)構(gòu)形式和操作,如線性結(jié)構(gòu),樹形結(jié)構(gòu),圖形結(jié)構(gòu),以及數(shù)據(jù)結(jié)點(diǎn)的查找、添加、刪除、排序等操作。
3) 掌握“自頂先下、逐步細(xì)化”的結(jié)構(gòu)化程序設(shè)計(jì)方法。
2、課程技能要求:
掌握如何用計(jì)算機(jī)解決日常問(wèn)題,特別是數(shù)據(jù)的表現(xiàn)形式和動(dòng)作行為的表現(xiàn)形式。
3、課程設(shè)計(jì)要點(diǎn):
將C語(yǔ)言和數(shù)據(jù)結(jié)構(gòu)進(jìn)行有機(jī)整合,特別是在講解C語(yǔ)言的數(shù)據(jù)類型時(shí)溶入數(shù)據(jù)結(jié)構(gòu)知識(shí),在講解C語(yǔ)言的語(yǔ)法結(jié)構(gòu)時(shí)溶入數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)操作知識(shí)。
4、課程目的:
通過(guò)該課程的學(xué)習(xí),要求學(xué)生掌握基本程序設(shè)計(jì)思想和理論,學(xué)會(huì)數(shù)據(jù)及數(shù)據(jù)處理由現(xiàn)實(shí)世界向計(jì)算機(jī)世界的轉(zhuǎn)換方法和過(guò)程,學(xué)會(huì)用計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言描述和解決日常生活中問(wèn)題。
第二階段:語(yǔ)言能力提高――C++語(yǔ)言與UML工具整合
1、課程知識(shí)要求:
1) 掌握C++語(yǔ)言的高級(jí)語(yǔ)法知識(shí)以及面向?qū)ο蟮母拍詈托问?,如面向?qū)ο蟮娜筇卣鳎悍庋b、繼承、多態(tài),以及模板等概念。
2) 掌握UML知識(shí),掌握利用UML工具(如ROSE)來(lái)進(jìn)行面向?qū)ο蟮姆治龊徒5姆椒ê瓦^(guò)程。
3) 掌握以“抽象與分類”為關(guān)鍵的面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。
2、課程技能要求:
掌握如何用計(jì)算機(jī)解決日常問(wèn)題,特別是以面向?qū)ο蟮姆椒▉?lái)分析和解決問(wèn)題。該課程要求學(xué)生在第一階段掌握了結(jié)構(gòu)化的設(shè)計(jì)方法后,進(jìn)一步了解面向?qū)ο蟪绦蛟O(shè)計(jì)方法。
3、課程設(shè)計(jì)要點(diǎn):
把C++語(yǔ)言和UML進(jìn)行有機(jī)的整合。將UML作為面向?qū)ο蟪绦蛟O(shè)計(jì)的分析和設(shè)計(jì)的工具,而將C++語(yǔ)言作為進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)的編程和實(shí)現(xiàn)工具。
4、課程目的:
通過(guò)該課程的學(xué)習(xí),要求學(xué)生掌握面向?qū)ο罄碚?,學(xué)會(huì)面向?qū)ο蠓治觯∣OA)、面向?qū)ο笤O(shè)計(jì)(OOD)和面向?qū)ο缶幊蹋∣OP)方法和工具。
第三階段:語(yǔ)言技能應(yīng)用――C#語(yǔ)言與數(shù)據(jù)庫(kù)操作整合
1、課程知識(shí)要求:
1) 掌握C#語(yǔ)言的高級(jí)語(yǔ)法知識(shí)和軟件架構(gòu)知識(shí),如集合、委托、托管、、C/S與B/S架構(gòu)開發(fā)方法等。
2) 掌握數(shù)據(jù)庫(kù)操作知識(shí),如SQL語(yǔ)法、、XML等。
2、課程技能要求:
掌握多層架構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)方法。,該課程要求學(xué)生在復(fù)習(xí)第二階段的面向?qū)ο蟮脑O(shè)計(jì)方法后,掌握開發(fā).Net應(yīng)用系統(tǒng)的方法,掌握將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的方法,以及掌握對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢、添加、刪除等操作的方法和步驟。
3、課程設(shè)計(jì)要點(diǎn):
將C#語(yǔ)言與數(shù)據(jù)庫(kù)操作知識(shí)進(jìn)行有機(jī)整合,在講解用C#語(yǔ)言開發(fā)基于.Net的多層架構(gòu)應(yīng)用系統(tǒng)中,通過(guò)講解與LINQ將SQL溶入C#語(yǔ)言。
4、課程目的:
通過(guò)該課程的學(xué)習(xí),要求學(xué)生掌握C#語(yǔ)言和數(shù)據(jù)庫(kù)操作,掌握通用的企業(yè)級(jí)應(yīng)用系統(tǒng)的開發(fā)方法和過(guò)程。
3 結(jié)語(yǔ)
教育部部長(zhǎng)周濟(jì)在2008年度職業(yè)教育會(huì)議上說(shuō)到:“以改革創(chuàng)新為強(qiáng)大動(dòng)力,推動(dòng)職業(yè)教育又好又快發(fā)展”。職業(yè)教育的生存和發(fā)展,離不開教學(xué)改革和創(chuàng)新。在進(jìn)行計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言教學(xué)探索與研究中,我們通過(guò)走進(jìn)企業(yè),與企業(yè)軟件開發(fā)人員的進(jìn)行密切聯(lián)系與溝通,了解市場(chǎng)發(fā)展與需求等一系列調(diào)研后,提出了改革方案并付諸實(shí)施。實(shí)踐證明我們的改革思路是正確的,課程改革是卓有成效的。
參考文獻(xiàn)
引言
全國(guó)計(jì)算機(jī)等級(jí)考試(National Computer Rank Examination,簡(jiǎn)稱NCRE),1994年由教育部考試中心開始主辦,至今已有20多年,是最早面向全社會(huì)的國(guó)家級(jí)計(jì)算機(jī)應(yīng)用能力考試機(jī)制,是經(jīng)國(guó)家教育部批準(zhǔn),面向全國(guó)的非學(xué)歷教育的證書考試,專門用于考查應(yīng)試人員的計(jì)算機(jī)應(yīng)用理論知識(shí)水平及實(shí)際操作能力。以應(yīng)用能力為主,并進(jìn)行等級(jí)劃分,分類別、級(jí)別進(jìn)行考核,可提供最具權(quán)威性的資質(zhì)證明。由于它具有客觀、公平、公正的考核標(biāo)準(zhǔn),因此現(xiàn)已成為全國(guó)最具權(quán)威性和影響力的一種證書,在全社會(huì)得到廣泛認(rèn)同。
目前,全國(guó)各高校理工科新生的計(jì)算機(jī)課程,基本上第一期是計(jì)算機(jī)基礎(chǔ),第二期是C語(yǔ)言程序設(shè)計(jì)。很多普通高校要求理工科學(xué)生參加全國(guó)計(jì)算機(jī)二級(jí)考試,并將計(jì)算機(jī)二級(jí)證、英語(yǔ)四級(jí)證與學(xué)位證掛鉤,像我校理工科學(xué)生如果沒(méi)有獲得計(jì)算機(jī)二級(jí)和英語(yǔ)四級(jí)這兩個(gè)證,畢業(yè)時(shí)就很難獲得學(xué)位證,所以計(jì)算機(jī)二級(jí)考試對(duì)理工科學(xué)生來(lái)說(shuō)是一門重要的考試,所有理工科學(xué)生都要重視。從2013年下半年起,二級(jí)C采用無(wú)紙化考試,時(shí)量120分鐘,考試內(nèi)容除了C語(yǔ)言知識(shí)外,還包括計(jì)算機(jī)公共基礎(chǔ)知識(shí),其中公共基礎(chǔ)知識(shí)又包含基本數(shù)據(jù)結(jié)構(gòu)與算法、程序設(shè)計(jì)基礎(chǔ)、軟件工程基礎(chǔ)、數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)等四方面內(nèi)容??荚噧?nèi)容以選擇題形式出現(xiàn),共10分,占10%。雖然只有10分,但對(duì)于那些想考高分(90分以上優(yōu)秀)的同學(xué)來(lái)說(shuō),這些內(nèi)容是非常重要的。由于內(nèi)容繁多,課時(shí)有限,有必要嚴(yán)格按照考試大綱進(jìn)行相應(yīng)的教學(xué)改革。
1.基本數(shù)據(jù)結(jié)構(gòu)與算法部分教學(xué)分析
基本要求:掌握算法的基本概念、基本數(shù)據(jù)結(jié)構(gòu)及操作、基本排序與查找算法等。
算法部分教學(xué)重點(diǎn)主要在于使學(xué)生了解算法的基本概念。首先介紹算法是解決某個(gè)特定問(wèn)題的有限步驟的描述;介紹算法的控制結(jié)構(gòu)可分為順序、選擇和重復(fù)三種;采用用程序流程圖形式、N-S結(jié)構(gòu)化流程圖及算法描述語(yǔ)言等其他描述方式進(jìn)行描述;向?qū)W生講解流程圖時(shí)穿插算法的特性介紹;說(shuō)明即使是同一個(gè)問(wèn)題,由于算法不同,效率可能有很大區(qū)別,從而進(jìn)一步引出算法時(shí)間、空間復(fù)雜度。對(duì)于數(shù)據(jù)結(jié)構(gòu),教學(xué)重點(diǎn)是讓學(xué)生掌握數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)及數(shù)據(jù)運(yùn)算。掌握像線性表、堆棧和隊(duì)列等線性邏輯結(jié)構(gòu)及樹、圖非線性邏輯結(jié)構(gòu);掌握數(shù)據(jù)的順序存儲(chǔ)結(jié)構(gòu)與鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的優(yōu)缺點(diǎn)。展示其在不同存儲(chǔ)方式下進(jìn)行查找、排序、插入與刪除操作的靈活性,從而使學(xué)生掌握這兩種不同存儲(chǔ)方式的區(qū)別,了解二叉樹的不同遍歷方式。通過(guò)歷年試題分析,算法與數(shù)據(jù)結(jié)構(gòu)部分在等級(jí)考試公共基礎(chǔ)知識(shí)考題中約占50%,因此,教師應(yīng)側(cè)重對(duì)這部分內(nèi)容進(jìn)行詳細(xì)講解。
2.程序設(shè)計(jì)基礎(chǔ)部分教學(xué)分析
基本要求:掌握逐步求精的結(jié)構(gòu)化程序設(shè)計(jì)方法,了解面向?qū)ο蟪绦蛟O(shè)計(jì)中的對(duì)象、方法、屬性等概念。
程序設(shè)計(jì)方法是程序設(shè)計(jì)基礎(chǔ)部分的重點(diǎn),概念是該部分考核的主要內(nèi)容,考點(diǎn)份額較小。相對(duì)于專業(yè)學(xué)生,非計(jì)算機(jī)專業(yè)的學(xué)生完全理解面向?qū)ο蟪绦蛟O(shè)計(jì)方法中的很多概念比較困難,因而,對(duì)這些知識(shí)只能要求學(xué)生加強(qiáng)記憶。教師只需對(duì)所有概念進(jìn)行相應(yīng)總結(jié)和歸納,無(wú)需過(guò)多深入探討,以免學(xué)生愈加迷惑,效果反而適得其反。結(jié)構(gòu)化程序設(shè)計(jì)中的三種基本程序結(jié)構(gòu)(順序、選擇、循環(huán))和程序設(shè)計(jì)基本原則(自頂向下、逐步求精、模塊化、限制使用goto語(yǔ)句);模塊化程序設(shè)計(jì)原則(高內(nèi)聚、低耦合);面向?qū)ο蟪绦蛟O(shè)計(jì)方法中的基本概念(如:對(duì)象、屬性、類、方法、封裝、繼承、多態(tài)性)等在考試中經(jīng)常出現(xiàn),教師在講解時(shí)應(yīng)強(qiáng)調(diào)概念。
3.軟件工程基礎(chǔ)部分教學(xué)分析
基本要求:了解軟件工程的基本方法,具有初步應(yīng)用相關(guān)技術(shù)進(jìn)行軟件開發(fā)的能力。
該部分內(nèi)容相對(duì)抽象,考點(diǎn)比較多,因此歷年考試中多是考生失分較多的地方??键c(diǎn)主要包括:軟件工程的基本概念和目的;軟件工程的三個(gè)要素(包括方法、工具和過(guò)程);軟件生命周期階段(包括可行性研究、需求分析、軟件設(shè)計(jì)、編碼、測(cè)試、運(yùn)行維護(hù))及各個(gè)階段的目標(biāo)及文檔設(shè)計(jì)、工具、方法(例如:軟件測(cè)試方法包括白盒測(cè)試和黑盒測(cè)試)和步驟(例如:軟件測(cè)試步驟為單元測(cè)試、組裝測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試等)。根據(jù)計(jì)算機(jī)等級(jí)考試題庫(kù)統(tǒng)計(jì),以上知識(shí)點(diǎn)在考試中的出現(xiàn)頻率較高,所以教師應(yīng)重點(diǎn)講解。
4.數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)部分教學(xué)
基本要求:掌握數(shù)據(jù)庫(kù)基本知識(shí),了解關(guān)系數(shù)據(jù)庫(kù)的設(shè)計(jì)。
1. 前言
順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu),一個(gè)程序的任何邏輯問(wèn)題均可用這三種基本結(jié)構(gòu)來(lái)描述。所以在高級(jí)語(yǔ)言程序設(shè)計(jì)課程中,掌握這三種結(jié)構(gòu)是學(xué)好程序設(shè)計(jì)的基礎(chǔ)。而循環(huán)結(jié)構(gòu)是這三者中最復(fù)雜的一種結(jié)構(gòu),幾乎所有的程序都離不開循環(huán)結(jié)構(gòu)。在C語(yǔ)言中,循環(huán)結(jié)構(gòu)主要包括for、while和do-while三種語(yǔ)句,其中for語(yǔ)句的應(yīng)用更為普遍一些。循環(huán)語(yǔ)句的用法對(duì)于有程序設(shè)計(jì)經(jīng)驗(yàn)的學(xué)生來(lái)說(shuō)輕而易舉,但是對(duì)于那些沒(méi)有經(jīng)驗(yàn)的初學(xué)者來(lái)說(shuō),難度卻不小。本文從初學(xué)者的角度,闡述了C語(yǔ)言中如何建立循環(huán)的思想。
2. 如何設(shè)計(jì)引例
英文原版教材,循環(huán)是這樣描述的:repeatation,重復(fù)?!掇o?!飞险f(shuō)循環(huán)是指事物周而復(fù)始的運(yùn)動(dòng)或變化。由這兩個(gè)定義可以看出,循環(huán)重在強(qiáng)調(diào)重復(fù)。
2.1 運(yùn)用實(shí)例解釋循環(huán)思想
在一堂課的設(shè)計(jì)過(guò)程中,引例的作用至關(guān)重要。一個(gè)好的引例能把抽象問(wèn)題簡(jiǎn)單化、具體化,有利于學(xué)生理解掌握。在學(xué)習(xí)循環(huán)結(jié)構(gòu)時(shí)可先利用現(xiàn)實(shí)生活中的一些具體實(shí)例來(lái)說(shuō)明什么是循環(huán)以及為什么要研究循環(huán)。例如:春夏秋冬四季的更替,汽車內(nèi)燃機(jī)的作功過(guò)程:進(jìn)氣——壓縮——燃燒——排氣,叉車裝貨、運(yùn)貨、卸貨的過(guò)程。3個(gè)例子的共性在于,它們都是周而復(fù)始的、重復(fù)的運(yùn)動(dòng),為了研究問(wèn)題本質(zhì),只要找出規(guī)律,將重復(fù)頻率高的相同部分作為重點(diǎn)進(jìn)行突破,可以為我們的研究節(jié)省時(shí)間,提高工作效率。
比如,我們要提高發(fā)動(dòng)機(jī)效率,并不需要要研究千次、萬(wàn)次的燃燒過(guò)程,只要從研究一次進(jìn)氣、壓縮、燃燒、排氣一個(gè)周期入手;
再如運(yùn)輸問(wèn)題,我們可以通過(guò)一次往返運(yùn)輸過(guò)程的研究,明確該從哪些環(huán)節(jié)下手實(shí)現(xiàn)安全、快捷、節(jié)能等問(wèn)題。
2.2 編程中的循環(huán)問(wèn)題
現(xiàn)在我們可以提出一個(gè)問(wèn)題:在計(jì)算機(jī)程序設(shè)計(jì)的世界里是否也有類似的這種相同操作重復(fù)出現(xiàn)的問(wèn)題呢?我們又當(dāng)如何提高程序設(shè)計(jì)的工作效率呢?
利用最簡(jiǎn)單累加求和的例子。
例:求1+2+3+4+5+…+10的和。
利用所學(xué)知識(shí)學(xué)生很快能寫出這個(gè)問(wèn)題的程序:
#include<stdio.h>
main()
{int s;
s=1+2+3+4+5+6+7+8+9+10;
printf(〝%d〞,s);}
接下來(lái)把題目改成:求1+2+3+4+5+…+100的和。
同樣學(xué)生可以利用上面的方法實(shí)現(xiàn):
#include<stdio.h>
main()
{int s;
s=1+2+3+4+5+6+7+8+9+10;
printf(〝%d〞,s);}
在編寫的過(guò)程中學(xué)生會(huì)發(fā)現(xiàn)此種方法雖然可行,可是寫起來(lái)麻煩費(fèi)時(shí)。我們?nèi)绾螌?duì)其進(jìn)行改進(jìn)呢?
首先,復(fù)雜操作簡(jiǎn)單化——將一個(gè)復(fù)雜操作化為多個(gè)簡(jiǎn)單操作;
#include<stdio.h>
main()
{int s=0;
s=s+1;
s=s+2;
s=s+3;
s=s+4;
………
………
………
s=s+100;
printf(〝%d〞,s);}
經(jīng)過(guò)改進(jìn)之后會(huì)發(fā)現(xiàn),雖然每一行變簡(jiǎn)單了,但是行數(shù)卻增加了,在工作量上并沒(méi)有減少。經(jīng)過(guò)觀察可以發(fā)現(xiàn),被框起來(lái)的部分雖然不同但已經(jīng)十分相似。下面引導(dǎo)學(xué)生如何利用常量與變量的關(guān)系把不同的行變成相同的,也就是第二步變化。
接下來(lái),簡(jiǎn)單操作相同化——多個(gè)簡(jiǎn)單操作整理成相同操作;#include<stdio.h>
main()
{int s=0,i=0;
i=i+1; s=s+i;
i=i+1; s= s+i;
i=i+1; s= s+i;
i=i+1; s= s+i;
………
………
………
i=i+1; s= s+i;
printf(〝%d〞,s);}
經(jīng)過(guò)第二步之后會(huì)發(fā)現(xiàn)原本不同的語(yǔ)句變成了相同的語(yǔ)句,我們?cè)谡麄€(gè)過(guò)程中都做著重復(fù)的、相同的事情,也就是前面所說(shuō)的循環(huán)。下面就可以引出本節(jié)課的重點(diǎn)循環(huán)結(jié)構(gòu)。
最后,相同操作重復(fù)化——設(shè)計(jì)控制相同操作執(zhí)行多次。
#include<stdio.h>
main()
{int s=0,i=0;
i=i+1; s=s+i;
i=i+1; s= s+i;
i=i+1; s= s+i;
i=i+1; s= s+i;
………
………
………
i=i+1; s= s+i;
printf(〝%d〞,s);}
通過(guò)實(shí)例總結(jié),循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的思想:
①?gòu)?fù)雜操作簡(jiǎn)單化——復(fù)雜操作化為多個(gè)簡(jiǎn)單操作;
②簡(jiǎn)單操作相同化——多個(gè)簡(jiǎn)單操作整理相同操作;
③相同操作重復(fù)化——循環(huán)控制相同操作重復(fù)執(zhí)行
經(jīng)過(guò)這幾步變化可以將循環(huán)的思想簡(jiǎn)單明了的呈現(xiàn)在學(xué)生眼前,學(xué)生只有真正理解掌握了循環(huán)的本質(zhì),才能在以后的學(xué)習(xí)過(guò)程中很好的去運(yùn)用。這種方法在日常教學(xué)中得到了很好的效果,也得到了學(xué)生的認(rèn)可。
3. 循環(huán)本質(zhì)
循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的任務(wù)就是設(shè)計(jì)一種能讓計(jì)算機(jī)周而復(fù)始地重復(fù)地執(zhí)行某些相同代碼的程序。換句話說(shuō)就是:相同語(yǔ)句程序員只編寫一次代碼、并讓計(jì)算機(jī)多次重復(fù)執(zhí)行。將程序員從大量重復(fù)編寫相同代碼的工作中解放出來(lái),計(jì)算機(jī)的工作量并沒(méi)有減少。
利用循環(huán)的好處是:節(jié)省編程的書寫時(shí)間,減少程序源代碼的存儲(chǔ)空間,減少代碼的錯(cuò)誤,提高程序的質(zhì)量。
這就是程序設(shè)計(jì)過(guò)程中循環(huán)的本質(zhì)。
了解掌握了循環(huán)的本質(zhì)接下來(lái)講解循環(huán)的三要素、三種循環(huán)語(yǔ)句的結(jié)構(gòu)及執(zhí)行過(guò)程就很容易被學(xué)生接受了。
4. 結(jié)束語(yǔ)
此方法較以前的教學(xué)學(xué)法有了很好的改進(jìn),對(duì)于循環(huán)問(wèn)題學(xué)生不再有畏懼感,也為以后數(shù)組及其他知識(shí)的學(xué)生打下了基礎(chǔ)。
如何讓一名初學(xué)者盡快擺脫日常的思維定式,更加透徹地理解和掌握程序設(shè)計(jì)中的基本思想,領(lǐng)會(huì)程序設(shè)計(jì)的精髓,總結(jié)出程序設(shè)計(jì)中每一種程序設(shè)計(jì)結(jié)構(gòu)的本質(zhì)及適合解決的問(wèn)題,是高級(jí)語(yǔ)言程序設(shè)計(jì)這門課程在講授過(guò)程中,應(yīng)該時(shí)刻注意的問(wèn)題。
參考文獻(xiàn):
中圖分類號(hào):TP312.1-4
《C語(yǔ)言程序設(shè)計(jì)》是計(jì)算機(jī)專業(yè)的一門核心專業(yè)基礎(chǔ)課程,是專升本、考研和等級(jí)水平考試的必考科目,也是學(xué)生學(xué)習(xí)中感到比較吃力的一門課。那么,如何學(xué)習(xí)《C語(yǔ)言程序設(shè)計(jì)》這門課程呢?現(xiàn)根據(jù)自己多年在教學(xué)中的體會(huì),談一些粗淺的認(rèn)識(shí)。
1 為什么要學(xué)習(xí)《C語(yǔ)言程序設(shè)計(jì)》
《C語(yǔ)言程序設(shè)計(jì)》是用C語(yǔ)言來(lái)編寫程序的,每個(gè)程序員在他們的編程生涯中都應(yīng)該學(xué)習(xí)C語(yǔ)言,因?yàn)樗刑嚯y以忽視的好處了。除了它會(huì)給你提供更多的工作機(jī)會(huì)之外,C語(yǔ)言還會(huì)教給你更多的關(guān)于計(jì)算機(jī)的知識(shí)。它的好處如下:
1.1 C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言
它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn),既可以用來(lái)編寫系統(tǒng)軟件,又可以用來(lái)編寫應(yīng)用軟件。它不僅具有繪圖能力強(qiáng),還具備很強(qiáng)的數(shù)據(jù)處理能力,因此也適于編寫三維,二維圖形和動(dòng)畫。
1.2 C語(yǔ)言具有功能強(qiáng)大、使用靈活、豐富的數(shù)據(jù)類型和運(yùn)算符、結(jié)構(gòu)化的控制語(yǔ)句、目標(biāo)代碼運(yùn)行效率高、適用范圍大、可移植性好等優(yōu)點(diǎn)。
1.3 C語(yǔ)言是各大操作系統(tǒng)的基礎(chǔ),Unix、Linux、Windows其內(nèi)核都清一色是C語(yǔ)言開發(fā)的,(某些地方是和匯編語(yǔ)言混合開發(fā)的),還有各種語(yǔ)言的編譯器,包括java虛擬機(jī),各種嵌入式設(shè)備,如手機(jī)、PDA等都是C語(yǔ)言開發(fā)的。
1.4 C語(yǔ)言是基礎(chǔ),如果你學(xué)習(xí)過(guò)C語(yǔ)言,你就能學(xué)習(xí)現(xiàn)在任何的高級(jí)編程語(yǔ)言
因?yàn)樗械母呒?jí)語(yǔ)言都是以C語(yǔ)言為基礎(chǔ)的(像JAVA,C++,C#等等)。C語(yǔ)言學(xué)好了,將來(lái)想學(xué)其他的語(yǔ)言,就比較好入門了。
2 如何學(xué)習(xí)《C語(yǔ)言程序設(shè)計(jì)》
2.1 克服畏難心理,充滿自信的學(xué)習(xí)《C語(yǔ)言程序設(shè)計(jì)》
大多數(shù)學(xué)生一看到《C語(yǔ)言程序設(shè)計(jì)》課程的教材,就有畏難的情緒,覺(jué)得C語(yǔ)言難學(xué),學(xué)不會(huì),因?yàn)樗麄儗?duì)計(jì)算機(jī)語(yǔ)言不了解,另外有些英語(yǔ)差的同學(xué),看到計(jì)算機(jī)編程是用英語(yǔ)編寫的,就未學(xué)先棄了。其實(shí)學(xué)習(xí)語(yǔ)言并沒(méi)有他們想象的那么難,英語(yǔ)差也對(duì)學(xué)習(xí)計(jì)算機(jī)語(yǔ)言影響不大,比如學(xué)C語(yǔ)言,真正要記的關(guān)鍵字不多,語(yǔ)法也不復(fù)雜,只要大家不帶著畏難的心理,充滿自信,一定能學(xué)好的。
2.2 要明確《C語(yǔ)言程序設(shè)計(jì)》的學(xué)習(xí)目的
通過(guò)《C語(yǔ)言程序設(shè)計(jì)》課程的學(xué)習(xí),掌握C語(yǔ)言基本知識(shí),掌握程序設(shè)計(jì)的基本方法并逐步形成正確的程序設(shè)計(jì)思想,能夠熟練運(yùn)用基本程序結(jié)構(gòu)解決簡(jiǎn)單問(wèn)題,理解模塊化程序設(shè)計(jì)原則并能熟練使用C語(yǔ)言進(jìn)行程序設(shè)計(jì),具備調(diào)試程序的能力,為后繼課程及其他程序設(shè)計(jì)課程的學(xué)習(xí)和應(yīng)用打下基礎(chǔ)。
2.3 要明白《C語(yǔ)言程序設(shè)計(jì)》與一般的計(jì)算機(jī)操作課程有所不同
《C語(yǔ)言程序設(shè)計(jì)》是計(jì)算機(jī)的一門軟件編程課程,是用C語(yǔ)言來(lái)編寫程序的,它具有難度性、抽象性、連續(xù)性和邏輯嚴(yán)密性。如果你第一次課來(lái)聽了,第二次課沒(méi)來(lái),第三次課很可能就聽不懂了。比如,第一次課講的是數(shù)字1,2,3,4……,第二次課講的是運(yùn)算符號(hào)+,-,*,/,第三次課老師讓你算1+2=?,如果你前兩次課都來(lái)聽了,那么你就能算出它的結(jié)果,否則你就算不出它的結(jié)果。因此,如果要想學(xué)好《C語(yǔ)言程序設(shè)計(jì)》,必須堅(jiān)持每次課都來(lái),如果那天確實(shí)不能來(lái),就應(yīng)在家自學(xué),不懂的地方應(yīng)及時(shí)向老師請(qǐng)教,一定不能落課。
2.4 要整體把握《C語(yǔ)言程序設(shè)計(jì)》
C語(yǔ)言是一種通用的程序設(shè)計(jì)語(yǔ)言,在開發(fā)系統(tǒng)軟件和應(yīng)用軟件中得到廣泛的應(yīng)用,已成為當(dāng)今計(jì)算機(jī)世界最流行的語(yǔ)言之一。C語(yǔ)言是一個(gè)整體,各個(gè)方面是有機(jī)聯(lián)系的,要從總體上把握它,不要把它割裂成互不關(guān)聯(lián)的部件。它包括C語(yǔ)言概述、數(shù)據(jù)類型(整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等)、運(yùn)算符和表達(dá)式、流程控制語(yǔ)句、函數(shù)、數(shù)組、字符與字符串、指針、結(jié)構(gòu)體、文件等。通過(guò)《C語(yǔ)言程序設(shè)計(jì)》的學(xué)習(xí),掌握程序設(shè)計(jì)的基本概念、基本思想、基本方法和基本技能,進(jìn)而學(xué)會(huì)利用C語(yǔ)言解決實(shí)際問(wèn)題,培養(yǎng)計(jì)算機(jī)程序設(shè)計(jì)的能力和素質(zhì),以及思維方法,為以后學(xué)習(xí)其它計(jì)算機(jī)程序語(yǔ)言和后續(xù)的專業(yè)課程打下基礎(chǔ)。
簡(jiǎn)單的C程序是由主函數(shù)和函數(shù)體兩大部分組成。它的基本框架如下:
main()
{
}
其中main表示“主函數(shù)”。每一個(gè)C程序都必須有一個(gè)main函數(shù),而且只能有一個(gè)main函數(shù),它表示程序從這里開始執(zhí)行。由花括號(hào)“{ }”括起的部分是函數(shù)體。其中函數(shù)體又包括定義變量、變量賦值、函數(shù)調(diào)用、輸出打印等。
例:一個(gè)簡(jiǎn)單的求和程序
main() /*主函數(shù)*/
{
int a,b,sum; /*定義變量*/
a=123;b=456; /*變量賦值*/
sum=a+b; /*求兩數(shù)之和*/
printf(“sum is %d\n”,sum); /*輸出和值*/
}
這是一個(gè)簡(jiǎn)單的求和程序。/*...*/表示注釋部分,只給人看的,對(duì)編譯和運(yùn)行不起作用。第3行是聲明部分,定義變量a、b、sum,指定a、b、sum為整型(int)變量。第4行是兩個(gè)賦值語(yǔ)句,使a和b的值分別為123和456。第5行使sum的值為a+b,第6行中“%d”是輸入輸出的“格式字符串”,用來(lái)指定輸入輸出時(shí)的數(shù)據(jù)類型和格式,“%d”表示“以十進(jìn)制整數(shù)形式輸出”。Printf函數(shù)中括弧內(nèi)最右端sum是要輸出的變量,現(xiàn)在它的值為579(即123+456之值)。因此輸出一行信息為:
sum is 579
從這個(gè)例子可以看出,想要把《C語(yǔ)言程序設(shè)計(jì)》這門課學(xué)好,不僅要知道《C語(yǔ)言程序設(shè)計(jì)》的基本框架,還要學(xué)好函數(shù)體中的內(nèi)容(變量類型、定義變量、變量賦值、輸入輸出格式字符串、輸入輸出函數(shù)格式、調(diào)用函數(shù)等)。另外還要學(xué)好C語(yǔ)言的運(yùn)算符、運(yùn)算順序 、四種程序結(jié)構(gòu)(順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、模塊化程序結(jié)構(gòu) )、掌握一些簡(jiǎn)單的算法等。
2.5 熟練C程序的上機(jī)步驟
在編好一個(gè)C源程序后,如何上機(jī)運(yùn)行呢?要經(jīng)過(guò)編輯、編譯、連接和運(yùn)行四個(gè)步驟。
(1)編輯源文件。在編輯(Edit)狀態(tài)下輸入或修改源程序。
(2)編譯源程序。選擇“C編譯”菜單并選擇“編譯到OBJ”,進(jìn)行編譯,得到一個(gè)后綴為.obj的目標(biāo)程序。
(3)然后再選擇菜單“L連接EXE文件”,進(jìn)行連接操作,可得到一個(gè)后綴為.exe的可執(zhí)行文件。
(4) 運(yùn)行程序。在“RUN”菜單中選擇“R運(yùn)行程序”項(xiàng),或直接按Ctr+F9鍵,系統(tǒng)就會(huì)運(yùn)行已編譯好的可執(zhí)行目標(biāo)文件。此時(shí),TC集成環(huán)境窗口消失,屏幕上顯示出程序運(yùn)行的結(jié)果。如果程序需要輸入數(shù)據(jù),則應(yīng)在此時(shí),從鍵盤輸入所需數(shù)據(jù),然后程序會(huì)接著執(zhí)行,輸出結(jié)果。
2.6 要加強(qiáng)編程訓(xùn)練
《C語(yǔ)言程序設(shè)計(jì)》是實(shí)踐性非常強(qiáng)的課程,要求學(xué)員要理論聯(lián)系實(shí)際,在掌握C語(yǔ)言的基本語(yǔ)法和基本知識(shí)后,重點(diǎn)應(yīng)放在提高編程能力的訓(xùn)練上。根據(jù)學(xué)生學(xué)習(xí)的認(rèn)知特點(diǎn),我認(rèn)為主要應(yīng)從以下幾個(gè)方面進(jìn)行強(qiáng)化訓(xùn)練:
(1)吃透課本例子。每學(xué)完一次新課,讓學(xué)生對(duì)課本例子先分析任務(wù)、再仔細(xì)閱讀程序,然后按書上的源代碼敲出來(lái),編譯執(zhí)行輸出結(jié)果,如果結(jié)果跟書上一致就算完成,如果不一致,就要仔細(xì)找原因。再后不看書自己編寫代碼與課本對(duì)照,找出自己的不足,然后改進(jìn)。最后在此例的基礎(chǔ)上自己加以改造,舉一反三,變?yōu)槠渌睦?,如此反?fù)練習(xí),不僅培養(yǎng)了學(xué)生動(dòng)腦思考的習(xí)慣,而且養(yǎng)成了遇事三思、認(rèn)真、周密的作風(fēng)。
(2)精選上機(jī)題目,要求調(diào)試通過(guò)。每章找出一個(gè)或兩個(gè)綜合性的具有代表性的應(yīng)用題目,如編寫一個(gè)程序,計(jì)算一個(gè)整數(shù)的名位數(shù)字之和;用選擇法對(duì)數(shù)組中10個(gè)整數(shù),按由小到大的順序進(jìn)行排序等,要求用C語(yǔ)言編寫可執(zhí)行的源程序,上機(jī)調(diào)試。這樣不僅鍛煉了學(xué)生解決實(shí)際問(wèn)題的能力,更重要的是激發(fā)了學(xué)生學(xué)習(xí)課程的興趣,抽象變具體 ,理論變實(shí)踐,對(duì)這門課有了更深的認(rèn)識(shí)。
(3)閱讀填空法。找一些經(jīng)典程序,配上必要的說(shuō)明,適當(dāng)去掉語(yǔ)句或表達(dá)式,讓學(xué)生通過(guò)閱讀填補(bǔ)空白,訓(xùn)練學(xué)生的程序設(shè)計(jì)能力。例編寫一個(gè)程序,輸入月份號(hào),輸出月的英文月名,還有求和、排序、報(bào)號(hào)等。
(4)準(zhǔn)備一個(gè)經(jīng)驗(yàn)本,記下C語(yǔ)言重要的語(yǔ)法和知識(shí)點(diǎn),還有自己出錯(cuò)的解決方法及老師講解的其他同學(xué)出現(xiàn)的常見錯(cuò)誤,抽空常翻看,逐步積累經(jīng)驗(yàn),加深印象,使以后避免。
(5)帶著作業(yè)去上機(jī)。每次理論課結(jié)束后,老師都會(huì)給學(xué)生布置一些作業(yè)(如習(xí)題)讓學(xué)生做,那么學(xué)生一定要認(rèn)認(rèn)真真的把作業(yè)完成好,先把程序編寫在作業(yè)本上,上機(jī)時(shí)再把這些程序敲到計(jì)算機(jī)上,進(jìn)行修改、調(diào)試、運(yùn)行,最后輸出結(jié)果。如果學(xué)生不帶作業(yè)去上機(jī),第一次老師警告下次一定帶作業(yè)上機(jī),如果第二次還沒(méi)帶作業(yè),不準(zhǔn)學(xué)生進(jìn)機(jī)房,讓學(xué)生到教室把作業(yè)做完后再到機(jī)房上機(jī)調(diào)試。有人說(shuō)學(xué)生可以直接在機(jī)器上編寫程序,固然沒(méi)錯(cuò),但對(duì)于初學(xué)者來(lái)說(shuō),如果在機(jī)器上邊思考邊編寫,也就是說(shuō)想一句編一句,再想一句再編一句,這樣太浪費(fèi)時(shí)間,一節(jié)課說(shuō)不定連一個(gè)程序都編不好,所以老師一定要求學(xué)生在課下把程序編好,上機(jī)只需把程序敲出來(lái)進(jìn)行修改、調(diào)試、運(yùn)行,這樣能節(jié)約大量的時(shí)間,學(xué)生上機(jī)時(shí)間本身都是有限的。
上述方法在教學(xué)實(shí)踐中證明是行之有效的,學(xué)生對(duì)問(wèn)題分析、程序設(shè)計(jì)的自覺(jué)性和能動(dòng)性得到提高,動(dòng)手能力加強(qiáng),對(duì)后繼課如《C++》、《面向?qū)ο蟪绦蛟O(shè)計(jì)》等,學(xué)習(xí)起來(lái)倍感輕松,較好地完成了該門課程的學(xué)習(xí)目標(biāo)??傊?,實(shí)踐出真知,多學(xué)、多練、多思、多交流,勤奮好學(xué)才能學(xué)成。
參考文獻(xiàn):
[1]嚴(yán)桂蘭.C語(yǔ)言程序設(shè)計(jì)與應(yīng)用教程[M].福建:廈門大學(xué)出版社,2001.
[2]譚浩強(qiáng).C程序設(shè)計(jì)(第三版)[M].北京:清華大學(xué)出版社,2005.
[3]陳東.計(jì)算機(jī)多媒體教學(xué)改革的一些嘗試[J].福建師范大學(xué)學(xué)報(bào)(自然版),2004,20(3):98.
【關(guān)鍵詞】
數(shù)據(jù)結(jié)構(gòu);ACM;編寫程序
1 ACM競(jìng)賽的概述及意義
1.1 ACM競(jìng)賽的概述
ACM是由美國(guó)計(jì)算機(jī)協(xié)會(huì)舉辦的國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽,ACM被認(rèn)為是水平最高、規(guī)模最大的國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽。ACM為大學(xué)生提供了一個(gè)展示自身分析解決問(wèn)題能力的平臺(tái),大學(xué)生通過(guò)所學(xué)的計(jì)算機(jī)程序設(shè)計(jì)理論知識(shí)來(lái)解決問(wèn)題,其理論知識(shí)主要包括數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計(jì)語(yǔ)言、物理數(shù)學(xué)模型、算法分析等。ACM在競(jìng)賽過(guò)程中為選手規(guī)定了比賽時(shí)間,在規(guī)定時(shí)間內(nèi),根據(jù)參賽者所作比賽題目的數(shù)量和準(zhǔn)確度和做題時(shí)間長(zhǎng)短來(lái)進(jìn)行名次評(píng)判。ACM是計(jì)算機(jī)類最具影響力的國(guó)際級(jí)競(jìng)賽,受到世界各知名大學(xué)和各著名TI企業(yè)的關(guān)注。通過(guò)ACM競(jìng)賽可以在競(jìng)賽壓力環(huán)境中培養(yǎng)參賽著在軟件程序開發(fā)過(guò)程中的團(tuán)隊(duì)合作精神和自主創(chuàng)新能力、理性實(shí)踐的能力。我國(guó)ACM競(jìng)賽起步較晚,從1996年開始舉辦時(shí)至今日已經(jīng)成功舉辦了七屆,這一針對(duì)高校大學(xué)生而舉辦的競(jìng)賽得到了國(guó)內(nèi)眾多知名高校的積極響應(yīng),其發(fā)展趨勢(shì)迅速,取得了卓越的科技成果。
1.2 ACM競(jìng)賽的意義
程序設(shè)計(jì)類課程是高校計(jì)算機(jī)相關(guān)專業(yè)課程中的重要組成部分,所占比重較大,這類課程對(duì)實(shí)踐性要求很高,這類課程旨在培養(yǎng)學(xué)生具有一定的程序設(shè)計(jì)能力。通過(guò)ACM競(jìng)賽可以全面考察學(xué)生程序設(shè)計(jì)語(yǔ)言和算法的學(xué)習(xí)使用情況,ACM這一競(jìng)賽平臺(tái)將程序設(shè)計(jì)類課程的理論與實(shí)踐完美的結(jié)合起來(lái),以此來(lái)提高學(xué)生程序的設(shè)計(jì)能力。
2 ACM評(píng)側(cè)系統(tǒng)的設(shè)計(jì)
ACM評(píng)測(cè)系統(tǒng)集在線程序設(shè)計(jì)、算法設(shè)計(jì)練習(xí)、競(jìng)賽于一身。該系統(tǒng)中存儲(chǔ)有大量的競(jìng)賽試題,學(xué)生可以根據(jù)自身需要進(jìn)行自主練習(xí)或競(jìng)賽,學(xué)生在該系統(tǒng)上在線編寫相關(guān)競(jìng)賽試題的程序代碼,編寫完成后提交程序代碼,系統(tǒng)可以自動(dòng)進(jìn)行編譯,從而生成可執(zhí)行文件,并對(duì)程序執(zhí)行測(cè)試,最終輸出測(cè)試結(jié)果??梢詫CM模式推廣到數(shù)據(jù)結(jié)構(gòu)、C/C++、EDA等與程序設(shè)計(jì)相關(guān)的課程中進(jìn)行實(shí)踐教學(xué),該系統(tǒng)的主要功能包括以下幾部分內(nèi)容:(1)規(guī)定代碼的通過(guò)標(biāo)準(zhǔn),從程序耗費(fèi)總內(nèi)存、運(yùn)行時(shí)間等多個(gè)方面審查提交代碼,并輸出評(píng)測(cè)結(jié)果。(2)支持JAVA、C++、C、PASCAL等程序語(yǔ)言的編譯,制定了具有可擴(kuò)展性的編輯器擴(kuò)充規(guī)則,以此來(lái)支持其他程序語(yǔ)言的編譯。(3)設(shè)計(jì)的系統(tǒng)具有支持集體或個(gè)人申請(qǐng)競(jìng)賽,并提供相應(yīng)的競(jìng)賽環(huán)境的功能。(4)系統(tǒng)以RSS聚合方式匯總競(jìng)賽報(bào)告,通過(guò)RSS閱讀器即使不訪問(wèn)站點(diǎn)也可以自動(dòng)獲得競(jìng)賽報(bào)告的更新。(5)系統(tǒng)可以自動(dòng)監(jiān)管各個(gè)數(shù)據(jù)庫(kù)的連接狀態(tài),以此來(lái)調(diào)控系統(tǒng)的性能。(6)系統(tǒng)定義了自動(dòng)約束規(guī)則,具有系統(tǒng)在線配置的自我調(diào)節(jié)能力。ACM評(píng)測(cè)系統(tǒng)在運(yùn)行速度、系統(tǒng)穩(wěn)定性和程序負(fù)荷能力上均具有良好的性能,為各類編程課程提供了一個(gè)良好的實(shí)驗(yàn)環(huán)境。
3 ACM數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)教學(xué)體系設(shè)計(jì)
數(shù)據(jù)結(jié)構(gòu)相關(guān)內(nèi)容的課程是計(jì)算機(jī)專業(yè)的重要課程之一,數(shù)據(jù)結(jié)構(gòu)這門課主要側(cè)重于軟件設(shè)計(jì)中所涉及到的各種存儲(chǔ)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、基本運(yùn)算、程序性能、以及算法實(shí)現(xiàn)等基本技術(shù)。學(xué)生在遇到實(shí)際問(wèn)題時(shí)可以通過(guò)學(xué)習(xí)的理論知識(shí)選擇合理的數(shù)據(jù)結(jié)構(gòu),并設(shè)計(jì)出符合實(shí)際情況的優(yōu)良算法,以此來(lái)提高學(xué)生軟件開發(fā)的實(shí)踐能力。學(xué)生軟件實(shí)踐能力的培養(yǎng)可以通過(guò)開設(shè)數(shù)據(jù)結(jié)構(gòu)相關(guān)類實(shí)驗(yàn)課程來(lái)實(shí)現(xiàn),這種實(shí)驗(yàn)類課程將理論與實(shí)踐相結(jié)合,將學(xué)生在書本、課堂中學(xué)到的理論知識(shí)用于解決實(shí)際問(wèn)題,有效地培養(yǎng)學(xué)生的創(chuàng)造性思維,并提高學(xué)生分析、解決問(wèn)題的能力,為從事計(jì)算機(jī)類相關(guān)工作的學(xué)生奠定堅(jiān)實(shí)的實(shí)踐基礎(chǔ)。傳統(tǒng)的實(shí)驗(yàn)類課程不能充分發(fā)揮其根本作用,只能培養(yǎng)學(xué)生掌握基本知識(shí)的能力,并且實(shí)驗(yàn)類課程課時(shí)較短,在短暫的實(shí)驗(yàn)課程中無(wú)法真正鍛煉學(xué)生分析解決實(shí)際問(wèn)題的能力,學(xué)生在課余時(shí)間也無(wú)法找到正確的渠道進(jìn)行練習(xí)學(xué)習(xí),也沒(méi)有專業(yè)人士給與指導(dǎo)建議。ACM競(jìng)賽經(jīng)過(guò)長(zhǎng)時(shí)間的探索已經(jīng)日趨成熟,將ACM模式應(yīng)用于數(shù)據(jù)結(jié)構(gòu)等計(jì)算機(jī)類實(shí)驗(yàn)教學(xué)中,將大大提高教學(xué)效果。
3.1 ACM模式教學(xué)優(yōu)勢(shì)
基于ACM模式的數(shù)據(jù)結(jié)構(gòu)等程序設(shè)計(jì)類課程的實(shí)驗(yàn)教學(xué)系統(tǒng)是通過(guò)網(wǎng)絡(luò)進(jìn)行的,這種教學(xué)模式不受時(shí)間、空間的局限。學(xué)生在課程學(xué)習(xí)中難以將實(shí)際問(wèn)題中客觀事物與數(shù)據(jù)結(jié)構(gòu)中的理論數(shù)據(jù)很好地銜接在一起,缺乏系統(tǒng)解決問(wèn)題的能力和方法,通過(guò)ACM模式的實(shí)驗(yàn)教學(xué)恰好可以很好地解決這一問(wèn)題。學(xué)生在ACM模式教學(xué)下進(jìn)行實(shí)踐學(xué)習(xí),豐富了自身計(jì)算機(jī)理論知識(shí)儲(chǔ)備并提高了實(shí)踐能力,將所學(xué)理論知識(shí)應(yīng)用于實(shí)際問(wèn)題中,通過(guò)一系列實(shí)踐訓(xùn)練真正掌握數(shù)據(jù)結(jié)構(gòu)的精髓。ACM競(jìng)賽為學(xué)生提供了一個(gè)學(xué)術(shù)交流平臺(tái),通過(guò)ACM組隊(duì)形式的競(jìng)賽培養(yǎng)學(xué)生團(tuán)結(jié)合作的精神,為以后軟件項(xiàng)目團(tuán)隊(duì)化的合作奠定堅(jiān)實(shí)基礎(chǔ)。
3.2ACM模式教學(xué)設(shè)計(jì)
將基于ACM模式的計(jì)算機(jī)程序設(shè)計(jì)類課程實(shí)驗(yàn)教學(xué)體系分為以下三個(gè)層面:基礎(chǔ)知識(shí)訓(xùn)練型實(shí)驗(yàn)、實(shí)際問(wèn)題設(shè)計(jì)型實(shí)驗(yàn)和創(chuàng)新型實(shí)驗(yàn)。
(1)基礎(chǔ)知識(shí)訓(xùn)練型實(shí)驗(yàn)。學(xué)生通過(guò)基礎(chǔ)知識(shí)訓(xùn)練型實(shí)驗(yàn)的練習(xí)可以鞏固并深入理解所學(xué)的知識(shí)。基礎(chǔ)知識(shí)訓(xùn)練型實(shí)驗(yàn)主要涉及有線性表、隊(duì)列、棧、順序折半查找、廣義表、圖、樹、內(nèi)部排序等多種內(nèi)容。這一環(huán)節(jié)要求學(xué)生掌握基本的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)方法,并且要求學(xué)生具有較強(qiáng)的問(wèn)題分析能力和任務(wù)定義能力。
(2)實(shí)際問(wèn)題設(shè)計(jì)型實(shí)驗(yàn)。通過(guò)實(shí)際問(wèn)題設(shè)計(jì)型實(shí)驗(yàn)可以充分挖掘?qū)W生自身的創(chuàng)造力,將所學(xué)理論知識(shí)運(yùn)用于實(shí)際問(wèn)題的解決中。實(shí)際問(wèn)題設(shè)計(jì)型實(shí)驗(yàn)主要涉及停車場(chǎng)車輛管理、電話號(hào)碼及歸屬地查詢、哈夫曼碼編碼器等內(nèi)容。這一實(shí)驗(yàn)環(huán)節(jié)要求學(xué)生用所學(xué)的數(shù)據(jù)結(jié)構(gòu)知識(shí)設(shè)計(jì)出復(fù)雜的軟件系統(tǒng),主要檢測(cè)了學(xué)生掌握算法設(shè)計(jì)和分析、遞歸思想和方法等方面的能力。
(3)創(chuàng)新型實(shí)驗(yàn)。創(chuàng)新型實(shí)驗(yàn)與各種各種比賽、課外科技活動(dòng)、科研項(xiàng)目等相結(jié)合,增加學(xué)生軟件開發(fā)、設(shè)計(jì)的能力。這一實(shí)驗(yàn)環(huán)節(jié)要求學(xué)生掌握面向過(guò)程的設(shè)計(jì)方法、面向?qū)ο蟮脑O(shè)計(jì)方法、基本的軟件重用方法等內(nèi)容。
4 總結(jié)
通過(guò)ACM教學(xué)模式可以培養(yǎng)學(xué)生解決實(shí)際問(wèn)題的能力,而且不受解題方法的限制,學(xué)生通過(guò)ACM這一學(xué)術(shù)交流平臺(tái)在展示自己能力的同時(shí)可以學(xué)到很多東西,激發(fā)了學(xué)生的學(xué)習(xí)熱情和潛力。
【參考文獻(xiàn)】
一、面向?qū)ο笤O(shè)計(jì)方法
軟件設(shè)計(jì)有兩種主流設(shè)計(jì)方法:以結(jié)構(gòu)化程序設(shè)計(jì)為基礎(chǔ)的結(jié)構(gòu)化軟件設(shè)計(jì)和由面向?qū)ο笤O(shè)計(jì)方法導(dǎo)出的面向?qū)ο蟮能浖O(shè)計(jì), 20世紀(jì)70年代末到80年代初的結(jié)構(gòu)化設(shè)計(jì)方法即傳統(tǒng)設(shè)計(jì)方法,以區(qū)別于后來(lái)興起的面向?qū)ο蟮脑O(shè)計(jì)方法。在軟件設(shè)計(jì)周期中,面向?qū)ο笤O(shè)計(jì)方法是一種全新的設(shè)計(jì)和構(gòu)造軟件的方法,它使計(jì)算機(jī)解決問(wèn)題的方式更符合人類的解決問(wèn)題的思維方式,更能直接的描述客觀世界,同時(shí)也可以增加的代碼的可重用性,是目前和未來(lái)軟件開發(fā)的方向[1]。
面向?qū)ο笤O(shè)計(jì)在整個(gè)軟件設(shè)計(jì)中占據(jù)著非常重要的部分,面向?qū)ο笤O(shè)計(jì)也是將分析階段所建立的分析模型轉(zhuǎn)變?yōu)檐浖O(shè)計(jì)模型,但是面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)之間沒(méi)有明顯的界限,面向?qū)ο蟮姆椒ㄊ腔诔橄蟆⑿畔㈦[藏、功能獨(dú)立和模塊化等重要軟件設(shè)計(jì)概念基礎(chǔ)上的,現(xiàn)階段的軟件設(shè)計(jì)基本上都運(yùn)用了面向?qū)ο蟮脑O(shè)計(jì)方法[2]。面向?qū)ο蟮拈_發(fā)支持鼓勵(lì)軟件實(shí)踐中的信息隱藏,數(shù)據(jù)抽象和封裝,可以對(duì)單獨(dú)對(duì)一個(gè)對(duì)象內(nèi)部進(jìn)行隔離修改,那么就使得運(yùn)用面向?qū)ο箝_發(fā)的軟件更容易修改、擴(kuò)充和維護(hù)[1]。
對(duì)象和類是面向?qū)ο蟪绦蛟O(shè)計(jì)的基石,其基本的機(jī)制便是方法和消息。消息是要求某個(gè)對(duì)象執(zhí)行類中某個(gè)操作的規(guī)格說(shuō)明;方法就是對(duì)象執(zhí)行的操作。面向?qū)ο蟪绦蛟O(shè)計(jì)三個(gè)重要特征:封裝性,繼承性和多態(tài)性。
(一)對(duì)象(Object)和類(Clasess)
對(duì)象即指現(xiàn)實(shí)生活中無(wú)所不在、各種各樣的實(shí)體,它可以使具體的事物,也可以是抽象的實(shí)體[2]。從對(duì)象的構(gòu)成和內(nèi)容來(lái)看,設(shè)計(jì)程序時(shí)使用對(duì)象有以下優(yōu)點(diǎn):對(duì)象是對(duì)物體的直接抽象,這種抽象簡(jiǎn)化了實(shí)際物體的模型,同時(shí)以一種可以操作的形式將實(shí)體表達(dá)出來(lái)。進(jìn)行了數(shù)據(jù)的封裝后,掩蔽了實(shí)現(xiàn)的復(fù)雜性,對(duì)于用戶使用起來(lái)就更加方便。
在現(xiàn)實(shí)生活中,具有相似性質(zhì),執(zhí)行相同操作的對(duì)象,稱為同一類對(duì)象,即類是同一種對(duì)象的集合與抽象[2]。例如,在Visual Basic中窗體都是Form類的實(shí)體,一個(gè)單獨(dú)的窗體也是一個(gè)類。
(二)數(shù)據(jù)封裝(Data Encapsulation)
數(shù)據(jù)封裝是類的一個(gè)重要特性。數(shù)據(jù)封裝是把數(shù)據(jù)和相關(guān)的操作設(shè)在一個(gè)包中,那么程序不能直接訪問(wèn)對(duì)象中的變量,只有通過(guò)對(duì)象的方法才能作用于數(shù)據(jù)。
(三)繼承(Inheritance)
我們首先在對(duì)象的基礎(chǔ)上創(chuàng)建對(duì)象,新的對(duì)象就會(huì)繼承原先對(duì)象的所有屬性和特點(diǎn),同時(shí)根據(jù)實(shí)際情況也可以選擇和修改父對(duì)象的屬性和功能,這就叫做繼承。利用這點(diǎn),可以將舊的程序擴(kuò)充為當(dāng)前所需要的,也可以從已知的類中派生出新的類來(lái)。
(四)多態(tài)性(Polymorphism)
多態(tài)性就是多種表現(xiàn)形式,不同事物具有不同表現(xiàn)形式的能力,具體來(lái)說(shuō),可以用“一個(gè)對(duì)外接口,多個(gè)內(nèi)在實(shí)現(xiàn)方法”表示。多態(tài)機(jī)制使具有不同內(nèi)部結(jié)構(gòu)的對(duì)象可以共享相同的外部接口,通過(guò)這種方式減少代碼的復(fù)雜度。
二、結(jié)構(gòu)化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)
結(jié)構(gòu)化程序設(shè)計(jì)是由算法和數(shù)據(jù)結(jié)構(gòu)組成,算法指處理數(shù)據(jù)的特定的方法。結(jié)構(gòu)化程序設(shè)計(jì)首要想法是如何處理數(shù)據(jù),然后再選擇最為方便處理的數(shù)據(jù)結(jié)構(gòu),那么重點(diǎn)主要集中在數(shù)據(jù)上了。結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是:系統(tǒng)按功能要求分解為若干個(gè)子模塊,子模塊再根據(jù)需求進(jìn)一步分解為子模塊,不斷的進(jìn)行分解,從上往下進(jìn)行分解,這樣的形式是自頂向下的“瀑布式”設(shè)計(jì),僅運(yùn)用了順序、分支和循環(huán)三種結(jié)構(gòu)設(shè)計(jì)編碼。
面向?qū)ο蟪绦蛟O(shè)計(jì)中,用戶需要做的事向?qū)ο髠魉拖?。編程人員在設(shè)計(jì)過(guò)程中要做的就是向?qū)ο筇幚磉m當(dāng)?shù)南⒁约八膬?nèi)部數(shù)據(jù),這樣就最大限度了提高了代碼的可重用性,縮短了調(diào)試時(shí)間。面向?qū)ο蟪绦蛟O(shè)計(jì)與結(jié)構(gòu)化程序設(shè)計(jì)是相反的,面向?qū)ο蟮某绦蛟O(shè)計(jì)是從下往上的“噴泉式”的設(shè)計(jì),對(duì)象是數(shù)據(jù)處理方法緊密結(jié)合的整體。
三、Windows及應(yīng)用程序與面對(duì)對(duì)象的程序設(shè)計(jì)
Windows中的圖形用戶接口包括窗口,下拉式菜單,對(duì)話框等各種控件,這就使得Windows應(yīng)用程序非常容易使用。我們用結(jié)構(gòu)化的程序設(shè)計(jì)方法開發(fā)Windows應(yīng)用程序非常困難,即使要在屏幕上生成一個(gè)簡(jiǎn)單的窗口或是一個(gè)簡(jiǎn)單的下拉式菜單也要編寫幾十條甚至幾百條復(fù)雜的代碼,寫這些代碼的前提必須是我們對(duì)Windows具有非常深入的了解。那么在這種情況下,一種開發(fā)時(shí)間短、質(zhì)量高、復(fù)用性高等比結(jié)構(gòu)化程序設(shè)計(jì)方法優(yōu)良的設(shè)計(jì)方法。由于Windows的進(jìn)城的核心也是對(duì)消息的處理,因此Windows程序編程是以消息為核心。消息也是面向?qū)ο蟪绦蛟O(shè)計(jì)的基本機(jī)制,程序的進(jìn)程的核心也是對(duì)消息的處理,因此面向?qū)ο蟪绦蛟O(shè)計(jì)比結(jié)構(gòu)化程序設(shè)計(jì)更適合于開發(fā)Windows應(yīng)用程序。利用面向?qū)ο蟪绦蛟O(shè)計(jì)的封裝性可以把Windows應(yīng)用程序的所具有的行為進(jìn)行封裝,形成一個(gè)類層次庫(kù),這樣就為Windows應(yīng)用程序提供一個(gè)一致、直觀和簡(jiǎn)單的與Windows的接口。面向?qū)ο蟪绦蛟O(shè)計(jì)具有繼承性這一特性,Windows的應(yīng)用程序可簡(jiǎn)單、方便的繼承和選擇性的使用Windows特性而不必重寫這些代碼,同時(shí),編程人員也可以借用其他應(yīng)用程序的功能代碼,或是稍作修改,也不必考慮Windows底層的細(xì)節(jié)。那么這樣看來(lái),類層次庫(kù)就大大的降低了Windows程序設(shè)計(jì)的復(fù)雜性,編程人員也不必一條一條代碼的編寫,顯著的減少了創(chuàng)建Windows應(yīng)用程序界面所需的源代碼量,因此面向?qū)ο蟮某绦蛟O(shè)計(jì)在開發(fā)應(yīng)用程序方面顯示出巨大的優(yōu)越性。
四、結(jié)語(yǔ)
面向?qū)ο蟮某绦蛟O(shè)計(jì)方法是當(dāng)前軟件設(shè)計(jì)的一個(gè)主要潮流,采用這種方法開發(fā)出的軟件具有極大的穩(wěn)定性、可維護(hù)性和可重用性,面向?qū)ο蟪绦蛟O(shè)計(jì)方法運(yùn)用于軟件設(shè)計(jì)中極大的提高的功能代碼的復(fù)用性,大大的提高了工作效率。
參考文獻(xiàn):