摘要:隨著信息技術課程的發(fā)展,計算思維已經(jīng)成為信息技術核心素養(yǎng)四要素之一,如何培養(yǎng)學生具備一定的算法思維能力,已成為每一位信息技術教師面對的課題。筆者依托圖例化教學方式,巧妙搭建了問題分析與程序代碼之間的橋梁,培養(yǎng)學生構建算法思維的能力,落實了計算思維的培養(yǎng)與提高。
關鍵詞:核心素養(yǎng);計算思維;圖例化;算法思維
普通高中信息技術學科的核心素養(yǎng)概括為信息意識、計算思維、數(shù)字化學習與創(chuàng)新、信息社會責任四個要素,其中計算思維是指個體運用計算機科學領域的思想方法,在形成解決問題方案的過程中產(chǎn)生的一系列思維活動。本人嘗試以圖例化分析為依托,編制適合計算思維培養(yǎng)的學案,培育思維構建方法,有效地培養(yǎng)了學生的計算思維能力。
一、 現(xiàn)狀分析:忽視計算思維的算法教與學
算法問題的解決是由問題分析、思維構建、程序實現(xiàn)三部分組成的,這一過程中算法思維構建是關鍵。然而在實際教學活動中,教師由于缺乏有效的思維構建方式,而不自覺地將算法思維構建簡單化;學生會忽視算法思維對程序理解的重要作用,反而把機械的讀程序作為理解和學習算法的途徑。于是便會出現(xiàn)教師無論怎么教也無法讓學生理解算法,學生不管怎么努力也找不到有效的算法學習方式的怪圈。
因此,本人設計了圖例教學法,來幫助教師開展有效的算法思維教學,幫助學生形成高效的算法思維方式。
二、 探究與實踐:“展,推,解”,圖例化算法教學實踐
圖例教學法可以靈活運用于新課講授、思維構建與難題解決等情況,分別采用“展、推、解”三種不同手段,來解決算法學習、問題分析和難題解題上碰到的不同問題。
(一) 展:循序漸進,圖例展知識要點
高中算法教學中需要學生掌握解析算法、枚舉算法、排序算法(冒泡排序和選擇排序)、查找算法(順序查找和對分查找)、遞歸算法等基礎算法。
例如對分查找算法,我們可以將數(shù)組中的數(shù)據(jù)假想成一列連續(xù)的數(shù)據(jù)塊,而上標i、下標j和查找位置m的變化可以設計成由“←”和偽代碼組成的符號來演示:
以查找鍵值key=25為例
算法思想總結如下:
1. 圖1中,出現(xiàn)了a(m)>key,下標j移動到m-1的位置上:若a(m)>key,則j=m-1。
2. 圖2中,出現(xiàn)了a(m) 3. 圖3的情況與圖2相同,但是不能將此圖去掉,因為它展示了對分查找算法是一個按照固定規(guī)律重復執(zhí)行的算法:對分算法是一個循環(huán)算法。 4. 圖4中,我們可以明顯地看到,上標的i已經(jīng)移動到下標j的下面,此時算法結束:采用“Do While i<=j”的結構來實現(xiàn)對分查找。 圖例的演示和總結,還能幫助學生理解程序設計中相應的代碼。 偽代碼與圖例的關系如下: i=∶j=n Do While i<=j由圖4歸納而來 m=(i+j)\\2圖1,圖2中表示 IF a(m)=key ThenExit do歸納得來 IF a(m)>key Thenj=m-1Else i=m+1圖1,圖2中歸納得來 Loop IF i>j Then查找失敗Else輸出查找結果'從圖4中推論得出 學生通過圖例的演算推導,不僅理解了對分查找的思維過程,理解了標準對分查找程序代碼中各段代碼的作用,而且對于對分查找結束后結果判斷表達式的理解也起到了很重要的作用。 (二) 推:情景再現(xiàn),圖例推思維過程 實際情景類的算法的問題往往以實際問題為背景,此時的算法是根據(jù)實際問題分析得到的,這類算法問題才是日常程序設計中真正解決的問題,也是我們在教學中要培養(yǎng)的計算思維的精髓所在。 如題:【摘自金華一中《信息技術選考全案導學》】 經(jīng)典的狐貍抓兔子故事:圍繞著山頂有10個洞,狐貍要吃兔子,兔子說:“可以,但必須找到我,我就藏身于這下個洞中,你從10號洞出發(fā),先到1號洞找,第二次隔1個洞找(即3號洞),第三次隔2個洞找(即第6號洞),以后如此類推,次數(shù)不限。”但狐貍從早到晚進進出出了1000次,仍沒有找到兔子。問兔子究竟藏在哪個洞里? 實現(xiàn)上述功能的程序如下,但加框處代碼有誤,請改正。 Private Sub Command1_Click()Const n = 10Dim hole(10) As Integer Dim i,j,number As IntegerFor i=1 To 10hole(i)=0 Next inumber=0For j=1 To 1000 number=number+1(1)應改為 i=number Mod n If i=0 Theni=1(2)應改為 hole(i)=1 Next jFor i=1 To nIf hole(i)=0 Then List1. AddItem“兔子可能藏在”& Str(i) &“號洞”End IfNext iEnd Sub 筆者采用圖例化方式再現(xiàn)狐貍尋找的過程,幫助學生理清思路,找到突破口。 圖例設計分析: 1. 由于這10個洞不是線性排列的,而是成環(huán)形的,因此圖例表示時采用環(huán)形來表達各個洞的排列。 2. 狐貍尋找時洞穴號是一個變化的數(shù)字,且有一定的規(guī)律。 由此得到如下所示的圖例: 問題解決: “(1)”處代碼原為“number=number+1”,通過上面的分析可知number=上一次的洞穴數(shù)+第幾次找洞穴且變量j代表了現(xiàn)在是第幾次找洞穴。
故應當改為“number=number+j”。
“(2)”處代碼原為“if i=0 Then i=1”,從圖1可以看到當尋找洞穴號為10的時候(即number=10)時,變量i會計算出0,而此時需要尋找的洞穴是10號。
故應當改為“If i=0 Then i=n”或“If i=0 Then i=10”。
我們利用圖例將狐貍尋找兔子的過程再現(xiàn),即理解了算法設計的思維過程,也通過圖例總結出了算法設計的關鍵點,再來解決程序代碼改錯也就水到渠成了。
(三) 解:抽絲剝繭,圖例解難題要點
有不少算法雖然給出了具體的算法過程,但是將這一過程轉化為程序代碼后,難免會有一些設計上的變化,如果學生能夠在閱讀程序過程中輔以圖例演算,那么就能夠在難題解決上找到突破口。
如題:【摘自2016年4月浙江省高中學業(yè)水平統(tǒng)一考試】
某數(shù)據(jù)壓縮方法描述如下:
1)原始數(shù)據(jù)中,某數(shù)不為0且相鄰無重復,壓縮數(shù)據(jù)用該數(shù)據(jù)表示;2)原始數(shù)據(jù)中,某數(shù)為0且相鄰無重復,壓縮數(shù)據(jù)用兩個數(shù)表示,第1個位0,第2個位0;3)原始數(shù)據(jù)中,某數(shù)據(jù)相鄰有重復,壓縮數(shù)據(jù)用3個數(shù)表示:第1個位0,第2個為重復數(shù)的個數(shù),第3個為該數(shù)本身;
根據(jù)上述壓縮方法,對應的解壓縮方法示例如圖a所示。
程序運行界面如圖b所示。
部分代碼如下:
pa=1∶pb=1Do While pa<=nfirstdata=a(pa)
If firstdata<>0 Then示例1情況處理b(pb)=firstdata
pa=pa+1∶pb=pb+1
Elsecount=a(pa+1)If count=0 Then示例2情況處理
b(pb)=0pa=①∶pb=pb+1Else示例3情況處理
Fori=1 To count②
Next ipa=pa+3∶pb=pb+count
End If
End If
Loop
Text2. Text=Str(b(1))For i=2 To ③
Text2. Text=Text2.Text+,+Str(b(i))
Next i
由于本題中涉及兩個不同的數(shù)組,且數(shù)組之間有數(shù)據(jù)的賦值,我們可以設計上下兩個圖例來演示它們的數(shù)據(jù)交換過程,并用題目中所給的數(shù)據(jù)為演算數(shù)據(jù)。結合部分程序代碼,我們可以用圖例還原兩個數(shù)組之間數(shù)據(jù)交換的全部過程。
問題解決:
“①”處代碼為示例2情況下將數(shù)組b賦值完后,兩個數(shù)組指針pa和pb的移動,從圖中可以看到對于示例2需要數(shù)組a中出現(xiàn)兩個連續(xù)的0,因此處理完成后要跳過這兩個0。故答案為:pa=pa+2
“②”處代碼為示例3情況下將數(shù)組a中從pa出發(fā)第3個元素的值賦值到數(shù)組b中,且要放在count個元素中。故答案為:b(pb+i-1)=a(pa+3)
“③”處代碼為最后輸出數(shù)組b中的內容,從圖中可以看出指示數(shù)組位置的指針pb在每一次完成處理后,肯定會移動到下一次處理的開始位置,因此最后統(tǒng)計數(shù)組b中有多少元素時只需要將pb-1就可以得到。故答案為:pb-1
該題的算法演變過程非常的精準,兩個指針pa和pb的移動也非常的講究。我們通過圖例的方式,完美地將算法思想與程序代碼結合,即分析了算法中的變化過程,也讓學生很容易地理解了算法的代碼,從而順利地解決了題目中的難點。
圖例化教學的核心在于過程的展示、思維的推理和模型的解釋,科學合理地運用圖例來解釋算法、構建思路和重現(xiàn)過程,能夠有效地幫助學生理解算法的精要。運用圖例教學法遵循了從感性到理性的演變,從感性的圖例來推導出理性的代碼,更重要的是在問題分析過程中讓學生體會到了算法設計的真實思路與思維方式。這是一種能力上的鍛煉與提高,也為我們培養(yǎng)學生的計算思維起到了至關重要的作用。
參考文獻:
[1]普通高中信息技術課程標準(征求意見稿)[S],2016.
[2]陶增樂等.算法與程序設計[M].浙江教育出版社,2005.
作者簡介:張霖,浙江省義烏市,義烏市第四中學。endprint