999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

醫學生“程序設計”課程教學中若干問題討論

2010-09-12 11:25:14萍,何
川北醫學院學報 2010年5期
關鍵詞:醫學生程序

劉 萍,何 青

(桂林醫學院信息中心計算機教研室,廣西 桂林 541004)

醫學生“程序設計”課程教學中若干問題討論

劉 萍,何 青

(桂林醫學院信息中心計算機教研室,廣西 桂林 541004)

由于醫學生與工科計算機專業學生邏輯思維上的差異,程序設計對于醫學生而言,是較難學習的一門課程,在教學中常常會遇到一些難于理解的問題,使學生難于準確掌握及正確使用。本文總結教學中出現的若干問題,著重討論了空值Null、BOF和 EOF屬性以及聚合函數的特點及在程序中的正確使用和教學方法。

醫學生程序設計教學;空值Null、BOF、EOF屬性;聚合函數;探討

引 言

VisualBasic forApplications(簡稱VBA)是新一代標準宏語言,是基于 Visual Basic forW indows發展而來的。VBA提供了面向對象的程序設計方法及相當完整的程序設計語言,對于非計算機專業的醫學生來說易于學習和掌握。因此,對于日后在工作中需要經常使用Office套裝軟件來解決工作中需要解決的問題的醫學大學生,學習VBA程序設計將有助于使工作自動化,提高工作效率。

所以,從目前高校數據庫課程開設的情況來看,大部分學校都將 Access數據庫系統作為非計算機專業學生學習的課程之一,同時Access近年來也成為全國高校計算機二級等級考試參考人數最多的科目之一。為此,我們教研室也為醫學生開設了“Access數據庫VBA程序設計”這門選修課。由于醫學生與工科計算機專業學生邏輯思維上的差異,如何提高該課程的教學質量和教學效果,是我們任課教師一直探討的問題。由于VBA不是一門獨立的編程語言,是基于VB擴展而來的,它在語法規則上基本遵循VB的語法,但基于 Access數據庫的使用特點,在個別使用上又有其特點。

1 空值Null、Empty、和Nothing

在VBA中,Null、Empty、和Nothing表示的都是空值,但它們又有所區別。Nothing:是用于對象變量的,當對象變量被設為 Nothing(set rs=Nothing)時,系統便會釋放該對象所占用的內存資源,此時該對象變量指向空對象。Empty:表示的是一個有效空值,當一個變量 x被聲明為變體類型而從未賦值時,其值就是 Empty,是由系統自動賦予的,表示變量 x尚未初始化,此時的 x的值可以是數值型的初始值 0,也可以是字符型的初始值空字串"",此時語句 If x=0 Then或 if x=""Then或 If IsEmpty(x) Then的判斷結果都為 True。Null:表示的是一個無效數據,一般用于表示記錄中某字段數據暫不確定時的數據值,比如,在通過程序添加記錄時,對于某個字段的值暫不確定,就可以用Null來表示。在程序中當 x=Null時,則表示 x不包含有效數據,此時的 x的值不能在程序中直接使用。對于值為 Null的數據只能通過 IsNull()函數來判斷,例如:IF Is-Null(x)=true Then,而不能用 If x=Null Then,因為含有 Null值的運算式其結果永遠是Null。

空值Null雖然不能在程序中直接使用,但它卻是完全合法的數據庫錄入項,我們在編程時不能因為空值Null是無效數據,在數據錄入時就一律拒絕空值,如果完全回避空值,那么,在你創建一條記錄時,如果某個字段的數據暫時不確定,就無法創建該記錄。要求所有數據都必須是已知的,在實際使用當中是不現實的。以醫院急診室的數據庫系統為例,不能因為數據錄入時不確定一個急診病人的年齡,系統就拒絕為其創建一條記錄。所以,我們不能完全回避空值,而應在實際應用中正確認識及合理使用空值。

在教學中,發現學生對 Null空值較難理解,可通過一些實例講解使學生加深對空值的理解。例如:在盤點藥品庫存時,發現某種藥品用完了,那么在它的數量一欄里我們應該輸入 0,代表這種藥品已盤點過,數量是 0,而另一種藥品我們還沒來得及清點,數量暫時未知,那么此時它的數量一欄是空的,也就是我們所說的空值Null,這種空值告訴我們該藥品的盤點工作尚未完成,數量暫不確定。通過0和Null的實例比較,我們可以很清楚地看到,0和Null反應的是事物的兩種完全不同的狀態。從而進一步加深了對空值Null的正確認知,并認識到空值是無法避免的,正確的做法就是如何正確處理它們,確保它們不會導致程序錯誤。當空值在表達式中使用之前,可以用 IsNull函數捕捉空值或用Nz函數來處理空值,因為空值經常會返回錯誤而使程序無法正常運行。

2 if語句的條件表達式中出現Null值的運行情況

前面討論的Null值不能在程序中直接使用,否則程序會返回出錯信息而使程序無法正常運行。但當Null出現在 IF語句的條件表達式中時,程序不會返回錯誤信息,并且可運行,只是運行結果不正確。例如下面的程序段,學生在編程時,由于對于未初始化的文本框控件的Value屬性初始值為Null這一特征的掌握不準確,時常會誤用其空值Null:

IfMe.賬號="" Or Me.密碼="" Then MsgBox"賬號、密碼不能為空"

ElseIfMe.賬號 <>"1234567"Then

MsgBox"賬號錯誤,請重新輸入"

ElseIfMe.密碼 <>"gyjsj"Then

MsgBox"密碼錯誤,請重新輸入"

Else

MsgBox"登錄成功!"

:

:

End If

在程序首次運行時,如果“賬號”和“密碼”文本框不輸入任何數據 (即未初始化),此時引用“賬號”、“密碼”文本框的Value屬性為空值 Null,程序運行時不是像程序設計者預想的那樣,執行MsgBox“賬號、密碼不能為空”語句,也不執行MsgBox“賬號錯誤,請重新輸入”和MsgBox“密碼錯誤,請重新輸入”語句,同時又不返回錯誤使用Null值的信息,而是執行MsgBox“登錄成功!”語句(此時 if語句的前 3個分支都出現了 Null空值)。雖然教科書明確指出不能在程序中直接使用空值Null,可問題出現,老師應給學生一個合理的解釋。那么程序對于條件表達式出現空值 Null的情況是如何判斷的呢?通過查證Access幫助信息提示是判為 False,假設 判 斷 為 False,則 Not(Me.賬 號 = ""OrMe.密碼 ="")=True應該成立,實際運行情況表明該假設不成立,程序執行結果仍是運行MsgBox“登錄成功!”。由此可見,程序對于條件表達式出現空值Null的情況是既不返回錯誤信息,也不判斷為 False。即,不做任何邏輯判斷,而是忽略跳過所有含Null值的條件分支,轉入后續分支判斷執行。由于 Null出現在 If語句中程序可運行而系統又不提示出錯信息,使學生誤用后很難發現錯誤。所以在教學中,應通過實例詳細闡述 Null的特點、正確使用及合理規避,可通過對文本框初始化的方法盡量避免使用 Null空值。也可把第一條語句改為:IF Nz(Me.賬號)=""Or Nz(Me.密碼)= ""Then或 IF Is Null(Me.賬號)=True or IsNull (Me.密碼)=True Then。

3 SQL select avg()…查詢結果集的特性及使用

在VBA的ADO數據庫操作程序中,經常會用到 SQL select查詢語句,下面有兩個查詢語句:

Select姓名,年齡 from tEmp where黨員否Select avg(年齡)from tEmp where黨員否

第一條語句的查詢結果是黨員的姓名,年齡字段數據集,如果沒有黨員記錄,則查詢結果集為 0條記錄。而第二條語句的查詢結果是黨員的平均年齡,即查詢結果是一個集函數返回值,其特點是:無論是否有黨員記錄,結果集中都會有一條固定的記錄,(該結論可通過在程序中添加語句:MsgBox rs.RecordCount得到驗證),只是記錄的值不同。當有黨員記錄時,集函數返回值為一個有效的確定值,而當無黨員記錄時,集函數返回值為一個無效的空值Null。下面的程序段是全國計算機二級等級考試的一道程序題:

Private Sub bt_Click()

Dim cn AsNew ADODB.Connection

Dim rsAsNew ADODB.Recordset

Dim strSQL As String

Dim sage As Single

Set cn=CurrentProject.Connection

strSQL="select avg(年齡)from tEmp where黨員否"

rs.Open strSQL,cn,adOpenKeyset,adLock-Optimistic

If rs.EOF Then

MsgBox"無黨員職工的年齡數據"

sage=0

Exit Sub

Else

sage=rs.Fields(0)

Me.Text1=sage

End If

:

:

End Sub

在判斷查詢結果集中是否有黨員平均年齡時,程序使用的方法是用記錄集的 EOF屬性,該屬性當記錄集中無記錄時,rs.EOF=TRUE,此方法用于判斷普通字段數據查詢結果集是可以的,但該題判斷的結果集是一個集函數返回值,無論黨員條件是否為真都會有一條固定的記錄,既然有記錄,那么其rs.EOF=FALSE。所以當模擬無黨員記錄運行該程序時,程序并未按設計者的想法運行MsgBox"無黨員職工的年齡數據"語句,而是運行 sage= rs.Fields(0),同時提示錯誤信息:

因為此時查詢結果集中的 rs.Fields(0)的值為Null。所以該程序不適合用 rs.EOF來判斷。

解決方法:可以利用查詢結果集中固定記錄的值的不同來作為判斷條件。為避免使用無效空值Null,可使用 Is Null()函數來判斷空值,或者用Nz()函數將無效空值 Null轉換為有效值,可將程序改為:

MsgBox"無黨員職工的年齡數據"

sage=0

Exit Sub

Else

sage=rs.Fields(0)

Me.Text1=sage

End If

:

:

End sub

此時,無論是否有黨員記錄,程序都能正常運行了。

結束語

程序設計對于非計算機專業的醫學生來說,是較難學習和掌握的一門課程,學習中常常會遇到一些難以理解和掌握的知識點,而有限的教科書又無從查證,甚至一些輔助教材還會出現一些錯誤內容,這就需要我們老師去深入探討及結合實驗驗證來給學生作詳細的講解,從而使學生能正確認知和使用。在以后的教學中還會遇到很多類似的問題需要我們進一步的不斷探討。

[1] 王 晟,韓澤坤.Access數據庫開發經典案例解析[M].北京:清華大學出版社,2006.336-380

[2] 蔣加伏,張林峰.VisualBasic程序設計教程[M].北京:北京郵電大學出版社,2004.312-316

[3] 何勝利.Access數據庫應用技術教程[M].北京:中國鐵道出版社,2008.182-232

[4] 教育部考試中心.全國計算機等級考試二級教程—Access數據庫程序設計[M].北京:高等教育出版社,2004.247-293

(學術編輯:周 敏)

1005-3697(2010)05-0506-03

G642.4

B

2010-07-01

猜你喜歡
醫學生程序
“五個結合”強化高職醫學生數學素養培養
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
醫學生怎么看待現在的醫學教育
中國衛生(2015年3期)2015-11-19 02:53:24
對醫學生德育實踐的幾點思考
基礎醫學對醫學生的重要性
淺談醫學生創新意識的培養
主站蜘蛛池模板: 日韩精品中文字幕一区三区| 18禁影院亚洲专区| 国产区人妖精品人妖精品视频| 国产亚洲精品精品精品| 日韩天堂在线观看| 欧美亚洲一二三区| 日韩AV无码一区| 97久久精品人人做人人爽| 亚洲国产精品国自产拍A| 欧美三级自拍| 在线观看av永久| 欧美日韩中文字幕在线| 四虎亚洲国产成人久久精品| 在线国产综合一区二区三区| 综合色在线| 亚洲最大情网站在线观看| 国模沟沟一区二区三区| 亚洲综合久久成人AV| 国产91在线|日本| 亚洲欧美国产视频| 91国语视频| 国产在线一二三区| 五月婷婷丁香综合| 国产精品国产主播在线观看| 中文字幕av一区二区三区欲色| 国产91精品久久| 国产精品亚洲欧美日韩久久| 日本欧美精品| 91视频区| 国产成人综合在线视频| 99re热精品视频国产免费| 亚洲熟女中文字幕男人总站| 熟妇人妻无乱码中文字幕真矢织江 | 91娇喘视频| 日韩精品毛片| 国内视频精品| 在线观看亚洲人成网站| 国产午夜小视频| 日韩免费无码人妻系列| 成人免费午间影院在线观看| 98超碰在线观看| 欧美成人第一页| 国产乱子伦一区二区=| 亚洲精品波多野结衣| 久久精品人人做人人| 日韩亚洲综合在线| 精品国产网| 日韩黄色在线| 一本二本三本不卡无码| 国产尤物在线播放| 国产精品自拍合集| 亚洲日韩高清在线亚洲专区| 97在线观看视频免费| 国产在线无码一区二区三区| 亚洲区视频在线观看| 精品伊人久久大香线蕉网站| 国产亚洲日韩av在线| 一本视频精品中文字幕| 无码免费视频| 国产麻豆精品久久一二三| 日韩久久精品无码aV| 毛片网站在线播放| 亚洲欧美一区二区三区麻豆| 婷婷激情亚洲| 亚洲成AV人手机在线观看网站| 国产精品视频第一专区| 亚洲最大看欧美片网站地址| 99精品福利视频| 亚洲一区二区黄色| 国产成人综合网在线观看| 久久亚洲国产最新网站| 啦啦啦网站在线观看a毛片| 国产乱论视频| 福利视频一区| 97超爽成人免费视频在线播放| 国产成人精品午夜视频'| 一级毛片在线播放| 夜夜操国产| 国禁国产you女视频网站| 久久夜色撩人精品国产| 天天婬欲婬香婬色婬视频播放| 欧洲一区二区三区无码|