官术网_书友最值得收藏!

2.2 會計算的小貓

2.2.1 介紹

Scratch不僅會讓角色動起來,其實(shí)它還可以計算,無論加(+)、減(-)、乘(*)、除(/)或者是混合計算,它都能很快地算出來哦!下面我們試試,讓一只小貓來算一算。

2.2.2 制作素材準(zhǔn)備

只要默認(rèn)的角色1,我們將它改名為“算術(shù)貓”。

2.2.3 制作詳細(xì)步驟

計算主要是用到了“算術(shù)”里面的積木。

觀察一下運(yùn)算前面幾個基礎(chǔ)的積木加(+)、減(-)、乘(*)、除(/),這類的積木我們通常叫它為操作符。由于這類積木能生成一個數(shù)字,因此它能接受數(shù)字參數(shù)。運(yùn)算的兩邊都可以接收我們隨意給它的數(shù)字,而這些數(shù)字和中間的運(yùn)算符就可以得到算式的結(jié)果。我們首先試試,讓算術(shù)貓算算5+5。

首先從【外觀】中拖出【說你好!】的積木,然后從【運(yùn)算】中拖出加(+)操作符,把它貼近【說】上面的輸入框,然后在加號兩邊的輸入框里分別輸入5,點(diǎn)擊積木運(yùn)行,算術(shù)貓就會告訴你正確的答案!

我們接下來試試幾個算式:12+11,18-5,3*12,20/4。

大家應(yīng)該都能算出來,接著我們思考一個問題,在除法里有一個規(guī)則,即除數(shù)不可以等于0,如果我們強(qiáng)行讓算術(shù)貓做一道4/0的算術(shù)題,會怎么樣呢?

可以看到,算術(shù)貓沒有算出任何數(shù)值,只提示了“Infinity”,在Scratch中,為了避免錯誤,提早就把可能出的錯誤進(jìn)行了這類提示。如果是在其他文本類編程語言中,可能就會引起錯誤,導(dǎo)致程序不能正常運(yùn)行,甚至還有可能出現(xiàn)致命的問題,所以在我們設(shè)計程序的時候一定要仔細(xì)想清楚,盡量少犯這類錯誤。

下面我們試一試更高級一點(diǎn)的運(yùn)算,四則混合運(yùn)算。每個操作符的輸入框其實(shí)也能接受別的操作符,我們就可以做很復(fù)雜的算式。下面我們讓算術(shù)貓算一算這個算術(shù)題:3+4*5。

可以看到,這個四則運(yùn)算也是按照數(shù)學(xué)“先乘除后加減”的規(guī)則來運(yùn)算的。大家都應(yīng)該知道,如果使用括號把算式括起來,就需要先算最括號里的數(shù)。在Scratch中如何表示這個括號呢?我們試一試把上面的算術(shù)題修改一下:(3+4)*5。

在Scratch中,最里層的先算,最外層的后算,所以我們先把乘法的積木放上來。

這樣就可以正常算出來(3+4)*5的結(jié)果了。

下面做幾個思考題:

 (3+7)*(2+5)

 (2+3)*8

 10/5-1

 4*7/(6-2)

 (3+(10-5))*(8-(4+2))

對比一下圖,你做到了嗎?

Scratch除了會基本的運(yùn)算外,還提供了求比較、求余數(shù)、四舍五入以及各類函數(shù),各位可以根據(jù)學(xué)校學(xué)過的數(shù)學(xué)知識進(jìn)行驗證,這里不多做介紹,部分也會在后面的游戲里介紹。下面我們介紹一個很有用的內(nèi)容:隨機(jī)數(shù)。

在以后編寫程序的時候,特別是創(chuàng)建游戲、模擬實(shí)驗的時候,都會經(jīng)常用到隨機(jī)數(shù)。Scratch專門在“運(yùn)算”里提供了【在…到…之間取隨機(jī)數(shù)】的積木,這塊積木每次都會在兩個數(shù)之間隨機(jī)生成一個數(shù)字。

例如,在0和1之間,積木將會輸出0或者1,但如果我們在任何一個數(shù)之間加入小數(shù)點(diǎn),例如是1.0,那么輸出的除了0或者1之外,還有它們之間的小數(shù)。

同理,如果是1和10之間,積木最終只會輸出1、2、3、4、5、6、7、8、9、10這些整數(shù)中的一個;如果1或10其中一個有小數(shù)點(diǎn),就會輸出1~10的小數(shù),而不會返回整數(shù)。

到這里,大家都應(yīng)該對算術(shù)運(yùn)算有一個初步的了解了。細(xì)心的人可能會發(fā)現(xiàn),在運(yùn)算里有幾塊很特別的積木,即【連接】【字符數(shù)】【第1個字符】【包含】,這幾塊積木的功能也不能忽視。例如,【連接】積木會讓角色擁有更豐富的語言表達(dá),【字符數(shù)】用于統(tǒng)計單詞或段落有多少字符,【第1個字符】是找到文字中的第1個字(這在以后參數(shù)輸入作為分支篩選時很有用),【包含】查出文字內(nèi)是否包含某些字符。后面3個在以后的游戲會有更詳細(xì)的介紹,這里暫時不做詳細(xì)說明,而【連接】會讓角色有更多有趣的表達(dá),所以在這里給大家講解一下。

大家都知道,讓角色說,可以通過【外觀】的兩塊積木【說】和【說…秒】完成。這兩塊積木好像都只能說一句固定的話,如果配合運(yùn)算的連接積木,就可以讓角色說話更豐富。例如,我們讓算術(shù)貓說“我知道5+5=10”,在沒有用【連接】時,可能小朋友會直接在【說】里面把這句話說出來。

但是這樣的話,就發(fā)揮不到程序強(qiáng)大的運(yùn)算能力了,因為這個結(jié)果是你自己算出來告訴算術(shù)貓的。我們需要怎么做才能讓算術(shù)貓自己開動腦筋去把算術(shù)算出來呢?這時,我們就可以嘗試使用【連接】功能把算式連接到說話內(nèi)容里。

通過這樣的方式,算術(shù)貓就會自動幫我們算出來了。

思考一下

溫度分成“華氏度”和“攝氏度”兩種,有些國家比較喜歡用華氏度,我們國家習(xí)慣用攝氏度,假如你得到了1個60華氏度的數(shù)據(jù),那么如何讓算術(shù)貓告訴你“我知道60華氏度=攝氏度”呢?(提示:攝氏度=(5/9)*(華氏度-32))

由于除數(shù)沒有被除盡,因此我們可以嘗試使用一下【函數(shù)】積木里的“向下取整”。

看到了嗎?我們順便也試用了一下【函數(shù)】的“向下取整”。向下取整就是不管小數(shù)點(diǎn)后是什么數(shù),都會自動被刪掉,只保留整數(shù)部分。【函數(shù)】中還有一個“向上取整”,聰明的人可能已經(jīng)想到了,就是舍掉小數(shù)后在原來的整數(shù)基礎(chǔ)上加1,也就是說如果上面60華氏度使用“向上取整”,答案就是16攝氏度了。如果把60改成75,只要將前面的60和算式中的60改成75就可以了。

到這里可能有人會有疑問:寫這么費(fèi)勁得出一個數(shù)有什么用?以后在游戲或程序里,有一種常用的功能叫傳遞參數(shù)(簡稱傳參)。這個“傳參”是很有意思的。在程序運(yùn)行過程中我們可能會生成很多隨機(jī)的數(shù)據(jù),既然是隨機(jī)的,我們就不可能提早知道并自己算出來,那就需要借助“傳參”的辦法把數(shù)據(jù)傳入我們可以的連接數(shù)據(jù)中,通過固定的算式讓程序自己算出來,就像是我們計算器計算的原理一樣。這些內(nèi)容將會在后面難度有點(diǎn)大的游戲中運(yùn)用到。大家現(xiàn)在先習(xí)慣這些基本操作,為以后隨時運(yùn)用打好基礎(chǔ)。

2.2.4 開動大腦拓展一下

(1)讓算術(shù)貓說出80、95、90這3個數(shù)的平均數(shù)。

(2)怎么利用隨機(jī)數(shù)讓算術(shù)貓隨機(jī)出現(xiàn)在指定的舞臺區(qū)域內(nèi)呢?

主站蜘蛛池模板: 成武县| 改则县| 胶南市| 措美县| 汾西县| 剑川县| 资阳市| 乌鲁木齐县| 富锦市| 平谷区| 唐山市| 乡宁县| 汝南县| 桦川县| 西乌珠穆沁旗| 沅陵县| 黎城县| 武宣县| 会理县| 唐河县| 乌拉特后旗| 泰州市| 宁明县| 长岛县| 泰州市| 黎城县| 长泰县| 大悟县| 周宁县| 陇西县| 朝阳市| 泸溪县| 江达县| 英超| 崇义县| 庄河市| 三门县| 中牟县| 咸宁市| 冕宁县| 那坡县|