程序設(shè)計(jì)范文

時間:2023-04-10 02:35:36

導(dǎo)語:如何才能寫好一篇程序設(shè)計(jì),這就需要搜集整理更多的資料和文獻(xiàn),歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。

篇1

【關(guān)鍵詞】 JSP程序設(shè)計(jì);應(yīng)用能力培養(yǎng);實(shí)踐

《JSP程序設(shè)計(jì)》是WEB技術(shù)的重要課程之一,由于JSP基于JAVA技術(shù),從安全性、穩(wěn)定性、跨平臺性等方面有著極大的優(yōu)越性,JSP技術(shù)已成為WEB技術(shù)的主流,因此,這門課程已成為高職院校網(wǎng)絡(luò)專業(yè)的一門重要專業(yè)課程,此課程為我院網(wǎng)絡(luò)各專業(yè)必修主干課程。同時,該課程也是學(xué)生畢業(yè)后從事網(wǎng)絡(luò)開發(fā)工作所需具備的基本技能。因此對JSP程序設(shè)計(jì)的教學(xué)進(jìn)行研究并提出教學(xué)改革的思路,以期改善高職JSP程序設(shè)計(jì)課程的教學(xué)效果,提高教學(xué)質(zhì)量,更好地實(shí)現(xiàn)高職的培養(yǎng)目標(biāo)有著重要意義。

1 目前JSP程序設(shè)計(jì)教學(xué)現(xiàn)狀分析

1.1 JSP程序設(shè)計(jì)教學(xué)的評價標(biāo)準(zhǔn)和高職的培養(yǎng)目標(biāo)不一致。教育部長周濟(jì)指出:高等職業(yè)教育的主要任務(wù)是培養(yǎng)高技能人才,我們培養(yǎng)的學(xué)生既要能動腦,更要能動手,經(jīng)過實(shí)踐的鍛煉,能夠迅速成長為高技能人才,成為國家建設(shè)不可缺少的重要力量。JSP程序設(shè)計(jì)教學(xué)的主要目的是培養(yǎng)學(xué)生程序分析能力,程序設(shè)計(jì)能力,以及程序調(diào)試能力,而不在程序本身規(guī)則的學(xué)習(xí)。但JSP程序設(shè)計(jì)教學(xué)考核的主要關(guān)注點(diǎn)卻是語法規(guī)則,注重細(xì)節(jié)問題,當(dāng)然不能全面評價學(xué)生能力。

1.2 JSP程序本身特點(diǎn)帶來學(xué)習(xí)困難。比如,JSP語法限制不嚴(yán)格、程序設(shè)計(jì)自由度大本身是程序設(shè)計(jì)的優(yōu)點(diǎn),但初學(xué)者往往能不清哪種表示正確,增加了程序理解的難度;程序設(shè)計(jì)本身比較抽象,學(xué)生相關(guān)計(jì)算機(jī)知識不夠;學(xué)習(xí)程序設(shè)計(jì)需要有較強(qiáng)的邏輯思維能力,而我們的學(xué)生在這方面訓(xùn)練不夠。這都給學(xué)生學(xué)習(xí)帶來較大困難。

1.3 傳統(tǒng)的教學(xué)模式也不利于發(fā)揮學(xué)生學(xué)習(xí)的主觀能動性。過去JSP程序設(shè)計(jì)的教學(xué)仍延續(xù)課堂教授、布置作業(yè)及實(shí)驗(yàn)的“教本位”的教學(xué)模式,教師是課堂的中心,注重教的原發(fā)性和主動性,忽視了學(xué)生的主體性。不利于調(diào)動學(xué)生學(xué)習(xí)的積極性與主動性,發(fā)揮不了學(xué)生的主觀能動性。

2 JSP程序設(shè)計(jì)教學(xué)改革的措施

2.1 準(zhǔn)確的定位課程目標(biāo)。根據(jù)高職高專培養(yǎng)目標(biāo)的要求,我們在教學(xué)大綱的制定中貫徹 “以應(yīng)用為目的、以必需、夠用為度”的原則。服務(wù)專業(yè)需要,同時注重學(xué)生綜合素質(zhì)、數(shù)學(xué)思維能力的培養(yǎng)。

2.2 采用先進(jìn)的教學(xué)方法和手段,充分發(fā)揮學(xué)生的主觀能動性。本課程的重點(diǎn)JSP內(nèi)置對象、JSP與數(shù)據(jù)庫的連接、JavaBean與JavaServlet技術(shù),難點(diǎn)主要有:JSP內(nèi)置對象的屬性與方法、JavaBean與JavaServlet技術(shù)。我們的解決方案如下:

2.2.1 針對高職高專類學(xué)生的特點(diǎn),盡可能使用通俗易懂、深入淺出的語言來敘述各章節(jié)內(nèi)容,并盡可能使用典型例題來說明各章節(jié)知識點(diǎn)的概念與使用方法,努力釋疑各章節(jié)的重點(diǎn)與難點(diǎn),以求多數(shù)學(xué)生掌握知識的應(yīng)用。

2.2.3 采用同一例題用不同方法實(shí)現(xiàn)的教學(xué)手段,從而提高課堂的講課效率和效果。

2.2.4 針對高職高專類學(xué)生理論教學(xué)“必須夠用”的原則,略講了一些理論性較強(qiáng)而不太實(shí)用的內(nèi)容,增加了學(xué)生實(shí)驗(yàn)實(shí)踐的內(nèi)容。

2.2.5 盡量采用案例、任務(wù)驅(qū)動的教學(xué)方式,針對重點(diǎn)與難點(diǎn),通過老師演示講解,學(xué)生討論、實(shí)驗(yàn)來增強(qiáng)學(xué)生的分析問題解決問題的能力。

2.2.6 充分采用現(xiàn)代教育技術(shù)來輔助教學(xué)。利用專用計(jì)算機(jī)做為服務(wù)器,在講課時使所做的程序當(dāng)時就能見到效果,提高學(xué)生的興趣和記憶力。

我們在實(shí)踐教學(xué)體系中努力突出職業(yè)技術(shù)教育高層次的個性特征與功能,按照高技能人才培養(yǎng)的特點(diǎn)要求確定知識、技能要求,主要由操作技能、實(shí)驗(yàn)技能、專項(xiàng)能力訓(xùn)練、崗位見習(xí)、社會綜合實(shí)踐和畢業(yè)設(shè)計(jì)(頂崗實(shí)踐)等模塊組成。日常教學(xué)的實(shí)踐環(huán)節(jié)占教學(xué)總周數(shù)的比例為50%以上,通常情況下我們的實(shí)踐性教學(xué)分為實(shí)驗(yàn)與實(shí)訓(xùn)兩部分。實(shí)驗(yàn)課內(nèi)容主要為各章節(jié)的例題與習(xí)題和老師自行布置的典型題目,包含一些驗(yàn)證性實(shí)驗(yàn)和程序設(shè)計(jì)練習(xí),以及流行的開發(fā)平臺的使用技巧,基本上做到與課程教學(xué)同步;實(shí)訓(xùn)內(nèi)容一般為一些小型的綜合性應(yīng)用程序開發(fā)等。

由于我們在實(shí)踐教學(xué)中采用靈活、實(shí)用的教學(xué)方式,進(jìn)一步激發(fā)了學(xué)生學(xué)習(xí)興趣,促進(jìn)了學(xué)生主動學(xué)習(xí)的積極性,效果顯著。課程學(xué)完后,所有學(xué)生都達(dá)到了用JSP獨(dú)立開發(fā)小型網(wǎng)站的能力,畢業(yè)后有許多學(xué)生從事網(wǎng)站開發(fā)工作。

2.3 給學(xué)生搭建多種自主學(xué)習(xí)平臺。一是充分利用網(wǎng)絡(luò)資源,創(chuàng)建教學(xué)網(wǎng)站,提供教學(xué)課件,便于學(xué)生課后自主學(xué)習(xí)與復(fù)習(xí),建立不同層次的題庫與測試內(nèi)容,方便學(xué)生的自我檢查,開辟討論與答疑區(qū),隨時對學(xué)生的學(xué)習(xí)問題進(jìn)行解答,并開展討論,提高學(xué)生的創(chuàng)新能力。二是開放機(jī)房,JSP程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,需要進(jìn)行大量的上機(jī)調(diào)試,來發(fā)現(xiàn)問題、理解問題、掌握程序設(shè)計(jì)的方法。通過多種平臺的構(gòu)建,營造以學(xué)生為主體的學(xué)習(xí)環(huán)境與氛圍,充分調(diào)動學(xué)生學(xué)習(xí)欲望。

2.4 制定合適的考核標(biāo)準(zhǔn)。在考核評價方法上,探索多元化的考核評價方法,重視實(shí)踐考核,重視過程考核。采用現(xiàn)場實(shí)際操作、課題研究與論文寫作、開發(fā)實(shí)際項(xiàng)目等方式或幾種方式綜合運(yùn)用的考核方法,同時考核評價應(yīng)提供多次機(jī)會。力求作出客觀地評價。建立以專業(yè)技術(shù)標(biāo)準(zhǔn)和職業(yè)素質(zhì)為基礎(chǔ)的考核體系。在考試考核內(nèi)容選擇方面,既要體現(xiàn)人才培養(yǎng)目標(biāo)和課程(環(huán)節(jié))目標(biāo)要求,又要有利于培養(yǎng)學(xué)生運(yùn)用所學(xué)知識和技術(shù)分析問題和解決問題的能力。真正做到既考知識,又考能力(技能)和素質(zhì),體現(xiàn)應(yīng)知、應(yīng)會。 在考核評價的最終成績是綜合成績,使評價結(jié)果真正反映學(xué)生的實(shí)際能力和水平。

3 結(jié)束語

本文所提的教學(xué)改革措施,一切以學(xué)生為中心,充分調(diào)動學(xué)生學(xué)習(xí)的主動性和積極性,積極探索符合高職培養(yǎng)目標(biāo)的教學(xué)方法和教學(xué)模式,始終以能力的培養(yǎng)為中心,貫徹能力為本位的職教思想。我們一直探索如何有效進(jìn)行教學(xué),逐步形成了以項(xiàng)目驅(qū)動、實(shí)例教學(xué)為主的符合高職學(xué)生學(xué)習(xí)的教學(xué)模式。

參考文獻(xiàn)

[1] 黃榮梅.創(chuàng)新教育在高職計(jì)算機(jī)教學(xué)中的體現(xiàn)[J].四川職業(yè)技術(shù)學(xué)院學(xué)報,2007,11.

[2] 耿祥義,張躍平.JSP實(shí)用教程[M].清華大學(xué)出版社, 2003

篇2

一、前言

Windows提供強(qiáng)大的功能以及友好的圖形用戶界面(GUI),使得它不僅廣泛的用作管理事務(wù)型工作的支持平臺,也被工業(yè)領(lǐng)域的工程人員所關(guān)注。但Windows3.1并非基于優(yōu)先級來調(diào)度任務(wù),無法立即響應(yīng)外部事件中斷,也就不能滿足工業(yè)應(yīng)用環(huán)境中實(shí)時事件處理和實(shí)時控制應(yīng)用的要求。因此,如何在Windows環(huán)境中處理外部實(shí)時事件一直是技術(shù)人員尤其是實(shí)時領(lǐng)域工程人員所關(guān)注的問題。目前已有的方法大都采用內(nèi)掛實(shí)時多任務(wù)內(nèi)核的方式,如Windows下的實(shí)時控制軟件包FLX等,而iRMX實(shí)時操作系統(tǒng)則把Windows3.1當(dāng)作它的一個任務(wù)來運(yùn)行。對于大型的工程項(xiàng)目,開發(fā)人員可采用購買實(shí)時軟件然后集成方式。

對中小項(xiàng)目,從投資上考慮就不很經(jīng)濟(jì)。如何尋找一種簡明的方法來處理外部實(shí)時事件依然顯得很必要。

本文首先闡述Windwos的消息機(jī)制及中斷機(jī)制,然后結(jié)合DPMI接口,給出一種保護(hù)模式下中斷程序的設(shè)計(jì)方法,以處理外部實(shí)時事件。經(jīng)實(shí)際運(yùn)行結(jié)果表明,該方法具有簡潔、實(shí)用、可靠的特點(diǎn),并同樣可運(yùn)行于Win95。

二、Windows的消息機(jī)制

Windows是一消息驅(qū)動式系統(tǒng),見圖1。Windows消息提供了應(yīng)用程序與應(yīng)用程序之間、應(yīng)用程序與Windows系統(tǒng)之間進(jìn)行通訊的手段。應(yīng)用程序要實(shí)現(xiàn)的功能由消息來觸發(fā),并靠對消息的響應(yīng)和處理來完成。

Windows系統(tǒng)中有兩種消息隊(duì)列,一種是系統(tǒng)消息隊(duì)列,另一種是應(yīng)用程序消息隊(duì)列。計(jì)算機(jī)的所有輸入設(shè)備由Windows監(jiān)控,當(dāng)一個事件發(fā)生時,Windows先將輸入的消息放入系統(tǒng)消息隊(duì)列中,然后再將輸入的消息拷貝到相應(yīng)的應(yīng)用程序隊(duì)列中。應(yīng)用程序中的消息循環(huán)從它的消息隊(duì)列中檢索每一個消息并發(fā)送給相應(yīng)的窗口函數(shù)中。一個事件的發(fā)生,到達(dá)處理它的窗口函數(shù)必需經(jīng)歷上述過程。值得注意的是消息的非搶先性,即不論事件的急與緩,總是按到達(dá)的先后排隊(duì)(一些系統(tǒng)消息除外),這就使得一些外部實(shí)時事件可能得不到及時的處理。

圖1

三、Windows的保護(hù)模式及中斷機(jī)制

1.Windows的保護(hù)模式

保護(hù)模式指的是線性地址由一個選擇符間接生成的,該選擇符指向描述表中的某一項(xiàng);而實(shí)模式中則通過一個段/偏移量對來直接尋址。80386(486)CPU提供的保護(hù)模式能力包括一個64K的虛擬地址空間和一個4G的段尺寸。Windows3.1實(shí)現(xiàn)時有所差別,它支持標(biāo)準(zhǔn)模式和增強(qiáng)模式。標(biāo)準(zhǔn)模式針對286機(jī)器,不屬本文探討范圍。增強(qiáng)模式是對386以上CPU而言,Windows正是使用保護(hù)模式來打破1M的屏障并且執(zhí)行簡單的內(nèi)存保護(hù)。它使用選擇器、描述器和描述器表控制訪問指定內(nèi)存的位置和段。描述器表包括全局描述器表、局部描述器表、中斷描述器表。保護(hù)模式與實(shí)模式有許多不同。其中顯著的差異是訪問內(nèi)存的機(jī)制不同。

2.中斷機(jī)制

(1)實(shí)模式中斷

為了便于理解,我們先回顧實(shí)模式中斷。

在實(shí)模式下,中斷向量表IVT起到相當(dāng)重要的作用。無論來自外部硬件的中斷或是內(nèi)部的軟中斷INTn,在CPU中都產(chǎn)生同樣的響應(yīng)。

①CPU將當(dāng)前的指令指針寄存器(IP)、代碼段寄存器(CS)、標(biāo)志寄存器壓入堆棧。

②然后CPU使用n值作為指向中斷向量表IVT的索引,在IVT中找出服務(wù)例程的遠(yuǎn)地址。

③CPU將此遠(yuǎn)地址裝入CS:IP寄存器中,并開始執(zhí)行服務(wù)例程。

④中斷例程總以IRET指令結(jié)束。此指令使存在堆棧中的三個值彈出并填入CS、IP和標(biāo)志寄存器,CPU繼續(xù)執(zhí)行原來的指令。

(2)保護(hù)模式中斷

保護(hù)模式中斷過程與實(shí)模式中斷過程類似,但它不再使用中斷向量表IVT,而使用中斷描述符表(IDT)。值得一提的是,Windows運(yùn)行時IVT還存在,應(yīng)用程序并不使用它,Windows仍然使用,但含義已不同。

①IVT結(jié)構(gòu):IVT在RAM的0000∶0000之上,占據(jù)開始的1024字節(jié)。

它仍然由BIOS啟動例程設(shè)置,由DOS填充到RAM中。

②IDT中斷描述符表:保護(hù)模式下,Windows操作系統(tǒng)為實(shí)現(xiàn)中斷機(jī)制而建立的一個特殊表,即中斷描述符表IDT。該表被用來保存中斷服務(wù)例程的線性地址,它們是真正的24位或32位地址,沒有段:偏移值結(jié)構(gòu)。中斷描述器表最多可含有256個例程說明,詳細(xì)說明請見【3】。I

DT結(jié)構(gòu)見圖2。

圖2

③當(dāng)中斷或異常發(fā)生時,處理過程與實(shí)模式類同。當(dāng)前的CS∶IP值和標(biāo)志寄存器值被存儲。保存的內(nèi)容還包括CPU其他內(nèi)部寄存器的值,以及目前正在被執(zhí)行的任務(wù)的有關(guān)信息(若必須發(fā)生任務(wù)切換的話)。CPU設(shè)法獲取中斷向量后,以它為索引值,查找IDT中的服務(wù)例程遠(yuǎn)地址,接著將控制轉(zhuǎn)移到該處的服務(wù)例程。這是與實(shí)模式轉(zhuǎn)移到IVT的不同所在。保護(hù)模式使用IDTR寄存器分配和定位內(nèi)存中的IDT中斷描述符表。IDT在內(nèi)存中是可移動的,與IVT固定在內(nèi)存中剛好相反。IDT中斷描述符表在Windows中起決定性的作用。理解了Windows下保護(hù)模

式的中斷機(jī)制。有助于我們理解中斷服務(wù)程序的設(shè)計(jì),它的關(guān)鍵就在于如何將服務(wù)例程的地址放入IDT中斷描述符表中。當(dāng)中斷發(fā)生時,如何將斷點(diǎn)地址及CPU各寄存器值保護(hù)起來;中斷結(jié)束時,如何將保護(hù)的值恢復(fù)。Windows系統(tǒng)本身并不提供實(shí)現(xiàn)上述功能的API,而DOS保護(hù)模式接口DPMI正具備了上述的功能。

下面我們首先介紹DPMI接口,然后基于它實(shí)現(xiàn)Windows下中斷服務(wù)程序的設(shè)計(jì)。

四、DOS保護(hù)模式接口DPMI

Windows除了標(biāo)準(zhǔn)服務(wù)外,還支持一組特殊的DOS服務(wù),稱為DOS保護(hù)模式接口DPMI,由一些INT 2FH和INT 31H服務(wù)組成。它使應(yīng)用程序能夠訪問PC系列計(jì)算機(jī)的擴(kuò)充內(nèi)存,同時維護(hù)系統(tǒng)的保護(hù)功能。DPMI通過軟件中斷31h來定義了一個新的接口,使得保護(hù)模式的應(yīng)用程序能夠用它作分配內(nèi)存,修改描述符以及調(diào)用實(shí)模式軟件等工作。

Windows為應(yīng)用程序提供DPMI服務(wù)。即Windows是DPMI的宿主(host),應(yīng)用程序是DPMI的客戶(client),可通過INT-31H調(diào)用得到DPMI服務(wù)。INT-31H本身提供多功能。其中它的中斷管理服務(wù)允許保護(hù)模式用于攔截實(shí)模式中斷,并且掛住處理器異常。有些服務(wù)能夠和DPMI宿主合作,以維護(hù)應(yīng)用程序的虛擬中斷標(biāo)志。

可以用INT31H來掛住保護(hù)模式中斷向量,以中斷方式處理外部實(shí)時事件。利用INT31H,功能0205H:設(shè)置保護(hù)模式中斷向量,將特定中斷的保護(hù)模式處理程序的地址置入中斷向量里。調(diào)用方式:AX=0205H,BL=中斷號,CX∶(E)DX=中斷處理程序選擇符:偏移值。返回:執(zhí)行成功CF=清零,執(zhí)行失敗CF=置位。

掛住/解掛中斷向量的時機(jī)很重要。主窗口第一次被創(chuàng)建時會傳送它WM-CREATE消息,這時是掛住中斷向量的最好時機(jī)。退出時需解掛向量,否則Windows可能崩潰。主窗口接收到WM-DE-STROY之后進(jìn)行解掛工作,是最適合的。解掛向量可先用INT35H,0204H功能將老的中斷向量保存,退出時用INT35H,0205H恢復(fù)。

五、編程實(shí)現(xiàn)

有了DPMI的支持,我們就可以很方便地處理數(shù)據(jù)采集、串行

通信等工業(yè)過程中的實(shí)時事件。下面以Windows3.1平臺下中斷方式實(shí)現(xiàn)的串行通信為例,說明中斷程序的編制和實(shí)現(xiàn)。為便于參考,給出了詳細(xì)的代碼。開發(fā)平臺BC3.1/BC4.5,其本身支持0.9版的DPMI,無需運(yùn)行其它支持DPMI的軟件。編程語言C,可與C++混合編譯。

初始化COM1,9600波特率,每字符8bits,1個停止位,中斷接收,查詢發(fā)送。

//windows asy communication

//by Li Xiuming

//last modified on June 25,1996

#include〈windows.h〉

#include〈dos.h〉

void interrupt far DataReceive();

void interrupt far (*old-vector)();

unsigned char datacom-r[1024],datacom-s[1024];

int inflag=0;

unsigned int s8259;

int InitCom1()

{ //串口1初使化

s8259=inportb(0x21); //讀入8259當(dāng)前狀態(tài)并保存

outportb(0x21,s8259&0xe8); //初始化8259,允許0x0c號中斷

outportb(0x3fb,0x83);

outportb(0x3f8,0x0c);

outportb(0x3f9,0x00);

outportb(0x3fb,0x03);

outportb(0x3fc,0x08); //允許中斷信號送到8259A,以便能中斷

outportb(0x3f9,0x01); //0x01,中斷允許

return 1;

}

void interrupt far DataReceive()

{ //中斷接收子程序

static int i=0; //靜態(tài)局部變量

char rechar=0; //每中斷一次,i自動加1

rechar=inportb(0x3f8); //從數(shù)據(jù)口讀出發(fā)送過來的數(shù)據(jù)

if(inflag==0)

{

if(rechar!=s &&i==0) //幀起始

{

i=0;

goto ll;

}

datacom-r[i++]=rechar; //存入datacom-r[](通信緩沖區(qū))

if(rechar==e) //幀結(jié)束

{

inflag=1;

i=0;

}

}

ll:outportb(0x20,0x20); //回送中斷結(jié)束標(biāo)志

}

//調(diào)用DPMI

//保存舊的0CH號保護(hù)模式中斷向量

//設(shè)置新的保護(hù)模式中斷服務(wù)例程

void InitCom(void)

{

asm{

cli

mov ax,204h

mov bl,0ch

int 31h

sti

}

old-vector=MK-FP(-CX,-DX);//保存

asm{ cli //設(shè)置新的0x0c中斷服務(wù)例程

mov ax,205h

mov bl,0ch

mov cx,seg datareceive

mov dx,offset datareceive

int 31h

sti

}

InitCom1();

}

//恢復(fù)8259狀態(tài)

//恢復(fù)0CH保護(hù)模式向量

void RestoreComm(void)

{

outportb(0x21,s8259);

asm{

cli

mov ax,205h

mov bl,0ch

mov cx,seg old-vector

mov dx,offset old-vector

int 31h

sti

}

}

在窗口第一次被創(chuàng)建時會傳送它WM-CREATE消息,這時調(diào)用InitCom()即可。在主窗口關(guān)閉時,即主窗口中收到WM-DESTROY消息時,調(diào)用RestoreComm()恢復(fù)原來的狀態(tài)。

這樣在對串口初始化,設(shè)置中斷服務(wù)例程后,通信事件發(fā)生時,會立即跳入中斷子程序中執(zhí)行,越過系統(tǒng)的消息隊(duì)列,達(dá)到實(shí)時處理通信事件的目的。而數(shù)據(jù)處理模塊可通過全局標(biāo)志flag訪問全局的數(shù)據(jù)通信緩沖區(qū)獲取實(shí)時數(shù)據(jù)。這種實(shí)現(xiàn)方式與基于消息機(jī)制的Windows通信API實(shí)現(xiàn)相比具有實(shí)時性強(qiáng)的特點(diǎn),因?yàn)樗^Windows系統(tǒng)的兩!極消息機(jī)制。

上述程序已在實(shí)際系統(tǒng)中得到應(yīng)用。在Windows 3.1支持下,同時運(yùn)行三個Windows任務(wù):服務(wù)器SERVER(內(nèi)有實(shí)時串行通信,多個網(wǎng)絡(luò)數(shù)據(jù)子服務(wù)),客戶CLIENT,FOXPRO數(shù)據(jù)庫系統(tǒng)。整個系統(tǒng)運(yùn)行良好。切換到WIN95平臺下(支持0.9版DPMI),系統(tǒng)也運(yùn)行良好。

參考文獻(xiàn)

1 張?jiān)シ?、曹建文譯.【澳】Barry Kauler著.Windows匯編語言及系統(tǒng)程序設(shè)計(jì).北京大學(xué)出版社,1995

篇3

關(guān)鍵詞:C程序設(shè)計(jì);多媒體教學(xué);案例教學(xué);互動式教學(xué)

《C程序設(shè)計(jì)》是計(jì)算機(jī)專業(yè)的必修課,也逐漸成為非計(jì)算機(jī)專業(yè)學(xué)習(xí)的課程。它是學(xué)生入學(xué)后系統(tǒng)地學(xué)習(xí)與高級語言和程序設(shè)計(jì)有關(guān)的一門新課程,再加上C程序設(shè)計(jì)集抽象性、邏輯性、實(shí)踐性于一身,讓學(xué)生感覺十分難學(xué)。在C程序設(shè)計(jì)教學(xué)過程中,一方面要求教師能夠準(zhǔn)確把握授課內(nèi)容,有效地組織教學(xué);另一方面要求教師應(yīng)用適當(dāng)?shù)慕虒W(xué)方法,充分調(diào)動學(xué)生學(xué)習(xí)積極性,這樣才能提高教學(xué)質(zhì)量。根據(jù)多年教學(xué)實(shí)踐,以現(xiàn)代教學(xué)理論和技術(shù)為基礎(chǔ),文章總結(jié)了適合于C程序設(shè)計(jì)課程的教學(xué)方法。

一、多媒體教學(xué)和傳統(tǒng)課堂講授有機(jī)結(jié)合

在C程序設(shè)計(jì)教學(xué)過程中,我們要根據(jù)教學(xué)內(nèi)容的特點(diǎn),將傳統(tǒng)教學(xué)與多媒體教學(xué)有機(jī)結(jié)合。例如:對定義、概念較多,沒有深奧的理論也沒有多少邏輯推理的內(nèi)容,就采用多媒體教學(xué),克服傳統(tǒng)教學(xué)無法板書的缺點(diǎn),課堂教學(xué)也不再顯得枯燥無味,優(yōu)化教學(xué)過程。在多媒體課件制作上,應(yīng)注重知識描述言簡意賅,而不僅僅是教材的簡單拷貝。但多媒體教學(xué)也有不利之處,不恰當(dāng)?shù)氖褂脮稚W(xué)生注意力,影響對主要問題的理解和想象力的發(fā)揮。例如:對于案例分析或算法分析,我們就要發(fā)揮傳統(tǒng)教學(xué)的優(yōu)勢,進(jìn)行課堂討論、利用板書講解方法、思想,根據(jù)題目求解的過程,一步一步把結(jié)果“寫”出來,把問題層層剖析、層層深入,達(dá)到師生互動的效果,學(xué)生的想象力就會得到充分的發(fā)揮。在實(shí)踐平臺上,將該課程配套實(shí)驗(yàn)平臺VC++6.0搭建于課堂之上,在語法知識點(diǎn)的講授后,通過所選案例,讓學(xué)生參與一起分析,一起寫出算法描述,并在課堂上同步編寫程序,然后調(diào)試和實(shí)現(xiàn)程序,使抽象的結(jié)果通過程序的運(yùn)行得以實(shí)現(xiàn),讓學(xué)生眼見為實(shí),減弱了程序設(shè)計(jì)的抽象性,加深了對程序設(shè)計(jì)過程的體驗(yàn),使學(xué)生較輕松地逐步掌握程序設(shè)計(jì)的一般方法步驟。

另外,教師可以充分利用網(wǎng)絡(luò)資源,將電子教案、課件、習(xí)題等放在網(wǎng)上,供學(xué)生自行調(diào)用,同時每位教師與所帶班級都可建立課程QQ群,方便提問和答疑,以彌補(bǔ)課堂教學(xué)的不足。教師要合理地將多媒體教學(xué)和傳統(tǒng)課堂講授有機(jī)地結(jié)合起來,以達(dá)到最佳的教學(xué)效果。

二、采用案例教學(xué),培養(yǎng)學(xué)生的興趣

C程序設(shè)計(jì)是應(yīng)用性很強(qiáng)的課程,它既有理論又有實(shí)踐,既講方法又講動手能力。對于一些既枯燥又比較抽象難懂的概念和語法,可以從案例入手,通過給學(xué)生演示、讓學(xué)生模仿,在實(shí)際應(yīng)用中去探究和領(lǐng)悟這些概念,并適時地加以歸納總結(jié)和概念的延伸,讓學(xué)生在輕松愉快的氣氛中學(xué)習(xí)新知識。

案例教學(xué)法打破了以教材為中心的傳統(tǒng)教學(xué)模式,不按教材的順序授課,而是以精選出的程序設(shè)計(jì)的案例為中心,把要學(xué)習(xí)的語法和概念融入到具體案例中來講解。整個教學(xué)過程中強(qiáng)調(diào)在應(yīng)用中學(xué)習(xí),從而避免了枯燥的理論說教,不僅能增進(jìn)學(xué)生的學(xué)習(xí)興趣,而且對提高學(xué)生綜合分析和解決實(shí)際問題的能力也大有幫助。案例教學(xué)法是培養(yǎng)學(xué)生學(xué)習(xí)興趣的有效途徑一。

三、采用互動式教學(xué),提高學(xué)生的參與積極性

互動式教學(xué)就是要改變老師是課堂上唯一主體形式的狀況,讓學(xué)生也作為主體形式參與到課堂上來?;邮浇虒W(xué)可以提高學(xué)生的參與積極性,還可以避免學(xué)生上課注意力不集中的現(xiàn)象?;邮浇虒W(xué)在形式上有老師提問,讓學(xué)生上黑板演算、上教師機(jī)操作,讓學(xué)生討論,讓學(xué)生進(jìn)行正誤判析,或者請有獨(dú)特思路的同學(xué)演示自己的方法或程序,對比各種方法的優(yōu)缺點(diǎn),鼓勵大家再提出新方法。實(shí)踐證明,這種教學(xué)方法效果顯著,課堂活躍,學(xué)生的參與程度很高。

四、采用問題驅(qū)動教學(xué),加深知識理解的深度

在C程序設(shè)計(jì)課程中,有一些概念之間的差別和程序的設(shè)計(jì)步驟如果只通過教師講述,學(xué)生在字面上可以接受,但在理解深度上往往難以達(dá)到令人滿意的效果,如果能設(shè)計(jì)出一系列問題,讓學(xué)生在實(shí)踐和解決問題的過程中自己去探究和體驗(yàn),可以使學(xué)生更深入的理解。采用問題驅(qū)動法,一切都要求學(xué)生自己動手動腦設(shè)計(jì),他們在操作過程中探究和解決問題的積極性和主動性得到了調(diào)動,從而達(dá)到了我們的教學(xué)目標(biāo)。

五、加強(qiáng)上機(jī)實(shí)驗(yàn)教學(xué)設(shè)計(jì),輔助理論教學(xué)

學(xué)習(xí)《C程序設(shè)計(jì)》不能滿足于能看懂書上的程序,而應(yīng)當(dāng)熟練地掌握程序設(shè)計(jì)的全過程,即獨(dú)立編寫出程序,獨(dú)立上機(jī)調(diào)試程序,獨(dú)立運(yùn)行程序和分析結(jié)果。C程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)的目的應(yīng)是:緊密配合理論教學(xué),通過相關(guān)實(shí)驗(yàn),幫助和加深對語句功能的理解;了解和熟悉C語言程序開發(fā)的環(huán)境;學(xué)會上機(jī)調(diào)試,善于發(fā)現(xiàn)程序中的錯誤,并能很快地排除這些錯誤,使程序能正確運(yùn)行。為保證上機(jī)課質(zhì)量,在上機(jī)課前教師應(yīng)依據(jù)所教課程進(jìn)度,精心設(shè)計(jì)上機(jī)內(nèi)容。要求學(xué)生在上機(jī)前準(zhǔn)備好程序,上機(jī)是主要是編輯輸入程序和調(diào)試運(yùn)行程序,學(xué)生上機(jī)目的明確,任務(wù)具體,避免了上機(jī)的盲目性,從而提高上機(jī)的效率和質(zhì)量??紤]學(xué)生的個體差異,教師可設(shè)置必做和選做實(shí)驗(yàn)。這兩類實(shí)驗(yàn),前者目的在于幫助學(xué)生掌握基礎(chǔ)知識,后者則在于培養(yǎng)和鼓勵學(xué)生的學(xué)習(xí)興趣、擴(kuò)大知識面以及培養(yǎng)學(xué)生的應(yīng)用能力和創(chuàng)新意識。

教師要督促學(xué)生及時做好上機(jī)總結(jié)。上機(jī)總結(jié)要明確上機(jī)任務(wù)完成情況以及是否達(dá)到了上機(jī)要求,對于上機(jī)過程中遇到的問題和解決情況要有分析說明,要總結(jié)上機(jī)后的收獲、取得的經(jīng)驗(yàn)和教訓(xùn)。這樣才能真正反映出學(xué)生上機(jī)情況和水平,從而使知識和技能系統(tǒng)化,加深對實(shí)踐內(nèi)容的理解。教師應(yīng)對上機(jī)過程中學(xué)生出現(xiàn)的一些較普遍的問題總結(jié)整理,以便在下次課中講解說明,解疑答惑。

六、結(jié)束語

要教好C程序設(shè)計(jì)課程,關(guān)鍵在于教師要有效地組織教學(xué),激發(fā)學(xué)生的學(xué)習(xí)興趣,讓學(xué)生主動、愉快地學(xué)習(xí)。實(shí)踐證明,把多媒體課件教學(xué)和傳統(tǒng)教學(xué)有機(jī)結(jié)合起來,取長補(bǔ)短,采用適當(dāng)?shù)慕虒W(xué)方法,能達(dá)到好的教學(xué)效果,有效提高教學(xué)質(zhì)量。

參考文獻(xiàn):

[1]譚浩強(qiáng).C程序設(shè)計(jì)(第三版)[H].北京:清華大學(xué)出版社,2005

篇4

關(guān)鍵詞:多線程;類;接口;同步

中圖分類號:TP311.11 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2013) 02-0000-02

1 引言

通常,需要將程序劃分為數(shù)個獨(dú)立執(zhí)行的子任務(wù),這些獨(dú)立的子任務(wù)即所謂的線程。線程是進(jìn)程中的一個單一連續(xù)控制流程。一個進(jìn)程可以擁有多個并行的線程。多線程序的用途很廣泛。一般說來,當(dāng)程序的某一部分與特定事件或資源捆綁在一塊時,程序其他部分的執(zhí)行不因此而擱置,于是便產(chǎn)生一個和該事件或該資源相關(guān)的線程,并且讓此線程不干擾主程序的運(yùn)作。多線程可以減輕系統(tǒng)性能方面的瓶頸,提高CPU的處理器的效率。

2 線程的創(chuàng)建與生命周期

2.1 線程的創(chuàng)建

產(chǎn)生線程最簡單的方法,是通過繼承class Thread來實(shí)現(xiàn)。這個class擁有產(chǎn)生、運(yùn)行線程的所有的必要機(jī)制。在Thread中,最重要的方法是run( ),通過覆寫此方法,使線程執(zhí)行指派的工作。這樣,run( )就和程序中的其他線程同時執(zhí)行。

2.2 線程的生命周期

(1)創(chuàng)建狀態(tài)。一個線程對象被創(chuàng)建。(2)可運(yùn)行狀態(tài)。線程獲得了CPU的執(zhí)行時間,便可運(yùn)行。雖然處于可運(yùn)行狀態(tài),但自定義線程對象并不一定立即運(yùn)行,其是否運(yùn)行是由Java的運(yùn)行系統(tǒng)來協(xié)調(diào)的。(3)阻塞狀態(tài)。阻塞狀態(tài)就是一個線程對象因?yàn)槿藶榛蛳到y(tǒng)原因必須暫停運(yùn)行,以后還可以恢復(fù)運(yùn)行的狀態(tài)。當(dāng)下面的幾種情況之一發(fā)生后,線程對象就由可運(yùn)行狀態(tài)進(jìn)入阻塞狀態(tài)。一是通過sleep( )讓線程進(jìn)入休眠狀態(tài);二是通過suspend( )暫停線程;三是通過wait( )暫停線程;四是線程正在等待某個I/O動作的完成;五是線程試著調(diào)用另一個對象的synchronized函數(shù)。(4)終止?fàn)顟B(tài)。線程的正常結(jié)束方式,就是從其run( )中回返?;蛘呤欠钦=Y(jié)束,如調(diào)用了stop( )。

3 多線程實(shí)現(xiàn)方式

3.1 通過擴(kuò)展Thread類來創(chuàng)建多線程

從程序中可以看出,每個線程分別對應(yīng)50套服裝,它們中間沒有其他聯(lián)系,也就是說,三個線程之間的地位是平等的,不存在誰先誰后的問題,因此,應(yīng)該是機(jī)會均等地得到CPU的處理。但實(shí)際上,這三個線程并不一定是交換依次運(yùn)行,而是在三個線程同時被執(zhí)行的情況下,有的服裝會賣得遲一些,而有的服裝會提前賣完,所以,三個線程在真正工作時,有的被分配的CPU的時間多一些,而有的相反要少一些。

從上可知,通過繼承線程類而創(chuàng)建的多線程,在程序上看,代碼是一樣的,可是在執(zhí)行中,彼此沒有聯(lián)系,擁有自己的資源。

3.2 通過實(shí)現(xiàn)Runnable接口來創(chuàng)建多線程

4 線程同步

一個變量被多個線程訪問,會帶來沖突的問題,那么就需要相應(yīng)的機(jī)制解決沖突,這樣,就引入了synchronized 關(guān)鍵字。以下例說明,A和B兩人同管一個帳本,A負(fù)責(zé)存款事情,B負(fù)責(zé)取款事情。A使用帳本時,B被禁止使用,反之亦然。程序中是否需要多線程,要考慮它是否符合多線程的特點(diǎn),多線程操作機(jī)制對線程通信和線程管理的強(qiáng)大支持才能有用武之地,這時使用多線程才是最合適的。

參考文獻(xiàn):

[1]侯捷.Java編程思想[M].機(jī)械工業(yè)出版社,2005.

[2]聶哲,袁梅冷,楊淑萍.Java面向?qū)ο蟪绦蛟O(shè)計(jì)[M].高等教育出版社,2005.

[3]張居敏.Java程序設(shè)計(jì)經(jīng)典教程[M].電子工業(yè)出版社,2008.

篇5

 摘  要 本文通過對基本遺傳算法添加初始化啟發(fā)信息、改進(jìn)交叉算子和利用本身所固有的并行性構(gòu)架粗粒度并行遺傳算法等方法提高了遺傳算法的收斂性及其尋優(yōu)能力。     關(guān)鍵詞  遺傳算法;tsp;交叉算子   1  引言     遺傳算法是模擬生物在自然環(huán)境中的遺傳和進(jìn)化過程而形成的一種自適應(yīng)全局優(yōu)化概率搜索算法。總的說來,遺傳算法是按不依賴于問題本身的方式去求解問題。它的目標(biāo)是搜索這個多維、高度非線性空間以找到具有最優(yōu)適應(yīng)值(即最小費(fèi)用的)的點(diǎn)[1]。     基本遺傳算法是一個迭代過程,它模仿生物在自然環(huán)境中的遺傳和進(jìn)化機(jī)理,反復(fù)將選擇算子、交叉算子和變異算子作用于種群,最終可得到問題的最優(yōu)解和近似最優(yōu)解。 2 遺傳算法程序設(shè)計(jì)改進(jìn)比較 2.1 基本遺傳算法對tsp問題解的影響     本文研究的遺傳算法及改進(jìn)算法的實(shí)現(xiàn)是以c++語言為基礎(chǔ),在windows2000的版本上運(yùn)行,其實(shí)現(xiàn)程序是在microsoft visual stadio 6.0上編寫及運(yùn)行調(diào)試的。     1) 遺傳算法的執(zhí)行代碼 m_tsp.initpop();            //種群的初始化 for(int i=0;i<m_tsp.returnpop();i++)          m_tsp.calculatefitness(i);  //計(jì)算各個個體的適應(yīng)值 m_tsp.statistics();         //統(tǒng)計(jì)最優(yōu)個體 while(entropy>decen||variance>decvar)//m_tsp.m_gen<100) { //將新種群更迭為舊種群,并進(jìn)行遺傳操作 m_tsp.alternate();         //將新種群付給舊種群 m_tsp.generation();        //對舊種群進(jìn)行遺傳操作,產(chǎn)生新種群 m_tsp.m_gen++; m_tsp.statistics();        //對新產(chǎn)生的種群進(jìn)行統(tǒng)計(jì) }     2) 簡單的遺傳算法與分支定界法對tsp問題求解結(jié)果的對比     遺傳算法在解決npc問題的領(lǐng)域內(nèi)具有尋找最優(yōu)解的能力。但隨著城市個數(shù)的增加,已沒有精確解,無法確定遺傳算法求解的精度有多高。一般情況下,當(dāng)?shù)鷶?shù)增大時,解的精度可能高,但是時間開銷也會增大。因此可以通過改進(jìn)遺傳算法來提高搜索能力,提高解的精度。 表1  10個城市的tsp問題求解結(jié)果數(shù)據(jù) 算法 試驗(yàn)結(jié)果 簡單遺傳算法 分支定界法 最佳解 時間 精確解 時間 試驗(yàn)1 2448.610037 5s     2448.610037     00:07:30 試驗(yàn)2 2448.610037 13s 試驗(yàn)3 2448.610037 9s 試驗(yàn)4 2459.543054 10s 試驗(yàn)5 2459.543054 7s 2.2  初始化時的啟發(fā)信息對tsp問題解的影響     1) 初始化啟發(fā)信息     在上述實(shí)驗(yàn)算法的基礎(chǔ)上,對每一個初始化的個體的每五個相鄰城市用分支界定法尋找最優(yōu)子路徑,然后執(zhí)行遺傳算法。     2) 遺傳算法與含有啟發(fā)信息的遺傳算法求解結(jié)果的對比     當(dāng)城市數(shù)增至20個時,用分支定界法已經(jīng)不可能在可以接受的時間內(nèi)得到精確的解了,只能通過近似算法獲得其可接受的解。試驗(yàn)設(shè)計(jì)中算法的截止條件:固定迭代1000代。表2中的平均最優(yōu)解為經(jīng)過多次試驗(yàn)(10次以上)得到的最優(yōu)解的平均值,最優(yōu)解的出現(xiàn)時間為最優(yōu)解出現(xiàn)的平均時間,交叉操作次數(shù)為最優(yōu)解出現(xiàn)時交叉次數(shù)的平均值。 表2  20個城市的tsp問題求解結(jié)果數(shù)據(jù) 算法 交叉操作 次數(shù) 最優(yōu)解 出現(xiàn)時間 平均 最優(yōu)解 簡單遺傳算法 80244.4 79.4s 1641.8 含初始化啟發(fā)信息的ga 79000.2 37.4s 1398.9     從表2中可以看出,當(dāng)初始種群時引入啟發(fā)信息將提高遺傳算法的尋優(yōu)能力。同時縮短了遺傳算法的尋優(yōu)時間和問題的求解精度。 2.3  交叉算子對tsp問題解的影響     1)循環(huán)貪心交叉算子的核心代碼 for(i=1;i<m_chrom;i++) {   flag=0;   city=m_newpop[first].chrom[i-1];         //確定當(dāng)前城市   j=0;   while(flag==0&&j<4)   {       sign=adjcity[city][j]; //adjcity數(shù)組的數(shù)據(jù)為當(dāng)前城市按順序排列的鄰接城市       flag=judge(first,i,sign);  //判斷此鄰接城市是否已經(jīng)存在待形成的個體中       j++;   }   if(flag= =0)       //如果所有鄰接城市皆在待擴(kuò)展的個體中   {       while(flag= =0)       {            sign=(int)rand()/(rand_max/(m_ chrom-1));     //隨機(jī)選擇一城市            flag=judge(first,i,sign);       }   }   if(flag==1)       m_newpop[first].chrom[i]=sign;   }     2)問題描述與結(jié)果比較     下面筆者用經(jīng)典的測試遺傳算法效率的oliver tsp問題來測試循環(huán)貪心交叉算子的解的精度和解效率。oliver tsp問題的30個城市位置坐標(biāo)如表3所示[2]。 表3  oliver tsp問題的30個城市位置坐標(biāo) 城市編號 坐標(biāo) 城市編號 坐標(biāo) 城市編號 坐標(biāo) 1 (87,7) 11 (58,69) 21 (4,50) 2 (91,83) 12 (54,62) 22 (13,40) 3 (83,46) 13 (51,67) 23 (18,40) 4 (71,44) 14 (37,84) 24 (24,42) 5 (64,60) 15 (41,94) 25 (25,38) 6 (68,58) 16 (2,99) 26 (41,26) 7 (83,69) 17 (7,64) 27 (45,21) 8 (87,76) 18 (22,60) 28 (44,35) 9 (74,78) 19 (25,62) 29 (58,35) 10 (71,71) 20 (18,54) 30 (62,32)   表4  貪心交叉與部分匹配交叉的比較(oliver tsp問題的30個城市) 交叉算子 交叉操作次數(shù) 平均時間 平均最優(yōu)解 部分匹配交叉 59760 31.2s 517.0 貪心交叉 15774 28.6s 433.4     從表4、圖1中可以看到,貪心交叉算子大大提高了遺傳算法的尋優(yōu)能力,同時也降低了交叉操作次數(shù)。在多次試驗(yàn)中,貪心交叉算子找到的最優(yōu)解與目前記載的最佳數(shù)據(jù)的誤差率為2.7%。而部分匹配交叉算子找到的最優(yōu)解與目前記載的最佳數(shù)據(jù)的誤差率高達(dá)7%。從而可以得到交叉算子對于遺傳算法

的計(jì)算效率和計(jì)算結(jié)果起主導(dǎo)性作用[3]。  

圖1  遺傳算法的收斂過程 2.4  并行遺傳算法消息傳遞實(shí)現(xiàn)的核心代碼     1)主程序代碼 //接收各個從程序的最優(yōu)個體 for(i=0;i<slave;i++) { mpi_recv(rchrom[i],chrom,mpi_unsigned,mpi_any_source,gen,mpi_comm_world,&status); } //計(jì)算接收各個從程序的最優(yōu)個體的回路距離 for(i=0;i<slave;i++) {         fitness[i]=0.0;         for(int j=0;j<chrom-1;j++)         fitness[i]=fitness[i]+distance[rchrom[i][j]][rchrom [i][j+1]];         fitness[i]=fitness[i]+distance[rchrom[i][0]][rchrom [i][chrom-1]];            } //找到最優(yōu)的個體并把它記錄到文件里         for(i=0;i<slave;i++)         {             if(1/fitness[i]>min)             {                  sign=i;                  min=1/fitness[i];             }         }         fwrite(&gen,sizeof(int),1,out);         for(i=0;i<chrom;i++)         fwrite(&rchrom[sign][i],sizeof(unsigned),1,out);         fwrite(&fitness[sign],sizeof(double),1,out);         //每九代向從程序發(fā)送一個最優(yōu)個體         if(gen%9==0)         mpi_bcast(rchrom[sign],chrom,mpi_ unsigned,0,mpi_comm_world);     2)從程序代碼 //將上一代的最優(yōu)個體傳回主程序 mpi_send(rchrom1,chrom,mpi_unsigned,0,gen,mpi_comm_world); //每九代接收一個最優(yōu)個體并將其加入種群中替換掉最差個體 if(gen%9==0) {     pi_bcast(rchrom2,chrom,mpi_unsigned,0,mpi_comm_world);     tsp.indialternate(rchrom2); } //進(jìn)行下一代的計(jì)算 tsp.aternate(); tsp.generation();     tsp.statistics();             3)并行遺傳算法的性能     筆者在mpi并行環(huán)境下,用c++語言實(shí)現(xiàn)了一個解決tsp問題的粗粒度模型的并行遺傳算法。該程序采用的是主從式的mpi程序設(shè)計(jì),通過從硬盤的文件中讀取數(shù)據(jù)來設(shè)置染色體長度、種群的規(guī)模、交叉概率和變異概率等參數(shù)。試驗(yàn)環(huán)境為曙光tc1700機(jī),測試的對象是oliver tsp問題的30個城市的tsp問題。     正如在測試串行遺傳算法所提到的數(shù)據(jù)結(jié)果,并行遺傳算法也沒有達(dá)到目前所記錄的最好解,但是它提高了算法的收斂性,并行遺傳算法的收斂趨勢如圖2所示[4]。   圖2  遺傳算法的收斂過程 3 結(jié)束語     本文通過對基本遺傳算法的不斷改進(jìn),證明了添加啟發(fā)信息、改進(jìn)遺傳算子和利用遺傳算法固有的并行性都可以提高遺傳算法的收斂性,其中對遺傳算法交叉算子的改進(jìn)可以大大提高遺傳算法的尋優(yōu)能力。 參考文獻(xiàn) [1] 劉勇、康立山,陳毓屏著. 非數(shù)值并行算法-遺傳算法.北京:科學(xué)出版社 1995.1 [2] i m oliver d j smith and j r c holland,a study of permutation crossover operators on the traveling salesman[c]// problem of the second international conference on genetic algorithms and their application,erlbaum 1897: 224-230 [3] 于海斌,王浩波,徐心和. 兩代競爭遺傳算法及其應(yīng)用研究 .信息與控制,2000 vol.29,no.4:309-314 [4]穆艷玲,李學(xué)武,高潤泉. 遺傳算法解tsp問題的并行實(shí)現(xiàn).北京聯(lián)合大學(xué)學(xué)報(自然科學(xué)版),2006 vol.20 no.2: 40-43

篇6

摘要:本文指出程序設(shè)計(jì)語言教學(xué)的關(guān)鍵是講述程序設(shè)計(jì)的思想和方法,而不是拘泥于語言細(xì)節(jié),并探討了“高級語言程序設(shè)計(jì)”教學(xué)改革的思想和方法,介紹了我校的教學(xué)經(jīng)驗(yàn)。

關(guān)鍵詞:程序設(shè)計(jì);教學(xué)改革;C語言

中圖分類號:G642

文獻(xiàn)標(biāo)識碼:B

1指導(dǎo)思想

目前計(jì)算機(jī)教育面向應(yīng)用,學(xué)生學(xué)習(xí)的主要目的是“應(yīng)用”程序設(shè)計(jì)語言,是學(xué)會如何用程序解決應(yīng)用領(lǐng)域的問題,這不需要細(xì)致地研究程序設(shè)計(jì)語言本身十分嚴(yán)格的語法和語義?;谶@種認(rèn)識,我們開始嘗試程序設(shè)計(jì)課程在的教學(xué)改革,開始把授課重點(diǎn)轉(zhuǎn)移到“程序設(shè)計(jì)”上。經(jīng)過幾年的探討,逐漸形成了“以程序設(shè)計(jì)為主線”的指導(dǎo)思想。

2教學(xué)內(nèi)容

在“以程序設(shè)計(jì)為主線”的思想指導(dǎo)下,我們首先研究程序設(shè)計(jì)課程的教學(xué)內(nèi)容,對C語言本身采取“有所取、有所不取”的策略。對于那些常用的語言成分,穿插在程序設(shè)計(jì)過程中詳細(xì)準(zhǔn)確的介紹;對于那些與程序設(shè)計(jì)方法聯(lián)系不太緊要,但還算常用的部分,放在最后簡單介紹;而對于那些與講述程序設(shè)計(jì)方法關(guān)系不太大,也不常用的部分,則根本不涉及。如表1所示。

3教學(xué)方法

采取以“案例”驅(qū)動的方法組織教學(xué),讓程序設(shè)計(jì)始終貫穿于整個教學(xué)過程之中。針對程序設(shè)計(jì)的每個知識模塊都采取如下模式講授:提出有意義的問題―設(shè)計(jì)算法―分析算法特點(diǎn)―編出程序―介紹使用的C語言成分―配合講述大量例題―課后習(xí)題。重點(diǎn)放在設(shè)計(jì)算法和講述算法特點(diǎn)上。針對各個知識模塊,選用案例如表2。

4教學(xué)手段

課堂教學(xué):利用現(xiàn)代化多媒體手段與傳統(tǒng)方式相結(jié)合的方式進(jìn)行授課。整個教學(xué)過程直接在C編譯環(huán)境下進(jìn)行,并且使用PPT演示和傳統(tǒng)的黑板版書互相配合。例題大部分在C編譯環(huán)境直接編譯運(yùn)行,并得到結(jié)果;算法設(shè)計(jì)過程,邏輯分析使用傳統(tǒng)版書在黑板上進(jìn)行;課程提綱、知識要點(diǎn)以及一些執(zhí)行過程等則使用PPT演示。與單純的傳統(tǒng)教學(xué)相比,此種方式既節(jié)約了傳統(tǒng)的板書時間,以更加整齊、生動和可重現(xiàn)方式展現(xiàn)課程內(nèi)容,增加了信息量,達(dá)到了提高教學(xué)效率和提升教學(xué)效果目的。

實(shí)踐教學(xué):包括課堂實(shí)踐、實(shí)驗(yàn)課、課程設(shè)計(jì)、科技活動小組等。課堂上直接在C編譯環(huán)境下講授例題和習(xí)題,使學(xué)生初步感受實(shí)踐過程;實(shí)驗(yàn)課學(xué)生自己動手完成有目的布置的實(shí)驗(yàn)題目,使學(xué)生親身體驗(yàn)程序設(shè)計(jì)的全過程;課程設(shè)計(jì)以3~5人的小組方式進(jìn)行,使用較大型的程序讓學(xué)生深刻體會程序開發(fā)的全過程,初步體驗(yàn)軟件工程方法,并培養(yǎng)責(zé)任感和團(tuán)隊(duì)精神;科技活動小組由學(xué)生自愿組成,參與教師的科研項(xiàng)目或由教師指導(dǎo)選題,培養(yǎng)學(xué)生的初步科研能力和創(chuàng)新精神。

考核:包括理論課程考核、實(shí)驗(yàn)課考核、課程設(shè)計(jì)考核。理論課考核采用閉卷考試與平時作業(yè)成績結(jié)合方式進(jìn)行;實(shí)驗(yàn)課考核采用實(shí)驗(yàn)報告、平時實(shí)驗(yàn)表現(xiàn)、綜合實(shí)驗(yàn)成績相結(jié)合方式進(jìn)行;課程設(shè)計(jì)考核按小組記分,每個小組一個分?jǐn)?shù),采用檢查實(shí)驗(yàn)結(jié)果和小組答辯相結(jié)合方式進(jìn)行。

課程網(wǎng)站:包括了本課程的介紹、教學(xué)大綱、教材、多媒體CAI課件、多媒體的電子教案、遠(yuǎn)程網(wǎng)絡(luò)課程、習(xí)題庫、習(xí)題解答、疑難問題解答等內(nèi)容,并且開辟了師生交流的專門空間,不僅為學(xué)生提供了新穎的教學(xué)通道而且增強(qiáng)了師生間的交流。

參考文獻(xiàn)

[1] 張長海,陳娟. 程序設(shè)計(jì)基礎(chǔ)[M]. 北京:高等教育出版社,2008.

[2] 張長海,陳娟. 程序設(shè)計(jì)基礎(chǔ)習(xí)題集及選解[M]. 北京:清華大學(xué)出版社,2008.

[3] 石峰. 程序設(shè)計(jì)基礎(chǔ)[M]. 北京:清華大學(xué)出版社,2003.

[4] 解閔等. 基于構(gòu)建主義的“C程序設(shè)計(jì)”分段教學(xué)[J]. 計(jì)算機(jī)教育,2007,(10).

篇7

一、前言

Windows提供強(qiáng)大的功能以及友好的圖形用戶界面(GUI),使得它不僅廣泛的用作管理事務(wù)型工作的支持平臺,也被工業(yè)領(lǐng)域的工程人員所關(guān)注。但Windows3.1并非基于優(yōu)先級來調(diào)度任務(wù),無法立即響應(yīng)外部事件中斷,也就不能滿足工業(yè)應(yīng)用環(huán)境中實(shí)時事件處理和實(shí)時控制應(yīng)用的要求。因此,如何在Windows環(huán)境中處理外部實(shí)時事件一直是技術(shù)人員尤其是實(shí)時領(lǐng)域工程人員所關(guān)注的問題。目前已有的方法大都采用內(nèi)掛實(shí)時多任務(wù)內(nèi)核的方式,如Windows下的實(shí)時控制軟件包FLX等,而iRMX實(shí)時操作系統(tǒng)則把Windows3.1當(dāng)作它的一個任務(wù)來運(yùn)行。對于大型的工程項(xiàng)目,開發(fā)人員可采用購買實(shí)時軟件然后集成方式。

對中小項(xiàng)目,從投資上考慮就不很經(jīng)濟(jì)。如何尋找一種簡明的方法來處理外部實(shí)時事件依然顯得很必要。

本文首先闡述Windwos的消息機(jī)制及中斷機(jī)制,然后結(jié)合DPMI接口,給出一種保護(hù)模式下中斷程序的設(shè)計(jì)方法,以處理外部實(shí)時事件。經(jīng)實(shí)際運(yùn)行結(jié)果表明,該方法具有簡潔、實(shí)用、可靠的特點(diǎn),并同樣可運(yùn)行于Win95。

二、Windows的消息機(jī)制

Windows是一消息驅(qū)動式系統(tǒng),見圖1。Windows消息提供了應(yīng)用程序與應(yīng)用程序之間、應(yīng)用程序與Windows系統(tǒng)之間進(jìn)行通訊的手段。應(yīng)用程序要實(shí)現(xiàn)的功能由消息來觸發(fā),并靠對消息的響應(yīng)和處理來完成。

Windows系統(tǒng)中有兩種消息隊(duì)列,一種是系統(tǒng)消息隊(duì)列,另一種是應(yīng)用程序消息隊(duì)列。計(jì)算機(jī)的所有輸入設(shè)備由Windows監(jiān)控,當(dāng)一個事件發(fā)生時,Windows先將輸入的消息放入系統(tǒng)消息隊(duì)列中,然后再將輸入的消息拷貝到相應(yīng)的應(yīng)用程序隊(duì)列中。應(yīng)用程序中的消息循環(huán)從它的消息隊(duì)列中檢索每一個消息并發(fā)送給相應(yīng)的窗口函數(shù)中。一個事件的發(fā)生,到達(dá)處理它的窗口函數(shù)必需經(jīng)歷上述過程。值得注意的是消息的非搶先性,即不論事件的急與緩,總是按到達(dá)的先后排隊(duì)(一些系統(tǒng)消息除外),這就使得一些外部實(shí)時事件可能得不到及時的處理。

圖1

三、Windows的保護(hù)模式及中斷機(jī)制

1.Windows的保護(hù)模式

保護(hù)模式指的是線性地址由一個選擇符間接生成的,該選擇符指向描述表中的某一項(xiàng);而實(shí)模式中則通過一個段/偏移量對來直接尋址。80386(486)CPU提供的保護(hù)模式能力包括一個64K的虛擬地址空間和一個4G的段尺寸。Windows3.1實(shí)現(xiàn)時有所差別,它支持標(biāo)準(zhǔn)模式和增強(qiáng)模式。標(biāo)準(zhǔn)模式針對286機(jī)器,不屬本文探討范圍。增強(qiáng)模式是對386以上CPU而言,Windows正是使用保護(hù)模式來打破1M的屏障并且執(zhí)行簡單的內(nèi)存保護(hù)。它使用選擇器、描述器和描述器表控制訪問指定內(nèi)存的位置和段。描述器表包括全局描述器表、局部描述器表、中斷描述器表。保護(hù)模式與實(shí)模式有許多不同。其中顯著的差異是訪問內(nèi)存的機(jī)制不同。

2.中斷機(jī)制

(1)實(shí)模式中斷

為了便于理解,我們先回顧實(shí)模式中斷。

在實(shí)模式下,中斷向量表IVT起到相當(dāng)重要的作用。無論來自外部硬件的中斷或是內(nèi)部的軟中斷INTn,在CPU中都產(chǎn)生同樣的響應(yīng)。

①CPU將當(dāng)前的指令指針寄存器(IP)、代碼段寄存器(CS)、標(biāo)志寄存器壓入堆棧。

②然后CPU使用n值作為指向中斷向量表IVT的索引,在IVT中找出服務(wù)例程的遠(yuǎn)地址。

③CPU將此遠(yuǎn)地址裝入CS:IP寄存器中,并開始執(zhí)行服務(wù)例程。

④中斷例程總以IRET指令結(jié)束。此指令使存在堆棧中的三個值彈出并填入CS、IP和標(biāo)志寄存器,CPU繼續(xù)執(zhí)行原來的指令。

(2)保護(hù)模式中斷

保護(hù)模式中斷過程與實(shí)模式中斷過程類似,但它不再使用中斷向量表IVT,而使用中斷描述符表(IDT)。值得一提的是,Windows運(yùn)行時IVT還存在,應(yīng)用程序并不使用它,Windows仍然使用,但含義已不同。

①IVT結(jié)構(gòu):IVT在RAM的0000∶0000之上,占據(jù)開始的1024字節(jié)。

它仍然由BIOS啟動例程設(shè)置,由DOS填充到RAM中。

②IDT中斷描述符表:保護(hù)模式下,Windows操作系統(tǒng)為實(shí)現(xiàn)中斷機(jī)制而建立的一個特殊表,即中斷描述符表IDT。該表被用來保存中斷服務(wù)例程的線性地址,它們是真正的24位或32位地址,沒有段:偏移值結(jié)構(gòu)。中斷描述器表最多可含有256個例程說明,詳細(xì)說明請見【3】。I

DT結(jié)構(gòu)見圖2。

圖2

③當(dāng)中斷或異常發(fā)生時,處理過程與實(shí)模式類同。當(dāng)前的CS∶IP值和標(biāo)志寄存器值被存儲。保存的內(nèi)容還包括CPU其他內(nèi)部寄存器的值,以及目前正在被執(zhí)行的任務(wù)的有關(guān)信息(若必須發(fā)生任務(wù)切換的話)。CPU設(shè)法獲取中斷向量后,以它為索引值,查找IDT中的服務(wù)例程遠(yuǎn)地址,接著將控制轉(zhuǎn)移到該處的服務(wù)例程。這是與實(shí)模式轉(zhuǎn)移到IVT的不同所在。保護(hù)模式使用IDTR寄存器分配和定位內(nèi)存中的IDT中斷描述符表。IDT在內(nèi)存中是可移動的,與IVT固定在內(nèi)存中剛好相反。IDT中斷描述符表在Windows中起決定性的作用。理解了Windows下保護(hù)模

式的中斷機(jī)制。有助于我們理解中斷服務(wù)程序的設(shè)計(jì),它的關(guān)鍵就在于如何將服務(wù)例程的地址放入IDT中斷描述符表中。當(dāng)中斷發(fā)生時,如何將斷點(diǎn)地址及CPU各寄存器值保護(hù)起來;中斷結(jié)束時,如何將保護(hù)的值恢復(fù)。Windows系統(tǒng)本身并不提供實(shí)現(xiàn)上述功能的API,而DOS保護(hù)模式接口DPMI正具備了上述的功能。

下面我們首先介紹DPMI接口,然后基于它實(shí)現(xiàn)Windows下中斷服務(wù)程序的設(shè)計(jì)。

四、DOS保護(hù)模式接口DPMI

Windows除了標(biāo)準(zhǔn)服務(wù)外,還支持一組特殊的DOS服務(wù),稱為DOS保護(hù)模式接口DPMI,由一些INT2FH和INT31H服務(wù)組成。它使應(yīng)用程序能夠訪問PC系列計(jì)算機(jī)的擴(kuò)充內(nèi)存,同時維護(hù)系統(tǒng)的保護(hù)功能。DPMI通過軟件中斷31h來定義了一個新的接口,使得保護(hù)模式的應(yīng)用程序能夠用它作分配內(nèi)存,修改描述符以及調(diào)用實(shí)模式軟件等工作。

Windows為應(yīng)用程序提供DPMI服務(wù)。即Windows是DPMI的宿主(host),應(yīng)用程序是DPMI的客戶(client),可通過INT-31H調(diào)用得到DPMI服務(wù)。INT-31H本身提供多功能。其中它的中斷管理服務(wù)允許保護(hù)模式用于攔截實(shí)模式中斷,并且掛住處理器異常。有些服務(wù)能夠和DPMI宿主合作,以維護(hù)應(yīng)用程序的虛擬中斷標(biāo)志。

可以用INT31H來掛住保護(hù)模式中斷向量,以中斷方式處理外部實(shí)時事件。利用INT31H,功能0205H:設(shè)置保護(hù)模式中斷向量,將特定中斷的保護(hù)模式處理程序的地址置入中斷向量里。調(diào)用方式:AX=0205H,BL=中斷號,CX∶(E)DX=中斷處理程序選擇符:偏移值。返回:執(zhí)行成功CF=清零,執(zhí)行失敗CF=置位。

掛住/解掛中斷向量的時機(jī)很重要。主窗口第一次被創(chuàng)建時會傳送它WM-CREATE消息,這時是掛住中斷向量的最好時機(jī)。退出時需解掛向量,否則Windows可能崩潰。主窗口接收到WM-DE-STROY之后進(jìn)行解掛工作,是最適合的。解掛向量可先用INT35H,0204H功能將老的中斷向量保存,退出時用INT35H,0205H恢復(fù)。

五、編程實(shí)現(xiàn)

有了DPMI的支持,我們就可以很方便地處理數(shù)據(jù)采集、串行通信等工業(yè)過程中的實(shí)時事件。下面以Windows3.1平臺下中斷方式實(shí)現(xiàn)的串行通信為例,說明中斷程序的編制和實(shí)現(xiàn)。為便于參考,給出了詳細(xì)的代碼。開發(fā)平臺BC3.1/BC4.5,其本身支持0.9版的DPMI,無需運(yùn)行其它支持DPMI的軟件。編程語言C,可與C++混合編譯。

初始化COM1,9600波特率,每字符8bits,1個停止位,中斷接收,查詢發(fā)送。

//windowsasycommunication

//byLiXiuming

//lastmodifiedonJune25,1996

#include〈windows.h〉

#include〈dos.h〉

voidinterruptfarDataReceive();

voidinterruptfar(*old-vector)();

unsignedchardatacom-r[1024],datacom-s[1024];

intinflag=0;

unsignedints8259;

intInitCom1()

{//串口1初使化

s8259=inportb(0x21);//讀入8259當(dāng)前狀態(tài)并保存

outportb(0x21,s8259&0xe8);//初始化8259,允許0x0c號中斷

outportb(0x3fb,0x83);

outportb(0x3f8,0x0c);

outportb(0x3f9,0x00);

outportb(0x3fb,0x03);

outportb(0x3fc,0x08);//允許中斷信號送到8259A,以便能中斷

outportb(0x3f9,0x01);//0x01,中斷允許

return1;

}

voidinterruptfarDataReceive()

{//中斷接收子程序

staticinti=0;//靜態(tài)局部變量

charrechar=0;//每中斷一次,i自動加1

rechar=inportb(0x3f8);//從數(shù)據(jù)口讀出發(fā)送過來的數(shù)據(jù)

if(inflag==0)

{

if(rechar!=s&&i==0)//幀起始

{

i=0;

gotoll;

}

datacom-r[i++]=rechar;//存入datacom-r[](通信緩沖區(qū))

if(rechar==e)//幀結(jié)束

{

inflag=1;

i=0;

}

}

ll:outportb(0x20,0x20);//回送中斷結(jié)束標(biāo)志

}

//調(diào)用DPMI

//保存舊的0CH號保護(hù)模式中斷向量

//設(shè)置新的保護(hù)模式中斷服務(wù)例程

voidInitCom(void)

{

asm{

cli

movax,204h

movbl,0ch

int31h

sti

}

old-vector=MK-FP(-CX,-DX);//保存

asm{cli//設(shè)置新的0x0c中斷服務(wù)例程

movax,205h

movbl,0ch

movcx,segdatareceive

movdx,offsetdatareceive

int31h

sti

}

InitCom1();

}

//恢復(fù)8259狀態(tài)

//恢復(fù)0CH保護(hù)模式向量

voidRestoreComm(void)

{

outportb(0x21,s8259);

asm{

cli

movax,205h

movbl,0ch

movcx,segold-vector

movdx,offsetold-vector

int31h

sti

}

}

在窗口第一次被創(chuàng)建時會傳送它WM-CREATE消息,這時調(diào)用InitCom()即可。在主窗口關(guān)閉時,即主窗口中收到WM-DESTROY消息時,調(diào)用RestoreComm()恢復(fù)原來的狀態(tài)。

這樣在對串口初始化,設(shè)置中斷服務(wù)例程后,通信事件發(fā)生時,會立即跳入中斷子程序中執(zhí)行,越過系統(tǒng)的消息隊(duì)列,達(dá)到實(shí)時處理通信事件的目的。而數(shù)據(jù)處理模塊可通過全局標(biāo)志flag訪問全局的數(shù)據(jù)通信緩沖區(qū)獲取實(shí)時數(shù)據(jù)。這種實(shí)現(xiàn)方式與基于消息機(jī)制的Windows通信API實(shí)現(xiàn)相比具有實(shí)時性強(qiáng)的特點(diǎn),因?yàn)樗^Windows系統(tǒng)的兩極消息機(jī)制。

上述程序已在實(shí)際系統(tǒng)中得到應(yīng)用。在Windows3.1支持下,同時運(yùn)行三個Windows任務(wù):服務(wù)器SERVER(內(nèi)有實(shí)時串行通信,多個網(wǎng)絡(luò)數(shù)據(jù)子服務(wù)),客戶CLIENT,FOXPRO數(shù)據(jù)庫系統(tǒng)。整個系統(tǒng)運(yùn)行良好。切換到WIN95平臺下(支持0.9版DPMI),系統(tǒng)也運(yùn)行良好。

參考文獻(xiàn)

1張?jiān)シ颉⒉芙ㄎ淖g.【澳】BarryKauler著.Windows匯編語言及系統(tǒng)程序設(shè)計(jì).北京大學(xué)出版社,1995

篇8

選好課程教材,對于程序設(shè)計(jì)課大有裨益。好的教材不僅讓學(xué)生更容易理解學(xué)習(xí),還可以加深課程印象從而更好地節(jié)省閱讀時間。達(dá)到事半功倍的效果。同樣,也可以方便教師教學(xué)并節(jié)省教師備課的時間。國內(nèi)有些教材是從英文原版教材翻譯而來,但是由于語境、地點(diǎn)、時間的改變,有些翻譯不能很好地表達(dá)原著的意思,給使用者帶來很大的閱讀障礙。所以在程序設(shè)計(jì)課程中,可以選擇英文原版教材加中文教學(xué)講義的形式。筆者建議選取原版教材,這樣可以減少學(xué)生對翻譯的依賴性。但是教材的可讀性要強(qiáng),能夠更好地吸引學(xué)生的閱讀性。針對一些不太容易理解的概念,我們可以采用比喻、舉例和相應(yīng)的圖表來進(jìn)行表述。

二、實(shí)驗(yàn)課程教學(xué)

在程序設(shè)計(jì)類課程中實(shí)驗(yàn)教學(xué)舉足輕重,在一些實(shí)踐性很強(qiáng)的課程當(dāng)中,實(shí)驗(yàn)設(shè)計(jì)特別重要。其中國外很多的先進(jìn)技術(shù)都值得我們借鑒參考。1.實(shí)驗(yàn)就是課內(nèi)實(shí)驗(yàn)跟課外練習(xí)。所謂的課內(nèi)實(shí)驗(yàn)也就是讓學(xué)生在課內(nèi)完成的實(shí)驗(yàn),內(nèi)容比較簡單,其考核的結(jié)果列入日常的實(shí)驗(yàn)成績中。而對于課外練習(xí)是依據(jù)大多數(shù)學(xué)生在課內(nèi)無法完成的難度來設(shè)置的,這要求學(xué)生能夠利用大量的課外時間來進(jìn)行知識的復(fù)習(xí)與消化,并且能夠形成團(tuán)隊(duì)意識來共同解決問題。2.曾有研究者提出將大實(shí)驗(yàn)貫穿于每個階段當(dāng)中,知識是互聯(lián)的,我們通過一個大實(shí)驗(yàn)來將所學(xué)的知識貫穿到一起,進(jìn)而解決一個更大的問題。這樣不僅可以很好地復(fù)習(xí)所學(xué)知識,而且能夠使所學(xué)的知識貫穿起來,以便于更好地掌握。有時候往往單獨(dú)看問題會覺得比較容易,把這些簡單的問題貫穿到一起時會發(fā)現(xiàn)很多其他的問題;正是這種發(fā)現(xiàn)問題、糾正問題的過程跟能力是學(xué)習(xí)程序設(shè)計(jì)所必須掌握的技能。

三、教學(xué)改革

篇9

關(guān)鍵詞:精品課程;工學(xué)結(jié)合;任務(wù)驅(qū)動教學(xué)法;項(xiàng)目實(shí)訓(xùn)教學(xué)法

中圖分類號:TP312.2-4

精品課程建設(shè)是鄭州電子信息職業(yè)技術(shù)學(xué)院教學(xué)改革和教學(xué)質(zhì)量工程的重要內(nèi)容之一。Java程序設(shè)計(jì)是我院信息工程系計(jì)算機(jī)相關(guān)專業(yè)的專業(yè)核心課程,重點(diǎn)培養(yǎng)學(xué)生Java方向程序設(shè)計(jì)能力,是一門實(shí)踐性很強(qiáng)的課程。該課程的知識教育目標(biāo)是使學(xué)生能夠熟練使用JDK(Java開發(fā)工具包),Eclipse,UltraEdit等常用編輯工具來開發(fā)Java程序;能力教育目標(biāo)是培養(yǎng)學(xué)生運(yùn)用面向?qū)ο蟮乃枷虢鉀Q實(shí)際問題的能力。思想教育目標(biāo)是培養(yǎng)學(xué)生的團(tuán)隊(duì)協(xié)作能力和愛崗敬業(yè)的職業(yè)素養(yǎng)。

1 精品課程建設(shè)基礎(chǔ)

1.1 硬件基礎(chǔ)

學(xué)院有先進(jìn)的網(wǎng)絡(luò)教學(xué)環(huán)境和充足的實(shí)踐教學(xué)條件,Java程序設(shè)計(jì)的教學(xué)環(huán)境是我院多媒體中心,該中心下設(shè)30個多媒體教室。課程全面應(yīng)用多媒體方式授課,學(xué)生可以利用移動存儲設(shè)備下載教學(xué)資源。在網(wǎng)上為學(xué)生提供授課計(jì)劃、教學(xué)大綱、實(shí)訓(xùn)大綱、實(shí)驗(yàn)指導(dǎo)書、課件、學(xué)習(xí)指南、上機(jī)習(xí)題與指導(dǎo)、模擬測試題、學(xué)習(xí)參考書目錄等網(wǎng)絡(luò)學(xué)習(xí)資源。另外,教師利用電子郵件、QQ進(jìn)行答疑,探討師生共同關(guān)心的問題,了解學(xué)生的學(xué)習(xí)和其它方面的動態(tài),及時調(diào)整教學(xué)方法和進(jìn)度。

Java程序設(shè)計(jì)的實(shí)訓(xùn)環(huán)境是我院計(jì)算機(jī)實(shí)訓(xùn)中心,現(xiàn)有22個實(shí)訓(xùn)室,近1500臺機(jī)器,實(shí)訓(xùn)室設(shè)備先進(jìn)、功能齊全、管理嚴(yán)格規(guī)范,每個實(shí)訓(xùn)室自成局域網(wǎng)并接入了互聯(lián)網(wǎng)。實(shí)訓(xùn)室均安裝了JDK(java開發(fā)工具包)、MyEclipse、Tomcat、SQLsever及全國高等院校計(jì)算機(jī)等級考試模擬軟件,能夠保證人均一臺機(jī)器,學(xué)校實(shí)訓(xùn)室在課余及周末時間為學(xué)生開放,方便學(xué)生的上機(jī)實(shí)習(xí)。

此外,學(xué)院與鄭州東隅電子科技有限公司、鄭州華創(chuàng)科技有限公司、鄭州亞訊科技信息有限公司簽訂協(xié)議,確立為我系的校外實(shí)訓(xùn)實(shí)習(xí)基地。

1.2 軟件基礎(chǔ)

該課程教師隊(duì)伍共10人,其中專職教師8人,兼職教師2人,師生比1:45,是一支師資配置合理,執(zhí)教能力強(qiáng)、教學(xué)效果好的教學(xué)隊(duì)伍。以中青年教師為主,副高以上職稱占15%,研究生以上學(xué)歷占20%,“雙師型”教師占80%。

教學(xué)團(tuán)隊(duì)中有畢業(yè)于鄭州大學(xué)、西南大學(xué)、上海師范大學(xué)、河南科技學(xué)院等各個高校的教師,教師知識結(jié)構(gòu)合理,年齡結(jié)構(gòu)合理。課程建設(shè)小組具有在省、市級課題研究等方面的經(jīng)歷,并且獲取省級和市級的獎項(xiàng)若干。課程建設(shè)小組成員組成結(jié)構(gòu)和科研條件均具備了相應(yīng)的研究條件。

學(xué)院每年都積極選派教師到企業(yè)學(xué)習(xí)。特別注重加強(qiáng)理論教學(xué)與實(shí)踐教學(xué)的結(jié)合,提升課程教學(xué)水平和質(zhì)量,從而逐步形成人員精干、教學(xué)水平高、教學(xué)效果好的師資隊(duì)伍。

2 精品課程建設(shè)內(nèi)容

2.1 課程建設(shè)目標(biāo)

Java程序設(shè)計(jì)是我院信息工程系計(jì)算機(jī)相關(guān)專業(yè)(計(jì)算機(jī)應(yīng)用技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)、物聯(lián)網(wǎng))的一門非常重要的專業(yè)核心課程。該課程以C語言程序設(shè)計(jì)為先導(dǎo)課程,將會對JSP動態(tài)網(wǎng)頁編程課程的學(xué)習(xí)有著重要的影響。本課程在教學(xué)培養(yǎng)方案中起到承上啟下的作用。

本課程的目的是通過對Java程序設(shè)計(jì)的學(xué)習(xí),使學(xué)生具備高級技能專門人才所必須的計(jì)算機(jī)程序設(shè)計(jì)能力,培養(yǎng)學(xué)生的邏輯思維能力,為進(jìn)一步應(yīng)用面向?qū)ο蟪绦蛟O(shè)計(jì)的方來進(jìn)行項(xiàng)目開發(fā)打下基礎(chǔ)。具體的培養(yǎng)學(xué)生具有理解和應(yīng)用軟件開發(fā)規(guī)范、軟件開發(fā)流程的能力;學(xué)會將實(shí)際問題轉(zhuǎn)化成計(jì)算機(jī)語言表達(dá)模型的能力;會用計(jì)算機(jī)處理問題的思維方法閱讀和編寫程序的能力;具有進(jìn)一步學(xué)習(xí)其他語言的能力;具有軟件開發(fā)團(tuán)隊(duì)協(xié)作的能力。

2.2 課程建設(shè)內(nèi)容

Java程序設(shè)計(jì)精品課程建設(shè)主要包括課程體系、教學(xué)手段的改革、教學(xué)方法的改進(jìn)、考試方法的變革和教材建設(shè)。我們以現(xiàn)代化教學(xué)手段為依托,充分利用多功能教室、多媒體教室、校園網(wǎng)等教學(xué)手段。實(shí)行啟發(fā)式、研討式、項(xiàng)目驅(qū)動式等多種教學(xué)方法,形成一套能夠使抽象內(nèi)容具體化、專業(yè)知識通俗化的課程教學(xué)模式。通過精品課程建設(shè),課程建設(shè)小組逐步落實(shí)Java程序設(shè)計(jì)成績評定方法,學(xué)生期末綜合考評分為理論考評和實(shí)踐考評兩大部分各占總成績的50%,理論考評中平時成績占30%,期末考試成績占70%。實(shí)踐考評中實(shí)驗(yàn)報告占30%,實(shí)踐操作占70%??荚噧?nèi)容包括理論知識和實(shí)踐操作,真正反映教師的教學(xué)水平。

3 課程特色與創(chuàng)新

在Java程序設(shè)計(jì)教學(xué)中,我們必須突出高職高專院校的教育特色,采用先進(jìn)的教育理念,把現(xiàn)代教育思想和課程的具體內(nèi)容相結(jié)合,改革傳統(tǒng)的教學(xué)手段和方法,形成自己特色鮮明的工學(xué)結(jié)合的教學(xué)模式。

3.1 工學(xué)結(jié)合教學(xué)模式

我們確立以“就業(yè)為導(dǎo)向、能力為核心”的專業(yè)人才培養(yǎng)方案,以職業(yè)能力培養(yǎng)為核心,有針對性采取工學(xué)交替、校企合作、理論與實(shí)踐相結(jié)合的課程教學(xué)模式。此模式在做中學(xué)、做中教。特別突出以生產(chǎn)性實(shí)訓(xùn)為特征的實(shí)踐教學(xué)模式。在實(shí)訓(xùn)環(huán)節(jié)上,每屆學(xué)生都安排了三個企業(yè)真實(shí)項(xiàng)目實(shí)訓(xùn)和半年的頂崗實(shí)習(xí),讓學(xué)生直接參與到項(xiàng)目開發(fā)中去,親身體驗(yàn)職場的工作氛圍,熟悉面向?qū)ο缶幊痰乃枷耄瑸閷淼木蜆I(yè)打下堅(jiān)實(shí)的基礎(chǔ)。

3.2 教學(xué)方法

項(xiàng)目實(shí)訓(xùn)教學(xué)法強(qiáng)調(diào)的是真實(shí)體驗(yàn),以項(xiàng)目的完成結(jié)果檢驗(yàn)和總結(jié)學(xué)習(xí)過程。項(xiàng)目實(shí)訓(xùn)采用項(xiàng)目調(diào)研、開發(fā)、測試、驗(yàn)收等教學(xué)流程,使學(xué)生帶著真實(shí)的目的在探索中學(xué)習(xí),讓學(xué)生獲得親身參與的體驗(yàn)、培養(yǎng)學(xué)生發(fā)現(xiàn)問題和解決問題的能力。

任務(wù)驅(qū)動教學(xué)法強(qiáng)調(diào)的是“以任務(wù)為主線、教師為主導(dǎo)、學(xué)生為主體” 通過精選案例、明確任務(wù),以任務(wù)帶動理論知識點(diǎn)的學(xué)習(xí),真正做到了講練有機(jī)融合。通過在實(shí)踐中的學(xué)習(xí),可以激發(fā)學(xué)生的好奇心和創(chuàng)造力。

情景教學(xué)法是以案例或情景為載體引導(dǎo)學(xué)生自主探究性學(xué)習(xí),以提高學(xué)生分析和解決實(shí)際問題的能力。主要針對企業(yè)的工作場景和實(shí)際的工作流程,進(jìn)行項(xiàng)目分析和任務(wù)分解,重現(xiàn)在企業(yè)中進(jìn)行項(xiàng)目開發(fā)的任務(wù)環(huán)境。學(xué)生在實(shí)際操作的過程中模擬項(xiàng)目組中的各種角色,使用真實(shí)的企業(yè)項(xiàng)目、企業(yè)工作流程,協(xié)同完成項(xiàng)目,體驗(yàn)和掌握各種角色的工作技能和工作經(jīng)驗(yàn)。

3.3 特色教材建設(shè)

教材是培養(yǎng)人才最關(guān)鍵、最直接的因素。所以說教材建設(shè)是精品課程建設(shè)的重要組成部分。Java是1995年Sun公司開發(fā)的面向?qū)ο蟮木幊陶Z言,它憑借平臺無關(guān)性這一強(qiáng)大優(yōu)勢己經(jīng)成為Internet應(yīng)用的主要開發(fā)語言。從目前情況來看,Java教材出版的不少,但是很少有以工作任務(wù)為主的適合高職教育的教材,大多數(shù)都是以講Java 基本知識為主,枯燥的理論使學(xué)生很難學(xué)以致用。因此,我們對課程內(nèi)容進(jìn)行了徹底的整合,采取用什么講什么,用多少講多少的原則,將那些直接支撐專業(yè)技術(shù)的知識從系統(tǒng)中提取出來,打造直接服務(wù)于崗位技術(shù)的知識鏈,建設(shè)符合高職院校特色的精品教材。在學(xué)院的大力支持下,我們課程組通過長期扎實(shí)的自我建設(shè),強(qiáng)化了課程體系,完善了教材內(nèi)容等方面的建設(shè)。

4 結(jié)束語

Java程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的專業(yè)核心課程。我們通過不斷轉(zhuǎn)變教學(xué)理念、更新教學(xué)內(nèi)容、改進(jìn)教學(xué)手段、完善教學(xué)方法,已基本構(gòu)建起比較完善的教學(xué)體系,形成了較鮮明的特色。綜上所述,該課程建設(shè)指導(dǎo)思想明確,擁有教學(xué)與科研相長的師資隊(duì)伍,教育教學(xué)思想與時俱進(jìn),教學(xué)模式多樣化,教學(xué)手段現(xiàn)代化,在計(jì)算機(jī)編程教育領(lǐng)域起著良好的示范作用。

參考文獻(xiàn):

[1]王小芬,馬玉芳.《大學(xué)計(jì)算機(jī)應(yīng)用基礎(chǔ)》精品課程建設(shè)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2013,4.

篇10

1.沒有明確的教學(xué)目的,對課程重要性認(rèn)識不足《匯編語言程序設(shè)計(jì)》課程教學(xué)是高校計(jì)算機(jī)、通信、電子以及自動化等相關(guān)專業(yè)課程中的基礎(chǔ)課程,對學(xué)生在學(xué)習(xí)過程中的創(chuàng)新能力以及實(shí)踐能力的提高有一定的促進(jìn)作用。在對《匯編語言程序設(shè)計(jì)》課程的學(xué)習(xí)過程中,大多時候得不到學(xué)生以及教師重視,對其學(xué)習(xí)的重要性認(rèn)識不足。而且,大多數(shù)老師在對這門課程進(jìn)行教學(xué)的過程中,受到相應(yīng)教學(xué)的課時以及大綱限制,在課堂教學(xué)過程中過于偏重對具體指令的相關(guān)應(yīng)用以及功能的講解,從而缺少了對各個課程之間的特點(diǎn)串聯(lián)。這樣的問題導(dǎo)致教師在教學(xué)過程中,對學(xué)生的學(xué)習(xí)興趣不能充分的調(diào)動,從而導(dǎo)致學(xué)生對正確的學(xué)習(xí)方法不能很好的掌握。2.教學(xué)方法偏差,教學(xué)手段存在缺陷在對《匯編語言程序設(shè)計(jì)》課程進(jìn)行教學(xué)的過程中,其在相應(yīng)的教學(xué)方法上存在一定程度的偏差,從而導(dǎo)致一些編程中非法指令經(jīng)常性出現(xiàn)。而且,教師在對這門課程進(jìn)行教學(xué)的過程中,教學(xué)手段太過單一,在教學(xué)過程中主要就通過多媒體對課堂內(nèi)容進(jìn)行講解。在教學(xué)過程中對多媒體的運(yùn)用雖然存在直觀生動以及信息量大等相關(guān)優(yōu)勢,但其也在一定程度上使學(xué)生產(chǎn)生了學(xué)習(xí)惰性。

二、對《匯編語言程序設(shè)計(jì)》課程教學(xué)中相應(yīng)的問題進(jìn)行改革

1.加強(qiáng)對課程重要性的認(rèn)識在對《匯編語言程序設(shè)計(jì)》課程進(jìn)行教學(xué)之前,對其相應(yīng)的重要性進(jìn)行講解,從而使學(xué)生對匯編語言的具體特點(diǎn)進(jìn)行充分掌握,對匯編語言相較于高級語言的具體優(yōu)勢進(jìn)行具體明確,使學(xué)生對其在應(yīng)用領(lǐng)域中必要性有充分的了解。在對《匯編語言程序設(shè)計(jì)》課程進(jìn)行學(xué)習(xí)的過程中,要注意對其實(shí)用性的具體教學(xué),使學(xué)生能夠做到對具體知識的學(xué)以致用,注重對教學(xué)內(nèi)容相關(guān)知識點(diǎn)的訓(xùn)練和拓展。另外,教師在教學(xué)過程中,還要注重對學(xué)生知識面的拓寬,從而使學(xué)生在對匯編語言的學(xué)習(xí)興趣得到相應(yīng)的提高。2.采用多樣化教學(xué),提高學(xué)生學(xué)習(xí)興趣在對《匯編語言程序設(shè)計(jì)》課程進(jìn)行學(xué)習(xí)的過程中,想要對相應(yīng)的指令進(jìn)行掌握,就要對其相關(guān)的尋址方式進(jìn)行具體的理解和掌握。在對匯編語言進(jìn)行教學(xué)的過程中,由于其相較高級語言而言,沒有足夠的易讀性,不容易學(xué)生的理解,所以,在教學(xué)的時候要掌握多樣化的教學(xué)方法以及教學(xué)手段,從而使學(xué)生在對其進(jìn)行學(xué)習(xí)的過程中的學(xué)習(xí)興趣得到最大的提高,培養(yǎng)學(xué)生學(xué)習(xí)的自主性,使其對匯編語言的相關(guān)知識的理解和記憶更容易清晰地掌握。3.增加實(shí)踐環(huán)節(jié),提高學(xué)生具體的實(shí)踐能力在對《匯編語言程序設(shè)計(jì)》課程進(jìn)行學(xué)習(xí)的過程中,對學(xué)生具體動手實(shí)踐課程進(jìn)行加強(qiáng),使學(xué)生在具體實(shí)踐的過程中對教材上的知識點(diǎn)進(jìn)行具體的理解和掌握。在實(shí)際動手過程中學(xué)習(xí)實(shí)踐理論,使實(shí)踐與理論達(dá)到很好的結(jié)合,從而提升學(xué)生的學(xué)習(xí)效果。其中,在實(shí)踐的過程中,教師要注意對具體實(shí)驗(yàn)內(nèi)容的控制,對實(shí)驗(yàn)的重點(diǎn)著重突出,避免實(shí)驗(yàn)的時間太過漫長。除此之外,還要注意積極引導(dǎo)學(xué)生多多參與相關(guān)實(shí)踐項(xiàng)目,在一定程度上為他們提供一些參與實(shí)際研究項(xiàng)目的機(jī)會。

三、結(jié)束語