

摘 要:本文論述了使用Excel宏操作數據表獲取一級漢字拼音首字母的原理及方法,并結合實際,闡述了任務驅動教學法在Excel宏程序設計中的教學設計,培養學生自主學習和解決實際問題的能力。
關鍵詞:拼音 首字母 任務驅動 宏
中圖分類號:G712 文獻標識碼:A 文章編號:1673-9795(2013)09(b)-0152-02
同音查詢作為一種新的查詢方式已經越來越多的應用到現代信息管理領域,查詢已是管理信息系統中應用最為頻繁的功能之一。由于漢字語言的特殊性,在信息查詢時,用戶往往錄入大量信息,如客戶名稱、商品名稱等,為減少用戶信息查詢時漢字的錄入量以及生怪癖漢字的錄入難度,我們將用戶查詢常用的客戶名稱、商品名稱等的漢字拼音首字母作為信息檢索時的快捷鍵。百度、手機的安卓操作系統、醫院的藥品進銷存管理系統、超市的商品進銷管理系統都支持漢字拼音首字母查詢功能。例如:上市公司名稱“中國銀行”,只需錄入“zgyh”,藥品名稱“阿司匹林”,只需錄入“aspl”,姓名“郭興華”,只需錄入“gxh”。知識的學習是為了更好的提高自身素質,并不斷的應用知識去分析與解決實際問題。作者對Excel宏獲取漢字拼音首字母的程序設計采用任務驅動教學方法,展示功能,完成任務,培養學生自主學習能力,提高解決問題的實際能力。
1 任務驅動教學法
任務驅動教學是教師把教學內容設計成一個或多個具體的任務,學生通過完成每一個具體的任務,將所學的知識及技能真正內化。學生完成任務的過程是一個不斷提出問題與解決問題的過程,而教師在這一過程中進行啟發、引導和交流。[1]
本文以Excel宏獲取漢字拼音首字母為任務,以區位碼與機內碼的轉換、單元格地址、循環程序設計為教學重點,任務前置,精心設疑。任務源于生活,讓學生拿出自己的手機查看手機是否具有姓名首字母快速查詢功能,激發學生興趣,引起學生積極思考。
2 漢字信息交換碼
漢字信息交換碼是用于漢字信息處理系統間和通信系統間進行信息交換的漢字代碼,它是系統間和設備間信息交換時使用的統一形式而制定的代碼。我國于1981頒布制定了GB2312-80《信息交換用漢字編碼字符集—基本集》,又稱國標碼。此編碼字符集包括682個非漢字圖形字符、一級漢字3755個和二級漢字3008個,共計7445個圖形字符和漢字。
GB2312-80收集的7445個漢字和圖形字符排列在94×94的二維表中,這個表中的行稱為區,列稱為位,由區和位構成漢字的區位碼。區號范圍為1~94,位號范圍為1~94。其中1~15區為非漢字圖形字符區,16~55區為一級常用漢字區,56~87區為二級漢字區;88~94區為保留區。一級常用漢字根據音序排列,二級漢字則根據偏旁部首排列,部首順序依據筆畫多少排列。
漢字的機內碼是在計算機內部對漢字進行存儲、加工、處理漢字的一種代碼,每個漢字的內碼常用2個字節表示。漢字內碼與區位碼的轉換關系為:內碼=區位碼+(A0A0)16。比如,字符集中第一個漢字“啊”,拼音首字母為“a”,位于第16行第1列,則區位碼為(1601)10,十六進制表示為:1001,內碼計算公式為(B0A1)16=(1001)16+(A0A0)16;同樣,在字符集中以“a”結尾的最后一個漢字為“澳”,區位碼1636,十六進制為1024,內碼為(B0C4)16=(1024)16+(A0A0)16。
在Excel宏中利用Asc()函數可返回漢字的機內碼,如Asc(“啊”)=(B0A1)16=(45217)10,一級常用漢字拼音首字母對應的機內碼起止范圍如下表1所示。[2]
3 Excel宏
宏是一組指令集,通過執行類似于批處理的一組命令來完成某種功能,它是使用VB Script指令集(Visual Basic編程語言子集)編寫的針對Microsoft Office組件的小程序。Microsoft Office組件都支持宏(Macro)的操作,利用宏可以完成很多系統原本并不具備的特殊應用,比如,一個工作薄兩個工作表中數據的比對或一個工作表不同列間數據的比對,以及完成工作表數據的特殊計算、特殊格式的排版、特殊的查找篩選等功能。
4 教學實施
4.1 任務前置,激發學習興趣
精心設疑,讓學生拿出自己的手機查看手機是否具有姓名首字母快速查詢功能,激發學生興趣,引起學生積極思考。幫助學生溫故計算機中信息的表示形式以及國標碼、區位、機內碼間的相互轉換關系,根據一級常用漢字的音序排列順序使用VBA宏在Excel中對數據表中的商品名稱或漢字信息進行拼音首字母編碼。教師課前巧設分組,分工協作,完成區位碼表及相關數據收集,分別讓兩個學習小組完成一級常用漢字機內碼起止范圍表。
4.2 編寫用戶自定義函數getpy()獲取拼音首字母
利用系統函數Asc()取得漢字的機內碼,根據表1機內碼和拼音首字母的起止范圍,編寫用戶自定義函數getpy(),具體實現代碼如下:
Public Function getpy(ByVal s As String) As String
Dim Lchar As Long
‘Asc()直接返回的值是一個有符號數
Lchar = 65536 + Asc(s)
Select Case Lchar
Case 45217 To 45252
getpy = \"a\"
Case 45253 To 45760
getpy = \"b\"
……(依據表1起止書寫,此處略)
Case 54481 To 55289
getpy = \"z\"
Case Else
getpy = s
End Select
End Function
4.3 調用getpy()返回拼音首字符
對工作表中的漢字信息(此例為商品名稱)獲取拼音首字母,效果如表2所示。
創建getpinyin宏并編寫代碼如下:
Sub getpinyin()
Dim s As String
Dim p As String
For k = 2 To 5
s = Range(\"a\" k)
p = \"\"
For i = 1 To Len(s)
p = p + getpy(Mid(s, i, 1))
Next i
Range(\"b\" k) = p
Next k
End Sub
5 結語
Excel是集知識和技能于一體、實踐性很強的課程,要求學生既要學好理論知識,又要學習致用,解決實際問題。本節課精心設疑、課前巧設分工、課中循序漸近,學生分工協作,有效培養了學生團隊合作精神以及創新合作能力。
本次任務源于現實生活,以學生能看得到、感受得到的基本素材創設問題情境,引導學生活動,并在活動中激發學生認真思考、積極探索,主動獲取機內碼、區位碼、單元格地址以及循環程序設計的相關知識,促進學生研究性學習方式的形成,拓寬了教學空間,培養了學生利用程序解決實際問題的能力。
參考文獻
[1] 朱云霞.“任務驅動”教學法在計算機教學中的運用[J].中國電化教育,2002(5):35-36.
[2] 呂浩勇,董元和,饒龍坤.VFP中漢字拼音首字母的獲取及應用[J].計算機與現代化,2005(12):118-119.