蔡頓理
【摘 要】初中生的計(jì)算思維能力是學(xué)習(xí)的基礎(chǔ),筆者結(jié)合 Scratch 案例教學(xué)中存在的一些問(wèn)題,分析了通過(guò)Scratch 作圖培養(yǎng)初中生計(jì)算思維的優(yōu)勢(shì),探索在分析任務(wù)、程序?qū)崿F(xiàn)、定義過(guò)程、等方面培養(yǎng)計(jì)算思維的方法與策略,通過(guò)Scratch 作圖培養(yǎng)初中生的計(jì)算思維
【關(guān)鍵詞】 Scratch;編程;計(jì)算思維
一、培養(yǎng)初中生計(jì)算思維的設(shè)想
在編程創(chuàng)作中,將程序劃分為小部分并逐一解決,是一種非常重要的思維方式。Scratch2.0的“ 更多模塊”中的“ 新建功能塊”指令的使用能很好的解決程序的模塊化,可以提高程序在結(jié)構(gòu)化和組織上的靈活性;它真正Scratch 帶到編程思維的創(chuàng)作中。由于它的作用等同于過(guò)程函數(shù),為了描述方便,以下都稱之為過(guò)程函數(shù)。
所以以創(chuàng)作簡(jiǎn)易的幾何圖形為主題,帶領(lǐng)學(xué)生進(jìn)行對(duì)設(shè)計(jì)變量、函數(shù)、遞歸等概念的編程思維訓(xùn)練,會(huì)比較直觀易懂。
但是想要學(xué)生在創(chuàng)作互動(dòng)游戲等作品中直接理解并正確使用過(guò)程函數(shù)進(jìn)行模塊化編程,存在一定的困難。圖形看上去復(fù)雜,其實(shí)一分解,就只有一個(gè)最基本的圖形,經(jīng)過(guò)程序迭代之后自動(dòng)生成,圖形的形成都具有一定的規(guī)律性Scratch 軟件中自帶有畫筆模塊,任何一個(gè)舞臺(tái)中的角色都可以作為一只畫筆,這支筆有兩種重要的狀態(tài):抬筆和落筆。反之,則不會(huì)留下痕跡。畫筆的屬性和 Scratch 中其他的指令還增加了 Scratch 作圖的趣味性和互動(dòng)性。
因此,筆者利用 Scratch2.0 作圖對(duì)培養(yǎng)計(jì)算思維進(jìn)行了實(shí)踐研究,希望通過(guò)在 scratch2.0 中繪制各種創(chuàng)意圖形的案例讓學(xué)生體驗(yàn)問(wèn)題的解決方法,為創(chuàng)作其他 scratch 作品打下編程的基礎(chǔ)。
二、培養(yǎng)初中生計(jì)算思維的策略
1. 分析任務(wù):由外到內(nèi)逐層分解
充分理解案例,學(xué)會(huì)分析任務(wù)是解決任何編程問(wèn)題的第一步。理解之后我們可以做出一個(gè)大致的解決方案,然后將其劃分為多個(gè)主要任務(wù)進(jìn)行突破;幾個(gè)主要的任務(wù)又可以各自作為大任務(wù)再分解成小任務(wù)進(jìn)行解決。我們將這樣的順序稱為由外到內(nèi)逐層分解。
2. 定義過(guò)程:減少程序的漏洞
簡(jiǎn)單是程序設(shè)計(jì)的目標(biāo)。就像在工廠里的流水生產(chǎn)線往往被劃分成若干個(gè)工位,每一個(gè)工位執(zhí)行標(biāo)準(zhǔn)化、程序化的動(dòng)作,這就是單一責(zé)任。在程序設(shè)計(jì)中,單一責(zé)任是指某個(gè)代碼的功能,應(yīng)該保證只有單一的明確的執(zhí)行任務(wù)。任務(wù)越單一,代碼越簡(jiǎn)單,越簡(jiǎn)單的代碼占用時(shí)間少,漏洞少,并且易于修改。當(dāng)其他功能部分發(fā)生變化時(shí),也能夠盡可能降低對(duì)其他組件的影響。在蜘蛛網(wǎng)的案例中,將每個(gè)分步都定義為一個(gè)過(guò)程。每個(gè)過(guò)程只做單一的任務(wù),比如 Triangle 只負(fù)責(zé)繪制某一邊長(zhǎng)的正三角形。
定義過(guò)程不僅有利于理清編程的思路,也方便程序的調(diào)試。在調(diào)試程序過(guò)程中,可以將總目標(biāo)分解成一層一層由內(nèi)向外的過(guò)程進(jìn)行逐一調(diào)試。案例中可以先調(diào)試是否能畫出一個(gè)三角形;調(diào)試成功后,再調(diào)試是否能成功畫出六邊形,以此類推,直至成功。
三、Scratch 作圖對(duì)培養(yǎng)計(jì)算思維的意義
進(jìn)行 Scratch 教學(xué)的目標(biāo)是創(chuàng)造,而為了更好地創(chuàng)造,Scratch 教學(xué)的最終目標(biāo)仍舊應(yīng)該包含對(duì)學(xué)生思維的培養(yǎng),如設(shè)計(jì)規(guī)劃、邏輯推理、創(chuàng)新能力等。因此,對(duì)于學(xué)生而言,體驗(yàn)編程的過(guò)程、理解編寫意圖比編出完美的動(dòng)畫更重要。在利用 Scratch2.0 作圖的教學(xué)過(guò)程中,孩子們學(xué)會(huì)了問(wèn)題分析,懂得了邏輯推理,更發(fā)揮了自己無(wú)限的創(chuàng)意。
1. 通過(guò)任務(wù)分析提高了算法思維
比如案例“美麗的花團(tuán)”,要繪制這幅作品,必須由外到內(nèi)進(jìn)行逐層分解。
任務(wù)分解 內(nèi)容分析繪制一團(tuán)花 每支花畫完之后旋轉(zhuǎn) 60度(360/6)畫下一支花;重復(fù) 6次以后就可以得到一團(tuán)美麗的花。
繪制一支花 移動(dòng)一段距離后畫一個(gè)花瓣代表樹葉;再移動(dòng)一句距離,畫一朵花;回到起始位置,為繪制下一支花做準(zhǔn)備。繪制一朵花 每個(gè)花瓣畫完之后旋轉(zhuǎn) 72度(360/5)畫下一個(gè)花瓣;重復(fù) 5次以后就可以得到一朵完整的花。
繪制一個(gè)花瓣 可以用細(xì)小的鋸齒繪制成曲線,作為花瓣的一邊;旋轉(zhuǎn) 90度后,重復(fù)操作繪制另一邊。在由外到內(nèi)進(jìn)行逐層分解出具體問(wèn)題后,就要針對(duì)每個(gè)具體問(wèn)題逐一解決。
2. 通過(guò)拓展應(yīng)用提高了想象力
從圖形組合到圖形動(dòng)畫,極大激發(fā)了孩子們的學(xué)習(xí)興趣,很好地滿足了教學(xué)的需求幾何圖形雖然簡(jiǎn)單,但在 Scratch2.0中能很好的與計(jì)算、推理、益智、游戲等密切結(jié)合,因此在教學(xué)中給學(xué)生留下足夠的探究與創(chuàng)新的空間,提升學(xué)生的學(xué)習(xí)能力。通過(guò)比如調(diào)用過(guò)程函數(shù) Polygon ,經(jīng)過(guò)合理設(shè)計(jì),創(chuàng)作出多樣的圖案,凸顯了學(xué)生的無(wú)限創(chuàng)意。圖7中展示了部分學(xué)生調(diào)用過(guò)程函數(shù)Polygon 設(shè)計(jì)的不同效果。
總之,Scratch 作圖旨在培養(yǎng)學(xué)生的編程思維,而非Scratch 指令的系統(tǒng)學(xué)習(xí)。筆者希望學(xué)生通過(guò) Scratch 作圖的學(xué)習(xí),學(xué)會(huì)分析問(wèn)題、體驗(yàn)解決問(wèn)題的方法,并將學(xué)習(xí)中滲透的計(jì)算思維運(yùn)用到 Scratch 指令的學(xué)習(xí)中,對(duì) Scratch 作品的創(chuàng)作提供解決問(wèn)題的策略。
【參考文獻(xiàn)】
[1][ 美 ] MajedMarji 著于欣龍李澤譯 . 動(dòng)手玩轉(zhuǎn) Scratch2.0 編程 [M]. 北京:電子工業(yè)出版社,2015.10