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