流河建偉
Scratch中的代碼塊形狀,有橢圓形的,有六邊形的。如圖1:
為什么會(huì)有這樣的區(qū)分呢?因?yàn)椴煌男螤?,代表著不同的?shù)據(jù)類型。
在Scratch中,變量、移動(dòng)的步數(shù)、面向的方向和造型的編號(hào)都是數(shù)據(jù);與、或和不成立的結(jié)果也是數(shù)據(jù)。凡是可以放入橢圓形或六邊形框內(nèi)的積木塊,都是數(shù)據(jù)。數(shù)據(jù)類型就是這些數(shù)據(jù)的屬性,不同形狀的積木塊,代表不同的屬性,就是數(shù)據(jù)類型。
Scratch中有三種基本數(shù)據(jù)類型。
在Scratch中找到自制積木,點(diǎn)擊制作新的積木。如圖2:
自制積木的參數(shù)提示的數(shù)字、文本或布爾值,就是Scratch的三種基本數(shù)據(jù)類型。從圖2可以看出,數(shù)字類型或文本類型,用橢圓形代碼塊表示。布爾類型用六邊形代碼塊表示。Scratch中所有代碼塊需要填寫(xiě)參數(shù)的地方,也只有橢圓形和六邊形的代碼框,對(duì)應(yīng)著三種基本數(shù)據(jù)類型。
顧名思義,數(shù)字類型表示數(shù)字,用于存儲(chǔ)數(shù)學(xué)計(jì)算的數(shù)值數(shù)據(jù)。文本類型是用于存儲(chǔ)文本的數(shù)值數(shù)據(jù)。布爾類型的名字是英文Boolean的音譯,它只有兩個(gè)值,分別是“是”或“非”,也稱之為“真”或“假”,英文分別表示為“true”或“false”。在Scratch中,“假”被稱為“不成立”。
Scratch中數(shù)字類型和文本類型沒(méi)有明顯的區(qū)分,只有在使用的時(shí)候才能分辨此數(shù)據(jù)是數(shù)字類型還是文本類型。布爾類型比較容易區(qū)分。
如圖3:
1.如圖3代碼中六邊形的積木框里面放置的就是布爾類型的數(shù)據(jù)。小于積木塊或等于積木塊的結(jié)果,恰好是一個(gè)六邊形的積木塊,即布爾類型的數(shù)據(jù)。布爾類型只有兩個(gè)值,“真”和“假”,滿足條件為“真”,不滿足條件為“假”。
2.代碼1中,因?yàn)闇p是數(shù)學(xué)運(yùn)算,所以變量3的值為數(shù)字類型。
3.代碼2中,因?yàn)檫B接不是數(shù)學(xué)運(yùn)算,而是文本常進(jìn)行的操作,所以變量3的值為文本類型。文本類型和數(shù)字類型,在使用過(guò)程中是可以根據(jù)使用方式不同而進(jìn)行轉(zhuǎn)換的。
4.代碼3中,因?yàn)闇p是數(shù)學(xué)運(yùn)算,所以要把變量1和變量2的值當(dāng)作數(shù)字類型,然后進(jìn)行減運(yùn)算。但是字母a和字母b沒(méi)有辦法轉(zhuǎn)換為數(shù)字類型,Scratch為了讓小朋友們可以更友好地使用Scratch軟件,沒(méi)有把錯(cuò)誤報(bào)出來(lái),而是把這個(gè)錯(cuò)誤設(shè)置為了0。但在傳統(tǒng)編程語(yǔ)言中,這種情況就會(huì)報(bào)錯(cuò),如圖4,Python把非數(shù)字類型的數(shù)據(jù)進(jìn)行數(shù)學(xué)運(yùn)算的話,就會(huì)得到紅色報(bào)錯(cuò),兩個(gè)字符串之間不支持減運(yùn)算。
上面說(shuō)到,在滿足條件的情況下,數(shù)字類型和文本類型是可以相互轉(zhuǎn)換的。布爾類型也可以轉(zhuǎn)換為數(shù)字類型或者文本類型。嘗試把六邊形數(shù)字放入橢圓形積木塊的框中,是可以放進(jìn)去的,如圖5:
布爾類型可以轉(zhuǎn)換為數(shù)字類型或文本類型的。在需要數(shù)學(xué)運(yùn)算時(shí),布爾類型就轉(zhuǎn)換為數(shù)字。在需要文本時(shí),布爾類型就轉(zhuǎn)換為文本。布爾類型轉(zhuǎn)換為數(shù)字或文本時(shí)值是固定的。轉(zhuǎn)換為數(shù)字時(shí),值為真時(shí),數(shù)字為1,值為假時(shí),數(shù)字為0。轉(zhuǎn)換為文本時(shí),值為真時(shí),文本為true,值為假時(shí),文本為false。
數(shù)字類型和文本類型是不能轉(zhuǎn)換為布爾類型的,如果想把橢圓形代碼塊放入到六邊形代碼塊的框中,是沒(méi)法成功的。
為什么數(shù)據(jù)要有數(shù)據(jù)類型呢?
1.程序運(yùn)行時(shí),數(shù)據(jù)都是放在內(nèi)存里的。不同的數(shù)據(jù),占用的內(nèi)存不一樣,把數(shù)據(jù)分成不同的數(shù)據(jù)類型,可以充分利用內(nèi)存,給占用較小內(nèi)存的數(shù)據(jù)分配較小的內(nèi)存,以最大限度地節(jié)約內(nèi)存的使用。
2.軟件針對(duì)不同類型的數(shù)據(jù),處理和操作的方式也不一樣。比如:數(shù)字類型的數(shù)據(jù),多進(jìn)行數(shù)學(xué)運(yùn)算;文本類型的數(shù)據(jù),多用于顯示、連接、分割等操作;布爾類型,用于條件判斷。把數(shù)據(jù)區(qū)分為不同的類型,軟件在遇到該類型時(shí)就用特定的處理方式,可以更高效地處理該類型的數(shù)據(jù)。
3.區(qū)分?jǐn)?shù)據(jù)類型,可以增加代碼的可讀性。在Scratch中,看到六邊形的代碼塊,就知道是布爾類型數(shù)據(jù),是用于判斷的。