孫秀芝 胡泉鎬
【摘? ?要】邏輯不清、脫離算法、思維受限是“算法與程序設(shè)計”模塊初學(xué)者身上的常見問題,主要原因在于其對算法的關(guān)鍵步驟、程序的關(guān)鍵指令、作品的關(guān)鍵差異把握不準。實踐證明,通過梳理關(guān)鍵步驟、尋找關(guān)鍵指令、聚焦關(guān)鍵差異三個教學(xué)策略,能夠改善課堂狀況,促進學(xué)生計算思維的培養(yǎng)。
【關(guān)鍵詞】計算思維;算法與程序設(shè)計;教學(xué)策略
計算思維是個體運用計算機科學(xué)的思想方法來解決問題的一系列思維活動,是信息技術(shù)學(xué)科核心素養(yǎng)的四個核心要素之一。隨著教材的再次修訂,體現(xiàn)信息技術(shù)學(xué)科本質(zhì)內(nèi)容,指向計算思維培養(yǎng)的知識模塊的比重大幅提升,這也給教師開展算法與程序設(shè)計教學(xué)帶來了更大挑戰(zhàn)。在實際教學(xué)中,邏輯不清、脫離算法、思維受限是“算法與程序設(shè)計”模塊初學(xué)者身上的常見問題,主要原因在于其對算法的關(guān)鍵步驟、程序的關(guān)鍵指令、作品的關(guān)鍵差異把握不準。
鑒于此,教師從“算法與程序設(shè)計”模塊教學(xué)的三個關(guān)鍵點入手,通過梳理關(guān)鍵步驟、尋找關(guān)鍵指令、聚焦關(guān)鍵差異,采用合適的教學(xué)策略改進當前課堂現(xiàn)狀,幫助學(xué)生逐步養(yǎng)成計算思維。
一、梳理關(guān)鍵步驟,培養(yǎng)分解思維
對于算法的關(guān)鍵步驟,沒有厘清其邏輯結(jié)構(gòu),是導(dǎo)致分析問題時思路混亂的主要原因。雖然教師會列舉生活中學(xué)生耳熟能詳?shù)陌咐?,但是學(xué)生在獨立思考時還是會遇到障礙。因此,教師需要引導(dǎo)學(xué)生對問題進行分解,抓住解決問題的關(guān)鍵步驟,并用自己的理解加以描述,以此使思維更清晰。
(一)要素分解,用自然語言描述關(guān)鍵步驟
對于邏輯思維處于發(fā)展階段的初學(xué)者來說,讓其分析計算機程序的算法并不容易,即便是相對簡單的程序也是如此。因此,教師在引導(dǎo)學(xué)生分析一個具體問題的算法時,要把握兩個要點:一是分析具體問題中包含的主要角色;二是將主要角色所要進行的關(guān)鍵步驟進行羅列,而對于次要信息予以暫緩考慮。分析過程可以借助一定的可視化工具來支持,比如思維導(dǎo)圖、表格等,但學(xué)生須用自己的語言來表達解決問題的思路。
【案例1】《詢問交互》一課算法分析
課堂上,教師提供了《中國詩詞大會》的視頻片段,請學(xué)生利用表格分析一次問答程序經(jīng)歷的步驟。(提示:只考慮關(guān)鍵交互過程)具體如表1。
學(xué)生通過反復(fù)觀看視頻,理解計算機與用戶交互的過程,在表格中羅列出目標程序所涉及的兩個角色——“計算機系統(tǒng)角色”“用戶”。由于“用戶”就是使用者本身,不需要在計算機中設(shè)置,所以只需要添加一個角色——“計算機系統(tǒng)角色”。接著,學(xué)生對于實現(xiàn)目標程序所需要的關(guān)鍵步驟進行分解:第1步是“計算機系統(tǒng)角色”出題,第2步是“用戶”輸入回答,第3步是“計算機系統(tǒng)角色”判斷用戶回答是否與答案一致,第4步是“計算機系統(tǒng)角色”根據(jù)判斷結(jié)果輸出不同的結(jié)果提示。
通過主要角色、關(guān)鍵步驟的分析訓(xùn)練,學(xué)生初步學(xué)會了抓住問題的核心,將主要精力集中于解決程序中最重要的“交互”問題,將次要問題(角色的初始化、程序的提示語、結(jié)果提示時的角色造型變化等)的處理調(diào)整到后續(xù)優(yōu)化環(huán)節(jié),以此保證課堂的高效性。
(二)圖形填空,用流程圖表示基本的算法
用流程圖描述算法,能更形象、直觀地表示算法,便于學(xué)習(xí)者理解,也便于指導(dǎo)學(xué)習(xí)者進行程序的編寫。在學(xué)生初學(xué)流程圖這一描述方式時,教師依然需要引導(dǎo)學(xué)生抓住關(guān)鍵步驟,以此降低學(xué)習(xí)難度,從而幫助學(xué)生順利理出一個相對完整的流程圖。教學(xué)時,為了引導(dǎo)初學(xué)者入門,教師可以借助圖形填空的方式降低難度,讓學(xué)生將關(guān)鍵步驟組合成程序的流程圖。
【案例2】《詢問交互》一課算法分析
仍以問答程序中的算法分析過程為例,教師為學(xué)生提供學(xué)習(xí)單,請學(xué)生將右側(cè)的步驟拖到左側(cè)的線框內(nèi),完成一次問答程序的流程圖,如圖1。
借助這樣的半成品流程圖,學(xué)生參與繪制的難度大大降低,絕大部分學(xué)生都能順利完成任務(wù)。在拖動的過程中,學(xué)生一邊理解算法,一邊熟悉流程圖符號。
實踐證明,利用圖形填空的方式,能更有效地幫助初學(xué)者掌握利用流程圖表示算法的方法,幫助學(xué)生建立對程序關(guān)鍵步驟的理解。有了程序流程圖,程序的編寫就更容易操作。需要注意的是,教師在設(shè)計學(xué)習(xí)單時,可以有意識地將流程圖的關(guān)鍵步驟進行“挖空”處理,從而引起學(xué)生對關(guān)鍵步驟的關(guān)注,為后續(xù)教學(xué)關(guān)鍵指令做好鋪墊。
二、尋找關(guān)鍵指令,提升算法思維
初學(xué)計算機課程的學(xué)生尚未建立流程圖與程序之間的對應(yīng)關(guān)系,對于流程圖中的關(guān)鍵步驟使用何種關(guān)鍵指令存在認知上的困難,從而導(dǎo)致程序編寫的過程脫離流程圖。因此,教師需要幫助學(xué)生在程序流程圖與計算機程序的各條指令間建立聯(lián)系,將算法真正落實到程序的實際腳本當中。
(一)正向匹配,經(jīng)歷關(guān)鍵指令的探究過程
隨著算法越來越復(fù)雜,程序設(shè)計中所涉及的新指令也隨之增多。新指令的學(xué)習(xí)是除了算法分析外的另一個教學(xué)難點。因此,教學(xué)中,教師需要把握兩個要點:一是要給予學(xué)生充分的時間學(xué)習(xí)新指令,讓學(xué)生經(jīng)歷探究指令的過程;二是要將流程圖與指令進行一一對應(yīng),使知識產(chǎn)生前后的聯(lián)系。
【案例3】《列表存儲》一課程序設(shè)計
在分析完問答程序的升級版——隨機出題的問答程序后,流程圖隨即形成。教師讓學(xué)生選擇所需要的指令到腳本區(qū)。學(xué)生新建了“i”“得分”兩個變量,“問題”“答案”兩個列表,“在()和()之間取隨機數(shù)”“詢問”“回答”“如果…那么…否則……”等指令,將其拖到腳本區(qū)。
教師進一步引導(dǎo):變量i的取值范圍是多少?
生:有多少題目,就取到多少。
師:用“在()和()之間取隨機數(shù)”怎么表示?
生:表示成“在(1)和(題目數(shù)量)之間取隨機數(shù)”。
師:“題目數(shù)量”有沒有更好的表示方法?請你去“變量”類指令的面板區(qū)找一找。
經(jīng)過一番查找,學(xué)生找到了關(guān)鍵指令。
這時,教師請學(xué)生鉤選變量“i”前面的方框,使其顯示,再單擊指令觀察變量“i”的值有什么變化。
通過教師的提問引導(dǎo),學(xué)生提出猜想、驗證猜想,理解了新指令“隨機數(shù)”的含義。同樣,對于其他幾個關(guān)鍵的新指令,教師也可讓學(xué)生先行探究、嘗試,從而實現(xiàn)知識的內(nèi)化。
在這個過程中,教師以流程圖為藍本,一步步引導(dǎo)學(xué)生對其中的關(guān)鍵步驟所需要的指令進行探究、嘗試、驗證。學(xué)生經(jīng)歷了新知識的發(fā)現(xiàn)過程,將流程圖與指令、腳本聯(lián)結(jié)在一起,整體梳理了程序設(shè)計的思路。
(二)反向解析,強化對關(guān)鍵指令的理解
教師也可以通過讓學(xué)生給程序腳本添加注釋的方法,檢查學(xué)生對關(guān)鍵指令的理解程度。一般的程序設(shè)計軟件都帶有給腳本添加注釋的功能。按照教師的要求,學(xué)生可以在關(guān)鍵指令處添加注釋,寫明所用指令的用途。
【案例4】《列表存儲》一課程序設(shè)計
以《列表存儲》一課為例,關(guān)鍵指令的注釋如圖3。
通過正向?qū)⒘鞒虉D與關(guān)鍵指令進行匹配,反向給關(guān)鍵指令添加注釋的方式,學(xué)生經(jīng)歷了兩次程序的梳理,對流程圖和程序腳本之間的對應(yīng)關(guān)系有了更深刻的理解,對關(guān)鍵指令的使用方法也更明確,知識得以內(nèi)化。
三、聚焦關(guān)鍵差異,培養(yǎng)迭代思維
缺乏能激發(fā)真實需求的情境是導(dǎo)致學(xué)生較難提出合理化改進建議的原因之一。一方面,受到思維局限,學(xué)生對于自身制作的程序設(shè)計作品難以進行自我更新;另一方面,學(xué)生對于一些新指令的陌生感則限制了想象力的發(fā)揮。因此,在作品的改進設(shè)計環(huán)節(jié),教師要有意識地創(chuàng)設(shè)能激發(fā)真實需求的情境,多角度發(fā)散學(xué)生的思維,鼓勵學(xué)生說出自己的改進思路。
(一)自我修正,借助多維優(yōu)化更新程序
對于程序設(shè)計的優(yōu)化,學(xué)生思維受限的原因之一是缺少創(chuàng)新角度的點撥。課堂中,如果教師沒有提前設(shè)計學(xué)習(xí)支架,有效提示學(xué)生進行程序腳本的改進,而是直接讓學(xué)生自由發(fā)揮,往往很難達到預(yù)期的效果。在程序設(shè)計的拓展環(huán)節(jié),教師可以設(shè)計能激發(fā)學(xué)生探索新指令、解決新問題的合理情境或任務(wù),讓學(xué)生找出關(guān)鍵差異,然后帶著問題進一步探索。
【案例5】項目學(xué)習(xí)“有趣的圖形”中程序設(shè)計的改進
項目學(xué)習(xí)“有趣的圖形”中,學(xué)生通過循環(huán)嵌套的方式,學(xué)會了畫出一個由基本圖形旋轉(zhuǎn)而成的組合圖形。在后續(xù)的項目學(xué)習(xí)中,教師引導(dǎo)學(xué)生逐步優(yōu)化程序,并通過一組圖形的變化,尋找關(guān)鍵差異,學(xué)習(xí)新指令,從而不斷地將“過程”這一程序設(shè)計中的重要概念學(xué)實、學(xué)透。
1.圖形組的第一次變化(關(guān)鍵差異:基本圖形)
教師請學(xué)生說說腳本應(yīng)該如何修改。
學(xué)生:將每一段畫圖形的腳本中“內(nèi)層循環(huán)”改成畫正方形的腳本,即重復(fù)4次,右轉(zhuǎn)90度。
教師:這樣修改需要改動多處,有些麻煩,使用“過程”,一次修改即可。
(學(xué)生學(xué)習(xí)“過程”指令的運用)
學(xué)生:把三角形這一“過程”的名稱改成“正方形”,然后把過程腳本修改一次,主程序中的“過程”指令就自動改過來了。
2.圖形組的第二次變化(關(guān)鍵差異:基本圖形及其邊長)
學(xué)生已經(jīng)可以使用學(xué)過的“過程”指令來修改基本圖形的變化,但邊長的變化學(xué)生尚未掌握。
學(xué)生:每個正五邊形的邊長都不一樣,每次都要去修改正五邊形這個“過程”。
教師:“過程”是一段固定的、可多次使用的腳本,一經(jīng)定義,一般不隨意修改。嘗試添加一個參數(shù)“邊長”,有什么發(fā)現(xiàn)?
學(xué)生:有了參數(shù),就可以在帶參過程“正五邊形(邊數(shù))”里輸入數(shù)字,自由控制邊長。
3.圖形組的第三次變化(關(guān)鍵差異:基本圖形的邊長、邊數(shù))
通過前期優(yōu)化程序的經(jīng)驗,學(xué)生能夠想到再增加一個參數(shù)“邊數(shù)”,使用帶參過程“正多邊形(邊長)(邊數(shù))”來解決這個問題,其對“過程”的認識進一步豐富。通過三次優(yōu)化,學(xué)生經(jīng)歷了發(fā)現(xiàn)差異、學(xué)習(xí)新指令、修改腳本的過程,從而實現(xiàn)了程序迭代優(yōu)化。學(xué)生對于“過程”這一新知識點的認識由表及里,由淺入深,對于“過程”的應(yīng)用也更加得心應(yīng)手。
(二)分享互學(xué),借鑒他人之長優(yōu)化程序
在優(yōu)化程序的過程中,學(xué)生思維受限的另一個原因是缺少同伴間的交流分享。在分享作品、改善作品的過程中,抓住關(guān)鍵差異,聚焦優(yōu)化程序的切入點是非常重要的。此時,教師需要精心設(shè)計互學(xué)分享的支架,幫助學(xué)生打開思路,表達創(chuàng)意。
【案例6】《創(chuàng)編游戲》一課中的程序優(yōu)化
在教學(xué)《創(chuàng)編游戲》一課時,教師請學(xué)生先自主嘗試,在完成課本要求的基礎(chǔ)上,改進自己的游戲程序。一段時間后,教師請學(xué)生帶著學(xué)習(xí)單找找其他同學(xué)的作品,記錄變化。如圖4,生1在游戲中設(shè)置了多條路徑;如圖5,生2在游戲中添加了障礙物。
通過觀察記錄,學(xué)生發(fā)現(xiàn)了同伴設(shè)計中的亮點,記錄下了互學(xué)體驗,新的創(chuàng)意在交流中不斷迸發(fā),作品在相互借鑒中不斷臻于完善。
實踐證明,運用梳理關(guān)鍵步驟、尋找關(guān)鍵指令、聚焦關(guān)鍵差異等策略,能夠在一定程度上鍛煉學(xué)生的分解思維、算法思維、迭代思維,從而幫助學(xué)生更高效地達成學(xué)習(xí)目標,形成計算思維。
(浙江省杭州市筧橋小學(xué)? ?310021
浙江省杭州市采荷實驗學(xué)校? ?310020)