国产日韩欧美一区二区三区综合,日本黄色免费在线,国产精品麻豆欧美日韩ww,色综合狠狠操

極客小將

您現(xiàn)在的位置是:首頁(yè) » scratch編程資訊

資訊內(nèi)容

scratch編程繪制數(shù)字金字塔(楊輝三角)

極客小將2021-12-16-
楊輝三角相信很多人都不陌生,它是一個(gè)無(wú)限對(duì)稱(chēng)的數(shù)字金字塔,在中國(guó)南宋數(shù)學(xué)家楊輝1261年所著的《詳解九章算法》一書(shū)中出現(xiàn)。用程序打印出楊輝三角也是C、C++編程中的一道經(jīng)典題目……

楊輝三角相信很多人都不陌生,它是一個(gè)無(wú)限對(duì)稱(chēng)的數(shù)字金字塔,在中國(guó)南宋數(shù)學(xué)家楊輝1261年所著的《詳解九章算法》一書(shū)中出現(xiàn)。在歐洲,帕斯卡(1623—-1662)在1654年發(fā)現(xiàn)這一規(guī)律,所以這個(gè)表又叫做帕斯卡三角形。帕斯卡的發(fā)現(xiàn)比楊輝要遲393年,比賈憲遲600年。

scratch繪制數(shù)字金字塔(楊輝三角)

在初中,我們就知道,楊輝三角的兩個(gè)腰邊的數(shù)都是 1,其它位置的數(shù)都是它頂上兩個(gè)數(shù)之和。這就是我們編程實(shí)現(xiàn)楊輝三角的關(guān)鍵之一。

使用scratch編寫(xiě)這個(gè)程序相對(duì)于別的語(yǔ)言來(lái)說(shuō)要更復(fù)雜一點(diǎn),復(fù)雜的不是算法,而是如何展示出來(lái),下面我們先來(lái)分析一下這個(gè)程序有哪些難點(diǎn),面對(duì)這些困難我們?nèi)绾慰朔_@就是我們所強(qiáng)調(diào)的,少兒編程應(yīng)該重點(diǎn)學(xué)習(xí)如何解決問(wèn)題,如何利用有限的資源去做更多的事。

問(wèn)題1:找規(guī)律,將現(xiàn)象轉(zhuǎn)為數(shù)據(jù)

楊輝三角的兩個(gè)腰邊的數(shù)都是 1,其它位置的數(shù)都是它頂上兩個(gè)數(shù)之和。

如圖所示,我們可以利用上一行的結(jié)果,計(jì)算出下一行的數(shù)據(jù)。因此定義兩個(gè)列表(l:上一行數(shù)據(jù);tem:下一行數(shù)據(jù)),每個(gè)列表用來(lái)存儲(chǔ)一行數(shù)據(jù):

scratch編程繪制數(shù)字金字塔(楊輝三角)

scratch編程繪制數(shù)字金字塔(楊輝三角)

如圖,給tem首位加上1,就是1,2,1那就是第三行的數(shù)據(jù),接下來(lái)再把l的數(shù)據(jù)清空,將tem的數(shù)據(jù)存儲(chǔ)到l里,并在首位添加1,如此循環(huán)就可以一層一層的輸出了。

scratch編程繪制數(shù)字金字塔(楊輝三角)

scratch編程繪制數(shù)字金字塔(楊輝三角)

問(wèn)題二:如何將數(shù)字打印顯示到舞臺(tái)?

上面解決了數(shù)據(jù)問(wèn)題,下面就要把列表l里的數(shù)據(jù)一個(gè)個(gè)顯示到舞臺(tái)上,這就是scratch的麻煩所在,無(wú)法直接打印字符。于是想辦法,用數(shù)字角色,添加造型,將0-9都包括進(jìn)去,根據(jù)不同的數(shù)字切換不同的造型,利用畫(huà)筆里的圖章或者克隆將這個(gè)數(shù)留在舞臺(tái)上,為了簡(jiǎn)單,就用圖章吧。

scratch編程繪制數(shù)字金字塔(楊輝三角)

問(wèn)題三:換行后位置如何確定?

第一行很好確定,就在舞臺(tái)中央的正上方,那換到下一行從哪里開(kāi)始呢?這需要我們根據(jù)實(shí)際情況去測(cè)試一下,如下圖所示,找到這個(gè)合適的間距。

scratch編程繪制數(shù)字金字塔(楊輝三角)

scratch編程繪制數(shù)字金字塔(楊輝三角)

上下間距設(shè)置為30,即y坐標(biāo)-30,x坐標(biāo)向左移動(dòng),第二次左移20,第三層左移40,第四層就是60,總結(jié)規(guī)律就是0-(層數(shù)-1)*20,數(shù)字與數(shù)字之間的距離設(shè)置為30。

問(wèn)題四:如果數(shù)字大于9怎么辦?

比如要打印出10,這怎么辦?我們的角色造型里沒(méi)有這么多,我們只有0-9。這時(shí)就想到了拆分,將多位數(shù)一位一位的拆出來(lái)(將0造型放在最后,即:換成0造型,默認(rèn)就是最后一個(gè)造型)。

scratch編程繪制數(shù)字金字塔(楊輝三角)

目前所有遇到的問(wèn)題基本都有了解決辦法,我們就可以開(kāi)始動(dòng)手構(gòu)建整個(gè)程序了。,第一行是1,這個(gè)是固定的,我們直接在開(kāi)始用圖章印上去,從第二行開(kāi)始,重復(fù)執(zhí)行打印,計(jì)算下一行,流程如下。

scratch編程繪制數(shù)字金字塔(楊輝三角)

完整的程序如圖

scratch編程繪制數(shù)字金字塔(楊輝三角)

scratch編程繪制數(shù)字金字塔(楊輝三角)

scratch編程繪制數(shù)字金字塔(楊輝三角)

運(yùn)行結(jié)果:

scratch編程繪制數(shù)字金字塔(楊輝三角)

效果優(yōu)化:

從圖中看到結(jié)果并不是我們想要的等腰三角形效果,因?yàn)楹竺鏀?shù)字變大,占據(jù)的寬度增加,所以整體向右偏移,因此就要對(duì)這些多位數(shù)進(jìn)行處理,讓他們起始位置向左移動(dòng)一點(diǎn),這樣就可以了。

scratch編程繪制數(shù)字金字塔(楊輝三角)

優(yōu)化后的積木:

scratch編程繪制數(shù)字金字塔(楊輝三角)

scratch編程繪制數(shù)字金字塔(楊輝三角)


在高中我們會(huì)學(xué)到,楊輝三角中的任何一個(gè)數(shù)都等于一個(gè)組合數(shù),如果有興趣可以利用這一公式來(lái)做。

相關(guān)閱讀:Python基礎(chǔ)練習(xí)實(shí)例49(打印楊輝三角)

本站部分內(nèi)容轉(zhuǎn)載自網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系管理員及時(shí)刪除。

   少兒編程網(wǎng)scratch中文素材在線生成

預(yù)約試聽(tīng)課

已有385人預(yù)約都是免費(fèi)的,你也試試吧...

主站蜘蛛池模板: 潼南县| 白河县| 西乡县| 湟中县| 柞水县| 新巴尔虎左旗| 通渭县| 大新县| 开平市| 巴林左旗| 五寨县| 兴安盟| 南康市| 嘉禾县| 威海市| 清苑县| 东丰县| 松桃| 怀仁县| 潞西市| 香格里拉县| 余江县| 朝阳县| 上林县| 乌拉特中旗| 唐河县| 绥化市| 阜康市| 诸城市| 清涧县| 克山县| 施甸县| 新干县| 什邡市| 禹州市| 西吉县| 吉木萨尔县| 读书| 保德县| 长汀县| 政和县|