摘?要:隨著信息技術(shù)的快速發(fā)展,中小學(xué)教育領(lǐng)域開始重視信息技術(shù)課程的改革與創(chuàng)新,新課標(biāo)更加強(qiáng)調(diào)了課堂教學(xué)中對學(xué)生核心素養(yǎng)培養(yǎng),而在高中信息技術(shù)課程中,教師采取何種教學(xué)策略培養(yǎng)學(xué)生的算法思維成為當(dāng)前高中信息技術(shù)教學(xué)的重點(diǎn)。本文結(jié)合算法思維中符號化表征、結(jié)構(gòu)化分解及創(chuàng)造性設(shè)計(jì)三個基本特征,從教學(xué)實(shí)踐出發(fā),結(jié)合筆者多年高中信息技術(shù)在新高考形勢下的教學(xué)實(shí)踐,分別從“創(chuàng)設(shè)情境,通過符號表征算法創(chuàng)造”“搭建問題,驅(qū)動分解逐步擊破”“探尋本質(zhì),挖掘算法內(nèi)在本質(zhì)”三個方面結(jié)合教學(xué)案例進(jìn)行分析,從而總結(jié)在教學(xué)中如何促進(jìn)算法思維的培養(yǎng)。
關(guān)鍵詞:算法思維培養(yǎng)策略;符號化表征;結(jié)構(gòu)化分解;創(chuàng)造性設(shè)計(jì)
對于高中信息技術(shù)課程而言,培養(yǎng)學(xué)生的算法思維實(shí)際上是培養(yǎng)學(xué)生學(xué)習(xí)一種針對復(fù)雜問題如何分解步驟、構(gòu)造具有一定序列的對應(yīng)操作方法。浙教版《算法與程序設(shè)計(jì)》是高中信息技術(shù)課程的選修模塊之一,旨在教導(dǎo)學(xué)生通過算法編寫程序、解決問題的能力,并在學(xué)習(xí)過程中培養(yǎng)學(xué)生的邏輯思維、數(shù)學(xué)思維、抽象思維、分解思維等一系列算法思維。在此需求背景下,如何結(jié)合《算法與程序設(shè)計(jì)》教材,在信息技術(shù)課程中培養(yǎng)學(xué)生的算法思維,如何在此目的需求下設(shè)計(jì)可行性強(qiáng)的教學(xué)內(nèi)容,探究切實(shí)有效的算法思維培養(yǎng)策略,成為當(dāng)下高中信息技術(shù)課程教學(xué)的重要任務(wù)。
一、 基于高中信息技術(shù)課程的算法思維表現(xiàn)
算法思維抽象且難以檢測,為探索與提供切實(shí)有效的算法思維培養(yǎng)策略,應(yīng)初步對算法思維能力的表現(xiàn)形態(tài)進(jìn)行歸納,以便教師借助外在行為探究與評價(jià)學(xué)生的算法思維能力,進(jìn)而提升培養(yǎng)算法思維的可操作性。對國內(nèi)外大量文獻(xiàn)進(jìn)行查閱,歸納得出算法思維能力主要表現(xiàn)為三個方面:結(jié)構(gòu)化分解、符號化表征、創(chuàng)造性設(shè)計(jì)。
(一)結(jié)構(gòu)化分解
算法思維是指以一個問題為切入點(diǎn),圍繞該問題目標(biāo)將復(fù)雜問題分解成多個基本的子問題,通過逐個擊破子問題完成最終的復(fù)雜問題。如計(jì)算一道復(fù)雜的數(shù)學(xué)題,首先需要找到簡單的規(guī)律進(jìn)行分解,然后對基本、簡單的子問題做出具體分析與解決,最終將分散的問題系統(tǒng)聯(lián)結(jié),全面考慮問題。
(二)符號化表征
高中信息技術(shù)學(xué)科涉及很多抽象對象,培養(yǎng)學(xué)生的算法思維需要對學(xué)生的符號替代思維進(jìn)行訓(xùn)練。如設(shè)計(jì)計(jì)算機(jī)程序時(shí),利用偽代碼、流程圖等替代具體操作步驟,進(jìn)而在此基礎(chǔ)上完成求解。在實(shí)際生活中,擁有算法思維的學(xué)生也可以利用符號代表一些事物,利用紙筆完成實(shí)際問題的化解與設(shè)計(jì)思路。從某種程度上講,符號化表征就是指將抽象、復(fù)雜的問題具象化,在問題求解過程中利用符號梳理清晰的思路,進(jìn)而將抽象思維轉(zhuǎn)為具體實(shí)踐行為。
(三)創(chuàng)造性設(shè)計(jì)
算法思維強(qiáng)調(diào)解題過程的步驟性與程序性。需要說明的是,程序化并不指固化、死板的序列或解決問題關(guān)系,而是指形式上應(yīng)當(dāng)遵循一定的流程,該流程不被限制固化,可以是線性進(jìn)行的,也可以是非線性的,如循環(huán)、分支、選擇等流程。在高中信息技術(shù)學(xué)科教學(xué)中,程序或算法設(shè)計(jì)者需要對具體流程做出創(chuàng)新性設(shè)計(jì),以便對同一問題的解決辦法提出多種創(chuàng)造性思路。
二、 高中信息技術(shù)課程算法思維培養(yǎng)策略
算法思維能力由淺入深分為五個層級:識別和理解算法、執(zhí)行算法、分析算法、設(shè)計(jì)算法、修改算法。高中浙教版《算法與程序設(shè)計(jì)》第一至五章知識點(diǎn)設(shè)計(jì)均直接體現(xiàn)了算法思維,如“算法與算法表示”“算法實(shí)例”“面向?qū)ο蟪绦蛟O(shè)計(jì)基本知識”“VB程序設(shè)計(jì)初步”“算法實(shí)例程序?qū)崿F(xiàn)”?;谏鲜龇治鼋Y(jié)果,將具體闡述應(yīng)用與實(shí)踐教學(xué)的高中信息技術(shù)課程算法思維培養(yǎng)策略。
(一)創(chuàng)設(shè)情境,符號表征算法創(chuàng)造
高中信息技術(shù)學(xué)科與現(xiàn)實(shí)生活聯(lián)系緊密,教師不應(yīng)桎梏于符號與程序算法內(nèi)容的教學(xué)與講解,為激發(fā)學(xué)生思考興趣,提升信息技術(shù)學(xué)習(xí)的實(shí)用感,教師可通過創(chuàng)設(shè)真實(shí)故事或設(shè)置生活情境呈現(xiàn)課堂學(xué)習(xí)任務(wù),隨后通過算法啟發(fā)教學(xué)逐步引導(dǎo)學(xué)生探究問題解決方法,最終帶領(lǐng)學(xué)生完成算法設(shè)計(jì),解決問題,提高學(xué)生的算法理解能力。
初學(xué)《賦值語句》時(shí),賦值的方向不容易接受,會和學(xué)生已有的數(shù)學(xué)知識有沖突,僅憑書本文字概述學(xué)生難以真正理解消化。教師在授課時(shí)引入了一個小操作,A瓶裝了可樂,B瓶裝了雪碧,在不交換瓶的前提下,把A瓶和B瓶里的飲料互換。這個操作對于高中生來講是易如反掌,此時(shí)需要借助第3個容器C瓶來解決問題。用自然語言來描述這個過程如下:
1. 先把A瓶中的可樂倒入C瓶C←A;
2. 再把B瓶中的雪碧倒入A瓶A←B;
3. 最后把C瓶中的可樂倒入B瓶B←C。
經(jīng)過學(xué)生的操作、自然語言的描述和描繪示意圖,推出VB中賦值語句中的一種格式:變量名=表達(dá)式,賦值的方向是從右向左,然后再結(jié)合倒飲料這個實(shí)驗(yàn),引導(dǎo)學(xué)生寫出VB語句:C=A:A=B:B=C,學(xué)生在問題情境中切實(shí)感受到賦值與數(shù)學(xué)中的等號的區(qū)別,隨后,教師適時(shí)強(qiáng)調(diào)用符號←表示賦值方向。
(二)搭建問題,驅(qū)動分解逐步擊破
問題自身的邏輯結(jié)構(gòu)自然嚴(yán)謹(jǐn),高中信息技術(shù)教師在教學(xué)過程中可通過問題搭建的方式驅(qū)動學(xué)生問題分解興趣,使學(xué)生將復(fù)雜問題分解成子問題,最終帶動學(xué)生識別與分析各個分問題之間的依賴性鏈狀關(guān)系,培養(yǎng)學(xué)生的結(jié)構(gòu)分解能力。
如教師講解《解析算法》為例,教師給出一個問題“設(shè)計(jì)一個算法將輸在文本框Text1中的n位二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)在文本框Text2中輸出?!睂τ谠搯栴},教師給出問題思考方案:解析的方法找出表示問題的條件與所求結(jié)果之間關(guān)系的數(shù)學(xué)表達(dá)式。教師提示用已學(xué)的按權(quán)相加方法來分析,以(1111111)2=()10為實(shí)例。
學(xué)生以小組為單位進(jìn)行討論,依次分解問題,逐個分析。
問題分析1:
在文本框Text1中的是字符,如何將文本框中的1111111取出,然后轉(zhuǎn)換成數(shù)值進(jìn)行計(jì)算。
針對上述問題分析,學(xué)生首先找到用Mid函數(shù)解決取字符問題,然后再用Val函數(shù)解決轉(zhuǎn)換成數(shù)值問題。
問題分析2:
轉(zhuǎn)換出來的二進(jìn)制數(shù)上的每一位數(shù)代表十進(jìn)制的值。
學(xué)生用已學(xué)的基礎(chǔ)知識列出二進(jìn)制數(shù)每一位和十進(jìn)制數(shù)之間的對應(yīng)表。
問題分析3:
二進(jìn)制數(shù)中的每一個數(shù)和十進(jìn)制數(shù)之間的關(guān)系
學(xué)生從列出的表中可以分析出:二進(jìn)制數(shù)位數(shù)=每個數(shù)的位置+a;然后進(jìn)一步得出每一項(xiàng)的通用值的計(jì)算方法:取出來的數(shù)字*2a。
問題分析4:
怎樣實(shí)現(xiàn)和的計(jì)算
計(jì)算一位的值后加上下一位的值,直到最后一位,用For循環(huán)或者Do循環(huán)解決累加和的ans計(jì)算。
問題分析5:
轉(zhuǎn)換出來的結(jié)果在文本框Text2中輸出。
數(shù)值用str函數(shù)轉(zhuǎn)換后輸出。
s=Text1. Text
n=Len(s)計(jì)算字符串長度
For i=1 To n
x=Val(Mid(s,i,1))?取出的字符轉(zhuǎn)換為數(shù)值
ans=ans+x*2^(n - i)累加至ans
Next i
Text2.Text=Str(ans)
學(xué)生在分析該問題時(shí),首先通過問題情境構(gòu)建問題結(jié)構(gòu)框架,在初步分析問題結(jié)構(gòu)的基礎(chǔ)上分解大問題為多個小問題,漸進(jìn)啟發(fā),逐步搭建起知識結(jié)構(gòu)。學(xué)生在小組合作過程中完成結(jié)構(gòu)化分解算法設(shè)計(jì),同時(shí)也培養(yǎng)了學(xué)生腳踏實(shí)地的學(xué)習(xí)態(tài)度。
(三)探尋本質(zhì),挖掘算法內(nèi)在機(jī)制
傳統(tǒng)高中信息技術(shù)學(xué)科教學(xué)中,學(xué)生對于知識的學(xué)習(xí)與問題求解大多浮于應(yīng)用表面,并未對其本質(zhì)進(jìn)行深入的探索與挖掘,因此學(xué)生對于算法的掌握能力僅停留在算法設(shè)計(jì)層級,學(xué)生只知道算法執(zhí)行的結(jié)果,卻不知曉算法執(zhí)行過程,很難達(dá)到修改算法的層級。
基于上述問題,為培養(yǎng)學(xué)生更高層級的算法思維能力,教師應(yīng)引導(dǎo)學(xué)生對內(nèi)在蘊(yùn)藏的算法機(jī)制、原理進(jìn)行挖掘。如學(xué)生學(xué)習(xí)排序算法時(shí),教師以簡單的任務(wù)“如何按總成績進(jìn)行排序”為驅(qū)動,通過具體的計(jì)算機(jī)操作,引導(dǎo)學(xué)生一步步揭示計(jì)算機(jī)運(yùn)算蘊(yùn)藏的算法機(jī)制。教師首先對學(xué)生提問:“如何對一組數(shù)字進(jìn)行排序”,學(xué)生經(jīng)過思考或討論,給出不同的答案,教師將學(xué)生給出的答案做出匯總后,進(jìn)一步要求學(xué)生自行查找規(guī)律。接著,在學(xué)生初步思考的基礎(chǔ)上,提出“排序算法”的內(nèi)在機(jī)制:“按總成績排名,要求高分在前。第一,相鄰兩個數(shù)字進(jìn)行比較,如果第一個數(shù)字小于第二個,則交換彼此;第二,對每一對相鄰數(shù)字比較,如果第一個數(shù)字小于第二個,交換彼此;第三,經(jīng)過多次循環(huán),直至沒有可比較的相鄰數(shù)字對;最終,排在第一位的是最大數(shù)字,排在末位的是最小數(shù)字?!?/p>
For i=1 To n-1?比較的遍次
For j=n To i+1 Step-1?比較元素的下標(biāo)位置
If a(j)>a(j-1) Then
交換兩個相鄰元素的條件
t=a(j)
a(j)=a(j-1)
a(j-1)=t
End If
Next j
Next i
在該過程中,教師可以用板書的方式演示計(jì)算機(jī)的運(yùn)算方式,雖然從手動運(yùn)算層面看,該過程易錯且繁雜,但計(jì)算機(jī)可以利用其二進(jìn)制算法快速完成計(jì)算。算法思維實(shí)際上是理工知識的衍生與應(yīng)用,教師需要在教學(xué)中注重原理推導(dǎo)過程的講解,用挖掘算法內(nèi)在機(jī)制的方式培養(yǎng)學(xué)生的算法思維。
三、 結(jié)語
美國計(jì)算機(jī)專家克努特曾定義:算法是有窮規(guī)則的集合。只有了解了算法思維層級之間的關(guān)系,明確算法思維的外在表現(xiàn)形態(tài),教師才能針對性地培養(yǎng)學(xué)生算法思維。算法思維能力的表現(xiàn)形態(tài)為結(jié)構(gòu)分解,符號表征,教師在高中信息技術(shù)課程教學(xué)時(shí)應(yīng)圍繞上述三個能力需求進(jìn)行針對性的內(nèi)容或活動策略設(shè)計(jì),使學(xué)生不僅掌握算法與程序設(shè)計(jì)的固化思路,還引導(dǎo)其挖掘算法的內(nèi)在機(jī)制,培養(yǎng)學(xué)生解決問題的能力,以探索信息技術(shù)科學(xué)思想為導(dǎo)向,有效實(shí)現(xiàn)培養(yǎng)學(xué)生算法思維的教學(xué)目標(biāo)。
參考文獻(xiàn):
[1]謝艷梅.高中信息技術(shù)教育中算法思維培養(yǎng)研究[J].新課程,2019(4):133.
[2]沈金露.高中信息技術(shù)教育中算法思維培養(yǎng)分析[J].高考,2019(24):100.
[3]王業(yè)勝.高中信息技術(shù)教育中算法思維培養(yǎng)研究[J].當(dāng)代教研論叢,2016(6):67.
作者簡介:邵志英,浙江省杭州市,浙江省杭州市瓶窯中學(xué)。