




一、思維可視化工具的分類
2017年8月,筆者參加了“如何運用思維可視化技術提升中小學自主學習能力”的專題學習,了解了思維可視化技術在中小學教學應用領域的分類、特點等。筆者根據所學理論,結合自身教學實踐,總結出三種思維可視化方式,分別簡稱為圖形法、圖表法和動畫法。
圖形法指利用簡單的圖形符號、字符標識、箭頭指向等表示算法執行的步驟、過程和方法的思路,并最終獲得解題結果的方法,它是分析算法與程序問題的常用方法。圖表法指利用表格示意的方式清晰地將算法過程和規律推算出來,可以將繁雜的程序過程、龐大的數據運算程式化、清晰化,并幫助操作者獲得正確的結論。動畫法指采用動態圖形與圖像的處理技術,借助相應的動畫制作軟件生成一系列的景物畫面,并將復雜、快速、動態的算法運行過程,轉化成直觀的、形象的、清晰可見的模擬畫面或情境,從而解決算法與程序問題。
二、思維可視化工具在算法教學中應用的有效途徑
算法與程序設計課程教學的最終目的是培養具有信息素養的公民,使其能解決日常生活中的實際問題。下面,筆者談談應用思維可視化工具巧解算法問題的有效途徑。
(一)用圖形法進行算法推理
在解析排序問題時,筆者引導學生充分利用草稿紙,記錄解題過程,標識代碼中的變量表示含義,并聯系前后文進行推理解題(切忌憑空想象),一步一個腳印推理得出算法規律和結論。例如,在解排序題時,如果學生只憑想象,很容易遺忘步驟,導致解題錯誤。
例1:表1列出了存放在數組d中的8名學生身高(單位:厘米)的數據,若采用冒泡排序法進行升序排列,并自右向左進行比較和交換,那么兩輪排序后數據交換總次數為( )。
A.11 B.10 C.9 D.8
【解析】本題是典型的冒泡排序算法問題,題目落腳點為求“兩輪排序后數據交換總次數”。因此,用圖形法思維導圖進行推算,對產生交換位置通過符號進行標注,兩輪推算完成后可以通過標記符號的總數得到最終的結果(如圖1),這樣解題正確率可大大提高。本題答案為A。
例2:使用對分查找算法對22個有序數組成的序列進行查找,查找失敗時關鍵字比較次數至少需要( )。
A.3次 B.4次 C.5次 D.6次
【解析】此題意在考查對分查找算法思想。關鍵問題是查找失敗時關鍵字比較次數至少需要多少次。若使用公式int(log)+1解題就會出錯,誤選為C。利用圖形法思維導圖分析中間數的變化,將推算過程利用圖示法一一記錄下來(如圖2),容易得出正確答案為B,因為通過公式計算只能算出最多失敗比較次數,而此題必須將解題過程描述出來,可以得出向前查找與向后查找結果不一樣,這樣才能得到正確答案。
(二)用圖表法進行算法推理
表格可以整潔而又清晰地采集、匯總相關數據。在解析循環結構程序時,教師應培養學生利用圖表的技能與習慣,聯系程序的前后文一步一個腳印地推理,從而通過圖表推算出算法的發展規律與結論,理清算法與程序問題。
例3:某算法的流程圖如圖3所示,依次輸入值3,2,1,-1后,該算法的輸出結果為( )。
A.3 B.4 C.5 D.6
【解析】此題主要考查循環程序及變量的賦值變化過程。根據題意“依次輸入值3,2,1,-1”后,條件不成立時執行循環體,條件成立時退出循序,輸出的值,結束程序。變量、、的值過程變化情況通過圖表的方式進行列舉(見表2),得出正確結果為A。
例4:小吳為了研究冒泡排序過程中數據的“移動”情況,編寫了一個VB程序。程序功能如下。在列表框list1中顯示排序前數據(存儲在數組a中),在文本框text1中輸入初始位置(即下標值),單擊“排序”按鈕command1后,在標簽label1中顯示指定初始位置的數據在排序過程中的位置變化情況,排序后的數據顯示在列表框list2中。
實現上述功能的VB程序如下,但加框處代碼有錯,請改正。
Dim a(1 To 8) As Integer
Dim As Integer
Private Sub Form_Load()
a(1) = 30: a(2) = 47: a(3) = 30: a(4) = 72
a(5) = 70: a(6) = 23: a(7) = 99: a(8) = 24
= 8
For = 1 To 8
List1.AddItem str(a())
Next
End Sub
Private Sub Command1_Click()
Dim As Integer, As Integer, As Integer
Dim pos As Integer
Dim As String
= Text1.Text
pos = Val(Text1.Text)
For = 1 To - 1
For = To i + 1 Step -1
If a( ) < a( - 1) Then
k=a( )
a( - 1) = a( )
a( ) = k
‘如果pos位置的數據參與交換,則更新pos值,記錄pos變化位置
If pos = Then
pos = - 1
= + "→" + Str(pos)
Else
pos =
= + "→" + Str(pos)
End If
End If
Next
Next
Label1.Caption = "位置變化情況:" +
For = 1 To
List2.AddItem Str(a())
Next
End Sub
【解析】此題考查冒泡排序,其算法核心結論是:個數排序就是尋找-1個最值的過程,尋找最值的過程是從最后一個位置開始,逐個往前,相鄰的兩個數依次比較,讓最值自動冒上來。比較規則就是,如果后面的數小就交換兩者的值。總結口訣就是:排序-1趟,每趟從后往前比,相鄰兩個比,前大后小就交換。第一趟排序原理的過程如圖4所示。
至此,第一趟排序結束。從圖4可見,最小值23已經位于第一個位置了,同時經過第一趟排序,pos的值被更新為6。其他排序趟,可對照進行。程序錯誤第二處,因為else是除pos= 的所有情況都包括進來,每次變化(即每次比較)都重新將pos賦值為,顯然違背題意。故應該改進elseif pos= -1 then
應用圖表法并結合任務驅動教學法,可以將繁雜的程序過程和龐大的數據運算程式化、清晰化,讓學生由被動地接受知識轉變為主動地尋求知識,由原來“要我學”轉變為“我要學”,改變學生傳統的學習觀,使其在完成“任務”的過程中不斷地獲得成就感,從而增強學習的自信心,激發學習算法與程序設計的熱情和興趣。
(三)用動畫法進行算法推理
動畫法應用于信息技術的教學具有獨特的優勢,因為信息技術教師具備信息處理的先決條件和技術優勢。筆者在分析復雜的、抽象的算法問題時就是采用此途徑加以解決。
例5:在進行冒泡排序新課教學中,有5個數組元素:序號1,數據9;序號2,數據28;序號3,數據6;序號4,數據17;序號5,數據12。通過冒泡排序的完整過程,得出排序后的正確結果。
【解析】此題考查學生對冒泡排序的理解能力。通過給定的5個數據,根據冒泡排序的算法規則,從第5個數開始,依次與第4個數進行比較,若比前面的數小,則交換順序,依次類推。整個過程筆者利用PowerPoint 2010的自定義動畫功能,完成冒泡排序的模擬過程。
算法與程序設計中的很多算法思想,原理是類似的。教師可用動畫法思維可視化方式進行算法推理,分析總結,方便學生理解和比較,提高學生的學習效率。
例6:冒泡排序的程序實現問題,代碼為:
for =1 to -1 ‘記錄加工的遍數,由1變到-1
for = to +1 step -1 ‘記錄一遍加工中數組下標由變到+1
if a( )<a( -1) then ‘如果a( )比a( -1)小,d( )與d( -1)互換
t=a( ): a( )=a( -1): a( -1)=t
endif
next
next
教學過程中筆者首先要求學生掌握這種冒泡算法過程,讓學生明確冒泡的過程和特點。在考查過程中可能出現其他冒泡形式。例如:
For = To 2 Step -1
For = 1 To - 1
If a( ) > a( + 1) Then
= a( ):a( ) = a( + 1):a( + 1) =
End If
Next
Next
這就是從上往下冒泡的過程。學生在掌握基本冒泡后可以對比分析算法的區別,加深印象,并在這個基礎上再引出冒泡兩兩比較結束后,如不發生交換,則表示排序完成的算法。
=1
Flag=true ‘表示有互換
Do while < = - 1 and flag
flag=false
for = to + 1 step -1
if a( ) < a( -1) then
k=a( ):a( ) = a( -1):a( -1) =
flag =true ‘表示有互換
end if
next
=+1
loop
通過flag標記是否發生交換,如沒有交換則退出循環,在學生理解冒泡的基本原理后增大難度,這樣易于總結、理解。
此外,兩兩比較不一定是兩個連續數值比較,也可以是不連續的數值比較。代碼如下:
For = 1 To - 1
For = + 1 To
If h()> h( ) Then
t = h():h() = h( ):h( ) = t
End If
Next
Next
每趟中數值比較過程都是與當前要排序的位置上的數值比較,通過比較也可以實現一趟比較后將所有數值比較一次,得到排序結果。這種排序與基本的冒泡有很大不同,如果學生單獨碰到類似的題目可能會混淆概念。筆者將它歸類整理,并用動畫法加以驗證,以加深學生的印象,提高學生的理解能力。
三、教學反思
思維可視化是目前中小學教學中廣泛應用的一種有效的信息與知識整理工具,一種激發思維增長的可視化工具。思維可視化的價值體現植根于人的思考力、思想、文化內涵和創造力,同時也反作用力于思維素養的提升。教師可以將多種類型的思維可視化方式綜合應用于信息技術教學,但絕不能濫用,要處理好以下問題。
其一,思維可視化只是一個工具,它不一定適合所有人。其應用效能高低取決于使用者的思維深廣度、悟性、堅持實踐的態度和最終的習慣養成。如果還沒有使用過,請不要無視它;當獲得一些經驗和收獲時,也不要過分拔高它。
其二,學習思維可視化技術必須遵循科學規律。學習過程為:明晰原理—掌握繪制方法(發散性思維)—掌握繪制技巧(關鍵詞提煉、布局、修飾)—體現個人特色—擴大各個領域應用—體現思考過程—全局化過程。
其三,思維可視化的應用精髓在于提升使用者思維能力。科學應用思維可視化工具可以讓使用者思路更清晰、閱讀更方便、知識體系更結構化、重點更突出,并結合顏色、文字修飾、圖片、標記等元素凸顯關鍵點和視覺效果,充分發揮信息的大聚合功能優勢,促進信息和知識的有效記憶與理解。
(作者系浙江省杭州市富陽區教育發展研究中心高級教師)
責任編輯:祝元志