摘?要:高中信息技術(shù)新課標(biāo)將培養(yǎng)學(xué)生的信息技術(shù)學(xué)科核心素養(yǎng)作為了課程目標(biāo)。計(jì)算思維是信息技術(shù)學(xué)科核心素養(yǎng)中非常重要的一個(gè)維度,本文以查找算法為例,初步探討了基于問題解決為核心的計(jì)算思維培養(yǎng)。
關(guān)鍵詞:高中信息技術(shù)新課標(biāo);核心素養(yǎng);計(jì)算思維;基于問題
浙江省在2014年頒布了新的高考方案,將信息技術(shù)和通用技術(shù)合二為一,組成了技術(shù)學(xué)科作為高考七選三中的一門學(xué)科,成績(jī)計(jì)入高考總分。信息技術(shù)的考試方式也由上機(jī)考試轉(zhuǎn)變成紙筆考試,而信息技術(shù)學(xué)科中的重要學(xué)科內(nèi)容《算法與程序設(shè)計(jì)》也成為考查的重點(diǎn),同時(shí)也是學(xué)生學(xué)習(xí)的難點(diǎn)。
一、 《算法與程序設(shè)計(jì)》模塊學(xué)習(xí)中學(xué)生的常見難點(diǎn)問題
(一)開關(guān)變量的設(shè)置與使用
例1?【2015年10月選考真題】n個(gè)數(shù)據(jù)的冒泡排序需要經(jīng)過n-1遍加工,每一遍加工自下而上比較相鄰兩個(gè)數(shù)據(jù),把較小者交換到上面。當(dāng)某一遍加工過程中沒有數(shù)據(jù)交換,說明數(shù)據(jù)已經(jīng)有序,無需進(jìn)一步加工。為此對(duì)算法進(jìn)行優(yōu)化,編寫了一個(gè)VB程序,功能如下:運(yùn)行程序時(shí),在列表框List 1中顯示排序前數(shù)據(jù),單擊“排序”按鈕Command 1,在列表框List 2中顯示這些數(shù)據(jù)按升序排序后的結(jié)果,在標(biāo)簽Label 3中顯示排序過程的加工遍數(shù)。
實(shí)現(xiàn)上述功能的VB代碼如下,但加框處代碼有錯(cuò),請(qǐng)改正。
定義變量及初始化略
Private Sub Command1_Click()
Dim flag As Boolean?flag值為True表示一遍加工中發(fā)生過交換
i=1
flag=True
Do While i<=n-1 or flag=True
flag=False
For?j=n?To?i+1?Step-1
If a(j) k=a(j):a(j)=a(j-1):a(j-1)=k Flag=True End If Next?j i=i+1 Loop Label3.Caption=”排序過程的加工遍數(shù)為”+str(i) 輸出略 End Sub 分析:題目通過對(duì)教學(xué)大綱要求掌握的冒泡排序算法做了一定的改進(jìn),引入邏輯型變量作為開關(guān)變量使用來考查學(xué)生。由于外層循環(huán)從原來的For循環(huán)變化為Do while循環(huán),并且使用了由邏輯運(yùn)算符連接的關(guān)系表達(dá)式(方便使用開關(guān)變量),造成許多學(xué)生對(duì)算法的理解及知識(shí)的遷移出問題。這也體現(xiàn)出學(xué)生利用計(jì)算機(jī)解決問題的過程中缺乏對(duì)邏輯型變量的深入理解及算法遷移的能力。 (二)合理數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)的抽象 例2?編寫解決如下問題的程序。一共十名士兵圍坐一圈。每人有一個(gè)編號(hào)分別為1,2……10。以數(shù)值n進(jìn)行循環(huán)報(bào)數(shù)(該數(shù)值由排長(zhǎng)決定),報(bào)到n的士兵出列,出列后下一個(gè)士兵以1開始繼續(xù)報(bào)數(shù),循環(huán)往復(fù)直到全部士兵出列,求出列士兵的編號(hào)順序? 分析:該問題是一個(gè)典型的約瑟夫環(huán)問題。題目要讓士兵圍坐一圈,如何抽象士兵并使其圍坐一圈,是將實(shí)際問題抽象特征、建立結(jié)構(gòu)模型、合理組織數(shù)據(jù),并將實(shí)際問題處理成計(jì)算機(jī)能處理問題的重要環(huán)節(jié)。最直觀的可以使用鏈表數(shù)據(jù)結(jié)構(gòu)存放士兵編號(hào)來抽象實(shí)際問題,但高中信息技術(shù)教學(xué)中一般不涉及鏈表。因此抽象并形成首尾相接的數(shù)據(jù)結(jié)構(gòu)成為一個(gè)難點(diǎn)。這類問題也是學(xué)生遇到的常見問題之一。 (三)嵌套邏輯程序模塊的正確理解與應(yīng)用 例3?【2019年6月杭州市統(tǒng)測(cè)信息試題】小強(qiáng)設(shè)計(jì)一個(gè)“文本編輯”程序,實(shí)現(xiàn)對(duì)字符串s進(jìn)行插入和刪除操作,操作信息由操作符(“+”表示插入,“-”表示刪除)和操作字符串構(gòu)成,以“#”結(jié)束。插入操作由插入位置和插入字符串(只包含英文字母)構(gòu)成,刪除操作由刪除開始位置和刪除長(zhǎng)度構(gòu)成。例如:“+11abc”表示在字符串s第11個(gè)位置插入“abc”,“-4:3”表示刪除字符串s中第4個(gè)位置開始的連續(xù)3個(gè)字符。 小強(qiáng)編寫的“文本編輯”VB程序運(yùn)行界面如圖所示,文本框Text 1中的內(nèi)容是初始字符串,文本框Text 2中的內(nèi)容是操作信息,單擊“操作”按鈕Cmd 1后,在標(biāo)簽Label 4中顯示結(jié)果字符串。 (1)加框處的程序代碼有錯(cuò),請(qǐng)改正。 (2)在劃線處填入合適代碼。 Private Sub Cmd 1_Click() Dim s As String,t As String,ch As String Dim c As String,num As Integer,ss As String,f As String Dim n As Integer,n1 As Integer,i As Integer,k As Boolean s=Text 1.Text: t=Text 2.Text c="": num=0: ss=s: f="" For i=1 To Len(t) ch=Mid(t,i,1) If ch >="a" And ch <="z" Or ch >="A" And ch<="Z" Then c=c+ch ElseIf ch >= "0" And ch<="9" Then n=Val(ch) Else If ch=":" Then n1=n ElseIf f="-" Then If n1=1 Then 函數(shù)Mid(x,y)返回字符串x第y位到最后的子串 s=Mid(s,n+n1) Else ′(3)填空 End If ElseIf f="+" Then s=Mid(s,1,n-1)+c+Mid(s,n) End If If ch="+" Or ch="-" Or ch="#" Then f=ch If i <> 1 Then ss=ss + "→" + s End If n=0 c="" End If Next i Label 4.Caption = ss End Sub 分析:該試題的外層For循環(huán)是逐個(gè)處理操作信息字符串,這類操作比較常規(guī)。For循環(huán)中依據(jù)字符串內(nèi)容的不同要分情況討論,并做相應(yīng)的處理。這是一個(gè)相對(duì)復(fù)雜的判斷邏輯結(jié)構(gòu),這就要求學(xué)生具備通過判斷、分析與綜合各種信息,運(yùn)用合理的算法解決問題的能力,而這也往往是學(xué)生缺乏的。 通過以上幾個(gè)學(xué)生存在思維困難的典型案例可知,在高中階段的信息技術(shù)學(xué)習(xí)中如何培養(yǎng)學(xué)生的計(jì)算思維能力是一個(gè)亟待解決的問題。 二、 新課程標(biāo)準(zhǔn)中的計(jì)算思維 國(guó)家高中信息技術(shù)教育的頂層設(shè)計(jì)者們已經(jīng)看到了這個(gè)問題。2017版的《普通高中信息技術(shù)課程標(biāo)準(zhǔn)》中將信息技術(shù)學(xué)科核心素養(yǎng)是由信息意識(shí)、計(jì)算思維、數(shù)字化學(xué)習(xí)與創(chuàng)新、信息社會(huì)責(zé)任四個(gè)核心要素組成。新課標(biāo)中描述計(jì)算思維是指?jìng)€(gè)體運(yùn)用計(jì)算機(jī)科學(xué)領(lǐng)域的思想方法,在形成問題解決方案的過程中產(chǎn)生的一系列思維活動(dòng)。具備計(jì)算思維的學(xué)生,在信息活動(dòng)中能夠采用計(jì)算機(jī)可以處理的方式界定問題、抽象特征、建立結(jié)構(gòu)模型、合理組織數(shù)據(jù);通過判斷、分析與綜合各種信息資源,運(yùn)用合理的算法形成解決問題的方案;總結(jié)利用計(jì)算機(jī)解決問題的過程與方法,并遷移到與之相關(guān)的其他問題解決中。 三、 基于問題解決為核心的計(jì)算思維培養(yǎng) 那么在具體的教學(xué)過程中如何來培養(yǎng)學(xué)生的計(jì)算思維能力呢?筆者認(rèn)為可以嘗試用基于問題解決的方式來進(jìn)行。 問題解決從心理學(xué)的角度講是指一系列有目的的認(rèn)知操作過程。一般有三個(gè)基本特征,第一,是一種思維活動(dòng),即在問題解決的過程中,必須有認(rèn)知成分的參與。第二,具有目的指向性,問題解決過程具有明確的目的。第三,包含一系列的操作,即問題解決包含一系列的心理步驟。 基于問題解決的教學(xué)是指教師通過引發(fā)、促進(jìn)、支持和指導(dǎo)學(xué)生的問題解決活動(dòng),來完成學(xué)科教學(xué)任務(wù)的一種教學(xué)方式。這種教學(xué)以問題的提出和解決為線索組織教學(xué)過程,問題和問題解決是它的兩個(gè)關(guān)鍵要素,教師就學(xué)習(xí)目標(biāo)和內(nèi)容設(shè)計(jì)問題,學(xué)生以類似問題解決的過程、方法和形式進(jìn)行學(xué)習(xí),在解決問題的過程中獲取和應(yīng)用隱含于問題背后的學(xué)科知識(shí)與技能,解決問題的能力也得以發(fā)展。 筆者認(rèn)為在基于問題解決教學(xué)中問題的設(shè)計(jì)是最為關(guān)鍵的環(huán)節(jié),應(yīng)該遵循以下幾個(gè)原則。第一,問題盡量符合現(xiàn)實(shí)生活實(shí)際,使學(xué)生有直觀感受。第二,問題設(shè)計(jì)要能緊扣學(xué)習(xí)內(nèi)容和學(xué)習(xí)目標(biāo)。第三,問題要能引導(dǎo)學(xué)生建構(gòu)和發(fā)展學(xué)科知識(shí)、學(xué)科技能和學(xué)科思維。第四,問題的設(shè)計(jì)要適應(yīng)當(dāng)前的教學(xué)對(duì)象。 新課標(biāo)的基本理念中提到要培育以學(xué)習(xí)為中心的教與學(xué)關(guān)系,在問題解決中提升信息素養(yǎng)??梢娨詫W(xué)生為主體,以問題解決過程為主要的媒介來提升學(xué)生的認(rèn)知能力和信息素養(yǎng),應(yīng)該是一種比較推薦的方法。下面以《算法與程序設(shè)計(jì)》模塊中的查找算法教學(xué)為例,設(shè)計(jì)一系列的問題,通過問題解決來提升學(xué)生的計(jì)算思維。以下描述問題及其解決過程主要分為問題設(shè)計(jì),問題的探究與解決,計(jì)算思維的培養(yǎng),核心素養(yǎng)水平分級(jí),發(fā)展性問題這幾個(gè)方面。 (一)用程序設(shè)計(jì)的方法模擬實(shí)現(xiàn)Word中的查找、替換功能。 1. 問題設(shè)計(jì) 文檔編輯軟件Word大家經(jīng)常使用,里面的查找、替換功能對(duì)于文檔編輯很有幫助。要求用程序設(shè)計(jì)的方法模擬該功能。 2. 問題探究與解決 3. 計(jì)算思維的培養(yǎng) 該問題解決過程中主要培養(yǎng)了學(xué)生的抽象問題中的數(shù)據(jù)特征,建立結(jié)構(gòu)模型(形式化);運(yùn)用合理的算法,形成解決問題的方案;利用計(jì)算機(jī)及高級(jí)語言處理問題等素養(yǎng)。 4. 核心素養(yǎng)水平分級(jí) 該問題達(dá)到分級(jí)水平1。 5. 發(fā)展性問題 順序查找算法與學(xué)過的什么算法是類似? (二)對(duì)分查找中查找范圍標(biāo)志(L,R)的移動(dòng)問題 1. 問題設(shè)計(jì) 假定數(shù)組中的數(shù)據(jù)已成升序排列,對(duì)分查找的標(biāo)準(zhǔn)程序如下(用自定義函數(shù)表達(dá)): Function search(key As Integer,L As Integer,R As Integer) As Integer Dim mAs Integer Do While L <= R m = (L + R) \\ 2 If key = a(m) Then search = m Exit Function ElseIf key < a(m) Then R=m-1?′① Else L=m+1?′② End If Loop search=0 End Function ①,②兩處是移動(dòng)L、R,縮小查找范圍的代碼。現(xiàn)在的問題是,是否能將①處改成R=m,②處改成L=m,或者修改其中一處? 2. 問題探究與解決 3. 計(jì)算思維的培養(yǎng) 該問題解決過程中主要培養(yǎng)學(xué)生熟悉對(duì)分查找的基本方法。使用模型化的方法來分析數(shù)據(jù),進(jìn)一步研究算法的內(nèi)在含義,提高對(duì)算法的理解程度和應(yīng)用能力。 4. 核心素養(yǎng)水平分級(jí) 該問題達(dá)到水平分級(jí)1。 5. 發(fā)展性問題 循環(huán)條件是否能從L<=R改為L(zhǎng) (三)順序查找與對(duì)分查找的效率比較問題 1. 問題設(shè)計(jì) 假定要查找的值都能在數(shù)組中找到的情況下,對(duì)分查找的效率一定比順序查找高嗎? 2. 問題探究與解決 3. 計(jì)算思維的培養(yǎng) 分析問題及信息,建立結(jié)構(gòu)模型,合理組織數(shù)據(jù)并進(jìn)行適當(dāng)?shù)臍w納,進(jìn)而得出結(jié)論。 4. 問題水平分級(jí) 該問題達(dá)到水平分級(jí)2。 5. 發(fā)展性問題 順序查找和對(duì)分查找的時(shí)間復(fù)雜度問題。 (四)利用對(duì)分查找思想設(shè)計(jì)的插入排序算法中數(shù)據(jù)插入位置的分析與討論 1. 問題設(shè)計(jì) (1)給出利用對(duì)分查找思想設(shè)計(jì)的查找插入位置的主要程序段示例。 假設(shè)待插入數(shù)值存儲(chǔ)在變量Key中,數(shù)據(jù)存放在a數(shù)組中,且呈升序排列。程序的主要部分如下: Do While?L<=R m=(L+R)\\2 IF key<=a(m) Then R=m-1 Else L=m+1 EndIF Loop (2)如上算法所示,插入位置應(yīng)該是哪個(gè)位置,如何表示? (3)如果數(shù)組內(nèi)已有值與待插入的值相同,則新插入值的位置是在相同值的左邊還是右邊? 2. 問題探究與解決 3. 計(jì)算思維的培養(yǎng) 能提取問題的基本特征,運(yùn)用基本算法解決問題。有分析數(shù)據(jù),分析算法的能力。 4. 問題水平分級(jí) 該問題達(dá)到水平分級(jí)1。 5. 可遷移問題 如果降序排列如何設(shè)計(jì)類似算法? 四、 小結(jié) 計(jì)算思維的培養(yǎng)是學(xué)生信息技術(shù)學(xué)科核心素養(yǎng)培養(yǎng)的重要組成部分。本文試圖以查找算法為例,利用字符、字符串的查找、替換,對(duì)分查找中查找范圍標(biāo)志(L,R)的移動(dòng)問題,順序查找與對(duì)分查找的效率比較問題,利用對(duì)分查找思想設(shè)計(jì)的插入排序算法中數(shù)據(jù)插入位置的分析與討論這幾個(gè)問題的設(shè)置,說明如何通過問題的合理設(shè)計(jì)來組織與引導(dǎo)學(xué)生熟悉算法、探究問題,提高學(xué)生的學(xué)科認(rèn)知能力,實(shí)施基于問題解決的計(jì)算思維的建構(gòu)與培養(yǎng)。 參考文獻(xiàn): [1]李藝,鐘柏昌.信息技術(shù)課程核心素養(yǎng)體系設(shè)計(jì)問題討論[J].理論探討,2016(4):5-10. [2]解月光,付海東.高中學(xué)生信息技術(shù)學(xué)科核心素養(yǎng)的描述與分級(jí)[J].中國(guó)電化教育,2015(5):8-14. [3]任友群,黃榮懷.高中信息技術(shù)課程標(biāo)準(zhǔn)修訂說明[J].中國(guó)電化教育,2016(12):1-3. [4]李慧桂.基于問題解決的高中信息技術(shù)新課程教學(xué)研究[D].金華:浙江師范大學(xué),2006. 作者簡(jiǎn)介:華驥良,浙江省杭州市,浙江省杭州第二中學(xué)。