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

極客小將

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

資訊內容

Scratch怎么調試程序呢?看看他怎么說

極客小將2020-12-15-

https://cdn.china-scratch.com/timg/190929/11443S518-0.gif

??

?????在程序開發過程中,出現程序錯誤 (BUG) 是不可避免的。這時候就需要對程序進行調試,通過調試,發現程序錯誤,從而著手修復BUG。

本文將介紹一些在Scratch中調試程序的實用方法。


01

概述

????編寫一段程序或許不難,難的是程序出現錯誤后,調試、排查、修復的過程。與編寫程序相比,程序調試對于開發人員的水平要求更高。從教學的角度來看,學生的程序調試排錯能力是一種層次較高的能力。學生跟著老師學習了一百個案例,每行代碼都爛熟于心,但是當真正自己開始編寫項目時,出現BUG卻手足無措。這時掌握程序排錯方法顯得格外重要,好的調試策略是設計程序時的一件法寶。程序調試亦是學習編程對思維方式鍛煉的體現。

????至于程序出現錯誤的原因,除了那些所有編程語言共通的原因,還有一些“Scratch 特色”的原因。是由于 Scratch 本身機制問題導致程序執行結果與預期目標不符合。一些經典的、由于 Scratch 本身機制問題導致的BUG與解決方案在本公眾號的其他文章中都有提到,如

控制Scratch異步代碼的執行順序

Scratch中顏色的正確使用姿勢

Scratch2.0中【碰到顏色()?】積木產生的卡頓現象及分析

每個Scratcher都應該知道的浮點運算


02

調試方法

1、氣泡輸出法

利用【說()】或【思考()】積木的對話氣泡,返回對象的某個參數,或是報告某個條件是否成立。

https://cdn.china-scratch.com/timg/190929/11443a5S-1.gif

利用【說()】積木使克隆體報告其ID

克隆體的局部屬性的獲取是比較麻煩的,用【說()】積木可以較為方便地查看某一個克隆體的某個局部屬性。

upload/article/images/2020-12-15/6a873c20c41a3f33113b1fdb303aedca.jpg

利用【說()】積木查看角色碰撞情況

可以十分靈敏地顯示老鼠是否碰到貓頭鷹。

優勢:

①使用起來十分方便、靈活。在程序運行過程中想要測試某個角色在某個節點的參數,只需把【說()】積木放置在對應的腳本中,結果一目了然。

②通用性強,支持多種數據類型的輸出,無論是數字類型、字符類型還是布爾類型,都可以輸出。

③且呈現方式直觀,多個角色的局部屬性通過這種方法可以同時在舞臺上被觀察到,而不必切換角色

劣勢

①【說()】積木會說謊,這類在舞臺中輸出內容的積木,在輸出時都會對數據進行一定的處理,無法獲取最真實或者說最接近真實的數據。

upload/article/images/2020-12-15/0418bc9beefae6dfe453977110a87957.jpg

upload/article/images/2020-12-15/15485ecfcda899c275d64eefe673811c.jpg

【說()】積木將原始數據的小數保留至百分位

氣泡輸出法會對數據進行了一定的處理,這的確是一種優化處理,但是在某些情況下,這種優化反而會掩蓋事實的真相,而不利于我們修復BUG,唯物辯證法如是說。

upload/article/images/2020-12-15/df9c995ec9c021550049ff53cf40ed34.jpg

【說()】積木忽略忽略浮點運算的精度丟失問題

由此引發的程序錯誤自然無從下手。

關于浮點運算的精度丟失問題,可以參照

《每個Scratcher都應該知道的浮點運算》。

2、積木點擊法

顧名思義就是直接點擊功能積木(圓角矩形和六邊形),查看其返回值。

upload/article/images/2020-12-15/8ad7dec8ff1f7c975cb1f35ee91da9ed.jpg

upload/article/images/2020-12-15/abc67178251fd06dec617d7f9dfb69c4.jpg

在積木區中直接點擊功能積木

官方指定調試方法,純粹為了調試而生的功能

優勢:

①方便,直接點擊就能看到返回值,不需要配合其他積木使用。

②數據原始,通過這種方法能拿到最一手的、未經過任何加工處理、零添加的數據。

劣勢:

①靈活性較差,具有滯后性。無法實時返回數據,只能返回點擊積木瞬間的值,如上文中貓頭鷹和老鼠的案例,老鼠碰到貓頭鷹,短短一瞬間后就離開,除非手速夠快,否則是難以用這種方法捕捉到這個瞬間的返回值的。

②通用性較差,一些特殊的積木,如【碰到(鼠標指針)?】

upload/article/images/2020-12-15/fd3ee0126e66339e41f4bcbca79225df.jpg

通過積木點擊法獲取的這個積木的返回值,一定是false。點擊積木的瞬間,鼠標一定是在積木上,而不可能同時出現在角色上。

upload/article/images/2020-12-15/e6c2645296c65bfda86a2b7ecfd9b78b.jpg

凡事無絕對……

3、顯示器輸出法

有的圓角矩形積木是自帶顯示器的,可以勾選積木前的單選框,直接從舞臺中的顯示器觀察到其數值。

upload/article/images/2020-12-15/1297bba47b700de33f7bc5fa68bfb8ae.jpg

至于沒有顯示器的積木,可以通過變量來賦予它顯示器。

upload/article/images/2020-12-15/d9bd30db2027190bfb08e97d99f06d7b.jpg

將返回值賦值給變量

upload/article/images/2020-12-15/73d60d9ab9a9e08d2418c8bf3e54213e.jpg

同理,當有多組數據時,還可以通過列表顯示器來呈現。

upload/article/images/2020-12-15/ba866eb0cc09a7b5c4b6c64446e0cf82.jpg

轉載需注明作者和出處

顯示器輸出法類似于文字輸出法,都是將返回值直接輸出到舞臺中,可以直接進行觀測。

優勢:

①與文字輸出法相比,界面更整潔清爽

②可以保留作用域:全局變量/局部變量

③同文字輸出法

劣勢

①需要新建變量/列表,使用起來略顯繁瑣。

②數據同樣會經過處理,無法獲取最真實或者說最接近真實的數據。

4、計數法

借助變量統計一段腳本的執行次數,最經典的做法非克隆體上限測試莫屬。

upload/article/images/2020-12-15/bcdf8b0fae7f5c455cd4c4d5c23a9399.jpg

用計數法統計克隆體上限

https://cdn.china-scratch.com/timg/190929/1144521439-15.gif

變量 cloneCount 數值達到300不再增長(采用4倍速剪輯)

突發奇想:

upload/article/images/2020-12-15/0e2263f843df1e2b1a1450ed487521a5.jpg

我將其命名為?遞歸克隆??

執行效果請自行腦補……https://cdn.china-scratch.com/Public/Home/images/grey.gif

在一些復雜的程序中,循環到底執行了多少次、消息發送了幾次,又接收了幾次、多少克隆體執行了相應的腳本,都是難以直接觀察出來的,這時候用計數法來進行測試,結果就一目了然了,一旦計數結果與預期不符合,那就能進一步鎖定BUG所在位置。

優勢:

①直觀,可以直觀地反映某些不直觀的腳本的執行次數,如克隆、消息。

②準確性強,除非積木放錯測試節點。

③靈活性強,“哪里不會點哪里”,需要測試哪段腳本的執行次數,把【將變量增加(1)】往相應的位置一放就可以了。

④具有一定的通用性。

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

預約試聽課

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

主站蜘蛛池模板: 涪陵区| 新蔡县| 安平县| 亚东县| 金山区| 辉南县| 富锦市| 吴江市| 鄂伦春自治旗| 怀集县| 雅江县| 唐山市| 拉萨市| 孟州市| 五寨县| 蒙城县| 玉龙| 乡宁县| 肇源县| 孟津县| 陆河县| 宁城县| 深州市| 岳普湖县| 景谷| 大姚县| 桂东县| 北票市| 抚宁县| 沾化县| 永和县| 永寿县| 中卫市| 庐江县| 阜康市| 沁水县| 聊城市| 邵阳县| 禄劝| 新和县| 建德市|