胡承豐



摘要:針對浙教版必修1《數據與計算》“算法的程序實現”模塊的教學,很多教師花了大量時間讓學生理解數據關系與邏輯推理,但多數學生仍然難以理解,更無法使用程序語言實現算法。此問題表象原因是學生無法建立算法的動態數據處理過程與靜態程序代碼之間的聯系,深層原因是缺乏從形象思維到邏輯思維之間的跨越橋梁。因此,作者結合所在學校學生的實際情況,創設特定的數字化學習環境,融入實物演示法、動畫演示法、列表演示法、流程圖演示法等方法,將抽象思維形象化、直觀化,體現形象思維顯性化的特點,幫助學生開啟算法學習之門,習得算法與程序奧秘。
關鍵詞:算法;形象思維;計算思維
中圖分類號:G434? 文獻標識碼:A? 論文編號:1674-2117(2021)14-0040-03
● 形象思維的引入
形象思維能夠把抽象的、難懂的概念或問題轉變為直觀的、形象的描述,使這些概念或問題更符合人們對客觀事物的認知規律,變得通俗易懂。錢學森認為,“科學工作源于形象思維,終于邏輯思維。形象思維源于藝術,所以科學工作是先藝術,后才是科學”。從教學規律來看,學生的思維發展過程是從具體形象思維到抽象邏輯思維。高中生具備了一定的抽象邏輯思維能力,但計算機算法的獨特性要求學生先要構造符合問題情境的數據模型,才能通過邏輯分析解決實際問題。邏輯思維能力強的學生能快速分析并找到解決問題的算法,而對邏輯思維能力不強的學生,教師則需要將抽象的問題直觀化、形象化,通過搭建思維轉換的腳手架,回歸抽象,幫助學生更輕松地理解問題的實質和內涵,從而提升學生的計算思維。
基于這種思維現象以及教學內容特點,筆者創設了問題提出、算法描述、算法設計、代碼實現及問題遷移的“算法五步教學法”的課堂教學模式(如圖1),嘗試將實物演示法、動畫演示法、列表演示法、流程圖演示法引入算法描述教學環節中,形象地展示算法在解決問題過程中的具體步驟,通過形象思維啟發抽象思維,降低思維難度,幫助學生更輕松地理解、掌握教學內容,激發學生學習程序與算法的興趣,促進學生計算思維的進一步發展及信息素養的提升。
● 形象思維的教學實踐
下面,筆者以冒泡排序算法為例,談談如何在“算法五步教學法”模式中的“算法描述”環節展開形象思維應用。
算法概念:冒泡排序是一種簡單的排序算法。它從后往前(或從前往后)遍歷要排序的數列,依次比較相鄰兩個元素,如果它們的順序顛倒就把它們交換過來。遍歷數列的工作重復進行,直到沒有再需要交換的,說明該數列已經完成排序。
算法描述:①從后往前依次比較相鄰的元素,如果前數比后數大就交換;②從最后一對到開頭的第一對,對每一對相鄰元素做同樣的工作,這樣在第1位的元素是最小的數;③重復步驟①和②,直到排序完成。
1.實物演示法
實物演示法是指教師采用有關實物、教具或游戲將教學內容生動形象地展示出來,學生通過觀察、思考獲得知識的一種教學方法,這樣的演示方法更貼近學生的生活實際。在冒泡排序的教學過程中,筆者設計了“交換號牌”游戲來模擬排序過程,由10位學生每人隨機拿一張號碼牌排成一隊,游戲規則是每人只可以和相鄰的兩位同學進行號碼牌的比較和交換,要求用最快的速度完成號牌從小到大的排序。游戲的引入極大地提升了學生的學習熱情,生動地展示了冒泡排序的算法思想,縮短了學生掌握算法的認識過程,促進了學生思維的發展,取得了良好的教學效果,游戲演示如圖2所示。
2.動畫演示法
動畫演示法是利用動態圖像來呈現算法執行的過程,以及執行過程中數據在時間和空間上的變化關系,在此基礎上進行分析思考,尋求解決問題的方法。動畫可以將抽象的算法形象化、直觀化,將數量關系具體化,將復雜的抽象思維轉化為形象思維,幫助學生理解算法的本質與內涵。筆者在講授冒泡排序算法時,通過動畫演示,不僅能夠將排序中的“趟數”“相鄰”等關鍵概念清楚地呈現出來,而且能使“比較”“移動”的過程一目了然。學生有了非常形象直觀的感受,理解起來要容易得多,而且可以通過重復觀看,加深算法理解。冒泡排序的動畫演示如圖3所示。
3.列表演示法
列表演示法可以把被感知的問題從背景中分離出來,使數據的呈現更直觀、數據間的關系更清楚,學生更容易分析得出問題的一般規律。當數據量較大時,如果能夠將數據用列表的方式表示出來,學生就可以通過觀察和比較,總結出算法思想。
計算機解決問題的方式與人類熟悉的思維習慣是有差異的,程序中變量的變化與算法流程之間的對應關系是學生理解算法的難點。在教學實踐中,筆者采用列表法作為突破難點的方式,通過列表直觀呈現數據與變量的變化關系,直觀顯示問題的解決過程,幫助學生由表及里逐步深入理解冒泡算法的思想。列表演示法描述冒泡排序算法如下頁表所示(以5個數升序為例)。
4.流程圖演示法
在教學過程中,筆者發現有不少軟件能將流程圖動態呈現和展示。Raptor軟件就是一個基于流程圖的可視化程序設計環境,它專門用于幫助學生可視化他們的算法,并避免語法上的包袱。Raptor程序是可視化創建,并通過跟蹤流程圖中的執行情況來可視化地執行,所需的語法保持在最低限度。它將抽象的算法變得直觀形象,將復雜的邏輯思維降階為學生更擅長、更容易理解的形象思維,讓學生更喜歡使用流程圖來表達他們的算法,并且,使用Raptor比使用傳統語言更容易成功地創建算法。使用Raptor為程序和算法的初學者鋪就了一條平緩、自然的學習階梯。
使用Raptor繪制流程圖克服了傳統流程圖無法直觀體驗算法運行實現效果的缺陷,將程序結構算法動態、直觀、真實地展現在了學生面前,幫助學生繞過思維的屏障,使他們能邊看邊思考,真正地理解程序的控制結構和算法思想,更輕松地學習程序設計。在具體教學過程中,筆者通過Raptor幫助學生理解冒泡排序算法。圖4為冒泡排序流程圖部分截圖。
● 結束語
實物演示法、動畫演示法、列表演示法、流程圖演示法四種方法在算法描述上存在功能遞進關系,不斷將形象思維向算法思維靠攏,使得解決方案變得條理化,算法的模型不斷清晰,教學中可以根據算法的特點選擇使用。
將抽象思維轉化為學生更易接受的形象思維,遵循了思維發展的過程,能夠幫助學生更輕松、更準確地理解程序和算法中的概念、規則以及數量屬性變化關系,從而提高學生的抽象思維能力,發展學生的程序思維,促進學生信息素養的提升,讓學生在算法與程序的知識海洋里盡情徜徉。
參考文獻:
[1]盧漢輝,楊瓊洲.淺談列表法在高中數學教學中的應用[J].中學數學研究,2016(03):8-10.
[2]涂元季.錢學森書信:第2卷[M].北京:國防工業出版社,2007.