資訊內(nèi)容
【Scratch】編程?一節(jié)課就教會(huì)你!其實(shí)我們不用一個(gè)個(gè)學(xué)習(xí)如何使用代碼。
學(xué)會(huì)STEM怎么“玩”,或許才是真正的意義。
更多學(xué)習(xí)內(nèi)容,關(guān)注公眾號(hào)后,通過(guò)菜單獲取。
第199篇文章
老丁的課程
在很多教程里面,大家都喜歡把模塊拿出來(lái)一個(gè)個(gè)講述其功能。
這樣做的好處是,可以把每個(gè)代碼模塊的功能講的很清楚。但最最討厭的問(wèn)題也隨之而來(lái)……
舉個(gè)例子,當(dāng)你學(xué)習(xí)英語(yǔ)的時(shí)候,是語(yǔ)法好學(xué),還是詞匯好學(xué)?
肯定是語(yǔ)法啊……因?yàn)檎Z(yǔ)法基本上就是語(yǔ)言規(guī)則,規(guī)則是有限的。并且,規(guī)則在很多情況下是可以根據(jù)自己的要求重新組合的。而詞匯呢?沒(méi)完沒(méi)了……所以,英語(yǔ)水平的高低,從某種意義上來(lái)說(shuō),詞匯量本身就是一個(gè)很好的參考標(biāo)準(zhǔn)。
如果學(xué)習(xí)英語(yǔ)的時(shí)候,光背詞匯,第一,記不住,第二,用不來(lái),那么面對(duì)浩瀚的辭海……怎么能學(xué)會(huì)呢?
所以,我們要從理解的角度來(lái)學(xué)習(xí)這些東西。
再所以,我們還是從一個(gè)編程流程的方法,作為實(shí)際操作的開始吧!
本課程將把很多應(yīng)用和知識(shí)點(diǎn)融入課程內(nèi)來(lái)講述哦!
注定,這不是一套說(shuō)明書式的教程。
別看Scratch有那么多模塊的種類,其實(shí)歸根結(jié)底,只有2種。
第一種都長(zhǎng)這個(gè)樣子,就像一個(gè)個(gè)卡片。它們負(fù)責(zé)一個(gè)程序中的具體流程執(zhí)行或者執(zhí)行判斷、循環(huán)。
不管它們是什么顏色,其實(shí)我們可以理解為,它們都屬于同類~都可以堆在一塊。
先不管這些代碼是干嘛的,反正你只要把這些家伙隨意的堆在一起,就可以做出一個(gè)程序。
而程序就會(huì)根據(jù)由上到下的順序,開始執(zhí)行。
第二種,就是橢圓的和六邊形的。
這些我們可以認(rèn)為他們是一種“條件”代碼。
專管數(shù)據(jù)條件、邏輯條件(布爾運(yùn)算)、處理數(shù)據(jù)等等,反正千變?nèi)f化,可以有很多很多種,十分考驗(yàn)運(yùn)用能力。它們給流程模塊和輸出模塊,帶來(lái)了各種各樣的“條件要求”。當(dāng)然,這些條件都可以由你自己來(lái)設(shè)置。
與EV3不同,Scratch的編程工具,開發(fā)的更為“詳細(xì)”。
比如,關(guān)于啟動(dòng)的流程模塊,也就是“事件”下面所對(duì)應(yīng)的各種代碼塊。
這些模塊一般都是用來(lái)啟動(dòng)某一套程序的。你可以設(shè)定各種各樣的啟動(dòng)條件。
其他的都很好理解,比如當(dāng)小旗幟被點(diǎn)擊,當(dāng)空格(也就是電腦鍵盤上的空格)被點(diǎn)擊,它們都是用來(lái)觸發(fā)程序啟動(dòng)的“條件”。
誒,對(duì)了,這里我們看到了幾個(gè)關(guān)鍵詞。
角色、背景、廣播,它們是什么?請(qǐng)看下面這個(gè)全景圖。
跟Mindstorms相比,Scratch多了一個(gè)“角色”的感念。同時(shí)也多了一個(gè)“背景”的概念。
簡(jiǎn)單說(shuō),這兩種東西,都是“對(duì)象”。
你編程對(duì)誰(shuí)編?
當(dāng)然是對(duì)“對(duì)象”來(lái)編程啦。
對(duì)象可以是“角色”,也可以是“背景”。區(qū)別是,角色可以移動(dòng)來(lái)移動(dòng)去,而背景就是整個(gè)背景圖案啦。
點(diǎn)擊上圖右下角的兩個(gè)按鈕,大家可以自己添加角色和背景。這個(gè)很簡(jiǎn)單,沒(méi)什么特別的地方,嘗試一下馬上就明白了。
當(dāng)你需要對(duì)一個(gè)添加完的角色或者背景進(jìn)行編程或者修改的時(shí)候,就要去選中對(duì)應(yīng)的那個(gè)對(duì)象。
然后你就可以根據(jù)上圖做這些事情。
了解了上面這些內(nèi)容后,大家就明白了。
在Scratch里面,我們的編程可以明確的針對(duì)每一個(gè)被添加上的角色和背景來(lái)進(jìn)行操作!
簡(jiǎn)單說(shuō),就是,讓誰(shuí)干嘛就干嘛。在一個(gè)程序里,每個(gè)對(duì)象的分工都可能是不同的,而我們,只要明確的告訴每個(gè)對(duì)象,做些什么,就ok啦!
而你可以看到,上文說(shuō)到的這兩類代碼都是配合著使用的。
比如,首先,我們?cè)诔绦虻囊婚_始,需要放一個(gè)啟動(dòng)模塊。(什么操作觸發(fā)程序啟動(dòng))
我們當(dāng)然,可以很簡(jiǎn)單的放上另一個(gè)卡片,來(lái)控制這只Scratch貓。這只需要放上一個(gè)代碼即可。可以手動(dòng)輸入半圓內(nèi)的數(shù)字,來(lái)控制一下這只貓。
但這畢竟是手動(dòng)輸入呀,程序不是應(yīng)該可以根據(jù)一些情況自己計(jì)算距離的么?
那么我們稍微提一個(gè)復(fù)雜一點(diǎn)的要求好了,這樣比較容易幫助小朋友理解問(wèn)題。
要求:當(dāng)綠色旗幟被按下后,讓小貓,以再次按下鼠標(biāo)之間的時(shí)間為條件,移動(dòng)到坐標(biāo)(100,0)的位置。
問(wèn)題其實(shí)也挺簡(jiǎn)單的。我們可以看得出來(lái),最終呈現(xiàn)的效果一定是間隔時(shí)間越短,貓移動(dòng)的越快,而間隔時(shí)間越長(zhǎng),貓移動(dòng)的越慢。對(duì)么?
這個(gè)時(shí)候,我們就需要使用到這些“數(shù)據(jù)條件”代碼的配合啦。
首先,在程序一開始,把我們需要用到的計(jì)時(shí)器和貓的位置歸零。
這是一個(gè)習(xí)慣問(wèn)題,在我們使用任何數(shù)據(jù)模塊的時(shí)候,程序一開始,盡量要養(yǎng)成歸零或者完成初始值設(shè)置的習(xí)慣。這樣方便我們?nèi)蘸髾z查一些程序的問(wèn)題,同時(shí)也容易幫助我們找到問(wèn)題,這個(gè)在以后的課程中,我們會(huì)經(jīng)常提到。
第二步,把題目中要求的兩個(gè)動(dòng)作給放上去。
1、等待鼠標(biāo)點(diǎn)擊
2、把貓移動(dòng)位置給設(shè)定好
我們可以看到上圖的兩個(gè)位置,是可以放上兩種形狀的代碼的!
這種形狀,我們叫做“布爾運(yùn)算”代碼。不作過(guò)多的解釋了,大家簡(jiǎn)單理解為,這就是一種邏輯判斷就可以了。
邏輯嘛,就是“是”或者“不是”;“包含”或者“不包含”;“成立”或者“不成立”……
反正就是二選其一,單選的條件。它本身也是一種數(shù)值,不符合邏輯的時(shí)候,它的數(shù)值就是0;而符合邏輯的時(shí)候,它的數(shù)值就是1。
所以它也可以直接當(dāng)做是數(shù)據(jù)來(lái)使用,只是它的數(shù)據(jù)變化,只有0和1兩種。
而上圖這些,就是“數(shù)據(jù)運(yùn)算”代碼。它們的可能性就多咯。你可以運(yùn)算,加減乘除,甚至更高級(jí)的數(shù)學(xué)運(yùn)算。它們最終代表了各種數(shù)值。
我們分別把題目要求的兩種數(shù)據(jù),拖動(dòng)到相應(yīng)的“代碼運(yùn)算”位置上,這個(gè)程序就完成啦!
是不是很簡(jiǎn)單,動(dòng)手試試看吧!
當(dāng)然,理解了這些內(nèi)容后,自己可以作一些各種各樣的小嘗試。
學(xué)起來(lái)不難,理解也不難,但熟悉,還是需要一些時(shí)間滴!
聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過(guò)郵件及時(shí)和我們聯(lián)系刪除
