沈賢
摘要:算法思維是評價(jià)學(xué)生計(jì)算思維能力中最重要的一個(gè)維度。初中階段是學(xué)生抽象思維形成的重要階段,教師可通過在信息技術(shù)課堂采用合理的教學(xué)方法,發(fā)揮學(xué)生的主觀能動性,以學(xué)生為中心來培養(yǎng)學(xué)生的算法思維,進(jìn)而用算法思維的方式來優(yōu)化學(xué)生的學(xué)習(xí)方式。文章通過對課堂實(shí)例的觀察、分析,從而歸納出培養(yǎng)初中學(xué)生算法思維的基本策略,以期對初中階段學(xué)生算法思維的養(yǎng)成提供一定的參考。
關(guān)鍵詞:算法思維;課堂教學(xué)策略;有窮性思維;可行性思維
中圖分類號:G434 ? ? ? ? 文獻(xiàn)標(biāo)志碼:A ? ? ? ? ?文章編號:1673-8454(2020)06-0073-04
隨著計(jì)算機(jī)技術(shù)深入人們的學(xué)習(xí)與生活,學(xué)校更加注重對學(xué)生計(jì)算思維的培養(yǎng)。江蘇省2018年3月頒布的《江蘇省義務(wù)教學(xué)信息技術(shù)課程綱要》中更是把“程序設(shè)計(jì)”從選修模塊變?yōu)榱吮匦弈K,其根本目的就是要讓學(xué)生在初中階段就具備算法思維,不僅可以解決與計(jì)算機(jī)相關(guān)的問題,還可以解決現(xiàn)實(shí)生活中的各類問題。筆者將結(jié)合教學(xué)實(shí)例,通過對初中生信息技術(shù)課堂的觀察和思考,以期找到進(jìn)一步提升學(xué)生算法思維能力的方法。
一、算法思維的的概念與內(nèi)容
1.算法思維的概念
“算法”的概念最早只使用在數(shù)學(xué)領(lǐng)域,指用來解決數(shù)學(xué)問題的方法,現(xiàn)在定義為通過有限步的確定的操作解決某一類問題的方法。其所指的內(nèi)容一直未變,就是在有限的時(shí)間內(nèi)給出有窮的操作,最終解決某種問題的結(jié)果。“思維”在心理學(xué)、哲學(xué)、邏輯等非學(xué)科都有不同的解釋,而算法思維中的“思維”則是人類進(jìn)行思考的過程。所以筆者認(rèn)為算法思維可理解為人們?yōu)榱私鉀Q問題而進(jìn)行思考后給出的在有限時(shí)間內(nèi)可行性的操作。算法思維與普通思維的最大區(qū)別在于其提高了解決問題的效率。
例如需要在1-10中找到某個(gè)隨機(jī)的數(shù)字,如果按照順序查找效率會很低,但是如果采用二分法的算法思維,每次將查找范圍縮小一半,極大地提高了效率。如表1所示,通過二分法將7次查找簡化為3次,假如數(shù)字規(guī)模更大,二分法解決問題的優(yōu)勢會更明顯。如若學(xué)生能運(yùn)用類似的思維方式來解決問題,無疑將事半功倍。
2.算法思維的內(nèi)容
“算法思維”是一種通過明確定義的步驟來解決問題的方法,而不是計(jì)算出一個(gè)問題的答案,是讓學(xué)生自主開發(fā)一組指令或規(guī)則。不論是人還是一臺計(jì)算機(jī),如果準(zhǔn)確地遵循與執(zhí)行這組指令或規(guī)則,就會得出問題答案的類似這種解決問題的方法。[1]
從上述對于“算法思維”內(nèi)容的描述我們可以發(fā)現(xiàn),首先算法思維應(yīng)當(dāng)是有窮性的思維,當(dāng)使用算法思維來解決問題時(shí),我們應(yīng)當(dāng)考慮它是有一定的運(yùn)算次數(shù),因?yàn)橛?jì)算機(jī)不可以一直運(yùn)算下去,必定有一個(gè)結(jié)束的結(jié)點(diǎn),這樣的點(diǎn)可以是一個(gè)明確的結(jié)束次數(shù),也可以是一個(gè)明確的結(jié)束條件,無窮性的計(jì)算方式是不可以被使用的;其次算法思維應(yīng)當(dāng)是確切性的思維,也就是每一步都要有個(gè)確切的定義,這樣的思維方式要求厘清思路,提出解決問題的步驟;最后算法思維應(yīng)當(dāng)是可行性思維,每一個(gè)計(jì)算的步驟都可以在有限的時(shí)間內(nèi)完成,擁有這樣的思維方式既可以完成對于一個(gè)復(fù)雜任務(wù)的分解與規(guī)劃,又能保證最后思維結(jié)構(gòu)的完整性。
二、算法思維養(yǎng)成與課堂教學(xué)
1.課堂教學(xué)提高算法思維能力
自課程改革以來,初中信息技術(shù)教材內(nèi)容發(fā)生了巨大的變革,由技術(shù)傳授型的課程變?yōu)榱伺囵B(yǎng)學(xué)生能力、拓展學(xué)生算法思維的課程。在課堂教學(xué)中我們可以設(shè)定有挑戰(zhàn)性的任務(wù)來提升學(xué)生計(jì)算思維的能力,例如:我的杯子里是牛奶,你的杯子里是咖啡,如何用我的杯子喝到你杯子里的咖啡?這是算法思維中一個(gè)兩數(shù)交換的問題,用一個(gè)空杯子作為傳遞就可以完成這個(gè)看似不可能的任務(wù)。課堂教學(xué)中如果這樣的例子多了,久而久之學(xué)生對于算法思維的理解一定能得到提高。
2.算法思維能力改善課堂教學(xué)效率
以往的信息技術(shù)課堂被割裂為多個(gè)知識點(diǎn),學(xué)生學(xué)到的內(nèi)容往往都是孤立的,例如這周學(xué)習(xí)了文字編輯,下周學(xué)習(xí)了數(shù)據(jù)處理,這些相互間沒有聯(lián)系的知識點(diǎn)會導(dǎo)致學(xué)生學(xué)習(xí)興趣的缺失,進(jìn)而導(dǎo)致其學(xué)習(xí)能力的下降。算法思維能力的培養(yǎng)則不同,算法思維的知識點(diǎn)都是相互聯(lián)系的,通過學(xué)習(xí)對應(yīng)的知識會對學(xué)生各方面思維起到補(bǔ)充作用,使得學(xué)生想學(xué)、樂學(xué),從而改善課堂教學(xué)的氛圍,利于學(xué)生的思維發(fā)展。
3.算法思維培養(yǎng)和課堂教學(xué)互為補(bǔ)充、螺旋上升
算法思維是解決問題的方法和步驟的思維方式,它是有窮性、確切性、可行性的思維方式,是學(xué)生思維方式的補(bǔ)充,通過算法思維的訓(xùn)練可以讓學(xué)生具備更多的解決問題的方法和能力,同時(shí)具有算法思維的學(xué)生將更加專注于課堂的學(xué)習(xí)。算法思維和課堂教學(xué)可以說是相得益彰的。
三、基于算法思維養(yǎng)成的課堂觀察
1.課堂事件
此次以普通班級中的八年級(5)班為研究對象,以八年級第4章第二節(jié)中的《算法實(shí)例》為課例。以解析法和枚舉法為探究基礎(chǔ),通過4個(gè)“探究活動”來組織課堂教學(xué)。為了方便研究,我們將課堂劃分為6個(gè)“事件”來進(jìn)行分析,如表2所示。
2.基于算法思維養(yǎng)成的課堂分析
課后,參與課堂觀察的多位教師對于學(xué)生算法思維培養(yǎng)的部分展開了討論。大多數(shù)教師認(rèn)為本節(jié)課能夠完成課堂的教學(xué)目標(biāo),學(xué)生對于兩種基本的算法思維從了解→掌握→運(yùn)用是有顯著提升的,能培養(yǎng)學(xué)生的算法思維,對于以后算法思維的進(jìn)一步培養(yǎng)打下基礎(chǔ)。但是對于不同的課堂事件中,學(xué)生的算法思維提高程度還存在明顯的不同。為了進(jìn)一步探究原因,我們根據(jù)聽課教師的課堂觀察記錄冊及課堂錄像進(jìn)行了更深層次的分析。
(1)理解算法思維的有窮性
算法思維作為一種獨(dú)特思維方式,首先它是具有有窮性的,通俗來說就是總是有結(jié)束的終點(diǎn),它不是一個(gè)無限循環(huán)或者不循環(huán)的思維方式。在枚舉法舉例時(shí)就體現(xiàn)了算法思維的有窮性,課例中的水仙花數(shù)是指一個(gè) 3 位數(shù),它的每位上的數(shù)字的 3次冪之和等于它本身,這樣的水仙花數(shù)有很多,三位的水仙花數(shù)共有4個(gè):153,370,371,407;四位的四葉玫瑰數(shù)共有3個(gè):1634,8208,9474;五位的五角星數(shù)共有3個(gè):54748,92727,93084。如果在運(yùn)算初期就設(shè)定是求解三位數(shù)的水仙花數(shù),就可以確定循環(huán)范圍是100-999,這是一種有窮的算法。學(xué)生通過完成流程圖,可以加深其對于有窮性的了解,也會進(jìn)一步確立有窮性在解決問題時(shí)所必須考慮的問題,使得思維更加的全面、縝密。
(2)分析算法思維的確切性
雞兔同籠是古代傳統(tǒng)的計(jì)算問題,頭有35個(gè),腳有94只,問有兔子和雞各幾只。算法思維是有確切性的,它是對于已知條件的充分理解與分析,最后得到準(zhǔn)確的求解的過程。
對于問題已知條件的分析進(jìn)一步得知隱藏條件,這是學(xué)生思維方式培養(yǎng)的一種慣用方法。學(xué)生在研讀題意的基礎(chǔ)上才能展開思維。充分的思維是學(xué)生算法思維完善的關(guān)鍵一步,使學(xué)生更為準(zhǔn)確地分析題目含義,確切地找到解決問題的方法也是算法思維所能帶給學(xué)生能力提升的一個(gè)方面。
(3)明確算法思維的可行性
算法思維必須是可行的,它必須有準(zhǔn)確的解決問題的方法與手段。例如我們經(jīng)常說的“從前有個(gè)山,山上有個(gè)廟,廟里有個(gè)老和尚給小和尚講故事,講的是……”像這樣的問題的解決是不具有可行性的。但如果結(jié)尾改成“講的是老和尚讓小和尚泡一杯茶”,這樣的問題就是一個(gè)有終結(jié)的算法,我們通常把這樣的算法叫做遞歸,一直向前進(jìn)是“遞”,到達(dá)某個(gè)返回點(diǎn)是“歸”。拿到問題、分析問題后給出合理的解決方法是培養(yǎng)學(xué)生的算法思維的重要方面,如果學(xué)生在處理問題前都能認(rèn)真思考,查閱文獻(xiàn)資料后論證處理問題方式的可行性,那么可以減少很多不必要的錯(cuò)誤嘗試。
四、改進(jìn)課堂,促使算法思維能力提高的策略
通過對于課堂事件的分析,對于初中生算法思維的養(yǎng)成,筆者認(rèn)為應(yīng)抓住以下三點(diǎn):
1.與生活中的實(shí)例相結(jié)合,了解算法思維[2]
算法思維本身就來源于生活但是高于生活,它是對生活實(shí)例的一種抽象、歸納、總結(jié),能更好地指導(dǎo)我們的學(xué)習(xí)、生活。算法思維的養(yǎng)成必須從生活實(shí)例出發(fā),才能逐步培養(yǎng)學(xué)生的思維能力。例如常見的泡茶問題:
方法一:準(zhǔn)備泡茶的材料;往茶杯中放入茶葉;將水壺中的水燒開;泡茶。
方法二:將水壺中的水燒開;在燒水的時(shí)候取茶杯、茶葉等;水燒開后泡茶。
雖然兩個(gè)方法都可以得到一杯茶,但是明顯后一種方法會節(jié)約很多時(shí)間,成為一種優(yōu)秀的算法,以實(shí)例出發(fā),學(xué)生就可以很容易理解各類不同的算法,在潛移默化中理解算法思維,明白解決問題的方法往往有很多,優(yōu)秀的算法思維方法可以幫助我們提高解決問題的效率,只有真正了解算法思維的魅力,學(xué)生才能有興趣去分析、掌握并使用它來解決問題。
2.分析問題,認(rèn)真思考,形成算法思維
普通在校學(xué)習(xí)的學(xué)生之間的智力差異并不明顯,決定成績差異的就是其分析問題、思考問題的能力,例如找出10人中身高最高的人,這個(gè)問題看起來很容易,一眼就能看出來,但是如果讓你在100或1000人中找到身高最高的就不那么容易了,這時(shí)需要從10人的數(shù)據(jù)模型出發(fā)來推導(dǎo)出百人或者千人的。算法是這樣的:每次輸入一個(gè)人的身高,如果他的身高比最大值要大,那就把最大值變成這個(gè)人的身高。這樣的算法就具有普遍性了,可以擴(kuò)展到任意多的人。一個(gè)優(yōu)秀的算法,可以解決復(fù)雜的問題,但是優(yōu)秀算法需要在仔細(xì)研讀題目的基礎(chǔ)上,經(jīng)過深入的思考得來。古人說“讀書千遍其義自見”,反復(fù)研究問題直到找到規(guī)律和方法,這是算法思維形成的必經(jīng)之路。
3.不斷探究,提升算法思維的能力
在對算法思維理解的基礎(chǔ)上可以逐漸形成初步的算法思維,但提升學(xué)生使用算法思維的能力還需要依靠合理的探究。探究式學(xué)習(xí)面臨著“扶”與“放”的問題[3],兩者之間的尺度把握得當(dāng)才可以最大程度幫助學(xué)生提高算法思維的能力。例如在解決斐波那契數(shù)列問題時(shí),學(xué)生往往會在推導(dǎo)公式時(shí)迷失方向,這時(shí)教師可以做適當(dāng)?shù)摹胺觥保瑤椭鷮W(xué)生理清思路,明白第三個(gè)數(shù)其實(shí)就是前兩數(shù)之和,可以用數(shù)組輕松實(shí)現(xiàn)賦值過程,只要學(xué)生懂得這樣的規(guī)律,就可以“放”手讓學(xué)生進(jìn)行推導(dǎo),得出a[n]=a[n-1]+a[n-2]的公式。筆者相信把握好“扶”“放”的尺度,學(xué)生的算法思維在自主學(xué)習(xí)與探究的基礎(chǔ)上一定會有從量變到質(zhì)變的提升。
4.合作學(xué)習(xí),幫助學(xué)生應(yīng)用算法思維
培養(yǎng)算法思維的目的是希望學(xué)生能應(yīng)用算法思維來解決一些復(fù)雜的問題,而復(fù)雜問題的解決需要依靠協(xié)作配合完成。教師給出需要解決的問題,學(xué)生通過討論得到解決問題的最優(yōu)算法,通過分工協(xié)作來解決相關(guān)的問題。這樣學(xué)生可以在討論最優(yōu)算法時(shí)理解不同算法的優(yōu)劣,在分工協(xié)作時(shí)理解算法執(zhí)行的具體方法,同時(shí)在最后解決問題時(shí)體會到優(yōu)秀算法帶來的快樂。學(xué)生將更加能夠理解優(yōu)秀算法對于學(xué)習(xí)生活的幫助,從而形成在平時(shí)使用算法思維解決問題的習(xí)慣。
參考文獻(xiàn):
[1]謝忠新,曹楊璐.中小學(xué)信息技術(shù)學(xué)科學(xué)生計(jì)算思維培養(yǎng)的策略與方法[J].中國電化教育,2015(11):116-120.
[2]陳曉紅.普通高中信息技術(shù)教育中的算法思維培養(yǎng)策略研究[D].南京:南京師范大學(xué),2007.
[3]岳欣云,董宏建.探究式教學(xué)的“扶”、“放”之度與層次性——由一則小學(xué)數(shù)學(xué)教學(xué)案例引發(fā)的思考[J].課程·教材·教法,2013,33(7):84-89.(編輯:魯利瑞)