[摘 要] 中小學(xué)生的思維尚未發(fā)展成熟,面對(duì)較為復(fù)雜的編程問(wèn)題往往感到束手無(wú)策。流程圖以直觀呈現(xiàn)思路的優(yōu)勢(shì)幫助學(xué)生理解程序,從而更好地完成學(xué)習(xí)任務(wù)。文章以此為背景,對(duì)流程圖在編程課中的運(yùn)用進(jìn)行研究,提出了教育案例生活化、任務(wù)分析流程化、專項(xiàng)功能模塊化、問(wèn)題解決多樣化等策略,希望能夠?yàn)橐痪€教師帶來(lái)新的教學(xué)思路。
[關(guān)鍵詞] 流程圖;編程教學(xué);小學(xué)科學(xué);科學(xué)教學(xué)
隨著科技的發(fā)展,數(shù)字化和人工智能滲透在生活的方方面面,這一切的基礎(chǔ)是編程。流程圖是一種用規(guī)定的圖形、指向線及文字說(shuō)明來(lái)準(zhǔn)確、直觀表示算法的可視化學(xué)習(xí)工具,可以將復(fù)雜的、不可視的思維過(guò)程和思維方式清晰地呈現(xiàn)出來(lái),是編程教學(xué)中非常好用的輔助工具。
一、生活化案例促進(jìn)學(xué)生對(duì)編程邏輯的理解
在數(shù)字科技時(shí)代,信息科技課程的落地一定要突出“解決問(wèn)題”。
題1:早晨出門前查一下天氣預(yù)報(bào)。如果下雨,就帶傘上班;如果不下雨,就不帶傘上班。
題中出現(xiàn)兩個(gè)如果,意味著給了兩種選擇,會(huì)產(chǎn)生兩種結(jié)果。這個(gè)情境可以更好地幫助學(xué)生理解選擇結(jié)構(gòu)的意義和用法。
根據(jù)案例的邏輯可以畫出流程圖(圖1) ,它清晰地表明了程序是由上至下執(zhí)行的,在輸入S的值后,出現(xiàn)了兩個(gè)執(zhí)行分支。決定最終執(zhí)行走向的是S和Y的關(guān)系。如果S=Y,那么輸出“帶傘上班”,否則就輸出“不帶傘上班”。
二、流程化分析培養(yǎng)學(xué)生解決實(shí)際問(wèn)題的能力
實(shí)際生活中的問(wèn)題總是多而復(fù)雜的。學(xué)生需要運(yùn)用流程化分析將任務(wù)分解為一系列實(shí)施步驟,再將每一個(gè)步驟分解為若干可處理的子問(wèn)題,分開進(jìn)行解決。
下面以編寫旅館送餐機(jī)器人的程序來(lái)例證流程化分析的有效性:首先,分析送餐機(jī)器人需要實(shí)現(xiàn)的功能;只要輸入房間號(hào),它就能自動(dòng)到達(dá)對(duì)應(yīng)的房間門口。按照事件發(fā)生的順序,其運(yùn)行大致可以分為五個(gè)執(zhí)行步驟,依次是接收指令—行進(jìn)到電梯口—坐電梯—從樓梯到對(duì)應(yīng)的房間—回到初始位置。至此,完成了第一步的分解。在所有功能中,機(jī)器人乘坐電梯上下的過(guò)程最為復(fù)雜,需要重點(diǎn)突破。假設(shè)房間號(hào)為變量S,酒店房間號(hào)的第一位代表樓層信息,如果S的第一位為1,就是在一層,直接按照設(shè)定的路線到相應(yīng)的房間,否則就要通過(guò)電梯到達(dá)相應(yīng)的樓層。機(jī)器人需不斷接收電梯的樓層信息,判斷是否到達(dá)了指定樓層,如果沒到達(dá)指定樓層就繼續(xù)坐電梯;如果到達(dá)了,則根據(jù)預(yù)設(shè)的路線走到相應(yīng)的房間。據(jù)此,可分析并畫出流程圖(圖2)。
這是電梯上行的算法。當(dāng)然,若要同時(shí)實(shí)現(xiàn)電梯的上行和下行功能,就需要用到流程圖的嵌套。但這樣的流程圖畫起來(lái)非常復(fù)雜,學(xué)生也難理解。較好的解決方案是讓學(xué)生分別畫出電梯上行的流程圖和下行的流程圖,然后將兩個(gè)流程圖放在一起作對(duì)比。通過(guò)繪制、對(duì)比,學(xué)生會(huì)發(fā)現(xiàn)兩個(gè)流程圖只有細(xì)微的區(qū)別,上行執(zhí)行的是樓層遞增的算法F=F+1,下行的程序執(zhí)行的是樓層遞減的算法F=F-1。經(jīng)歷了這樣的探究過(guò)程,學(xué)生分析問(wèn)題、解決問(wèn)題的能力都得到了極大提升,為項(xiàng)目的推進(jìn)打下堅(jiān)實(shí)的基礎(chǔ)。
在此案例中,酒店的房間很多,如果挨個(gè)給每個(gè)房間編寫程序,其工作量太大??梢韵染帉憦臉翘莸阶髠?cè)第一個(gè)房間的程序,調(diào)試完成后將其設(shè)為模塊一。從樓梯到第二個(gè)房間必須經(jīng)過(guò)第一個(gè)房間,因此模塊二只需要在模塊一后面補(bǔ)充從第一個(gè)房間到第二個(gè)房間的一小段程序即可。根據(jù)這個(gè)思路很快就可以完成一層樓的程序設(shè)計(jì)。由于每層樓的結(jié)構(gòu)大致相同,其他樓層可以直接引用第一個(gè)樓層的程序模塊。每層特殊的房間單獨(dú)處理即可。程序模塊化將功能點(diǎn)統(tǒng)合成一個(gè)整體,方便學(xué)生調(diào)用和修改。在這種思路指導(dǎo)下建立起來(lái)的系統(tǒng)結(jié)構(gòu)靈活,支持多人協(xié)作,可以靈活地進(jìn)行組合和分解,因其焦點(diǎn)分散而大大提高了系統(tǒng)的健壯性和靈活性,所以更易進(jìn)行改造升級(jí)。
通過(guò)上面的案例不難看出,流程化分析將多維要求平面化、序列化、可視化,為解決復(fù)雜問(wèn)題提供了一條可行的路徑,大大提高了學(xué)生解決實(shí)際問(wèn)題的能力。
三、多樣化求解激發(fā)學(xué)生的創(chuàng)新思維
心理學(xué)研究表明,創(chuàng)新多產(chǎn)生于解決不確定性問(wèn)題的探究過(guò)程中。在編程教學(xué)中鼓勵(lì)“一題多解”能拓展學(xué)生的思路,培養(yǎng)和發(fā)揮學(xué)生的創(chuàng)造力。如以下案例中,正是因?yàn)橛辛颂骄窟^(guò)程,激發(fā)了學(xué)生的創(chuàng)新思維,學(xué)生給出了三種不同的解法。
題2:編寫一個(gè)程序,判斷出輸入的三個(gè)數(shù)中的最小值。
方法一:如圖3所示,輸入三個(gè)數(shù),先用第一個(gè)數(shù)和其他兩個(gè)數(shù)進(jìn)行比較,如果它是最小數(shù),就將它的賦值給變量min并輸出,否則就進(jìn)入下一輪的比較。第二輪用第二個(gè)數(shù)與其他兩個(gè)數(shù)比較,如果它是最小的,就將它的賦值給變量min,否則就進(jìn)行第三輪比較。最后用第三個(gè)數(shù)和其他兩個(gè)數(shù)比較,通過(guò)三輪比較找到其中最小的數(shù),將它的賦值給變量min并輸出。這個(gè)思路就是要一個(gè)個(gè)對(duì)比, 煩瑣但有效。在面對(duì)少量數(shù)的比較時(shí),我們也常會(huì)采用這種方法。
方法二:如圖4所示,設(shè)第一個(gè)數(shù)為a,第二個(gè)數(shù)為b,第三個(gè)數(shù)為c。先將a和b比較,將其中較小的數(shù)賦值給min,再用min和c進(jìn)行比較,將其中較小的數(shù)賦值給min。最后輸出min的值就可以了。這個(gè)思路就像打擂臺(tái),兩個(gè)數(shù)比較,誰(shuí)小誰(shuí)留下,然后用留下的數(shù)和第三個(gè)比較,留下其中較小的數(shù),最后留下的就是三個(gè)數(shù)中的最小值。
方法三:如圖5所示,設(shè)第一個(gè)數(shù)為a,第二個(gè)數(shù)為b,第三個(gè)數(shù)為c。先將a賦值給min,然后用min和b比較,將其中較小的數(shù)賦值給min,再用min和c進(jìn)行比較,將其中較小的數(shù)賦值給min。這種方法就像守擂賽。先指定一個(gè)數(shù)為擂主,其他的數(shù)和它比較,誰(shuí)小就成為新的擂主,一輪一輪比下去,比到最后,那個(gè)“擂主”就是我們要找的最小的數(shù)。
流程圖可清晰地展示思維的整個(gè)過(guò)程,包括輸入、處理和輸出以及其中的每一個(gè)環(huán)節(jié)之間的邏輯關(guān)系,揭示思維發(fā)展的路徑。學(xué)生可以在流程圖的引導(dǎo)下靈活進(jìn)行思維的發(fā)散和聚焦,用自己的創(chuàng)意來(lái)完成作品。從本案例看,三種方法都有自己的道理,教師不能輕易去肯定或否定。但要引導(dǎo)學(xué)生理解采用不同方法解決同一問(wèn)題時(shí)會(huì)存在時(shí)間、效率上的巨大差別。
一題多解的分析讓學(xué)生的眼界更寬廣,思維更靈活,在這個(gè)過(guò)程中學(xué)生能自然認(rèn)識(shí)到提高算法效率的必要性。此案例只進(jìn)行了三個(gè)數(shù)的比較,似乎每種方法都是可行的,如果參與比較的數(shù)的量特別巨大,就要用到更高級(jí)的算法。中小學(xué)階段暫時(shí)不必深入了解,但教師可以將這個(gè)問(wèn)題作為一個(gè)驅(qū)動(dòng)性任務(wù)留給學(xué)生,以激發(fā)學(xué)生持續(xù)探究的欲望。
四、標(biāo)準(zhǔn)化框圖提升學(xué)生合作學(xué)習(xí)的效率
“獨(dú)學(xué)而無(wú)友,則孤陋而寡聞?!蔽覀儚哪撤N經(jīng)歷中得出經(jīng)驗(yàn)后,就會(huì)不自覺地將這種經(jīng)驗(yàn)套用在其他事上,次數(shù)多了,慣性就產(chǎn)生了,從而形成“路徑依賴”。
在編程實(shí)踐中,如果程序運(yùn)行后沒有得到想要的效果,肯定是哪里出錯(cuò)了。設(shè)計(jì)者本人如果已經(jīng)經(jīng)過(guò)認(rèn)真思考和多次檢查,但仍然找不到問(wèn)題所在,很可能是陷入了某種“路徑依賴”或者自身在此處有認(rèn)知盲區(qū)。這時(shí)候應(yīng)及時(shí)和同學(xué)或老師溝通,通過(guò)合作解決問(wèn)題。在溝通中,由于學(xué)生不是專業(yè)的編程人員,常常無(wú)法準(zhǔn)確表達(dá)出自己的設(shè)計(jì)思路和疑問(wèn),被求助者則需要從設(shè)計(jì)者的表達(dá)中努力找尋設(shè)計(jì)的原理和邏輯,借以分析判斷出問(wèn)題所在。流程圖采用標(biāo)準(zhǔn)化的框線來(lái)制圖,被求助者通過(guò)它就能清楚地了解設(shè)計(jì)者的思路和程序運(yùn)行的邏輯,極大地提高了合作學(xué)習(xí)的效率。
五、結(jié)語(yǔ)
流程圖繪制簡(jiǎn)單,可以清晰地描述完整的流程框架和思維過(guò)程,幫助學(xué)生厘清思路,觸發(fā)創(chuàng)作靈感?!翱磮D說(shuō)話”的教學(xué)方式符合小學(xué)生的認(rèn)知特點(diǎn)。學(xué)生通過(guò)繪圖、讀圖、議圖相結(jié)合的方式學(xué)習(xí)編程能更好地理解和掌握算法,發(fā)現(xiàn)和處理系統(tǒng)運(yùn)行中的錯(cuò)誤和瑕疵。《義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)》中四次提到流程圖,可見,充分肯定了其在思維提升和教育引導(dǎo)中的作用。
參考文獻(xiàn)
[1]魏曉風(fēng),蔣家傅,鐘紅,等.我國(guó)中小學(xué)編程教育發(fā)展的路徑思考[J].中國(guó)教育信息化,2018(24):1-4,9.