程序設計范文

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

導語:如何才能寫好一篇程序設計,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。

篇1

【關鍵詞】 JSP程序設計;應用能力培養;實踐

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

1 目前JSP程序設計教學現狀分析

1.1 JSP程序設計教學的評價標準和高職的培養目標不一致。教育部長周濟指出:高等職業教育的主要任務是培養高技能人才,我們培養的學生既要能動腦,更要能動手,經過實踐的鍛煉,能夠迅速成長為高技能人才,成為國家建設不可缺少的重要力量。JSP程序設計教學的主要目的是培養學生程序分析能力,程序設計能力,以及程序調試能力,而不在程序本身規則的學習。但JSP程序設計教學考核的主要關注點卻是語法規則,注重細節問題,當然不能全面評價學生能力。

1.2 JSP程序本身特點帶來學習困難。比如,JSP語法限制不嚴格、程序設計自由度大本身是程序設計的優點,但初學者往往能不清哪種表示正確,增加了程序理解的難度;程序設計本身比較抽象,學生相關計算機知識不夠;學習程序設計需要有較強的邏輯思維能力,而我們的學生在這方面訓練不夠。這都給學生學習帶來較大困難。

1.3 傳統的教學模式也不利于發揮學生學習的主觀能動性。過去JSP程序設計的教學仍延續課堂教授、布置作業及實驗的“教本位”的教學模式,教師是課堂的中心,注重教的原發性和主動性,忽視了學生的主體性。不利于調動學生學習的積極性與主動性,發揮不了學生的主觀能動性。

2 JSP程序設計教學改革的措施

2.1 準確的定位課程目標。根據高職高專培養目標的要求,我們在教學大綱的制定中貫徹 “以應用為目的、以必需、夠用為度”的原則。服務專業需要,同時注重學生綜合素質、數學思維能力的培養。

2.2 采用先進的教學方法和手段,充分發揮學生的主觀能動性。本課程的重點JSP內置對象、JSP與數據庫的連接、JavaBean與JavaServlet技術,難點主要有:JSP內置對象的屬性與方法、JavaBean與JavaServlet技術。我們的解決方案如下:

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

2.2.3 采用同一例題用不同方法實現的教學手段,從而提高課堂的講課效率和效果。

2.2.4 針對高職高專類學生理論教學“必須夠用”的原則,略講了一些理論性較強而不太實用的內容,增加了學生實驗實踐的內容。

2.2.5 盡量采用案例、任務驅動的教學方式,針對重點與難點,通過老師演示講解,學生討論、實驗來增強學生的分析問題解決問題的能力。

2.2.6 充分采用現代教育技術來輔助教學。利用專用計算機做為服務器,在講課時使所做的程序當時就能見到效果,提高學生的興趣和記憶力。

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

由于我們在實踐教學中采用靈活、實用的教學方式,進一步激發了學生學習興趣,促進了學生主動學習的積極性,效果顯著。課程學完后,所有學生都達到了用JSP獨立開發小型網站的能力,畢業后有許多學生從事網站開發工作。

2.3 給學生搭建多種自主學習平臺。一是充分利用網絡資源,創建教學網站,提供教學課件,便于學生課后自主學習與復習,建立不同層次的題庫與測試內容,方便學生的自我檢查,開辟討論與答疑區,隨時對學生的學習問題進行解答,并開展討論,提高學生的創新能力。二是開放機房,JSP程序設計是一門實踐性很強的課程,需要進行大量的上機調試,來發現問題、理解問題、掌握程序設計的方法。通過多種平臺的構建,營造以學生為主體的學習環境與氛圍,充分調動學生學習欲望。

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

3 結束語

本文所提的教學改革措施,一切以學生為中心,充分調動學生學習的主動性和積極性,積極探索符合高職培養目標的教學方法和教學模式,始終以能力的培養為中心,貫徹能力為本位的職教思想。我們一直探索如何有效進行教學,逐步形成了以項目驅動、實例教學為主的符合高職學生學習的教學模式。

參考文獻

[1] 黃榮梅.創新教育在高職計算機教學中的體現[J].四川職業技術學院學報,2007,11.

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

篇2

一、前言

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

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

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

二、Windows的消息機制

Windows是一消息驅動式系統,見圖1。Windows消息提供了應用程序與應用程序之間、應用程序與Windows系統之間進行通訊的手段。應用程序要實現的功能由消息來觸發,并靠對消息的響應和處理來完成。

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

圖1

三、Windows的保護模式及中斷機制

1.Windows的保護模式

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

2.中斷機制

(1)實模式中斷

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

在實模式下,中斷向量表IVT起到相當重要的作用。無論來自外部硬件的中斷或是內部的軟中斷INTn,在CPU中都產生同樣的響應。

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

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

③CPU將此遠地址裝入CS:IP寄存器中,并開始執行服務例程。

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

(2)保護模式中斷

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

①IVT結構:IVT在RAM的0000∶0000之上,占據開始的1024字節。

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

②IDT中斷描述符表:保護模式下,Windows操作系統為實現中斷機制而建立的一個特殊表,即中斷描述符表IDT。該表被用來保存中斷服務例程的線性地址,它們是真正的24位或32位地址,沒有段:偏移值結構。中斷描述器表最多可含有256個例程說明,詳細說明請見【3】。I

DT結構見圖2。

圖2

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

式的中斷機制。有助于我們理解中斷服務程序的設計,它的關鍵就在于如何將服務例程的地址放入IDT中斷描述符表中。當中斷發生時,如何將斷點地址及CPU各寄存器值保護起來;中斷結束時,如何將保護的值恢復。Windows系統本身并不提供實現上述功能的API,而DOS保護模式接口DPMI正具備了上述的功能。

下面我們首先介紹DPMI接口,然后基于它實現Windows下中斷服務程序的設計。

四、DOS保護模式接口DPMI

Windows除了標準服務外,還支持一組特殊的DOS服務,稱為DOS保護模式接口DPMI,由一些INT 2FH和INT 31H服務組成。它使應用程序能夠訪問PC系列計算機的擴充內存,同時維護系統的保護功能。DPMI通過軟件中斷31h來定義了一個新的接口,使得保護模式的應用程序能夠用它作分配內存,修改描述符以及調用實模式軟件等工作。

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

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

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

五、編程實現

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

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

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

//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當前狀態并保存

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; //靜態局部變量

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

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

if(inflag==0)

{

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

{

i=0;

goto ll;

}

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

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

{

inflag=1;

i=0;

}

}

ll:outportb(0x20,0x20); //回送中斷結束標志

}

//調用DPMI

//保存舊的0CH號保護模式中斷向量

//設置新的保護模式中斷服務例程

void InitCom(void)

{

asm{

cli

mov ax,204h

mov bl,0ch

int 31h

sti

}

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

asm{ cli //設置新的0x0c中斷服務例程

mov ax,205h

mov bl,0ch

mov cx,seg datareceive

mov dx,offset datareceive

int 31h

sti

}

InitCom1();

}

//恢復8259狀態

//恢復0CH保護模式向量

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

}

}

在窗口第一次被創建時會傳送它WM-CREATE消息,這時調用InitCom()即可。在主窗口關閉時,即主窗口中收到WM-DESTROY消息時,調用RestoreComm()恢復原來的狀態。

這樣在對串口初始化,設置中斷服務例程后,通信事件發生時,會立即跳入中斷子程序中執行,越過系統的消息隊列,達到實時處理通信事件的目的。而數據處理模塊可通過全局標志flag訪問全局的數據通信緩沖區獲取實時數據。這種實現方式與基于消息機制的Windows通信API實現相比具有實時性強的特點,因為它超過Windows系統的兩!極消息機制。

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

參考文獻

1 張豫夫、曹建文譯.【澳】Barry Kauler著.Windows匯編語言及系統程序設計.北京大學出版社,1995

篇3

關鍵詞:C程序設計;多媒體教學;案例教學;互動式教學

《C程序設計》是計算機專業的必修課,也逐漸成為非計算機專業學習的課程。它是學生入學后系統地學習與高級語言和程序設計有關的一門新課程,再加上C程序設計集抽象性、邏輯性、實踐性于一身,讓學生感覺十分難學。在C程序設計教學過程中,一方面要求教師能夠準確把握授課內容,有效地組織教學;另一方面要求教師應用適當的教學方法,充分調動學生學習積極性,這樣才能提高教學質量。根據多年教學實踐,以現代教學理論和技術為基礎,文章總結了適合于C程序設計課程的教學方法。

一、多媒體教學和傳統課堂講授有機結合

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

另外,教師可以充分利用網絡資源,將電子教案、課件、習題等放在網上,供學生自行調用,同時每位教師與所帶班級都可建立課程QQ群,方便提問和答疑,以彌補課堂教學的不足。教師要合理地將多媒體教學和傳統課堂講授有機地結合起來,以達到最佳的教學效果。

二、采用案例教學,培養學生的興趣

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

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

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

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

四、采用問題驅動教學,加深知識理解的深度

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

五、加強上機實驗教學設計,輔助理論教學

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

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

六、結束語

要教好C程序設計課程,關鍵在于教師要有效地組織教學,激發學生的學習興趣,讓學生主動、愉快地學習。實踐證明,把多媒體課件教學和傳統教學有機結合起來,取長補短,采用適當的教學方法,能達到好的教學效果,有效提高教學質量。

參考文獻:

[1]譚浩強.C程序設計(第三版)[H].北京:清華大學出版社,2005

篇4

關鍵詞:多線程;類;接口;同步

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

1 引言

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

2 線程的創建與生命周期

2.1 線程的創建

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

2.2 線程的生命周期

(1)創建狀態。一個線程對象被創建。(2)可運行狀態。線程獲得了CPU的執行時間,便可運行。雖然處于可運行狀態,但自定義線程對象并不一定立即運行,其是否運行是由Java的運行系統來協調的。(3)阻塞狀態。阻塞狀態就是一個線程對象因為人為或系統原因必須暫停運行,以后還可以恢復運行的狀態。當下面的幾種情況之一發生后,線程對象就由可運行狀態進入阻塞狀態。一是通過sleep( )讓線程進入休眠狀態;二是通過suspend( )暫停線程;三是通過wait( )暫停線程;四是線程正在等待某個I/O動作的完成;五是線程試著調用另一個對象的synchronized函數。(4)終止狀態。線程的正常結束方式,就是從其run( )中回返。或者是非正常結束,如調用了stop( )。

3 多線程實現方式

3.1 通過擴展Thread類來創建多線程

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

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

3.2 通過實現Runnable接口來創建多線程

4 線程同步

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

參考文獻:

[1]侯捷.Java編程思想[M].機械工業出版社,2005.

[2]聶哲,袁梅冷,楊淑萍.Java面向對象程序設計[M].高等教育出版社,2005.

[3]張居敏.Java程序設計經典教程[M].電子工業出版社,2008.

篇5

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

的計算效率和計算結果起主導性作用[3]。  

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

篇6

摘要:本文指出程序設計語言教學的關鍵是講述程序設計的思想和方法,而不是拘泥于語言細節,并探討了“高級語言程序設計”教學改革的思想和方法,介紹了我校的教學經驗。

關鍵詞:程序設計;教學改革;C語言

中圖分類號:G642

文獻標識碼:B

1指導思想

目前計算機教育面向應用,學生學習的主要目的是“應用”程序設計語言,是學會如何用程序解決應用領域的問題,這不需要細致地研究程序設計語言本身十分嚴格的語法和語義。基于這種認識,我們開始嘗試程序設計課程在的教學改革,開始把授課重點轉移到“程序設計”上。經過幾年的探討,逐漸形成了“以程序設計為主線”的指導思想。

2教學內容

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

3教學方法

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

4教學手段

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

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

考核:包括理論課程考核、實驗課考核、課程設計考核。理論課考核采用閉卷考試與平時作業成績結合方式進行;實驗課考核采用實驗報告、平時實驗表現、綜合實驗成績相結合方式進行;課程設計考核按小組記分,每個小組一個分數,采用檢查實驗結果和小組答辯相結合方式進行。

課程網站:包括了本課程的介紹、教學大綱、教材、多媒體CAI課件、多媒體的電子教案、遠程網絡課程、習題庫、習題解答、疑難問題解答等內容,并且開辟了師生交流的專門空間,不僅為學生提供了新穎的教學通道而且增強了師生間的交流。

參考文獻

[1] 張長海,陳娟. 程序設計基礎[M]. 北京:高等教育出版社,2008.

[2] 張長海,陳娟. 程序設計基礎習題集及選解[M]. 北京:清華大學出版社,2008.

[3] 石峰. 程序設計基礎[M]. 北京:清華大學出版社,2003.

[4] 解閔等. 基于構建主義的“C程序設計”分段教學[J]. 計算機教育,2007,(10).

篇7

一、前言

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

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

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

二、Windows的消息機制

Windows是一消息驅動式系統,見圖1。Windows消息提供了應用程序與應用程序之間、應用程序與Windows系統之間進行通訊的手段。應用程序要實現的功能由消息來觸發,并靠對消息的響應和處理來完成。

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

圖1

三、Windows的保護模式及中斷機制

1.Windows的保護模式

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

2.中斷機制

(1)實模式中斷

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

在實模式下,中斷向量表IVT起到相當重要的作用。無論來自外部硬件的中斷或是內部的軟中斷INTn,在CPU中都產生同樣的響應。

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

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

③CPU將此遠地址裝入CS:IP寄存器中,并開始執行服務例程。

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

(2)保護模式中斷

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

①IVT結構:IVT在RAM的0000∶0000之上,占據開始的1024字節。

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

②IDT中斷描述符表:保護模式下,Windows操作系統為實現中斷機制而建立的一個特殊表,即中斷描述符表IDT。該表被用來保存中斷服務例程的線性地址,它們是真正的24位或32位地址,沒有段:偏移值結構。中斷描述器表最多可含有256個例程說明,詳細說明請見【3】。I

DT結構見圖2。

圖2

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

式的中斷機制。有助于我們理解中斷服務程序的設計,它的關鍵就在于如何將服務例程的地址放入IDT中斷描述符表中。當中斷發生時,如何將斷點地址及CPU各寄存器值保護起來;中斷結束時,如何將保護的值恢復。Windows系統本身并不提供實現上述功能的API,而DOS保護模式接口DPMI正具備了上述的功能。

下面我們首先介紹DPMI接口,然后基于它實現Windows下中斷服務程序的設計。

四、DOS保護模式接口DPMI

Windows除了標準服務外,還支持一組特殊的DOS服務,稱為DOS保護模式接口DPMI,由一些INT2FH和INT31H服務組成。它使應用程序能夠訪問PC系列計算機的擴充內存,同時維護系統的保護功能。DPMI通過軟件中斷31h來定義了一個新的接口,使得保護模式的應用程序能夠用它作分配內存,修改描述符以及調用實模式軟件等工作。

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

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

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

五、編程實現

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

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

//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當前狀態并保存

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;//靜態局部變量

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

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

if(inflag==0)

{

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

{

i=0;

gotoll;

}

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

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

{

inflag=1;

i=0;

}

}

ll:outportb(0x20,0x20);//回送中斷結束標志

}

//調用DPMI

//保存舊的0CH號保護模式中斷向量

//設置新的保護模式中斷服務例程

voidInitCom(void)

{

asm{

cli

movax,204h

movbl,0ch

int31h

sti

}

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

asm{cli//設置新的0x0c中斷服務例程

movax,205h

movbl,0ch

movcx,segdatareceive

movdx,offsetdatareceive

int31h

sti

}

InitCom1();

}

//恢復8259狀態

//恢復0CH保護模式向量

voidRestoreComm(void)

{

outportb(0x21,s8259);

asm{

cli

movax,205h

movbl,0ch

movcx,segold-vector

movdx,offsetold-vector

int31h

sti

}

}

在窗口第一次被創建時會傳送它WM-CREATE消息,這時調用InitCom()即可。在主窗口關閉時,即主窗口中收到WM-DESTROY消息時,調用RestoreComm()恢復原來的狀態。

這樣在對串口初始化,設置中斷服務例程后,通信事件發生時,會立即跳入中斷子程序中執行,越過系統的消息隊列,達到實時處理通信事件的目的。而數據處理模塊可通過全局標志flag訪問全局的數據通信緩沖區獲取實時數據。這種實現方式與基于消息機制的Windows通信API實現相比具有實時性強的特點,因為它超過Windows系統的兩極消息機制。

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

參考文獻

1張豫夫、曹建文譯.【澳】BarryKauler著.Windows匯編語言及系統程序設計.北京大學出版社,1995

篇8

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

二、實驗課程教學

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

三、教學改革

篇9

關鍵詞:精品課程;工學結合;任務驅動教學法;項目實訓教學法

中圖分類號:TP312.2-4

精品課程建設是鄭州電子信息職業技術學院教學改革和教學質量工程的重要內容之一。Java程序設計是我院信息工程系計算機相關專業的專業核心課程,重點培養學生Java方向程序設計能力,是一門實踐性很強的課程。該課程的知識教育目標是使學生能夠熟練使用JDK(Java開發工具包),Eclipse,UltraEdit等常用編輯工具來開發Java程序;能力教育目標是培養學生運用面向對象的思想解決實際問題的能力。思想教育目標是培養學生的團隊協作能力和愛崗敬業的職業素養。

1 精品課程建設基礎

1.1 硬件基礎

學院有先進的網絡教學環境和充足的實踐教學條件,Java程序設計的教學環境是我院多媒體中心,該中心下設30個多媒體教室。課程全面應用多媒體方式授課,學生可以利用移動存儲設備下載教學資源。在網上為學生提供授課計劃、教學大綱、實訓大綱、實驗指導書、課件、學習指南、上機習題與指導、模擬測試題、學習參考書目錄等網絡學習資源。另外,教師利用電子郵件、QQ進行答疑,探討師生共同關心的問題,了解學生的學習和其它方面的動態,及時調整教學方法和進度。

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

此外,學院與鄭州東隅電子科技有限公司、鄭州華創科技有限公司、鄭州亞訊科技信息有限公司簽訂協議,確立為我系的校外實訓實習基地。

1.2 軟件基礎

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

教學團隊中有畢業于鄭州大學、西南大學、上海師范大學、河南科技學院等各個高校的教師,教師知識結構合理,年齡結構合理。課程建設小組具有在省、市級課題研究等方面的經歷,并且獲取省級和市級的獎項若干。課程建設小組成員組成結構和科研條件均具備了相應的研究條件。

學院每年都積極選派教師到企業學習。特別注重加強理論教學與實踐教學的結合,提升課程教學水平和質量,從而逐步形成人員精干、教學水平高、教學效果好的師資隊伍。

2 精品課程建設內容

2.1 課程建設目標

Java程序設計是我院信息工程系計算機相關專業(計算機應用技術、計算機網絡技術、物聯網)的一門非常重要的專業核心課程。該課程以C語言程序設計為先導課程,將會對JSP動態網頁編程課程的學習有著重要的影響。本課程在教學培養方案中起到承上啟下的作用。

本課程的目的是通過對Java程序設計的學習,使學生具備高級技能專門人才所必須的計算機程序設計能力,培養學生的邏輯思維能力,為進一步應用面向對象程序設計的方來進行項目開發打下基礎。具體的培養學生具有理解和應用軟件開發規范、軟件開發流程的能力;學會將實際問題轉化成計算機語言表達模型的能力;會用計算機處理問題的思維方法閱讀和編寫程序的能力;具有進一步學習其他語言的能力;具有軟件開發團隊協作的能力。

2.2 課程建設內容

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

3 課程特色與創新

在Java程序設計教學中,我們必須突出高職高專院校的教育特色,采用先進的教育理念,把現代教育思想和課程的具體內容相結合,改革傳統的教學手段和方法,形成自己特色鮮明的工學結合的教學模式。

3.1 工學結合教學模式

我們確立以“就業為導向、能力為核心”的專業人才培養方案,以職業能力培養為核心,有針對性采取工學交替、校企合作、理論與實踐相結合的課程教學模式。此模式在做中學、做中教。特別突出以生產性實訓為特征的實踐教學模式。在實訓環節上,每屆學生都安排了三個企業真實項目實訓和半年的頂崗實習,讓學生直接參與到項目開發中去,親身體驗職場的工作氛圍,熟悉面向對象編程的思想,為將來的就業打下堅實的基礎。

3.2 教學方法

項目實訓教學法強調的是真實體驗,以項目的完成結果檢驗和總結學習過程。項目實訓采用項目調研、開發、測試、驗收等教學流程,使學生帶著真實的目的在探索中學習,讓學生獲得親身參與的體驗、培養學生發現問題和解決問題的能力。

任務驅動教學法強調的是“以任務為主線、教師為主導、學生為主體” 通過精選案例、明確任務,以任務帶動理論知識點的學習,真正做到了講練有機融合。通過在實踐中的學習,可以激發學生的好奇心和創造力。

情景教學法是以案例或情景為載體引導學生自主探究性學習,以提高學生分析和解決實際問題的能力。主要針對企業的工作場景和實際的工作流程,進行項目分析和任務分解,重現在企業中進行項目開發的任務環境。學生在實際操作的過程中模擬項目組中的各種角色,使用真實的企業項目、企業工作流程,協同完成項目,體驗和掌握各種角色的工作技能和工作經驗。

3.3 特色教材建設

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

4 結束語

Java程序設計是一門實踐性很強的專業核心課程。我們通過不斷轉變教學理念、更新教學內容、改進教學手段、完善教學方法,已基本構建起比較完善的教學體系,形成了較鮮明的特色。綜上所述,該課程建設指導思想明確,擁有教學與科研相長的師資隊伍,教育教學思想與時俱進,教學模式多樣化,教學手段現代化,在計算機編程教育領域起著良好的示范作用。

參考文獻:

[1]王小芬,馬玉芳.《大學計算機應用基礎》精品課程建設[J].計算機光盤軟件與應用,2013,4.

篇10

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

二、對《匯編語言程序設計》課程教學中相應的問題進行改革

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

三、結束語