時間:2022-09-14 10:37:40
序論:寫作是一種深度的自我表達。它要求我們深入探索自己的思想和情感,挖掘那些隱藏在內心深處的真相,好投稿為您帶來了七篇程序設計論文范文,愿它們成為您寫作過程中的靈感催化劑,助力您的創作。
【行為導向教學法;程序設計;教學案例
隨著計算機應用的普及,計算機應用專業也成了熱門專業,而高級程序設計語言是計算機專業的一門必修課。在高級程序設計語言中,VisualBasic語言以其易學易用和功能強大,而且能夠方便快捷地開發Windows應用程序等特征,而深受使用者歡迎。因此,其也作為中等職業學校的高級程序設計課的首選。VB是一門集知識和技能于一體、實踐性很強的課程,要求學生既要學好理論知識,又要把握實際操作技能,同時,在進行軟件開發時,要對用戶需求及市場情況進行調研,再加上計算機軟、硬件快速更新換代的特征,要求學生還要具有很強的自學能力和終身學習的思想。對于這些要求來說,傳統的教學方法難以做到。而使用強調以職業活動為導向,以人的發展為本位的“行為導向教學法”將會較好的實現這些教學要求。本文擬就在中等職業教育的計算機程序設計(VisualBasic)教學中,如何運用“行為導向教學法”進行初步探索。
一、行為導向教學法的基本理論
“行為導向教學法”是在近幾年從德國引進的現代的職業教育新模式,其目標層次是培養人的行為能力,方法層次是人的行為活動。即摘要:這種教育以行為為目標,教學以行為為導向,教學是學生積極參和的全面的教學,學習過程是學生同時用腦、心、手來進行學習的過程。
行為導向教學法具有很強的針對性,即是以職業活動為導向,以教會學生“學會學習、學會工作”為目標而開展教學活動,因此,對學習者來說,學習目的是十分明確,即現在的學習是為今后的職業服務。教學活動的開展,通常是圍繞某一課題、新問題或項目開展,是以“學習任務”為載體,引導學生自主學習和探索的過程。整個教學過程為一個包括獲取信息、制訂計劃、做出決定、實施工作計劃、控制質量、評定工作成績等環節在內的完整的行為模式。使用“行為導向教學法”,將能更好的培養學生的關鍵能力(專業能力、方法能力、社會能力、個性能力),以達到職業教育的“職業教育就是就業教育”的教學目標。
二、行為導向教學法在VisualBasic教學中的必要性和可行性
(一)必要性
現行的計算機專業類教材大多和其它學科式的教材一樣,重視知識結構的系統性,教學內容大多以線性方式展開,適用于“循序漸進”的傳統教學模式,以《VisualBasic程序設計》的教材為例,從語言基礎、流程控制、過程和數組、窗體和控件、對話框設計、菜單、工具欄和狀態欄設計等等,分章編排,在每一章的內容里,也同樣按線性方式展開。假如,在教學中仍按傳統的教學方法按章節講授,勢必降低的課程的綜合性、實用性,也缺乏趣味性,這不但難以培養學生學習喜好,使得教學雙方都陷入困境,而且,學生不知道如何在真實的情境中靈活地使用知識和運用技巧。這樣的學習,是很難面對今后職業的。要改變這一現象的方法,比較成功的是運用以課題或項目來開展教學活動的行為導向教學法進行教學,在教學中,淡化知識的系統性和連貫性,更多關注的是知識之間的聯系,在聯系中學習知識、在綜合運用中學習知識,使學生不僅學會了程序設計知識本身,又培養了學生運用程序設計的知識去解決實際新問題的能力,達到“學以致用”的教學目的。
(二)可行性
《VisualBasic程序設計》是一門實踐性和操作性很強的課程,知識涉及許多抽象的術語,如摘要:類、對象、過程、語句、控件等等,還有大量的開發工具的使用。僅就VB的開發環境為例,其中就包含了摘要:窗體設計器、代碼編輯器、對象瀏覽器、屬性窗口、工程管理器、工具箱、菜單、工具欄等等。把握和熟悉它們的最好方法,就是在不斷的結合實際的“案例”(案例教學法)或“課題”(項目教學法)的操作實踐中去把握。在教學中,教師可以把課程內容包含在兩到三個綜合貼近實際的項目,給出案例,再把這個項目分成若干個小項目(或模塊)。例如摘要:以開發一個“學生信息管理系統”為一個綜合項目(教師首先給出案例演示,以引起同學們的關注),再分別以“登錄窗口”、“查詢窗口”等為小項目進行設計開發,學習相關的基礎知識(如摘要:在設計“登錄窗口”的項目中,學生可以把握“文本框、標簽、命令按鈕、屬性設置、變量命名規則、變量定義、變量數據類型、變量的聲明語句、賦值語句”等相關知識群)。學生在具有目標明確的項目驅動下,以“做中學”的方法進行學習,這樣,不僅可以提高他們學習的主動性和學習樂趣,同時也培養了他們的關鍵能力。
二、“行為導向教學法”案例
行為導向教學法中的“項目教學法”是指師生以團隊的形式共同實施一個完整“項目”的工作而進行的教學活動。通過在開展項目過程中有針對性的工作來培養學生的關鍵能力,非凡是獨立工作能力、想象力、創新能力。項目教學法包括了計劃、實施和檢查及成果展示的全過程。它是由學生自己來完成整個過程的教學方法。以下是一個項目教學法的簡案。
項目摘要:學生信息管理系統
(一)教學目標
1.培養學生運用VisualBasic知識解決實際新問題的能力;
2.培養學生獨立學習和工作的能力;
3.培養學生和人合作的能力。
(二)項目的實施過程
三、需要重點注重的兩個新問題
(一)教師角色的轉換
在行為導向教學中,對教師提出了更高的要求。教師應是“雙師型”的教師,老師的角色由傳統的教學主導者轉變為教學活動的引導者或主持人,在教學過程中,教師以咨詢員、伙伴、朋友等角色出現在學生中,教學方法由注重“教法”轉變為注重“學法”,為此,要完成教學任務,教師要付出更多的心血。
(二)項目設計的合理性
項目設計的最重要的原則就是可實踐性,以保證學生可操作,并有收獲。因此,項目的設計應采用結構化的方法,自上而下,逐步細化的原則;項目的實施,則采用自下而上,由易到難,逐步完善的原則進行。
本文對溫度、濕度兩個顯著影響溫室作物生長的參數進行深入分析研究,構建的溫濕度模糊控制系統方案如圖2所示。圖2中,T和H分別為模糊控制系統輸出的溫室環境溫度和濕度值;T1、H1分別為根據專家經驗給出的農作物生長最佳的溫度和濕度值;eT1、eH1分別為給定值與溫室環境的實際測量值的偏差;ecT1、ecH1分別為溫濕度偏差隨時間的變化率。
2溫濕度模糊控制器設計
2.1輸入與輸出變量的模糊化
根據溫室大棚的實際狀況,以溫濕度偏差及其偏差變化率為輸入變量,各輸入變量的模糊化信息如表1所示。結合研究對象實際情況,既考慮控制規則的靈活性又兼顧簡單易行。表1中,4個輸入變量模糊集均取為A,A為{NB,NS,ZE,PS,PB};模糊論域均取為B,B為{-4,-3,-2,-1,0,1,2,3,4}。模糊控制器的輸出控制變量為前窗、天窗、后窗、遮陽簾、通風機、加濕器和加熱器。這7個變量均為開關量,只有開和關(0/1)兩種狀態,分別用符號u1、u2、u3、u4、u5、u6、u7表示這7個變量。
2.2隸屬函數的確定
由于三角形隸屬度函數在輸入值變化時比正態分布或高斯型具有更高的靈活性[6],因此本研究中溫濕度偏差與偏差變化率均選取三角形隸屬度函數。圖4為各輸入變量的隸屬度函數,選擇的模糊集寬度為4。因為寬度過小會造成部分區間空缺,可能找不到相應的控制規則,收斂性不好;寬度過大會造成控制規則的重疊部分過多,相互間影響加大并且響應速度也變慢[7]。根據隸屬度函數對輸入變量量化為9個等級,其相應的隸屬度賦值如表2所示。
2.3模糊控制規則的制定
模糊控制規則的形成實質上是把操作者的經驗或專家的知識和經驗進行凝練得到的若干條模糊控制規則[8]。經對實際溫室控制系統的研究,發現溫濕度間存在一定的耦合性,即當通過某一執行機構改變溫度(濕度)時濕度(溫度)也會發生變化,因此在制定模糊控制規則時就要滲透解耦的思想?;诖?,對7種執行機構的開關狀態做如下考慮:u1、u2和u3每打開一個設備降溫和降濕效果增強一點,但速度較慢;u5開通后其降溫和降濕速度明顯比u1、u2、u3快;u4降溫作用明顯,對濕度基本無影響;u6主要起加濕作用,降溫為次要作用;u7主要為增溫作用,降濕為次要作用。研究中制定了溫度與濕度之間、溫度變化率與濕度變化率之間的兩個模糊控制規則表,在此僅列出溫度與濕度之間的模糊控制規則,如表3所示。表3中,U為u1到u7這7個變量的開關狀態,開用“1”表示,關用“0”表示。
2.4反模糊化
模糊控制器輸出的是模糊語言不同取值的一種組合,由于被控對象只接受一個精確的控制量,因此需要從組合中判決出一個精確的控制量,這也就是反模糊化的過程[9]。常用的判決方法有重心法、最大隸屬度法和中位數法等,本研究采用重心法計算模糊控制輸出的精確控制量。其具體表達式為u'=∑nj=1ωjμ(ωj)/∑nj=1μ(ωj)(1)其中,n為模糊變量個數,ωj為模糊變量,μ(ωj)是對應模糊變量的隸屬度。本系統反模糊化的具體過程:首先溫濕度誤差或其誤差變化率經量化后得到相應的量化等級,根據量化等級查詢各個執行機構在控制規則表中對應的控制規則并使其激活。然后,由式(1)計算各個執行機構的輸出值,計算結果等于0.5時,執行機構保持原來狀態;計算結果大于0.5時,執行機構開;計算結果小于0.5時,執行機構關?;谶@種思想,可建立各執行機構的模糊控制查詢表,放在內存中,編寫相應的PLC程序即可實現模糊控制器對執行機構的實時控制。
3溫濕度模糊控制PLC程序設計
溫濕度模糊控制PLC程序包括輸入量的采樣與模糊化程序、量化等級程序、模糊控制查詢程序、執行機構控制程序和預警程序等[10],在此僅介紹有關輸入采樣、誤差的計算和模糊控制查詢的部分程序。本研究是在STEP7編程環境下完成的模糊控制程序。
3.1輸入量采樣和ET/EH計算程序
研究中應用的溫濕度傳感器的變送單元分別取0~50℃、0~100%RH,線性對應電流均為4~20mA,因此在編寫PLC程序前需把溫濕度的值與PLC中的數字量關系建立起來。具體過程如下:以溫度為例,用I表示電流值,T表示溫度值,X表示實時溫度轉換為PLC中的數字量值。由于0~50℃與4~20mA對應,4~20mA又與PLC中的數字量為6400~32000對應,因此可得曲線方程如式(2)與式(3)所示。根據式(4)即可計算0~50℃對應PLC內部的數字量值。如22℃對應數字量值為17664。同理,可求得濕度值與PLC中數字量的對應關系如式(5)所示。其中,H表示濕度。下面以溫度為22℃和濕度為70%RH的情況編寫相應的PLC程序,70%RH對應的數字量為24320。
3.2模糊控制查詢程序
由反模糊化得到的模糊控制查詢表實質上是一個9×9的二維數組,存在以VW200開始的81個字單元中。在此把數組的首地址指針設定為VD48,根據(VW20×9+WV18)×2即可計算偏移值,在查詢表中定位并把相應值賦予WV28。
4系統實際運行測試
控制系統投入運行后,任選某一天對控制效果進行實際測試。測試時的起始溫度和濕度分別為32℃和52%RH,控制設定值分別為22℃和70%RH。對溫濕度采樣時間間隔均為5min,根據采集數據繪制的曲線如圖5所示。由圖5可知30min左右時溫濕度值均達到設定值,再經10min左右溫濕值即達到預設的穩定狀態值,達到了較滿意的控制效果??刂葡到y達到穩態的時間可通過增減有關設備進行調節。
5結束語
前幾年,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圖形庫的變換包括基本變換和投影變換?;咀儞Q有平移、旋轉、變比和鏡像四種變換,投影變換有平行投影(又稱正射投影)和透視投影兩種變換。
(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()函數來響應
在《網絡程序設計》中,套接字socket是非常重要的概念,教材上的解釋是:套接字是兩個通信通道上的端節點??吹竭@個解釋,學生還是不能明白套接字的內涵。為了使學生更好地理解,通常采用如下比喻。既然套接字是作為通信的末端,那么可以使用“電話系統”與“郵局系統”這兩個同學們熟悉的事物進行類比??梢园阎С痔撾娐贩盏男诺揽醋麟娫捑€,套接字就類似于一個電話。同樣,可以把提供數據報服務的通信看作郵局系統,套接字看作信箱。
(2)基于TCP套接字編程模型
面向連接的網絡通信的建立有多個步驟,要使用多個函數。為了便于理解,可以將其比喻為“打電話”這個過程。要建立基于TCP的C-S(客戶-服務器)通信,首先雙方進程必須各自創建一個端點,也就是調用socket函數創建套接字,正如打電話之前,雙方必須都擁有一臺電話機一樣。Socket是面向模型設計的,針對C-S通信雙方提供不同的socket系統調用??蛻綦S機申請一個socket號,這類似想打電話的人可以在任何一臺入網的電話上呼叫。服務器擁有全局公認的socket,調用bind函數將套接字地址和所創建的套接字句柄聯系起來,任何客戶都可以向它發出連接請求和信息請求,這就類似于被呼叫方的電話號碼告知了呼叫方。客戶端調用connect函數發出連接請求,就好比撥打對方的電話。而服務端有可能在完成當前請求之前又發生多個服務請求,為了很好的處理這個問題,服務器調用listen函數將所有的服務請求放在一個請求隊列中排隊,并盡快處理這些請求[2],這就如被呼叫方在開啟呼叫等待的功能,不錯過任何呼叫請求。服務器端執行accept函數等待來自某一客戶端的實際連接請求,實現與客戶進程連接,這就如被呼叫方拿起電話,雙方可以正式通話。最后,客戶端與服務端完成數據傳輸后調用close函數關閉套接字,撤銷連接。這就好比打電話雙方通話結束后,掛掉電話。
(3)基于UDP的通信機制
用“郵局系統通信”來類比這一種通信機制是非常恰當的?;赨DP通信是面向非連接的,無法保證數據以正確的順序到達。這就類似我們先后寄出兩封信給對方,不能確保第一封信一定會比第二封信先到達對方手上。而在通信過程中,服務端和客戶端雙方首先都需要綁定IP地址和端口號,這就好比寄信之前,對方的通信地址我們是要已知的。而客戶端發送信息以及服務端回應的時候,調用sendto函數來實現,需要指明對方的地址。這如同在寄信的時候,需在信封上要注明對方的地址信息。
(4)協議端口
在講解“協議端口”時,學生總是不能理解為什么在網絡通信的時候要指明端口號,為了解決這個問題,同樣采取比喻教學法。大多數操作系統是支持多進程的,目的主機到底把收到的數據包送給哪個進程呢?就好比我們去銀行辦理業務,銀行的業務有多種,有多個服務窗口。我們要成功地辦理業務,必須知道對應的窗口號。同理,當你的主機開啟多個服務時,如FTP、WWW、E-Mail多個服務,當接收到傳送過來的數據包時,主機要準確的把數據包傳送給相應的進程,這就需要數據傳輸的雙方進程開啟端口,這樣數據包將會有標識有源端口,確保接收方順利地將數據包傳送至這個端口。
(5)帶外數據
通常數據是按順序傳輸的,然而套接字API概念性的提供了一些使用程序,從而可以使得一串數據無阻的先于普通的數據到達接收端。這就是所謂的發送帶外數據。這就好比大家排隊在銀行依次辦理業務,有個強盜拿著槍走入銀行,越過整個隊伍走到柜員面前。這個就可看作為帶外數據。這個強盜能越過整個隊伍,是因為槍標識他的特殊性,給了他凌駕于眾人的權力。
(6)結語
1.算法思想。數學里的算法是極其重要的內容,是數學的組成部分,同時是計算機理論的核心,也是技術的核心。在社會發展過程中,人們的日常生活已經離不開計算機,它成為生活中的重要工具,如看電影、繪畫、處理數據等,它所涉及的面非常廣,和生活息息相關。計算機雖是生活過程中必不可少的工具,但它的工作情況是什么樣呢?想要了解這個問題,就要先從算法來開始學習。算法能使邏輯思維能力提高,對有條理思考和表達的發展非常有利。在過去時間里,算法這個名詞雖然沒有出現,但這種算法思維已經滲透到數學教學過程中,例如,運算過程中的四則運算、求解方程等,這些步驟的完成都需要程序化的表達,這個過程也是算法思想的形成。
2.算法的構建。在處理一些問題時,一系列可操作的步驟需要設計,或者設計它的可算操作,來通過這些步驟進行解決問題,這種解決問題的方法就是通常指的算法。廣義的算法:就是一種工作的方法和步驟,例如,歌曲的歌譜、洗衣機說明書等都是它們使用的算法。數學教學中的算法:數學中,把計算機解決問題過程中的程序認為是現代意義的“算法”。這種算法可以用計算機實現,對求解的方法也是統一、機械的,例如:解方程、作圖問題、函數求值等的算法。
二、ARCS動機設計模式在高中數學程序設計教學中的應用
1.注意策略。在學生考慮到需要輸入輸出時,實際上他們就已經開始有了算法思維,只是很多學生在開始時不確定如何準確劃分步驟。通過上述例證使學生了解算法解決問題的思路和步驟。
2.相關性策略?!秾O子算經》中原文是:“今有物,不知其數,三三數之,剩二,五五數之,剩三,七七數之,剩二,問物幾何?答曰:二十三?!睂Ω咧猩鷣碚f,在問題提出后,即使有些同學的思路一開始出現了偏差,但是和實際情況對比之后基本都能猜出正確答案。因此,對自己判斷與實際情況不一致的同學來說,他們就會更深一步地問自己:為什么不一樣?哪里出現了問題?這有助于學生獨立思考能力的培養。只有讓學生自己發現錯誤、判斷錯誤、解決錯誤,才能讓學生真正地掌握相關知識,這也有助于提高學生的高階思維能力。
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用人單位教學方法,并獲得一致肯定?,F就如何設置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.進一步改革和完善課程體系。
參考文獻: