999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

小議Scratch在常見算法學習中的應用

2015-09-10 07:22:44代天杰于方軍
中國信息技術教育 2015年15期
關鍵詞:排序利用

代天杰 于方軍

編者按:兒童的智能是多元的,同樣是Scratch,可以在藝術和工程領域大顯身手,也可以在科學和數學領域深度探究,算法思維一直以來是程序教學的難點,使用Scratch語言來講解復雜而重要的計算機算法,降低了難度,有助于算法思維的落實和拓展應用。

Scratch讓編程變得足夠簡單,降低了編程門檻,也讓孩子們體會到了編程的樂趣,那么Scratch是不是只能做一些簡易的游戲,而不能進行深入編程知識——算法的學習呢?于是,我們嘗試利用Scratch去實現一些算法,發現Scratch真是非常強大,很多問題都可以輕松解決,教師完全可以利用Scratch教授一些算法和數據結構,引導學生利用Scratch和算法知識去創作更加優秀的作品。

為什么要學習算法?因為很多問題,前人已經提出了非常好的解決方案,如果我們不去學習算法,就會浪費大量的時間去思考,甚至很多問題我們無法想出解決方案,從而無法實現自己的想法。學習算法后,我們就可以利用這些知識快速解決問題,實現自己的想法,同時經過算法學習訓練,分析問題、解決問題的能力也會有很大的提高。

下面我們來列舉幾個Scratch算法的實例,希望能夠對大家有所幫助。

排序算法的學習

排序應該是程序中最常用的算法,如看到一個利用Scratch統計中文錄入中鍵盤字母鍵敲擊次數的小程序,就可以利用排序排出每個字母的敲擊次數順序。

那么如何利用Scratch實現排序呢?Scratch雖然不支持二維數組,但它對一維數組支持得非常好,并且融合了很多字符串的操作,所以Scratch對一維數組的操作得心應手。利用Scratch實現O(N2)的算法都非常容易,如插入、冒泡、選擇都可以,在這里我們以插入排序為例為大家介紹實現方法,為什么要選擇插入排序是因為Scratch在鏈表中提供了插入功能,讓插入排序實現起來非常容易。

插入排序就像我們打撲克時的插牌過程,其實插牌就是把自己摸到的牌,進行從小到大的一次排序過程。我們怎么插牌呢?摸到牌之后,首先要找到這張牌的位置,從最后一張開始找,找到比這張牌小的牌,然后把這張牌插在后面就可以了。

我們以對5(一共要摸幾張牌)個數排序為例,來描述問題的實現步驟,鏈表a用來存儲數據,i表示已經輸入多少個數(我們手中已經摸了幾張牌):①清空鏈表。②設置i為1。③輸入第一個數。④將第一個數插入鏈表。⑤將后面4個數插入鏈表。將i值加1、輸入第i個數、將位置j的值設置為i-1(也就是從最后一個數開始找)、找到比輸入的數小的數位置j或者位置j為0就停止、將輸入的數插入到j后面即可。

Scratch實現遞歸

Scratch雖然不支持函數但是對過程的支持非常好,所以利用Scratch可以非常容易實現遞歸算法。我們舉最常用的遞歸例子,求N的階乘,N!=(N-1)!×N這個公式是遞歸算法的核心,如我們定義了一個過程階乘(N),那么階乘(N)就等于階乘(N-1)乘N。我們用s來表示N的階乘。如果N等于1,那么很顯然s的值就是1,如果N不等于1,那么我們可以先計算(N-1)的階乘s,然后N的階乘s等于我們已經計算出的(N-1)的階乘s乘N,實現代碼如圖1所示。

這種遞歸算法和數學中的歸納法非常相似,關鍵步驟有兩步,第一能夠求出最簡單情況下,如N等于1時的值,第二能夠找到由(N-1)到N的變化規律,我們再來看圖2。

圖2看起來非常漂亮,這是Scratch利用遞歸畫出來的,怎么能夠畫出這樣的圖片呢?通過認真觀察,我們可以發現圖片的規律為:圖片是由一個個由小到大的正方形旋轉生成。

依據這一規律我們就可以研究繪制圖片的算法,首先要研究怎么繪制一個正方形。畫正方形時,可以先沿水平方向畫一條邊,然后向右旋轉90度,再畫一條邊,再旋轉,再畫,這樣就有三條邊了,最后旋轉一次畫一條邊,正方形就畫好了;也就是說畫正方形就是重復執行4次“畫一條邊,向右旋轉90度”的操作。

我們如果要利用繪制正方形的規律來繪制圖2的圖像,就要改變每次重復的步驟:①改變畫筆顏色,這樣可以實現變色效果。②畫一條邊。③旋轉91度,這樣可以實現正方形的旋轉效果。④邊長加1,這樣可以實現正方形由小變大的效果,代碼如圖3所示。

Scratch實現回溯

回溯算法也叫試探法,它是一種系統地搜索問題的解答過程的方法。回溯算法的基本思想是:從一條路往前走,能進則進,不能進則退回來,換一條路再試。

由于Scratch目前不支持局部變量,所以比較容易實現雙分支問題也就是我們常說的01背包問題,而對于更多的分支問題只能用非遞歸算法來實現。在講回溯算法的時候,很多書都會畫一個樹狀的分形圖來描述回溯的過程,利用Scratch可以動態展示這樣一個回溯的過程(如圖4)。

怎么來畫這樣一幅圖呢?我們先來實現畫一條邊,利用Scratch的移動L步和移動0-L步就可以了,為什么還要移動0-L步呢?目的是為了回到出發點。

我們再實現畫一個“丫”,實現步驟如下:①移動L步。②畫左邊。向左旋轉30度,移動L步,移動0-L步。③畫右邊。向右邊旋轉60度,移動L步,移動0-L步。④回到起點。向左旋轉30度,移動0-L步。

我們用遞歸來實現以上步驟,為了讓分支越來越短,可以逐步減少移動步長L,代碼如圖5所示。

我們還嘗試用Scratch編寫經典的編程問題N皇后問題,限于篇幅就不在本文中給大家介紹了,感興趣的老師可以到以下網址下載。(http://yunpan.cn/cQTZFLRQucymw,訪問密碼為7761)

Scratch作為一款圖像化編程軟件,簡約而不簡單,不僅能夠快速構建程序而且功能十分強大,教師可以利用它來教授算法和數據結構知識,讓學生了解更加深奧的編程知識,培養學生的計算思維能力。此外從信息技術實驗的角度,教師還可以引導學生比較不同算法的執行效率,以加深其對以上這些初級算法的理解程度。

猜你喜歡
排序利用
排排序
利用min{a,b}的積分表示解決一類絕對值不等式
中等數學(2022年2期)2022-06-05 07:10:50
排序不等式
利用倒推破難點
利用一半進行移多補少
恐怖排序
節日排序
利用數的分解來思考
Roommate is necessary when far away from home
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
主站蜘蛛池模板: 亚洲欧美日韩中文字幕在线一区| 国产精品真实对白精彩久久| 国产剧情无码视频在线观看| 午夜丁香婷婷| 日本精品视频| 国产爽爽视频| 999国产精品| 久久青草免费91线频观看不卡| 日韩天堂在线观看| 精品视频福利| 亚洲啪啪网| 成人免费一级片| 性做久久久久久久免费看| 男人的天堂久久精品激情| 色噜噜综合网| 天堂在线www网亚洲| 波多野结衣中文字幕久久| 国产制服丝袜91在线| 538国产在线| 久久国产精品娇妻素人| 午夜不卡视频| 国产成人综合日韩精品无码首页| 欧美成人免费| 亚洲人成影视在线观看| 米奇精品一区二区三区| 亚洲第一成年网| 美女啪啪无遮挡| 综合色区亚洲熟妇在线| 人妻无码AⅤ中文字| 国产亚洲精品自在久久不卡| 亚洲成人高清在线观看| 夜夜高潮夜夜爽国产伦精品| 欧美午夜性视频| 黄色网页在线播放| 免费无码AV片在线观看国产| 国产99在线| 国产成人一级| 在线播放真实国产乱子伦| 高h视频在线| 欧美国产日韩另类| 欧美 国产 人人视频| 婷婷色婷婷| www.精品视频| 丝袜国产一区| 久久精品国产91久久综合麻豆自制| 亚洲人成人无码www| 九色最新网址| 色哟哟国产成人精品| 久久精品波多野结衣| 国产在线精彩视频二区| 国产成人高精品免费视频| 亚洲性视频网站| 亚洲AⅤ综合在线欧美一区| 国产精品久久国产精麻豆99网站| 欧美中日韩在线| 国产精品一区二区在线播放| 成人午夜在线播放| 亚洲天堂自拍| 国产成人一区在线播放| 国产爽歪歪免费视频在线观看| 综合色亚洲| 欧美视频在线播放观看免费福利资源| 欧美中文一区| 亚洲无限乱码一二三四区| 欧美啪啪视频免码| 國產尤物AV尤物在線觀看| 久久国产精品波多野结衣| 欧美性天天| 日韩小视频在线观看| 精品久久蜜桃| 日韩欧美国产中文| 国产99欧美精品久久精品久久| 免费看久久精品99| 91久久国产成人免费观看| 国产精品无码制服丝袜| 特级aaaaaaaaa毛片免费视频| 激情综合五月网| 中国成人在线视频| 亚洲欧美人成人让影院| 欧美亚洲一二三区| 在线播放真实国产乱子伦| 精品三级在线|