





主持人手記:本專欄主要介紹信息技術實驗在基礎教育信息技術課當中的典型案例,并期望這些案例能夠促進信息技術課程學科合法性的提升、豐富信息技術課的教學內容、拓展信息技術教師的課程設計視野。對此欄目有任何好的主意或建議,請發送稿件至towujunjie@163.com(主持人)或tougao1@chinaitedu.cn(雜志社)。
之前的系列文章中,我們已經完成了兩個大的單元,第一個單元是信息技術實驗的核心概念和過程,第二個單元是信息技術實驗所需要的程序基礎,從上期的案例開始,我們進入了對二值量的具體研究。二值量的最顯著的作用是標志著一種常見的有兩種狀態的事物的當前狀態,而二值量本身,可以用作邏輯判斷的條件,二值量之間的組合可以用于表示更多種不同的狀態,這一點在下一個單元“信息的編碼”中會闡述得更為詳盡。在二值量這個單元,我們主要了解二值量進入電腦之后計算機處理二值量的基本原理,這個原理包括上期一個案例已經描述過的邏輯判斷,和本案例中將要討論的默認值、狀態的可維持性和響應時間。
● 二值量的默認值和狀態的可維持性
二值量的默認值是指在不干預的情況下一個二值量的默認狀態,如鍵盤在默認狀態下是不被按下的,鍵盤和鼠標左鍵這種觸發按鈕,狀態改變后會自動地回到初始狀態,其初始狀態就是默認值,而對于電燈開關、電閘這類狀態切換開關,它們切換到某一個狀態之后,該狀態可以維持,那么究竟哪個狀態為默認狀態,則視需要而定,如從節電的角度來看,電燈開關的默認值應為斷開,從生活便利的角度看,電閘的默認值應為閉合。
● 二值量的響應時間
我們首先研究人對于一個二值量的響應時間,在生活中,我們可以通過感知、判斷進而改變它的狀態,如我們按下一個按鈕再松開這個按鈕,實際上這個過程經歷了如下判斷,為了簡化這個過程,我們用Scratch來代替流程圖(如圖1),這其中經歷了兩次經典的感測與控制的流程:感知─判斷─執行。而每經歷一個流程都是人對按鈕作出的一次響應,這個時間稱之為響應時間。改變二值量的狀態所需要的時間即稱為二值量的響應時間。
使用圖2這個比較“麻煩”的程序,可以測出人對于空格鍵狀態這個二值量的改變的過程中,二值量每一次發生改變的瞬間。t1表示的是人執行空格鍵按下的瞬間的時刻,t2表示的是人執行空格鍵彈起的瞬間的時刻,t3表示的是人再次按下空格鍵的時刻,t4表示的是人再次使空格鍵彈起的時刻,我們不難發現圖1中的按下空格鍵的響應時間應該為t3-t2,彈起按鈕的響應時間為t4-t3。
復制上述的代碼,即可測定一組按下空格和松開空格的響應時間,重復測量取平均值得出下表的數據。
從表中可以看出人松開空格的響應時間比按下空格的響應時間要慢很多,這正是說明了做一件事情很難,放棄一件事卻很快。
如果我們細分感測─判斷─執行的時間,使用圖3所示的代碼可以測出在沒有偵測模塊的情況下執行500次的時間的平均值是0.442±0.017秒,這說明“將‘計時器’加入到鏈表中”每執行一次的時間大概需要0.001秒。
有趣的是,如果仔細研究鏈表的“執行時間”,我們發現了一個有趣的現象:鏈表的時間差從第二項開始大概為0.001秒,但是第一項為0.061秒,遠遠大于其他各項。這一穩定的實驗現象是一個挖掘具體數據的結果,如果我們提升順序結構的次數,執行1000次時,鏈表第二項之后仍然為0.001秒,甚至常常出現0秒的情況,但是第一項為0.319秒,這說明這一時間與順序結構的執行次數有關。
● Scratch的循環時間的測定
一般來講,很多Scratch初學者認為圖3所示的程序與圖4是等價的,而且使用循環可以使得代碼長度更短,更易讀。
但是如果我們再次查看鏈表“執行時間”,會發現執行500次的時間大大增加了,由原來的0.44秒增加至12.52秒,這說明每個循環時間會占用一定的時間。如果將時間和循環次數制成一個速度-次數圖表,如圖5所示,會發現這是一條直線。
這意味著每完成一次循環,需要額外多消耗0.025秒的時間,1秒鐘Scratch可以完成40次循環。這樣,我們在研究二值量的反應時間的過程中,發現了Scratch語言的一個重要的基礎參數——循環時間。循環時間是任何語言的一個基礎參數,Scratch1.4的循環時間為0.025秒,而改進后的Scratch2.0的循環時間較Scratch1.4快幾萬倍以上,這大大提高了Scratch語言的執行效率。
至此,我們用解剖麻雀的方式研究了一個二值量的響應時間,在對響應時間的細致分析和數據挖掘中,發現了Scratch的循環時間,并明確了順序結構和循環結構的差異所在,這個過程對任何程序語言均適用。