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

極客小將

您現在的位置是:首頁 » scratch編程資訊

資訊內容

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

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

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

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

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

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

?這樣我們就有了10個任意數

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

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

在這里我們就用“選擇排序”的思路帶著大家用scratch實現從小到大排序

思路是這樣的:

第一輪:我們用第一個數字跟剩余的9個數比較大小,如果第一個數字比其他數字大,就交換這兩個數字的位置(因為我們的排序是從小到大,就讓小的數字在前面)。

具體:

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

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

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

程序腳本體現如下

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

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

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

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

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

本次需要將i設為3,讓第2項與從第3項開始的其余8個數比較

?得到如下順序的數組:

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

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

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

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

……

最終得出排序結果

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

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

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

答案當然是可以的

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

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

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

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

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

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

制作新積木塊“交換數字”

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

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

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

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

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

舉例:摘的最多的摘了30?個,最少的摘了12?個,【結果】應該為18。

轉載自“啟迪少兒”公眾號的原創文章

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
























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

預約試聽課

已有385人預約都是免費的,你也試試吧...

主站蜘蛛池模板: 安义县| 宁都县| 鹤岗市| 建始县| 栾川县| 南开区| 乌兰察布市| 平度市| 晴隆县| 和静县| 两当县| 顺平县| 山东省| 卢龙县| 东安县| 双牌县| 岳西县| 博乐市| 青神县| 顺平县| 皮山县| 利辛县| 东港市| 永清县| 托里县| 固始县| 深水埗区| 濉溪县| 常德市| 渝北区| 崇仁县| 张家港市| 晋中市| 保山市| 仁寿县| 灵武市| 淮滨县| 江油市| 卢龙县| 吴江市| 长寿区|