張利波
前情回顧
寧波市編信息技術(shù)教材經(jīng)過2014年修訂,刪除了已經(jīng)過時(shí)的QB,取而代之以VB作為程序設(shè)計(jì)教學(xué)內(nèi)容。一方面,VB界面友好,語言簡潔,是一款結(jié)構(gòu)化、模塊化、面向?qū)ο蟮目梢暬绦蛟O(shè)計(jì)語言;另一方面,VB可以銜接高中信息技術(shù)“算法與程序設(shè)計(jì)”模塊的教學(xué)內(nèi)容。因此,初三階段,學(xué)生正式進(jìn)入編程時(shí)代。
何為編程?為了使計(jì)算機(jī)能夠理解人的意圖,人類就必須將需解決問題的思路、方法和手段通過計(jì)算機(jī)可以理解的形式告訴計(jì)算機(jī),使得計(jì)算機(jī)能夠根據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。這種人和計(jì)算機(jī)之間交流的過程就是編程。
幾乎所有學(xué)生在跨入“編程”之前,會不約而同地認(rèn)為:編程,難,很難,相當(dāng)難!事實(shí)呢?我也認(rèn)為確實(shí)難。所幸,我們學(xué)習(xí)VB不用沖擊信息學(xué)奧林匹克競賽。那么,怎樣在有限的時(shí)間內(nèi),讓學(xué)生及時(shí)進(jìn)入編程狀態(tài)呢?學(xué)習(xí)內(nèi)容很大程度上起著決定性的作用?!凹任矍蛴趾啙嵉睦泳秃昧恕?,我心里一遍遍默念著??粗滩牡谝徽n,我有了新的想法。
使用緣由
說起教材第一課,不禁想起了2014年1月,全體教材編寫人員來到美麗的省城——杭州,齊聚浙江教育出版社的會議廳開始了第五冊教材修訂工作。很榮幸,我也是其中一員,參與VB部分內(nèi)容的編寫。考慮到與高中VB教材的銜接,教材組還邀請了鄞州中學(xué)的林強(qiáng)老師。林老師執(zhí)教高中信息技術(shù)教學(xué),多次參與浙江省信息技術(shù)學(xué)考、高考的命題工作。有林老師為我們VB小組把關(guān),我似乎吃了一顆定心丸。編寫教材之前,我也翻閱了一些教材,查閱了一些資料,發(fā)現(xiàn)VB第一課內(nèi)容相仿,大多為VB簡介、窗口介紹等基礎(chǔ)知識,操作上以打開文件、保存文件為主。至于例子,基本大同小異,如點(diǎn)擊按鈕顯示“歡迎來到VB世界”等。
我當(dāng)即決定把這個(gè)通俗的例子改掉,但是什么例子恰當(dāng)呢?同樣是顯示,同樣用Label控件,難度不大,效果很好,有這樣的例子嗎?對,顯示!時(shí)間的顯示是否更有意義?——電子時(shí)鐘!我?guī)缀跆氤隽诉@個(gè)例子。
再看Timer控件,屬性相當(dāng)少,不妨礙學(xué)生首次接觸VB。當(dāng)我把這個(gè)想法告訴林老師時(shí),林老師也贊同這一生活化的例子。于是,電子時(shí)鐘出現(xiàn)在VB第一課中。
基本概念
Timer
Timer是VB工具箱中的一種控件。通俗來說,就是計(jì)時(shí)器,運(yùn)行時(shí)不可視。通過引發(fā)Timer事件,Timer控件可以有規(guī)律地每隔一段時(shí)間執(zhí)行一次代碼。Timer重要屬性有Interval(時(shí)間間隔)、Enabled(是否可用)。
T-I-M-E-R
T-I-M-E-R (Twinkly Interesting Magic Easy Round)是指VB教學(xué)初期,利用Timer控件實(shí)現(xiàn)動態(tài)效果,快速營造出一種簡單、有趣、神奇、極具吸引力的VB學(xué)習(xí)課程,從而驅(qū)除學(xué)生編程的畏懼感,產(chǎn)生對VB的親近感。
要素解析
T—— Twinkly—— 閃爍的
Twinkly意為閃爍的、閃亮的。這與Timer控件調(diào)用Timer事件有異曲同工之妙。Timer事件每隔一定時(shí)間執(zhí)行一次代碼,對應(yīng)效果猶如閃爍。Timer控件最閃亮、最吸引眼球的當(dāng)屬“動態(tài)”效果。因此,“閃爍”似乎成了Timer控件最基本的屬性,其前提條件Interval設(shè)置非零數(shù)據(jù),Enabled 設(shè)置True。“閃爍”可以表現(xiàn)文字的一明一暗,顏色的五彩變化,也可以表現(xiàn)圖片交替、文字移動,數(shù)據(jù)、時(shí)間的更新等。
I—— Interesting—— 有趣的
Interesting意為有趣的,令人關(guān)注的。VB學(xué)習(xí)初期一般選用簡潔的例子,基本會用到典型的Label控件,屬性以Caption為主,再輔以類似文字屬性設(shè)置,如更改字體、字號、字色等。這些操作基本類同于Word文字設(shè)計(jì),學(xué)生上手容易,但效果差強(qiáng)人意。事實(shí)上,這些內(nèi)容難以體現(xiàn)VB編程的強(qiáng)大,學(xué)生難以體味出VB編程的味道。誠然,在VB初學(xué)階段,學(xué)生還沒編程基礎(chǔ),沒碰過IF、FOR, 看不懂選擇、循環(huán),但缺少這些結(jié)構(gòu),程序效果就會大打折扣。
這時(shí)不妨采用Timer控件,一樣的編程基礎(chǔ),不一樣的編程效果。比如讓電子時(shí)鐘可以像日常電子鐘那樣有跳動的過程;比如隨機(jī)抽獎(jiǎng)程序,不僅可供教師應(yīng)用于課堂隨機(jī)點(diǎn)名,還能關(guān)聯(lián)生活中的抽獎(jiǎng)環(huán)節(jié);比如圖片交替,既可模擬屏保效果,又可作為記憶類的益智游戲。這些有意思、有意義的實(shí)例,讓學(xué)生觸碰VB第一刻起,就牢牢記住VB的魅力,感受VB的強(qiáng)大,讓學(xué)生對VB產(chǎn)生“相見恨晚”的感覺。
M—— Magic—— 神奇的
Magic意為神奇的、不可思議的,有奇異魔力的。Timer控件的確有神奇魔力,寥寥數(shù)個(gè)屬性設(shè)置,短短一句代碼,居然一個(gè)電子時(shí)鐘就躍然于屏幕之上(如圖1)。如此簡單,如此神奇!不可否認(rèn),此時(shí)學(xué)生僅僅驚嘆于表面現(xiàn)象,但“首因效應(yīng)”卻在VB第一課上被發(fā)揮得淋漓盡致。當(dāng)然作為教師,我們明白表面現(xiàn)象不能維系太久的學(xué)習(xí),只有及時(shí)探究Timer控件內(nèi)在的秘密,才能讓學(xué)生真正領(lǐng)略VB的神奇魅力。
比如電子時(shí)鐘屬性設(shè)置為1000毫秒,運(yùn)行效果按秒變化;如果按2秒跳動一次,Interval設(shè)置為多少毫秒?學(xué)生很自然地設(shè)置2000毫秒,結(jié)果的確這樣。接下來,我讓學(xué)生嘗試100毫秒,猜測電子時(shí)鐘會怎么跳動。學(xué)生紛紛猜想。驗(yàn)證之后,運(yùn)行效果居然沒有一點(diǎn)變化!
“為什么會一樣?”我趁機(jī)拋出這個(gè)疑問,“Timer沒有‘寫嗎?偷懶了?”“沒有偷懶,‘寫的?!薄?秒中間‘寫了幾次?”“10次?!薄皩懥诉@么多,居然沒變化,為什么?”“每次寫了一模一樣的內(nèi)容?!薄盀槭裁磿粯幽兀俊薄癟ime函數(shù)返回系統(tǒng)時(shí)鐘的當(dāng)前時(shí)間,最小變化單位是秒,即1000毫秒。所以,即使設(shè)置小于1000毫秒的數(shù)據(jù),每次內(nèi)容還沒有變化,因此一樣了?!薄翱偨Y(jié)非常到位。這樣的設(shè)置,1秒內(nèi)只有1次有效,其他都是無用功,這會影響計(jì)算機(jī)運(yùn)行效率。因此,我們設(shè)置屬性時(shí)也要考慮有效性?!苯?jīng)過這樣梳理,學(xué)生對Interval屬性已經(jīng)深入理解,在學(xué)習(xí)“抽獎(jiǎng)”程序時(shí),為達(dá)到抽獎(jiǎng)公平性,讓數(shù)據(jù)飛速轉(zhuǎn)動起來,學(xué)生紛紛改小Interval屬性值,這時(shí)學(xué)生不會再簡單地設(shè)置1毫秒或2毫秒。
E—— Easy—— 容易的
Easy意為容易的。神奇是吸引學(xué)生學(xué)的外衣,容易才是學(xué)生愿學(xué)、樂學(xué)的基礎(chǔ)。通過操作,讓學(xué)生感知VB編程的一般過程,收獲編程成就感,體驗(yàn)編程的樂趣和意義,這是VB教學(xué)初期我設(shè)定的課程目標(biāo)。選擇簡單又實(shí)用的程序例子是達(dá)成目標(biāo)的好途徑。VB編程一般分為設(shè)計(jì)分析——外觀設(shè)計(jì)——屬性設(shè)置——代碼編寫——運(yùn)行調(diào)試等環(huán)節(jié)。其中外觀設(shè)計(jì)、屬性設(shè)置,一般沿襲了信息技術(shù)學(xué)科“所見即所得”的操作習(xí)慣,即便全英文的屬性設(shè)置,先“按分類序”分組,再結(jié)合中文說明,依然“無障礙”操作。
毫無疑問,代碼編寫是難度最大的環(huán)節(jié)。代碼越簡單,學(xué)生編程越容易成功。Timer控件搭建了循環(huán)的框架,只要在Private Sub Timer1_Timer()寫上循環(huán)體,在效果不變的前提下降低了難度,學(xué)生更容易上手實(shí)踐。編寫電子時(shí)鐘代碼時(shí)(外觀設(shè)計(jì)見圖2),我們不妨先用日常方法描述:你需要實(shí)現(xiàn)的效果是什么?——在Label1上顯示時(shí)間;對象是哪個(gè)?——Label1;顯示用什么屬性?——Caption;顯示內(nèi)容是什么?——時(shí)間;時(shí)間怎么獲得?——Time函數(shù)(Time$)。接著,我們用賦值語句的一般結(jié)構(gòu):對象.屬性=值。對應(yīng)填入各項(xiàng)內(nèi)容,代碼即為:Label1.Caption=Time$。
R—— Round—— 循環(huán)
Round意為循環(huán)、圓。外觀上,Timer 控件看上去圓圓的;本質(zhì)上,Timer事件,每隔一段時(shí)間重復(fù)做一件事情,其工作原理就是循環(huán)。同時(shí),這個(gè)循環(huán)并不是“死循環(huán)”,Timer控件用Enabled屬性裝上開關(guān)。根據(jù)需要,開關(guān)可以定制Timer 控件不繼續(xù)使用,即退出循環(huán)。如果關(guān)閉后又需要啟動Timer,一般我們用語句Timer1.Enabled=Not(Timer1.Enabled) 來實(shí)現(xiàn)交替進(jìn)行。
(作者單位:浙江慈溪實(shí)驗(yàn)中學(xué))