時間:2022-09-14 10:37:40
序論:寫作是一種深度的自我表達。它要求我們深入探索自己的思想和情感,挖掘那些隱藏在內心深處的真相,好投稿為您帶來了七篇程序設計論文范文,愿它們成為您寫作過程中的靈感催化劑,助力您的創作。
【行為導向教學法;程序設計;教學案例
隨著計算機應用的普及,計算機應用專業也成了熱門專業,而高級程序設計語言是計算機專業的一門必修課。在高級程序設計語言中,VisualBasic語言以其易學易用和功能強大,而且能夠方便快捷地開發Windows應用程序等特征,而深受使用者歡迎。因此,其也作為中等職業學校的高級程序設計課的首選。VB是一門集知識和技能于一體、實踐性很強的課程,要求學生既要學好理論知識,又要把握實際操作技能,同時,在進行軟件開發時,要對用戶需求及市場情況進行調研,再加上計算機軟、硬件快速更新換代的特征,要求學生還要具有很強的自學能力和終身學習的思想。對于這些要求來說,傳統的教學方法難以做到。而使用強調以職業活動為導向,以人的發展為本位的“行為導向教學法”將會較好的實現這些教學要求。本文擬就在中等職業教育的計算機程序設計(VisualBasic)教學中,如何運用“行為導向教學法”進行初步探索。
一、行為導向教學法的基本理論
“行為導向教學法”是在近幾年從德國引進的現代的職業教育新模式,其目標層次是培養人的行為能力,方法層次是人的行為活動。即摘要:這種教育以行為為目標,教學以行為為導向,教學是學生積極參和的全面的教學,學習過程是學生同時用腦、心、手來進行學習的過程。
行為導向教學法具有很強的針對性,即是以職業活動為導向,以教會學生“學會學習、學會工作”為目標而開展教學活動,因此,對學習者來說,學習目的是十分明確,即現在的學習是為今后的職業服務。教學活動的開展,通常是圍繞某一課題、新問題或項目開展,是以“學習任務”為載體,引導學生自主學習和探索的過程。整個教學過程為一個包括獲取信息、制訂計劃、做出決定、實施工作計劃、控制質量、評定工作成績等環節在內的完整的行為模式。使用“行為導向教學法”,將能更好的培養學生的關鍵能力(專業能力、方法能力、社會能力、個性能力),以達到職業教育的“職業教育就是就業教育”的教學目標。
二、行為導向教學法在VisualBasic教學中的必要性和可行性
(一)必要性
現行的計算機專業類教材大多和其它學科式的教材一樣,重視知識結構的系統性,教學內容大多以線性方式展開,適用于“循序漸進”的傳統教學模式,以《VisualBasic程序設計》的教材為例,從語言基礎、流程控制、過程和數組、窗體和控件、對話框設計、菜單、工具欄和狀態欄設計等等,分章編排,在每一章的內容里,也同樣按線性方式展開。假如,在教學中仍按傳統的教學方法按章節講授,勢必降低的課程的綜合性、實用性,也缺乏趣味性,這不但難以培養學生學習喜好,使得教學雙方都陷入困境,而且,學生不知道如何在真實的情境中靈活地使用知識和運用技巧。這樣的學習,是很難面對今后職業的。要改變這一現象的方法,比較成功的是運用以課題或項目來開展教學活動的行為導向教學法進行教學,在教學中,淡化知識的系統性和連貫性,更多關注的是知識之間的聯系,在聯系中學習知識、在綜合運用中學習知識,使學生不僅學會了程序設計知識本身,又培養了學生運用程序設計的知識去解決實際新問題的能力,達到“學以致用”的教學目的。
(二)可行性
《VisualBasic程序設計》是一門實踐性和操作性很強的課程,知識涉及許多抽象的術語,如摘要:類、對象、過程、語句、控件等等,還有大量的開發工具的使用。僅就VB的開發環境為例,其中就包含了摘要:窗體設計器、代碼編輯器、對象瀏覽器、屬性窗口、工程管理器、工具箱、菜單、工具欄等等。把握和熟悉它們的最好方法,就是在不斷的結合實際的“案例”(案例教學法)或“課題”(項目教學法)的操作實踐中去把握。在教學中,教師可以把課程內容包含在兩到三個綜合貼近實際的項目,給出案例,再把這個項目分成若干個小項目(或模塊)。例如摘要:以開發一個“學生信息管理系統”為一個綜合項目(教師首先給出案例演示,以引起同學們的關注),再分別以“登錄窗口”、“查詢窗口”等為小項目進行設計開發,學習相關的基礎知識(如摘要:在設計“登錄窗口”的項目中,學生可以把握“文本框、標簽、命令按鈕、屬性設置、變量命名規則、變量定義、變量數據類型、變量的聲明語句、賦值語句”等相關知識群)。學生在具有目標明確的項目驅動下,以“做中學”的方法進行學習,這樣,不僅可以提高他們學習的主動性和學習樂趣,同時也培養了他們的關鍵能力。
二、“行為導向教學法”案例
行為導向教學法中的“項目教學法”是指師生以團隊的形式共同實施一個完整“項目”的工作而進行的教學活動。通過在開展項目過程中有針對性的工作來培養學生的關鍵能力,非凡是獨立工作能力、想象力、創新能力。項目教學法包括了計劃、實施和檢查及成果展示的全過程。它是由學生自己來完成整個過程的教學方法。以下是一個項目教學法的簡案。
項目摘要:學生信息管理系統
(一)教學目標
1.培養學生運用VisualBasic知識解決實際新問題的能力;
2.培養學生獨立學習和工作的能力;
3.培養學生和人合作的能力。
(二)項目的實施過程
三、需要重點注重的兩個新問題
(一)教師角色的轉換
在行為導向教學中,對教師提出了更高的要求。教師應是“雙師型”的教師,老師的角色由傳統的教學主導者轉變為教學活動的引導者或主持人,在教學過程中,教師以咨詢員、伙伴、朋友等角色出現在學生中,教學方法由注重“教法”轉變為注重“學法”,為此,要完成教學任務,教師要付出更多的心血。
(二)項目設計的合理性
項目設計的最重要的原則就是可實踐性,以保證學生可操作,并有收獲。因此,項目的設計應采用結構化的方法,自上而下,逐步細化的原則;項目的實施,則采用自下而上,由易到難,逐步完善的原則進行。
DSP芯片是專門為實現各種數字信號處理算法而設計的、具有特殊結構的微處理器,其卓越的性能、不斷上升的性價比、日漸完善的開發方式使它的應用越來越廣泛。將計算機網絡技術引入以DSP為核心的嵌入式系統,使其成為數字化、網絡化相結合,集通信、計算機和視聽功能于一體的電子產品,必須大大提升DSP系統的應用價值和市場前景。將DSP技術與網絡技術相結合,必須解決兩個關鍵問題:一是實現DSP與網卡的硬件接口技術,二是基于DSP的網絡通信程序設計。DSP與網卡的硬件接口技術參考文獻[1]有比較詳盡的論述,以下主要討論基于DSP的網絡通信程序設計。
1通信協議的制定
協議是用來管理通信的法規,是網絡系統功能實現的基礎。由于DSP可以實現對網卡的直接操作,對應于OSI網絡模型,網卡包含了物理層和數據鏈路層的全部內容,因此,規定了數據鏈路層上數據幀封裝格式,就可以為基于DSP的局域網絡中任意站點之間的通信提供具體規范。因為以太網是當今最受歡迎的局域網之一,在以太網中,網卡用于實現802.3規程,其典型代表是Novell公司的NE2000和3COM公司的3C503等網卡,所以研究工作中的具體試驗平臺是以DSP為核心構成的以太局域網,主要用于語音的實時通信,所使用的網卡為Novell公司的NE2000網卡。NE2000網卡的基本組成請見參考文獻[2],其核心器件是網絡接口控制器(NIC)DP8390。該器件有三部分功能:第一是IEEE802.3MAC(媒體訪問控制)子層協議邏輯,實現數據幀的封裝和解封,CSMA/CA(帶碰撞檢測功能的載波偵聽多址接入)協議以及CRC校驗等功能;第二是寄存器堆,用戶對NE2000網卡通信過程的控制主要通過對這些寄存器堆中各種命令寄存器編程實現;第三是對網卡上緩沖RAM的讀寫控制邏輯。DP8390發送和接收采用標準的IEEE802.3幀格式。IEEE802.3參考了以太網的協議和技術規范,但對數據包的基本結構進行了修改,主要是類型字段變成了長度字段。所以,以DSP為核心的局域網內通信數據包基本格式如圖1所示。
DSP讀出數據包和打包從目的地址開始。目的地址用來指明一個數據幀在網絡中被傳送的目的節點地址。NE2000支持3種目的地址:單地址、組地址及廣播地址。單地址表示只有1個節點可以接收該幀信息;組地址表示最多可以有64個字節接收同一幀信息;而廣播地址則表示它可以被同一網絡中的所有節接收。源地址是發送幀節點的物理地址,它只能是單地址。目的地址和源地址指網卡的硬件地址,又稱物理地址。
在源地址之后的2個字節表示該幀的數據長度,只表示數據部分的長度,由用戶自己填入。數據字段由46~1500字節組成。大于1500字節的數據應分為多個幀來發送;小于46字節時,必須填充至46字節。原因有兩個:一是保證從目的地址字段到幀校驗字段長度為64字節的最短幀長,以便區分信道中的有效幀和無用信息;二是為了防止一個站發送短幀時,在第一個比特尚未到達總線的最遠端時就完成幀發送,因而在可能發生碰撞時檢測不到沖突信號。NE2000對接收到的從目的地址字段后小于64字節的幀均認為是“碎片”,并予以刪除。在數據字段,根據系統的具體功能要求,用戶可以預留出若干個字節以規定相應的協議,以便通信雙方依據這些字節中包含的信息實現不同的功能。
2基于DSP的網絡通信程序設計
如果基于網絡操作系統,用戶可以利用一些軟件對網絡操作系統的支持,很容易地編寫出優秀的網絡通信程序,但這些程序必須依附于網絡操作系統。而在DSP環境下,必須深入了解網絡接口控制器(NIC)的工作原理[2],通過對網絡直接編程,實現局域網內任意站點之間的通信而完全拋開網絡操作系統。
DSP對網卡的通信過程控制就是DSP對DP8390中各種寄存器進行編程控制,完成數據分組的正確發送和接收。DP8390的所有內部寄存器都是8位,映像到4個頁面。每個頁面有16個可供讀寫的寄存器地址(RA=00H~0fH)。頁面的選擇由命令寄存器CA控制。第0頁寄存器用于收發過程,第1頁寄存器主要用于DP8390的初始化,第2頁寄存器則用于環路診斷。DSP對寄存器的操作是將寄存器作為DSP的端口設備,其實際物理端口地址(PPA)為網卡基本I/O端口地址(BIOA)與寄存器地址(RA)之和(即PPA=BIOA+RA)。應注意的是,PPA與寄存器間并不存在一一對應關系,對PPA的讀操作與寫操作并不一定是對同一寄存器進行的,這種情況在第0頁尤其明顯。用戶數據分組在DSP和網卡交互是通過網卡的數據端口實現的,既可以用DMA方式也可以用PIO方式讀入數據分組或將數據分組送至網卡RAM緩沖區。在本系統中,DSP采用DMA方式對網卡進行數據讀寫。網卡的數據端口地址(NDPA)為網卡基本I/O地址(BIOA)加偏移地址10H(即NDPA=BIOA+10H)。
網卡通信過程控制可分為網卡初始化、接收控制和發送控制。下面分別予以討論。
2.1網卡初始化
網卡初始化的主要任務是設置所需的寄存器狀態,確定發送和接收條件,并對網卡緩沖區RAM進行劃分,建立接收和發送緩沖環。具體過程請參閱參考文獻[2]。需要說明的是,每一塊網卡被賦予一個物理地址,以便通信站點的標識。這個物理地址存在網卡的PROM(存儲地址為0000~0005H)六個單元中,在網卡初始化時,通過遠程DMA讀入DSP內存中,并送入網卡物理地址寄存器。在一步的意義在于:一方面,如果能正確讀出網卡的物理地址,則說明網卡硬件基本沒有問題,網卡的上電復位和DSP對網卡的初始化順利通過;另一方面,這個物理地址可以用于DSP網絡系統中的點名、包的過濾丟棄等服務,也就是說,在鏈路層根據數據幀攜帶的源地址和目的地址確定數據報從哪里來,是否接收或丟棄。網卡初始化時另一個重要的工作就是接收緩沖環的設置,為了有效利用緩沖區,NIC將接收緩沖區RAM構成環形緩沖結構,如圖2所示。
接收緩沖區RAM分成多個256字節的緩沖區,N個(N最大為256)這樣的緩沖區通過指針控制鏈接成一條邏輯上的緩沖環。緩沖環的開始頁面地址存入PSTART寄存器,環頁面結束地址存入PSTOP寄存器。PSTART和PSTOP確定了接收緩沖環的大小和邊界。為便于緩沖環讀寫操作,還需要2個指針:當前頁面指針CURR和邊界指針BNRY。CURR確定下一包放在何處,起著緩沖環寫頁面指針作用;BNRY指向未經DSP取走處理最早到達的數據包起始頁面,新接收的數據包不可將其覆蓋,起著緩沖環讀頁面指針的作用。也就是說,CURR可以告訴用戶網卡接收的數據分組當前放到了什么位置,而BNRY則用于確定DSP讀緩沖環到了什么地方。由于接收緩沖區為環形結構,BNRY和CURR相等時,環緩沖區可能滿也可能空。為了使NIC能辨別這兩種狀態,規定當BNRY等于CURR時,才認為環緩沖區滿;當緩沖區空時,CURR比BNRY指針值大1。因此,初始化時設置:BNRY=PSTART,CURR=PSTART+1。這時讀寫指針不一致,為了保證正確的讀寫操作,引入一軟件指針NEXTPK指示下一包起始頁面。顯然,初始化時NEXTPK=CURR。這時,緩沖環的讀指針對NEXTPK,而BNRY只是存儲分組緩沖區的起始頁面邊界指示,其值為NEXTPK-1。
2.2接收控制過程
DSP完成對DP8390的初始化后,網卡就處于接收狀態,一旦收到分組,就自動執行本地DMA,將NIC中FIFO數據送入接收緩沖環,然后向主機申請“數據分組接收到”中斷請求。DSP如果響應中斷,則啟動網卡遠程DMA讀,將網卡緩沖區中的數據分組讀入學生機存儲區,然后對接收緩沖環CURR、NEXTPK、BNRY指針內容進行修改,以便網卡能從網上正確接收后續分組。DSP響應網卡接收中斷后,接收控制過程如下:
①設置遠程DMA的起始地址;RSAR0=00H,RSAR1=Nextpk。
②設置遠程DMA操作的字節數,這個長度在46~1500字節范圍內根據具體要求自己確定。
③0AH送命令寄存器CR,啟動遠程DMA讀。
④從網卡數據端口依序讀入數據分組,注意,最先讀入的4字節非數據分組內容,第1字節為接收狀態,第2字節為下一包頁地址指針,3與4字節為接收字節數。第2字節內容應該送入Nextpk,其它字節根據用戶要求處理。
⑤修改邊界指針BNRY=Nextpk-1。
⑥清除遠程DMA字節數寄存器RBCR0和RBCR1。
2.3發送控制過程
DSP先執行遠程DMA寫操作,將內存中的數據分組傳至網卡發送緩沖區,然后啟動發送命令進行數據分組發送。發送控制過程如下:
①設置遠程DMA的起始地址為網卡發送緩沖區起始地址;
②設置遠程DMA操作的字節數;
③12H送命令寄存器CR,啟動遠程DMA寫;
④依序送出數據分組至網卡發送緩沖區;
⑤清除遠程DMA字節數寄存器;
⑥設置發送字節數寄存器TBCR0和TBCR1;
⑦12H送命令寄存器CR,啟動數據分組發送。
3發送方發送頻率的控制
發送方發送頻率的正確控制主要保護兩點:一是有一個最小發送時間間隔,否則會因為接收方不能及時接收而導致系統癱瘓;二是發送頻率能夠足具體的功能實現要求。譬如在語音的實時通信中,發送頻率就取決于聲卡的采樣頻率。在8kHz采樣頻率時,聲卡每秒鐘采樣8000字節,采用1024字節需用時128ms,如果通信協議規定發送1次傳送1024字節有效數據,則必須每128ms發送一次才能保證緩沖區有新數據待發送,也才能保證接收方有新數據播放。128ms是一個理論計算數值,在實際的操作中采樣速度和發送頻率之間總是不能完全匹配,而存放數據的緩沖區大小是有限的,如果沒有良好的控制技巧來實現正確發送,就會造成聲音抖動和延時。解決的辦法是雙緩沖技術和雙指針控制,并且根據采樣速度和發送頻率之間的匹配情況送入不同的發送通信進行處理后發送。正確發送的含義有兩方面,一是每次發送的都是新數據,二是能滿足接收方總在播放新數據的需求。
4接收方防止數據包的丟失
由于DSP通過中斷請求判斷是否有數據分組到來,如果中斷繁忙而兩個數據包到來時間相差非常短,DSP有可能只響應一次中斷,從而導致丟包的發生。分析網卡接收數據過程,當網卡收到數據分組時,首先執行本地DMA,將NIC中FIFO數據送入接收緩沖環,并將本地DMA操作的起始地址存放在當前頁寄存器(CURR)和當前本地DMA寄存器(CLDA0、CLDA1)中,DSP從網卡接收緩沖環讀出數據到存儲器則稱遠程DMA操作,用軟件指針Nextpk來指示遠程DMA的起始頁面。因此通過比較網卡本地DMA和遠程DMA的當前地址,即在中斷服務子程序中比較CURR和Nextpk指針,或比較CLDA0、CLDA1和Nextpk指針,就可以保證當前數據分組放到了哪里就讀出到哪里,從而防止丟包的發生。
前幾年,OpenGL雖然是開放式的標準,但是只能在具有UNIX操作系統的各種昂貴的工作站之間通用;盡管工作站上的OpenGL性能優越、編程方便、生成圖形精真,但是只有少數人能體會其中樂趣,而令大多數PC機用戶望塵莫及。隨著計算機技術的發展,工作站與PC機的性能日趨接近。Microsoft公司首先將OpenGL圖形庫鏈接到WindowsNT中,目前又將OpenGL動態庫掛到最新Windows95上,這樣,廣大PC機用戶就可充分享受OpenGL的樂趣了。更令人高興的是,目前國內外出現了專門對OpenGL進行硬件加速的三維圖形加速卡。這樣,普通用戶只
要擁有一臺Pentium90以上、16MBRAM、520MB以上硬盤容量的PC機以及一臺43cm以上的大屏幕監視器和一塊OpenGL三維圖形加速卡組成的系統,就能與圖形工作站相媲美,但價格卻便宜數十倍。
本文作者一直從事計算機圖形應用開發工作。原來是在SGI工作站上利用OpenGL開發圖形程序,后來又首先在國內第一塊三維圖形加速卡AGC-3D上基于WindowsNT的VisualC++2.0環境下繼續進行開發。在開發過程中,同一OpenGL程序幾乎不用修改就能在兩個平臺間來回移植,效果甚好。
一、OpenGL特點及功能
OpenGL是一個開放的三維圖形軟件包,它獨立于窗口系統和操作系統,能十分方便地在各平臺間移植。
OpenGL具有七大功能。
(1)建模OpenGL圖形庫除了提供基本的點、線、多邊形的繪制函數外,還提供了復雜的三維物體(如球、錐、多面體、茶壺等)以及復雜曲線和曲面(如Bezier、Nurbs等曲線或曲面)繪制函數。
(2)變換OpenGL圖形庫的變換包括基本變換和投影變換。基本變換有平移、旋轉、變比和鏡像四種變換,投影變換有平行投影(又稱正射投影)和透視投影兩種變換。
(3)顏色模式設置OpenGL顏色模式有兩種,即RGBA模式和顏色索引(ColorIndex)。
(4)光照和材質設置OpenGL光有輻射光(EmittedLight)、環境光(AmbientLight)、漫反射光(DiffuseLight)和鏡面光(SpecularLight)。材質是用光反射率來表示。場景(Scene)中物體最終反映到人眼的顏色是光的紅綠藍分量與材質紅綠藍分量的反射率相乘后形成的顏色。
(5)紋理映射(TexureMapping)利用OpenGL紋理映射功能可以十分逼真地表達物體表面細節。
(6)位圖顯示和圖像增強圖像功能除了基本的拷貝和像素讀寫外,還提供了融合(Blending)、反走樣(Antialiasing)和霧(fog)的特殊圖像效果處理。
(7)雙緩存(DoubleBuffering)動畫雙緩存即前臺緩存和后臺緩存,簡而言之,后臺緩存計算場景、生成畫面,前臺緩存顯示后臺緩存已畫好的畫面。
此外,利用OpenGL還能實現深度暗示(DepthCue)、運動模糊(MotionBlur)等特殊效果。
二、OpenGLforWindowsNT圖形庫
OpenGL圖形庫一共有100多個函數。其中核心函數有115個,它們是最基本的函數,其前綴是gl;OpenGL實用庫(OpenGLutilitylibrary,GLU)的函數功能更高一些,如繪制復雜的曲線曲面、高級坐標變換、多邊形分割等,共有43個,前綴為glu;OpenGL輔助庫(OpenGLauxiliarylibrary,GLAUX)的函數是一些特殊的函數,包括簡單的窗口管理、輸入事件處理、某些復雜三維物體繪制等函數,共有31個,前綴為aux。
此外,還有六個WGL函數非常重要,專用于OpenGL和WindowsNT窗口系統的連接,其前綴為wgl,主要用于創建和選擇圖形操作描述表(renderingcontexts)以及在窗口內任一位置顯示字符位圖。這些功能是WindowsNT對OpenGL的唯一補充,見表1所示。
表1管理圖形操作描述表的WGL函數
另外,還有五個Win32函數用來處理像素格式(pixelformats)和雙緩存。由于它們是對Win32系統的擴展,因此不能應用在其他OpenGL平臺上,見表2所示。
表2管理像素格式Win32函數
三、OpenGLforWindowsNT程序設計
OpenGLforWindowsNT的程序設計與OpenGLforUNIX的程序設計有一點小區別,關鍵就在于如何將OpenGL與不同操作系統下的窗口系統連接起來。如果調用OpenGL輔助庫窗口管理函數,則不用考慮這些問題。下面將主要介紹在WindowsNT下OpenGL的程序設計關鍵。
1.圖形操作描述表
在WindowsNT下窗口程序必須首先處理設備描述表(DeviceContexts,DC),DC包含許多如何在窗口上顯示圖形的信息,即指定畫筆和刷子的顏色,設置繪圖模式、調色板、映射模式以及其他圖形屬性。同樣,OpenGLforWindowsNT的程序也必須使用DC,這與其他Windows程序類似。但是,OpenGLforWindowsNT必須處理特殊的DC圖形操作描述表,這是DC中專為OpenGL使用的一種。一個OpenGL應用圖形操作描述表內有OpenGL與WindowsNT窗口系統相關的各種信息。一個OpenGL應用首先必須創建一個圖形操作描述表,然后再啟動它,最后在所定義的窗口內按常規方式調用OpenGL函數繪制圖形。
一個圖形操作描述表不同于其他DC,它們調用每個GDI函數都需要一個句柄,而圖形操作描述表方式下只需一個句柄就可任意調用OpenGL函數。也就是說,只要當前啟用了某個圖形操作描述表,那么在未刪除圖形操作描述表之前可以調用任何OpenGL函數,進行各種操作。
2.像素格式
在創建一個圖形操作描述表之前,首先必須設置像素格式。像素格式含有設備繪圖界面的屬性,這些屬性包括繪圖界面是用RGBA模式還是顏色表模式,像系緩存是用單緩存還是雙緩存,以及顏色位數、深度緩存和模板緩存所用的位數,還有其他一些屬性信息。
(1)像素格式結構
每個OpenGL顯示設備都支持一種指定的像素格式號。一般用一個名為PIXELFORMATDESCRIPTOR的結構來表示某個特殊的像素格式,這個結構包含26個屬性信息。Win32定義的PIXELFORMATDESCRIPTOR如下所示:
typedefstructtagPIXELFORMATDESCRIPTOR
{
WORDnSize;
WORDnVersion;
DWORDdwFlags;
BYTEiPixelType;
BYTEcColorBits;
BYTEcRedBits;
BYTEcRedShift;
BYTEcGreenBits;
BYTEcGreenShift;
BYTEcBlueBits;
BYTEcBlueShift;
BYTEcAlphaBits;
BYTEcAlphaShift;
BYTEcAccumBits;
BYTEcAccumRedBits;
BYTEcAccumGreenBits;
BYTEcAccumBlueBits;
BYTEcAccumAlphaBits;
BYTEcDepthBits;
BYTEcStencilBits;
BYTEcAuxBuffers;
BYTEilayerType;
BYTEbReserved;
DWORDdwLayerMask;
DWORDdwVisibleMask;
DWORDdwDamageMask;
PIXELFORMATDESCRIPTOR,
*PPIXELFORMATDESCRIPTOR,
FAR*LPPIXELFORMATDESCRIPTOR;
(2)初始化PIXELFORMATDESCRIPTOR結構
PIXELFORMATDESCRIPTOR中每個變量值的具體含義和設置可以參
考有關資料,下面舉出一個PIXELFORMATDESCRIPTOR初始化例子來簡要
說明相關變量的意義。定義PIXELFORMATDESCRIPTOR結構的pfd如下:
PIXELFORMATDESCRIPTORpfd=
{
sizeof(PIXELFORMATDESCRIPTOR),//結構尺寸
l,//結構版本
PFD-DRAW-TO-WINDOWS|PFD-SUPPORT-OPENGL,//特性標志
PFD-TYPE-RGBA,//RGBA模式
24,//24位顏色
0,0,0,0,0,0,//不涉及這些屬性
0,0,0,0,0,0,0,//沒有alpha緩存和累積緩存
32,//32位深度緩存
0,0,//沒有模板緩存和輔助緩存
PFD-MAIN-PLANE,//主層類型
0,//保留結構數
0,0,0,//不支持結構數
};
在這個結構里,前兩個變量的含義十分明顯。第三個變量dwFlags的值是PFD-DRAW-TO-WINDOWS|PFD-SUPPORT-OPENGL,表明應用程序使用OpenGL函數來繪制窗口,第四個表明當前采用RGBA顏色模式,第五個采用24位真彩色,即1.67千萬種顏色,如果是256色系統則自動實現顏色抖動;因為沒有使用alpha緩存和累積緩存,所以從變量cAlphaBits到cAccumAlphaBits都設置為0;深度緩存設置為32位,這個緩存能解決三維場景的消隱問題;變量cAuxBuffers設置為0,在WindowsNT下不支持輔助緩存;WindowsNT下針對OpenGL變量ilayerType只能設置為PFD-MAIN-PLANE,但其他平臺也許支持PFD-OVERLAY-PLANE或PFD-UNDERLA
Y-PLANE;接下來bReserved變量只能設為0,而最后三個變量WindowsNT都不支持,故全設置成0。
(3)設置像素格式
當初始化PIXELFORMATDESCRIPTOR結構后,就要設置像素格式。下面幾段從VC++2.0的MFC程序中摘出的代碼就是設置像素格式的方式。代碼如下:
CClientDCclientDC(this);
intpixelFormat=ChoosePixelFormat(clientDC.m-hDC,&pfd);
BOOLresult=SetPixelFormat(clientDC.m-hDC,pixelFormat,&p
fd);
第一行語句說明得到一個應用窗口客戶區的設置描述表。
第二行調用ChoosePixelFormat()選擇一個像素格式,并將像素格式索引號返回給pixelFormat變量;函數中第一個參數是選擇像素格式的設置描述表的句柄,第二個參數是PIXELFORMATDESCRIPTOR結構的地址。如果調用失敗則返回0;否則返回像素格式索引號。
第三行調用SetPixelFormat()設置像素格式,三個參數分別是設備描述表的句柄、像素格式索引號和PIXELFORMATDESCRIPTOR結構的地址。如果調用成功則返回TURE;否則返回FALSE。
3.創建圖形操作描述表
正如前所述,必須創建圖形操作描述表并啟用它后,才能調用OpenGL函數在窗口內進行各種圖形操作。一般說來,利用MFC中增補的管理圖形操作描述表方法來編程比較方便。下面舉一例:
intCopenglView::OnCreate(LPCREATESTRUCTlpCreateStruct
)
{
if(CView::OnCreate(lpCreateStruct)==-1)return-1;
//TODO:Addyourspecializedcreationcodehere
PIXELFORMATDESCRIPTORpfd=
{
sizeof(PIXELFORMATDESCRIPTIOR),
//structuresizel,
//structureversionnumber
PFD-DRAW-TO-WINDOWS|PFD-SUPPORT-OPENGL,//propertyflags
PFD-TYPE-RGBA,//RGBAmode
24,//24bitcolor
0,0,0,0,0,0,//notconcernedwiththese
0,0,0,0,0,0,0,//noalphaoraccumbuffer
32,//32bitdepthbuffer
0,0,//nostencilorauxbuffer
PFD-MAIN-PLANE,//mainlayertype
0,//reserved
0,0,0//unsupported
};
CClientDCclientDC(this);
intpixelFormat=ChoosePixelFormat(clientDC.m-hDC,&pfd);
BOOLresult=SetPixelFormat(clientDC.m-hDC,pixelFormat,&p
fd);
m-hRC=wglCreateContext(clientDC.m-hRC);
return0;
}
voidCOpenglView::onDraw(CDC*pDC)
{
COpenglDoc*pDoc=GetDocument();
ASSERT-VAILD(pDoc);
//TODO:adddrawcodefornativedatahere
wglMakeCurrent(pDC->m-hDC,m-hDC);
DrawMyOpenGL();
wglMakeCurrent(pDC->m-hDC,NULL);
}
voidCOpenglView::OnDestroy()
{
CView::OnDestroy();
//TODO:Addyourmessagehandlercodehere
wglDeleteContext(m-hRC);
}
在程序中,響應WM-CREATE消息的函數OnCreate()僅僅只創建一個臨時的DC,當函數返回時,它自動刪除。因此,在這里不可能啟用圖形操作描述表。當應用程序的窗口內容得到更新后,MFC就調用OnDraw()函數,在此啟用圖形操作描述表wglMakeCurrent()有效。然后,再調用自己用OpenGL寫的繪圖函數DrawMyOpenGL(),則程序就可進行任意的OpenGL圖形操作了。當繪圖結束后,再調用一次wglMakeCurrent(),但第二個參數設為NULL,意思是啟用圖形操作描述表無效,關閉圖形操作描述表。最后,當應用程序結束時,MFC就調用OnDestroy()函數來響應
在實際工作中,大比例尺數字化測圖主要指野外實地測量+電子平板測繪方法,目前這種測圖方法廣泛應用到數字化生產中,在生產過程中,儀器設備最容易出問題的地方是全站儀與電子平板相互連接的數據傳輸線,因為數據線的質量參差不齊或天氣寒冷等種種因素,導致數據線經常損壞,一旦發生這種情況,外業生產就不能順利進行。大比例尺數字化測圖的一般流程為:(1)測前準備:認真學習專業技術設計書,搜集測區的控制資料。(2)踏勘:了解測區環境,主要道路、村鎮基本情況,進行野外的變化發現調查,確定變化區域,同時對圖上展繪的控制資料進行實地確認。(3)編寫技術設計書:內容包括項目名稱,測區位置,作業內容,作業方法,作業依據,取舍要求,地形圖成圖要求等。(4)控制測量:布設圖根控制。(5)地形圖測圖:野外用全站儀測繪碎部點(地形和地貌的特征點)得到水平角、垂直角、斜距等數據,利用程序將以上數據經計算展繪到測圖軟件上,最后編輯成地形圖[1]。(6)地形圖的檢查與上交:對測繪成果進行內外業檢查,無誤后上交成果。在上述的流程中,本文要解決的問題是地形圖測圖中的展點程序環節。
2關鍵技術
本文將通過無線傳輸技術通訊全站儀,將全站儀傳回的數據進行分析、驗證,實時將所測點位展繪到測圖軟件中。
2.1數字化測圖軟件
國內外有不少測繪行業的相關測圖軟件,較著名的國內軟件有“威遠圖”、“開思”、“山維”等。各軟件平臺都有自己獨到的優勢和特點。如“威遠圖”和“開思”,基于AutoCAD環境作了二次開發,直接生產工程設計軟件環境需求的DWG數據。避免因數據格式兼容性而產生的數據錯誤及數據不穩定,并且在后期的圖形編輯中,還能夠直接借助AutoCAD強大的圖形編輯功能。“山維”軟件是自行設計的獨立軟件平臺,可生產DXF格式的交換數據。自主性強,不受支撐軟件平臺的制約。本文選用的測圖軟件是廣州開思軟件。
2.2電子平板與全站儀間的實時無線藍牙通訊
全站儀與計算機通常是采用RS-232串行連接[2],也就是說全站儀與計算機的通信是通過一根線來完成的。經過藍牙適配器無線解決方案(藍牙與全站儀的連接匹配),可以使儀器與全站儀之間不再受連線的限制,只要用藍牙串口適配器代替串口電纜插入兩個設備的串行端口上,就可以實現串行端口間的無線通信。再通過在計算機上的實時通訊程序控制全站儀進行測量工作,并且將全站儀傳回的數據進行分析、驗證。利用VB6.0程序中的MSComm控件,配置正確通訊參數后,設計出與便攜機間的通訊程序,通過發送數據申請,經無線藍牙虛擬出的串口連接到全站儀,再把從全站儀傳回的數據進行分析、驗證。[3]具體的實現步驟如下:
(1)安裝藍牙驅動:讓平板電腦最大效率的發揮藍牙功能,需要先安裝和藍牙適配器配套的光盤驅動程序。
(2)全站儀的設置與連接:全站儀選用的是日本拓撲康3002N,在操作界面下,將RS-232C下的[波特率]調為4800,[字符/校驗]調為8/無校驗,[停止位]調為1,[Ack模式]調為標準方式,[CR,LF]調為關,[記錄類型]調為REC-A。(3)連接藍牙串口適配器:數據線一端通過串口連接藍牙適配器,另一端通過RS-232端口連接到全站儀,這樣儀器的設置與連接工作準備完畢。(4)藍牙與全站儀的匹配:電子筆記本上打開藍牙,搜索適配器并進行匹配。至此,筆記本與全站儀間的藍牙無線連通已經完成,藍牙在筆記本上虛擬出一個串口,通過該串口與全站儀的藍牙適配器連接,就如同在筆記本與全站儀間用數據線連接是一樣的。下面就需要一個控制程序,發出命令,通過建立的藍牙關系驅動全站儀,進而操作全站儀。[4]
2.3全站儀與筆記本間的數據發送與接收全站儀與筆記本間的數據通訊利用的是VB中的MSComm通信控件。程序實現步驟與方法如下:
(1)創建通訊窗體:在VB環境下創造一個窗體,用于驅動全站儀和接收來自全站儀的數據。
(2)設定通訊參數:將全站儀與程序的通訊參數輸入一致,否則兩者之間無法聯通。
(3)數據的發送與接受命令:向全站儀發出測量指令[5]。a.向全站儀發出測量指令,測量指令參考各全站儀指令說明書內容。b.從緩沖區得到全站儀傳回的數據,例如:006?+00001772m3252048+1751349d+00001008*60+00+00061c.發送命令,告知全站儀數據接收完畢。d.進行數據正確性驗證:首先從上述數據中提取垂直角(V1),利用正弦函數得出數值A。例如:A=Sin(V1),其次提取斜距(SD)、平距(HD),利用平距除以斜距計算數值B。例如:B=HD/SD,最后計算C=A-B。如果C在一個允許的限差內,則說明從全站儀傳過來的數據是正確的。
2.4實時展繪點位程序
(1)讀取設站數據,寫出觀測數據:首先讀取設站信息并記錄在變量中,提取出設站坐標X1、Y1、Z1,后視坐標X2、Y2,后視定向值以及儀器高。然后創建觀測數據文本,將上面提到的7個參數加上觀測后得到的斜距、平距、垂直角、水平角一起存儲在其中。
(2)計算前、后視方位角:前視方位角=(水平角讀數-后視歸零值)+后視方位角后視方位角=Atn(橫軸坐標差/縱軸坐標差)
(3)計算前視點坐標:前視點橫軸坐標=設站橫坐標+水平距離*Sin(前視方位角)前視點縱軸坐標=設站縱坐標+水平距離*Cos(前視方位角)前視高程=設站點高程+儀器高+(平距*Ctn(垂直角))-棱鏡高(4)插入高程點和高程注記:首先在計算出的前視點位置插入高程點圖塊,然后在前視點位固定的位置插入前視高程值的注記文本。至此,外業利用藍牙連接全站儀,實時計算并驗證碎步數據信息正確性,展繪點位工作完畢。
3結束語
1.算法思想。數學里的算法是極其重要的內容,是數學的組成部分,同時是計算機理論的核心,也是技術的核心。在社會發展過程中,人們的日常生活已經離不開計算機,它成為生活中的重要工具,如看電影、繪畫、處理數據等,它所涉及的面非常廣,和生活息息相關。計算機雖是生活過程中必不可少的工具,但它的工作情況是什么樣呢?想要了解這個問題,就要先從算法來開始學習。算法能使邏輯思維能力提高,對有條理思考和表達的發展非常有利。在過去時間里,算法這個名詞雖然沒有出現,但這種算法思維已經滲透到數學教學過程中,例如,運算過程中的四則運算、求解方程等,這些步驟的完成都需要程序化的表達,這個過程也是算法思想的形成。
2.算法的構建。在處理一些問題時,一系列可操作的步驟需要設計,或者設計它的可算操作,來通過這些步驟進行解決問題,這種解決問題的方法就是通常指的算法。廣義的算法:就是一種工作的方法和步驟,例如,歌曲的歌譜、洗衣機說明書等都是它們使用的算法。數學教學中的算法:數學中,把計算機解決問題過程中的程序認為是現代意義的“算法”。這種算法可以用計算機實現,對求解的方法也是統一、機械的,例如:解方程、作圖問題、函數求值等的算法。
二、ARCS動機設計模式在高中數學程序設計教學中的應用
1.注意策略。在學生考慮到需要輸入輸出時,實際上他們就已經開始有了算法思維,只是很多學生在開始時不確定如何準確劃分步驟。通過上述例證使學生了解算法解決問題的思路和步驟。
2.相關性策略。《孫子算經》中原文是:“今有物,不知其數,三三數之,剩二,五五數之,剩三,七七數之,剩二,問物幾何?答曰:二十三。”對高中生來說,在問題提出后,即使有些同學的思路一開始出現了偏差,但是和實際情況對比之后基本都能猜出正確答案。因此,對自己判斷與實際情況不一致的同學來說,他們就會更深一步地問自己:為什么不一樣?哪里出現了問題?這有助于學生獨立思考能力的培養。只有讓學生自己發現錯誤、判斷錯誤、解決錯誤,才能讓學生真正地掌握相關知識,這也有助于提高學生的高階思維能力。
3.信心策略。算法實例基本是必考題,每次的考試中都有或多或少地涉及一些。算法題出題方式靈活,可考查內容較多,是一個全面評估學生知識掌握程度的考題。教師在對學生進行考核時,要考慮到學生自身知識的掌握水平,從學生角度出發,循序漸進地增加難度,切忌一次考核過難,打擊學生的自信心,降低學生的學習興趣。案例:例1.通過求1+2+3+4+5中的一個算法。解:算法1用逐一相加的方法來進行。第一步:計算1+2,得數3;第二步:把第一步中所得結果3與3相加,計算得到6;第三步:將第二步中所得的運算結果6與4相加,計算得到10;第四步:將第三步中所得的結果10與5相加,計算得得到15.說明:①一個問題的算法肯定不是唯一。②若將本例題改為“求1+2+3+…+100的結果,給一個算法”,則以上第二算法和第三算法表達較為方便。對剛開始接觸程序設計的學生來說,這類題型可以提高學生的自信心,使學生產生強烈的榮譽感。題目的難度是明確的,但實際解題思路并不復雜,卻有多種解題方法,對解題思路明確后,其流程圖繪制也就輕而易舉了。給學生自信心,讓學生感受自身的能力有助于提升學生的學習動力。
4.滿意策略。以滿意度策略為基礎的數學課堂教學方式有很多,如多媒體教學、學生學習目標設定、多元化教學方式等。在教學中,本人根據學生各自情況,與學生進行溝通后為每人設定了相應的學習目標。每次測評之后并不以全班同學的成績來評論學生的好壞,而是通過橫向與縱向兩方面相比,讓學生全面了解自身當前學習狀況。另外,數學課堂教學中,要重視學生的能動性,通過參與問題、解決問題的方式讓學生充分表現自己。通過滿意策略提高學生的學習動機。
三、總結
論文關鍵詞:Java,教學方法,作業布置,考核方式
軟件行業對Java應用開發人員的[1]需求量很大,但在實際Web軟件開發中,要求Java軟件工程師需要掌握JavaSE、JSP and Servlet、Struts、Spring和Hibernate等諸多框架和技術才能勝任。因此,對于教學工作者來說,如何能夠在有限的本科教學中最大化地培養學生動手開發Java應用的能力,以適應市場的需求,是急需研究和解決的問題。閩江學院計算機科學系從2003年開設Java課程,起初的教學效果不是很理想,往往有學生大學畢業了還沒有熟練地掌握這一平臺的開發技術,直接影響了就業。針對這種情況,筆者在多年的教學實踐中不斷地探索、改進教學方法和經驗,目前取得了良好的成效。越來越多的畢業生就職于Java用人單位教學方法,并獲得一致肯定。現就如何設置Java系列課程教學與實驗實訓、改進教學方式、作業布置、考核方式等方面進行探討。
1Java系列課程的設置
閩江學院計算機科學系有兩個專業開設Java系列課程:計算機科學與技術和軟件工程。系里通過與福建工程學院等兄弟院校交流,同時又對博洋、北大青鳥等培訓機構的相關課程體系進行深入分析,再結合高校教學的實際情況,將Java系列課程分為Java程序設計基礎、Java高級實訓系列、JSP程序設計、Android程序設計(選修 )和SSH2程序設計5門課程,分散在不同的學期來授課,以知識轉化為能力為目標,以應用實踐為主線。其中Java高級實訓學分4學分,又細分為4個子課程,每個子課程1學分,分別是Java數據庫實訓、Java操作系統實訓、Java多媒體實訓、java網絡實訓。不同實訓子課程隨同相關專業課程同學期授課。該系列課程從教學內容上覆蓋了用人單位最常用的程序設計技術,同時與其他專業課形成良好的互補關系,從一定程度上保證了授課的完整性和學生動手能力的有效培養。計算機系本科專業的Java系列課程設置如表1所示:
表1 計算機系本科專業Java系列課程設置
課程名稱
開設學期
學分
總學時(理論/上機)
實訓周數
Java程序設計基礎
2
2
2*16+10=32(16/26)
1
Java數據庫實訓
3
1
4+10=14(4/10)
1
Java操作系統實訓
4
1
4+10=14(4/10)
1
Java多媒體實訓
5
1
4+10=14(4/10)
1
Java網絡實訓
5
1
4+10=14(4/10)
1
JSP程序設計
6
3
3*16=48(32/16)
1
Android程序設計(選修)
7
2
3*16+10=48(32/26)
1
SSH2程序設計
7
4
【關鍵詞】教學團隊 教學實踐與改革
【中圖分類號】G451 【文獻標識碼】A 【文章編號】2095-3089(2013)02-0005-01
一、課程建設的指導思想和實施方案
C#.net課程內容以介紹面向對象程序設計的思想和方法為主,重點介紹.net平臺上面向對象程序設計的基本知識和基本技能,使學生能夠熟練地使用Visual 集成開發工具編寫Windows Form應用程序和應用程序。其先修課程《計算機基礎》、《C++面向對象程序設計》、《數據庫基礎》,是數據結構(C#描述)、、網絡編程的前導課程,是培養學生程序設計基礎。把握程序設計方法和思路,奠定學生的可視化編程能力,為后續專業課程的學習提供知識和能力的支撐。推進和實施“.net課程教學團隊”建設,是培養高素質人材,全面提升教學質量的一種重要方式。
課程建設小組在學校和計算機學院領導的支持和指導下,在課程建設上堅持改革、發展和創新的方針,以突出課程內容的先進性、實用性、夠用性、操作性建設為重點,以培養學生實踐技能和綜合能力為核心,對師資隊伍、教學內容、教學方法、教材實驗、教學管理等作了重點建設,完成了規定的內容和任務,達到了預期的目標和要求。
課程建設的時間分為了兩個階段:
第一階段:009.9~2010.9制定培養方案、擬定課程大綱。制作ppt課件及實驗指導書第一版,完成教材講義修訂、發表相關論文、申報科研教改項目,開發配套軟件,落實實踐基地,組織學生競賽,申報.net專業實驗室。
第二階段:2010.9~2011.9完成教材講義、課件ppt及實驗指導書第二版,開展教學研究,發表相關論文,推廣配套軟件應用,發表相關論文20多篇(其中EI收錄10余篇),申報科研教改項目,出版教材二部。相關資源掛實驗室服務器供ftp下載。
二、課程建設的主要內容
1.師資隊伍建設;
2.教學內容、教學方法和手段的建設;
3.實踐性教學體系建設;
4.教材建設。
三、本課程的主要特色
1.有完整的學習資源庫,并結合獨立學院學生特點,出版了相應教材和自編了配套的實驗實踐指導書。
2.有配套的.net課程專業機房――微軟實驗實訓室,既是學生上機實驗實踐的場所,也是中山市.net軟件開發的重要平臺。
3.有專業的實踐基地。通過與中山市知名企業合作,簽定了長期的實踐教學基地協議,為學生的專業實踐構建了良好的平臺。
4.以解決實際問題的程序設計思想作為切入點進行教學,我們的教學站在如何應用.net作為工具編程解決實際問題的角度,在授課的過程中,以解決實際問題的程序設計思想作為切入點進行教學,在教學過程中將實際問題作為教學案例,通過對實際問題的剖析,從而使學生掌握解決實際問題的程序設計思想。
5.以培養學生的實際動手能力為目標進行教學。我們通過實踐環節以培養學生的實際動手能力,對于本課程我們配有相應的上機訓練以及相應的課程設計,所有的實踐環節都在老師的指導之下進行,學生通過親自上機對問題進行分析、設計、編碼、調試,最終設計出能解決實際問題的程序,從而提高實際動手能力。
6.以培養學生的創新思維為目標進行教學。知識是載體,傳授科學精神、治學方法,培養、提高學生的科學素質是根本,科學素質教育的核心是培養學生的創新精神。我們采用互動式教學以及組織學生對問題進行研討的形式,充分調動學生的主觀能動性,啟迪學生積極思維,讓學生自己去探索,從而培養學生的創新思維。
目前,國內高校該類課程的教學內容大多比較偏重于計算機編程語言或完全是編程語言的教學。教學模式也一般是傳統的模式,即十分注重某種編程語言基本語句、語法和一些細節的介紹。這樣,該類課程基本上是以高級語言自身的體系為脈絡展開教學的。由于教學不是站在如何應用計算機工具編程解決實際問題的角度,就沒有把邏輯與編程解題思路放在主體地位,也就沒有很好講解如何分析問題和解決問題,結果導致學生程序設計能力、上機解題能力訓練不夠,更談不上引導學生進行課題研究和科研探索了。于是,很多學生在學習時感到內容枯燥難學,學過之后又不能用之有效解決實際問題。
對于信息領域、尤其是計算機專業的大學生來說,僅僅掌握幾門編程語言是不夠的。他們重要的是在開始大學學習時就要努力鍛煉去掌握解決實際問題的程序設計思想和養成良好的程序設計習慣,具備用計算機解決實際問題的思想和眼光。這樣,就不單單是要學習編程語言本身,而是要開闊思想,打好了一個思維的基礎。有了這個基礎之后,再學習各種編程語言工具課就有實際意義了,也容易引起學習興趣,并能把編程語言作為有利工具來實現自己的算法、解決問題。同時,也使自己在后續課程學習乃至研究生階段的科研活動中后勁十足。本課程的教學工作完全基于上述的教學理念,進行教學改革,取得了好的教學效果。
四、課程建設主要實際效果
1.出版的二部教材《C#大學基礎教程》、《軟件工程技術及應用》,目前已在全國高校使用。
2.在全國公開刊物發表較高水平論文二十多篇,其中EI收錄十余篇。
3.配套的軟件《面向對象設計在線評測系統》已在校內應用,最高峰時同一天有1500多人次提交評測結果。
4.團隊教師指導的學生在學科競賽中獲國家級獎26人次(包括全國大學生信息安全競賽一等獎)、省級獎37人次。畢業生就業率穩定在98%以上。
五、進一步探究的問題
“.net課程教學團隊”經過幾年的建設,在教學、科研、師資隊伍、實驗室建設、教材建設等方面取得了可喜的成績,教學效果反應良好,學生評教結果全為優良,受到學生普遍歡迎和同行認可。但課程建設工程是一項系統工程,需要進一步總結和完善的地方很多,目前,本課程也還存在一些不足之處。
整改措施:
1.師資隊伍的建設;
2.教學資源的建設和完善;
3.進一步改革和完善課程體系。
參考文獻: