陳鵬
◆摘? 要:枚舉算法是計(jì)算機(jī)批量處理數(shù)據(jù)的重要方式,也是計(jì)算機(jī)效率遠(yuǎn)超人力的體現(xiàn),是python基礎(chǔ)課程中難度的一大跨度,同樣也是整個(gè)高中信息技術(shù)python算法的重要組成部分。枚舉算法中優(yōu)化枚舉算法的策略,是計(jì)算思維的核心思想。本文主要研究基于理解性學(xué)學(xué)習(xí)的高中信息技術(shù)教學(xué)。第一部分簡要的從實(shí)際問題入手,介紹枚舉算法設(shè)計(jì)的一般過程、核心要素、優(yōu)點(diǎn)缺點(diǎn),理解和體驗(yàn)枚舉算法的意義。第二部分是以實(shí)例演示并實(shí)踐分析枚舉算法,從解決實(shí)際問題的層面去理解和初步應(yīng)用枚舉算法。第三部分是基于理解性教學(xué)的課程評(píng)價(jià)。本文主要基于理解性教學(xué)的教學(xué)理念,分享新教材枚舉算法教學(xué)的啟示和本次研究的創(chuàng)新之處。
◆關(guān)鍵詞:信息技術(shù);理解性教學(xué)
在信息技術(shù)學(xué)習(xí)中,實(shí)踐無疑是最好的老師,為了提高實(shí)踐效率,必須先做好理解性教學(xué)。理解性教學(xué)是一種新興的教學(xué)方式,它反映了人們把所呈材料應(yīng)用到新情境中的能力,其核心在于要求學(xué)習(xí)者根據(jù)已有的經(jīng)驗(yàn)或知識(shí)對(duì)新信息或知識(shí)的解釋、舉例、聯(lián)系、比較、建構(gòu)等。目前,理解性教學(xué)的理論已經(jīng)逐步成熟,但其中大部分理論與第一線的實(shí)際教學(xué)相脫節(jié),缺乏可操作性。為此,我以《枚舉算法》這節(jié)課為例,對(duì)理解性教學(xué)在高中信息技術(shù)課堂中的應(yīng)用進(jìn)行了實(shí)踐探索。
《枚舉算法》是《python程序基礎(chǔ)》課程模塊的重要組成部分。本次教學(xué)案例運(yùn)用“信息技術(shù)理解性教學(xué)模式”,在學(xué)習(xí)枚舉算法的同時(shí),更加注重對(duì)學(xué)生理解能力和計(jì)算思維能力的培養(yǎng)。下面從教學(xué)目標(biāo)、教學(xué)實(shí)施、教學(xué)評(píng)價(jià)方面來講述。
一、確定教學(xué)目標(biāo)
根據(jù)信息技術(shù)新教材、新課標(biāo),結(jié)合普通高中學(xué)生的學(xué)情,我設(shè)計(jì)了以下教學(xué)目標(biāo):
1.認(rèn)識(shí)枚舉算法的概念,歸納枚舉算法的三要素以及優(yōu)缺點(diǎn),能舉例說明枚舉算法在生活中的應(yīng)用實(shí)例。
2.圍繞“馬克思手稿”這一主線,掌握枚舉算法求解問題的基本過程,掌握縮小枚舉范圍的優(yōu)化思想。
3.通過用枚舉算法解決實(shí)際問題的實(shí)踐,培養(yǎng)學(xué)生的計(jì)算思維以及對(duì)信息技術(shù)學(xué)科的興趣。
針對(duì)以上的教學(xué)目標(biāo),本節(jié)課我們主要需要思考以下一些基本問題:
(1)什么生活案例可以直觀體現(xiàn)枚舉算法的核心價(jià)值?
(2)什么樣的學(xué)習(xí)活動(dòng)能促進(jìn)理解,循序漸進(jìn),深入理解?
(3)什么樣的實(shí)踐可以增進(jìn)知識(shí)和技能,激發(fā)興趣?
我們預(yù)期學(xué)生將會(huì)理解:
(1)枚舉算法的基本結(jié)構(gòu)、應(yīng)用領(lǐng)域;
(2)算法的優(yōu)化是無止境的;
(3)枚舉算法對(duì)日常生活來說真的很實(shí)用。
二、探索實(shí)踐理解性教學(xué)的教學(xué)設(shè)計(jì)
1.舉例思考枚舉算法的概念和意義,首先解決“為什么要學(xué)”的問題
我們在之前“循環(huán)程序結(jié)構(gòu)”中學(xué)習(xí)過,循環(huán)結(jié)構(gòu)可以代替人力去解決重復(fù)度極高的任務(wù),那么生活中有哪些類似的實(shí)際問題可以通過循環(huán)結(jié)構(gòu)非常方便地求解呢?帶著這個(gè)問題,我們來開始探討。
通過教師的引導(dǎo),我們進(jìn)行舉例和歸納。通過生活中的密碼問題、毒藥問題等,我們可以歸納出枚舉算法的概念:將問題的所有可能的解一一列舉,判斷每一個(gè)列舉的可能解是否為正確的解。
以“雞兔同籠”為例,通過對(duì)比解析算法,總結(jié)出枚舉算法的特點(diǎn):枚舉算法的思維方式更簡單,更容易實(shí)現(xiàn),它暴力的判斷了所有可能性,幾乎能保證百分百的正確率。但是枚舉算法的速度可能很慢,就算借助計(jì)算機(jī)技術(shù),也需要一定程度的優(yōu)化算法。
為了讓學(xué)生更容易將實(shí)際問題的枚舉算法與程序語言對(duì)接,將理論轉(zhuǎn)化為實(shí)際應(yīng)用,教師提出枚舉算法三要素,一起探究每一個(gè)枚舉問題中出現(xiàn)的枚舉范圍、枚舉對(duì)象、判斷條件,與程序中的循環(huán)序列、循環(huán)變量、條件表達(dá)式相對(duì)應(yīng),更容易分析。通過這一系列的抽象建模過程,學(xué)生對(duì)枚舉算法的程序設(shè)計(jì)就有了一定知識(shí)基礎(chǔ)。
2.圍繞“馬克思手稿”這一主線,編寫程序,掌握枚舉算法的應(yīng)用,培養(yǎng)優(yōu)化枚舉算法的思想
馬克思手稿:有男人、女人、小孩共30人,吃飯共花了50元;每個(gè)男人花3元,每個(gè)女人花2元,每個(gè)小孩花1元;問男人、女人和小孩各有幾人?
以馬克思手稿趣味數(shù)學(xué)問題為例,教師引導(dǎo)學(xué)生進(jìn)行抽象建模和編寫程序。我們將問題解決過程按照枚舉范圍的不同分為三個(gè)層次:
暴力枚舉。首先,引導(dǎo)學(xué)生完成最直觀的抽象建模,設(shè)計(jì)變量男人x、女人y、小孩z,初步劃分各變量的范圍,利用三重循環(huán)實(shí)現(xiàn)枚舉。這是最簡單實(shí)現(xiàn)、最直觀的枚舉法。它既突出了計(jì)算機(jī)超高運(yùn)算速度的優(yōu)越性,也體現(xiàn)了枚舉算法的核心特點(diǎn):枚舉所有可能性。暴力枚舉的速度太慢,在列舉時(shí)有可以提前排除的情況,因此可以優(yōu)化。
減少枚舉范圍以及枚舉對(duì)象。第二步,引導(dǎo)學(xué)生利用數(shù)學(xué)知識(shí),通過公式x+y+z=30縮小變量枚舉范圍,將小孩z用30-x-y的公式代替,減少了枚舉對(duì)象。
優(yōu)化。枚舉算法還能優(yōu)化嗎?教師引導(dǎo)學(xué)生展開討論,對(duì)枚舉范圍和枚舉變量是否還能減少。通過x+y+z=30和3x+2y+z=5方程相減,得到2x+y=20,可確定x的范圍可縮小為[0,10],y的范圍可縮小為[0,20],進(jìn)一步縮小循環(huán)變量的范圍,提高枚舉算法的效率。通過對(duì)同一算法的多次優(yōu)化實(shí)踐,學(xué)生建構(gòu)起枚舉算法優(yōu)化的一般過程,感受到算法優(yōu)化的樂趣。
3.實(shí)踐與拓展
信息技術(shù)作為一門技術(shù)課程,只有通過實(shí)際操作和反復(fù)練習(xí),才能掌握和鞏固新的知識(shí)。
通過剛才的學(xué)習(xí),我們對(duì)枚舉算法的編寫和優(yōu)化已經(jīng)有了較多認(rèn)識(shí)。最后,以“孔雀開屏數(shù)”為題,教師引導(dǎo)學(xué)生體驗(yàn)抽象建模的過程,同時(shí),學(xué)生以本節(jié)課掌握的知識(shí)為基礎(chǔ),設(shè)計(jì)算法、編寫程序、討論算法的優(yōu)化,在這一過程中,學(xué)生相互討論、交流感受,比賽誰的算法最簡潔、最效率。
三、理解性教學(xué)的評(píng)價(jià)標(biāo)準(zhǔn)
本節(jié)課既是重要的算法進(jìn)階課,又是對(duì)之前所學(xué)的python語句語法、控制結(jié)構(gòu)、解析算法的綜合運(yùn)用,根據(jù)課前調(diào)查,學(xué)生會(huì)將枚舉算法與循環(huán)結(jié)構(gòu)畫上等號(hào),其主要原因是:學(xué)生對(duì)枚舉算法的特點(diǎn)不熟悉,難以區(qū)分枚舉算法和普通的循環(huán)結(jié)構(gòu)有什么區(qū)別;作為課堂教學(xué)的主體,大多學(xué)生自主探究能力、聯(lián)系和應(yīng)用已有經(jīng)驗(yàn)的能力有所欠缺,很難深入去歸納新的知識(shí),需要教師適當(dāng)引導(dǎo)。本節(jié)課采用“理解性教學(xué)模式”,將教學(xué)內(nèi)容與學(xué)生實(shí)際情況緊密結(jié)合,對(duì)教學(xué)內(nèi)容進(jìn)行有效的開拓處理,讓每一個(gè)學(xué)生都成為“主角”。
基于對(duì)“理解”的認(rèn)識(shí),在闡明什么內(nèi)容可以證明理解的基礎(chǔ)上,針對(duì)本節(jié)課三個(gè)教學(xué)目標(biāo),我設(shè)計(jì)了兩種“理解性教學(xué)”評(píng)價(jià)標(biāo)準(zhǔn):
解釋。目前課堂上,對(duì)于學(xué)生掌握的理論知識(shí),教師采取的評(píng)價(jià)準(zhǔn)備往往是填空、選擇題,缺乏了對(duì)學(xué)生建構(gòu)知識(shí)、理解知識(shí)的鍛煉。本節(jié)課針對(duì)枚舉算法的概念、三要素等理論,我們首先引導(dǎo)學(xué)生舉例現(xiàn)實(shí)問題、聯(lián)系以往循環(huán)結(jié)構(gòu)的知識(shí)、歸納枚舉特點(diǎn),然后讓學(xué)生用自己的話說出自己理解的枚舉算法,其中包括“是什么,為什么和怎么用”這一類問題。學(xué)生只有經(jīng)過自身對(duì)知識(shí)的建構(gòu),實(shí)現(xiàn)知識(shí)的遷移,才能更容易靈活應(yīng)用于實(shí)際問題。
應(yīng)用。在上一階段完成解釋枚舉算法的前提下,本階段要求學(xué)生把所學(xué)的知識(shí)有效地應(yīng)用于新穎和變式的情境中。傳統(tǒng)課堂上,枚舉算法的學(xué)習(xí)往往只要求學(xué)生能掌握跟蹤變量、讀懂算法,完全以解題作為課堂目標(biāo)。接受這樣的學(xué)習(xí),學(xué)生根本無法獨(dú)立寫出完整的代碼。本節(jié)課針對(duì)枚舉算法的應(yīng)用,通過步步引導(dǎo)學(xué)生抽象建模、優(yōu)化算法,要求學(xué)生熟練掌握枚舉算法的知識(shí),透徹地了解如何運(yùn)用這些知識(shí)解決實(shí)際問題,最終寫出“馬克思手稿”題解的代碼,并逐步優(yōu)化。
理解性的“應(yīng)用”還要求學(xué)生把知識(shí)與具體情境相結(jié)合,對(duì)知識(shí)進(jìn)行創(chuàng)新。因此本節(jié)課設(shè)計(jì)了拓展任務(wù)“孔雀開屏數(shù)”,讓學(xué)生能從多個(gè)視角,運(yùn)用枚舉算法解決難題,這種靈活運(yùn)用的能力正是理解性應(yīng)用中所不可或缺的能力。學(xué)生只有表現(xiàn)出對(duì)枚舉算法的重構(gòu)和再創(chuàng)造,這樣的應(yīng)用才是自發(fā)性的、理解性的。
傳統(tǒng)高中信息技術(shù)教學(xué)的教學(xué)內(nèi)容缺乏深度和廣度,如今新課程改革,在新課標(biāo)的要求下,教師充分地認(rèn)識(shí)到教學(xué)必須要超越理論知識(shí)、操作技能,追求理解性教學(xué)成為高中信息技術(shù)教師的教學(xué)理念。本文旨在以“枚舉算法”為例,為提高高中信息技術(shù)理解性教學(xué)的效果貢獻(xiàn)一點(diǎn)小小的力量。
參考文獻(xiàn)
[1]何燁,盛群力.理解的六種維度觀——知識(shí)理解的新視角[G].全球教育展望,2006.35(07):27-29
[2]潘旭東.為理解而教——對(duì)理解性學(xué)習(xí)的基本認(rèn)識(shí)[G].小學(xué)教學(xué)參考,2017(23):1-4
[3]張益軍.例談高中信息技術(shù)理解性教學(xué)實(shí)踐[G].中國信息技術(shù)教育,2013(12):46-47,88