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

極客小將

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

資訊內(nèi)容

一道程序猿筆試面試必會題怎樣用scratch做出來?

極客小將2020-11-22-
點(diǎn)擊上方“啟迪少兒”即可關(guān)注訂閱 很多家長覺得scratch太簡單了,只需要拖拽封裝好的積木塊就可以了。而我們scratch老師則會回應(yīng),scratch是低門檻高上限的,是沒有天花板的……為什么這么說,我們今天就看一看用sc
點(diǎn)擊上方“啟迪少兒”即可關(guān)注訂閱
很多家長覺得scratch太簡單了,只需要拖拽封裝好的積木塊就可以了。而我們scratch老師則會回應(yīng),scratch是低門檻高上限的,是沒有天花板的……為什么這么說,我們今天就看一看用scratch怎么來做一道程序猿筆試面試必須要會的一道題——排序!

題目的任務(wù)敘述很簡單:對一個已知數(shù)組,按照從小到大(或大到?。┡判?

?用scratch我們可以很快讓計算機(jī)給出任意數(shù)組,比如,可以有10個任意數(shù)字

upload/article/images/2020-11-22/be9467ab20d05122bc9a5fd4792376f3.jpg

工作:(1)建一個列表【L】;? ? ? ? ??(2)列表通常的初始化工作——刪除全部項(xiàng)目;? (3)重復(fù)10次插入1-100的任意自然數(shù)

?這樣我們就有了10個任意數(shù)

upload/article/images/2020-11-22/13488fd8fbdafed1657707c9920ba290.jpg

接下來,就是排序了。程序猿考試考的是算法,什么冒泡排序、選擇排序、插入排序等等。一個優(yōu)秀的算法能使程序的性質(zhì)帶來質(zhì)的飛躍,在scratch里面同樣可以用這些算法來解決問題(謝聲濤《scratch趣味編程進(jìn)階——妙趣橫生的數(shù)學(xué)和算法》書中第12章“撲克學(xué)算法”就將這些算法描述得非常透徹)。

在這里我們就用“選擇排序”的思路帶著大家用scratch實(shí)現(xiàn)從小到大排序

思路是這樣的:

第一輪:我們用第一個數(shù)字跟剩余的9個數(shù)比較大小,如果第一個數(shù)字比其他數(shù)字大,就交換這兩個數(shù)字的位置(因?yàn)槲覀兊呐判蚴菑男〉酱?,就讓小的?shù)字在前面)。

具體:

1、第一個數(shù)字和第二個數(shù)字比較后,第一個數(shù)字89比第二個數(shù)字62大,就讓兩個數(shù)字換順序;2、再讓新的第一位置數(shù)字62和第三個數(shù)字45比較,比較之后45排到第一位置;3、新的第一位置數(shù)字45再跟第四個數(shù)字比較……

以此類推,最終排在第一位置的數(shù)字是整個數(shù)組【L】中最小的數(shù)字

upload/article/images/2020-11-22/944da5ffec27e2e5fdd10ecb81bf470d.jpg

程序腳本體現(xiàn)如下

upload/article/images/2020-11-22/32a18817cc27133e50ad3584f5a45868.jpg

我們新設(shè)一個變量【i】代表除了第1項(xiàng)以外的其他項(xiàng),先將i設(shè)為2,通過讓i每次增加1,實(shí)現(xiàn)第一個數(shù)字(L的第一項(xiàng))與其他各個數(shù)字比較。

在替換之前,需要設(shè)一個變量【temp】,作為數(shù)字交換過程中一個承接數(shù)字的臨時空間(我們通常稱為“罐子”,交換數(shù)據(jù)的原理可以用兩個杯子中的水交換來理解)。

?第二輪:用與第一輪同樣的方法,讓第二個數(shù)字40跟剩余的8個數(shù)比較大小(第一個數(shù)字一旦排好了就不需要再動),也就是讓數(shù)組【L】的第2項(xiàng),分別與從第3項(xiàng)、第4項(xiàng)、第5項(xiàng)……第10項(xiàng)逐一比較。

upload/article/images/2020-11-22/be63d169ce263ee402245173854ac0a5.jpg

本次需要將i設(shè)為3,讓第2項(xiàng)與從第3項(xiàng)開始的其余8個數(shù)比較

?得到如下順序的數(shù)組:

upload/article/images/2020-11-22/a13cde9b6da3a873fb86fa731cdf2e24.jpg

第三輪:用同樣的方法,讓第三個數(shù)字53跟剩余的7個數(shù)比較大小

upload/article/images/2020-11-22/53202bf532af54744a8bad0ff1d5008f.jpg

第四輪:用同樣的方法,讓第四個數(shù)字跟剩余的6個數(shù)比較大小

……

最終得出排序結(jié)果

upload/article/images/2020-11-22/25c603d2708a2d6af4578afd686e3f42.jpg

看到這里,您對這個排序程序的算法步驟應(yīng)該是很明白了,但如果按照這樣下來這個腳本也太長了(即把以上所有腳本都要拼接起來),用scratch做反而很麻煩。那么有什么辦法可以簡化呢?

我們看到,在每一輪的第一個數(shù)字與其他幾個數(shù)字比較,可以用重復(fù)執(zhí)行數(shù)字順序i+1就可以完成。而第二輪、第三輪……第十輪都是重復(fù)與第一輪一樣的方法,是不是也可以嵌套一個重復(fù)執(zhí)行的順序呢?

答案當(dāng)然是可以的!

?為了使我們兩個數(shù)的比較更加清楚,我們可以設(shè)兩個變量作為數(shù)組【L】的項(xiàng)目順序,一個設(shè)為【n】,一個設(shè)為【i】,以?n?來控制輪數(shù),以?i?來實(shí)現(xiàn)每一輪里已確定一個比較數(shù)后另一個比較數(shù)的變更。腳本程序可以縮減如下:

upload/article/images/2020-11-22/9f35b17b6b98e74a3781fef9b0df67cc.jpg

當(dāng)n=1時,i=n+1=2,i重復(fù)增加1,直到執(zhí)行到10
當(dāng)n=2時,i=n+1=3,i重復(fù)增加1,直到執(zhí)行到10當(dāng)n=3時,i=n+1=4,i重復(fù)增加1,直到執(zhí)行到10……直到n執(zhí)行到10(全部比較完畢)

這個用scratch排列數(shù)字的程序就基本完成了!

當(dāng)然還可以用“制作新的積木”的方式將交換順序的腳本封裝,這就大大簡化了接著用冒泡排序插入排序、希爾排序等等方式再來玩一遍數(shù)字排序!

upload/article/images/2020-11-22/f67a4c5d82a745bc846bfab38e8e48d8.jpg

制作新積木塊“交換數(shù)字”

所以說,用scratch一樣能玩C、C++、python中的算法!在很多競賽中就體現(xiàn)了排序這種算法的題。

到這里,你可能會松了一口氣,還好,這是競賽。我們成年人做這種題可能都有點(diǎn)繞暈??!那么告訴你,軟件編程預(yù)備級(scratch等級考試)4級中可能就會有類似難度的題!

upload/article/images/2020-11-22/bce9f8d2756a47f771c1658c224905ee.jpg

知識點(diǎn)講完了,下面就給大家出一道scratch初級組(1-3年級)的一道編程題:

?任務(wù):小明和幾名同學(xué)在周末一起參加了一場蘋果采摘活動,他們每個人摘到的蘋果的數(shù)量已經(jīng)存到了【蘋果數(shù)量】列表里面,請你編寫代碼自動計算出摘的最多的比摘的最少的多摘了幾個,把結(jié)果保存到變量【結(jié)果】中。

舉例:摘的最多的摘了30?個,最少的摘了12?個,【結(jié)果】應(yīng)該為18。

轉(zhuǎn)載自“啟迪少兒”公眾號的原創(chuàng)文章

原文作者:北京通州的迪迪媽
























聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時和我們聯(lián)系刪除

預(yù)約試聽課

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

主站蜘蛛池模板: 江北区| 米林县| 明溪县| 阿拉善右旗| 松潘县| 华池县| 镇安县| 贵定县| 利辛县| 清丰县| 保定市| 马鞍山市| 南乐县| 东兰县| 习水县| 永登县| 乐山市| 祥云县| 桃江县| 全州县| 禹州市| 扎赉特旗| 浠水县| 万全县| 襄城县| 汕尾市| 淮北市| 陆良县| 广饶县| 乐山市| 西和县| 武宁县| 五大连池市| 鄄城县| 灵台县| 韩城市| 绿春县| 塘沽区| 镇原县| 桃源县| 安义县|