




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