Scratch編程(programming)作為一款由麻省理工(MIT) 設(shè)計(jì)開(kāi)發(fā)的一款面向少年的簡(jiǎn)易編程工具,具有計(jì)算機(jī)語(yǔ)言的一切結(jié)構(gòu)(Structure)特性。下面就來(lái)說(shuō)說(shuō)怎樣用scratch解數(shù)學(xué)題,大家千萬(wàn)別錯(cuò)過(guò)。 ?
怎樣用scratch解數(shù)學(xué)題 ?
一個(gè)大于1的自然數(shù),請(qǐng)判斷它是合數(shù)還是質(zhì)數(shù)!比如,99991是質(zhì)數(shù)還是合數(shù)? ?
我們知道,質(zhì)數(shù)就是只有1和它自身兩個(gè)因數(shù)的數(shù)。因此,要判斷一個(gè)大于1的自然數(shù)n是不是質(zhì)數(shù),最簡(jiǎn)單的辦法就是看n能不能被2~n-1中的某個(gè)數(shù)整除。只要有一個(gè)數(shù)能被n整除,n就是合數(shù);如果都不能被n整除,n就是質(zhì)數(shù)。比如97,我們就看它能不能被2~96中的某一個(gè)數(shù)整除。 ?
這個(gè)方法說(shuō)起來(lái)很簡(jiǎn)單,但是如果給出的數(shù)較大,實(shí)際算起來(lái)就沒(méi)那么簡(jiǎn)單!比如,99991。再比如,1234567891。通過(guò)人工計(jì)算來(lái)判斷出它們是質(zhì)數(shù)還是合數(shù),那真不是一件容易的事。 ?
能不能編一個(gè)程序讓計(jì)算機(jī)來(lái)幫助我們計(jì)算呢?當(dāng)然可以!根據(jù)上述算法就可以畫(huà)出程序流程圖。 ?
有了流程圖,編寫(xiě)代碼就很簡(jiǎn)單了。流程圖就是編程的施工圖。學(xué)習(xí)編程,畫(huà)流程圖是基本功。一定要養(yǎng)成無(wú)流程圖不寫(xiě)代碼的好習(xí)慣!流程圖本身就是編程思路的體現(xiàn),通過(guò)畫(huà)流程圖也可以進(jìn)一步整理我們的思路。 ?
程序?qū)懞煤螅€要調(diào)試,看看功能是否正常。通過(guò)調(diào)試,我們會(huì)發(fā)現(xiàn)對(duì)于不太大的數(shù),這個(gè)程序很快就能給出結(jié)果,簡(jiǎn)直是秒殺!但如果你輸入1234567891,程序運(yùn)行很久才會(huì)出結(jié)果。這種狀況,其實(shí)也是不能接受的。正如你玩一個(gè)游戲,它老是卡頓,你還會(huì)玩嗎?一個(gè)好的程序,只考慮功能的正確性是不夠的,還要考慮它的運(yùn)行速度,它占用計(jì)算機(jī)內(nèi)存的情況。當(dāng)然,這是對(duì)高級(jí)程序員的要求。我們?cè)趯W(xué)習(xí)編程的時(shí)候,更多地還是考慮功能的正確性。 ?
運(yùn)行速度過(guò)慢,怎么辦?重新設(shè)計(jì)呀!太慢,嚴(yán)格來(lái)講就是不符合設(shè)計(jì)要求。你必須重新考慮程序的架構(gòu)和實(shí)現(xiàn)算法。 ?
要判定一個(gè)數(shù)n是不是質(zhì)數(shù)其實(shí)不需要一直試到n-1,到n的算術(shù)平方根(要取整,絕大多數(shù)程序設(shè)計(jì)語(yǔ)言都有取整運(yùn)算符或者功能塊)就可以了!其流程圖與之前的算法基本相同,不再贅述。直接上程序代碼。 ?
運(yùn)行程序,按照提示輸入1234567891。程序很快就給出結(jié)果了。由此可見(jiàn),在編程中,算法是很重要的。隨著學(xué)習(xí)的深入和編制的程序越來(lái)越復(fù)雜,我們就能更深地體會(huì)到:算法是程序的靈魂。 ?
計(jì)算機(jī)是不是很強(qiáng)大呀!但前提是你要會(huì)編程呀!只有會(huì)編程,你才能讓計(jì)算機(jī)替你解決問(wèn)題呀!別擔(dān)心,編程其實(shí)也沒(méi)有想象那么難!只要你愿意學(xué)。 ?
Scratch雖然是專(zhuān)門(mén)為少兒設(shè)計(jì)的編程語(yǔ)言,但其功能還是非常強(qiáng)大的,不僅可以創(chuàng)建動(dòng)畫(huà)、游戲和故事書(shū),還可以用來(lái)求解數(shù)學(xué)題,實(shí)現(xiàn)一些數(shù)學(xué)算法。學(xué)過(guò)Scratch后,將來(lái)再學(xué)習(xí)其他高級(jí)程序設(shè)計(jì)語(yǔ)言,理解起來(lái)也會(huì)更加順暢,更加容易! ?
?
scratch找素?cái)?shù)的算法練習(xí) ?
題目:找出100以?xún)?nèi)的素?cái)?shù)(2-99)。 ?
質(zhì)數(shù)又稱(chēng)素?cái)?shù),指在一個(gè)大于1的自然數(shù)中,除了1和此整數(shù)自身外,沒(méi)法被其他自然數(shù)整除的數(shù)。 ?
思路:從2開(kāi)始依次判斷每個(gè)數(shù)是不是素?cái)?shù),如果是的話(huà)就加入到列表里。難點(diǎn)在于如何判斷一個(gè)數(shù)是不是素?cái)?shù),根據(jù)素?cái)?shù)的定義,需要使用重復(fù)執(zhí)行,只要能被1和自身之外的數(shù)整除(余數(shù)=0),那么就不是素?cái)?shù),停止本次循環(huán),然后去判斷下一個(gè)自然數(shù)是不是素?cái)?shù)。 ?
1、添加變量num表示100以?xún)?nèi)的自然數(shù),從2開(kāi)始,依次遞增,挨個(gè)判斷是否為素?cái)?shù) ?
2、添加變量i作為除數(shù)(取值為2到num)用來(lái)判斷是否為素?cái)?shù) ?
3、添加變量“是否為素?cái)?shù)”標(biāo)記num是否是素?cái)?shù)(初識(shí)默認(rèn)這個(gè)數(shù)是素?cái)?shù),通過(guò)重復(fù)執(zhí)行除以i,如果被整除那么就改變值為0,即不是素?cái)?shù),停止本次重復(fù)執(zhí)行) ?
4、如何停止本次重復(fù)執(zhí)行?通過(guò)修改變量的值,使重復(fù)執(zhí)行結(jié)束的條件成立,這樣就可以減少不必要的計(jì)算次數(shù)。 ?
5、每個(gè)自然數(shù)num重復(fù)執(zhí)行除法判斷結(jié)束后根據(jù)變量“是否為素?cái)?shù)”來(lái)確定最終結(jié)果,如果等于1,那么就是素?cái)?shù),將該數(shù)添加進(jìn)列表。 ?
scratch如何編寫(xiě)判斷運(yùn)算是否正確的程序 ?
1、打開(kāi)scratch,進(jìn)入它的主界面; ?
2、用鼠標(biāo)左鍵點(diǎn)擊一下事件面板; ?
3、將當(dāng)綠旗被點(diǎn)擊拉到右邊的腳本編輯區(qū)中; ?
4、點(diǎn)擊偵測(cè)面板; ?
5、添加詢(xún)問(wèn)命令; ?
6、將詢(xún)問(wèn)內(nèi)容改為要出的數(shù)學(xué)題,如3加4等于幾? ?
7、點(diǎn)擊控制面板,添加條件判斷命令; ?
8、在條件判斷中添加如下腳本,并*添加一個(gè)重復(fù)執(zhí)行命令; ?
9、點(diǎn)擊綠旗執(zhí)行程序,開(kāi)始出題3加4等于幾,下面出現(xiàn)一個(gè)答題響應(yīng)框; ?
10、如果輸入答案7,然后按后面的對(duì)勾; ?
11、電腦就會(huì)提示答對(duì)了,真棒,并停止執(zhí)行程序; ?
12、如果輸入的答案不是7,然后按后面的對(duì)勾; ?
13、電腦就會(huì)提示再試試,然后停留在答題框中,讓用戶(hù)重復(fù)答題,直到答題正確為止。 ?