木世杰 孫雪梅 朱維宗
1引言
隨著現(xiàn)代信息技術(shù)飛速發(fā)展,算法在科學(xué)技術(shù)、社會(huì)發(fā)展、生活中發(fā)揮著越來(lái)越大的作用,算法思想已經(jīng)成為現(xiàn)代人應(yīng)具備的一種數(shù)學(xué)素養(yǎng)開(kāi)設(shè)“算法初步”,利于培養(yǎng)學(xué)生分析問(wèn)題和解決問(wèn)題的能力,利于提高學(xué)生思維的邏輯性、條理性和精確性隨著新課程的全面深入,關(guān)于算法的“教與學(xué)”的問(wèn)題已經(jīng)引起了師生的廣泛關(guān)注由于算法的課程內(nèi)容對(duì)于很多數(shù)學(xué)老師來(lái)說(shuō)是比較陌生的,在具體實(shí)踐中又沒(méi)有現(xiàn)成的經(jīng)驗(yàn)可以“拿來(lái)我用”,因此給教師的教學(xué)帶來(lái)了全新的挑戰(zhàn)
二十世紀(jì)末,計(jì)算機(jī)大師DEKnoth提出“計(jì)算機(jī)科學(xué)就是研究算法的學(xué)問(wèn)”,“控制計(jì)算機(jī)運(yùn)行的任何程序至少是一個(gè)‘半算法,而每種算法都可以轉(zhuǎn)化為一系列數(shù)學(xué)運(yùn)算或邏輯判斷”[1]由此可見(jiàn),“算法”既是數(shù)學(xué)科學(xué)的重要基礎(chǔ),也是計(jì)算機(jī)科學(xué)的核心,算法與計(jì)算機(jī)技術(shù)有著緊密的聯(lián)系因此,可采用 “數(shù)學(xué)與信息技術(shù)相結(jié)合”的教學(xué)方式來(lái)進(jìn)行高中“算法初步”的教學(xué)
2“數(shù)學(xué)與信息技術(shù)相結(jié)合”教學(xué)方式
“數(shù)學(xué)與信息技術(shù)相結(jié)合”教學(xué)方式的指導(dǎo)思想:一、在數(shù)學(xué)課堂上,注重對(duì)算法理論知識(shí)的解讀和傳授;二、在信息技術(shù)課堂上,結(jié)合具體的案例讓學(xué)生體會(huì)算法思想在數(shù)學(xué)問(wèn)題解決中的作用,并且通過(guò)及時(shí)的上機(jī)體驗(yàn),幫助學(xué)生更好地掌握算法語(yǔ)句,同時(shí)增強(qiáng)學(xué)生學(xué)習(xí)算法的興趣
“數(shù)學(xué)與信息技術(shù)相結(jié)合”教學(xué)方式的基本環(huán)節(jié):情境導(dǎo)入,激疑引趣——探究交流,分析算法——講練結(jié)合,上機(jī)驗(yàn)證——類比遷移,歸納概括
“情境導(dǎo)入,激疑引趣”是前提,這對(duì)引導(dǎo)學(xué)生進(jìn)行數(shù)學(xué)探究起著思維導(dǎo)向,激發(fā)學(xué)習(xí)動(dòng)機(jī)的作用如讓學(xué)生從實(shí)例情境“煮米線”的過(guò)程入手,指出“做任何事情,都是在一定的條件下按某種順序執(zhí)行的一系列操作”通過(guò)這樣的引入方式,介紹算法的含義以及“step by step”的算法思想就水到渠成另外,由于學(xué)生第一次接觸算法,對(duì)于某些專用術(shù)語(yǔ),教學(xué)中可采用通俗易懂、形象有趣的語(yǔ)言進(jìn)行教學(xué),可幫助學(xué)生理解抽象術(shù)語(yǔ),如用“峰回路轉(zhuǎn)”來(lái)描述循環(huán)結(jié)構(gòu)的流程圖
“探究交流,分析算法”是核心教學(xué)中要注重師生、生生之間的交流討論讓學(xué)生暢所欲言,發(fā)現(xiàn)奇思妙想,最后找出最佳算法在綜合實(shí)踐課的案例學(xué)習(xí)中,不再是由教師講解,而是讓學(xué)生自己上臺(tái)講解
“講練結(jié)合,上機(jī)驗(yàn)證”是手段了解算法的知識(shí)點(diǎn)后,學(xué)生未必能夠牢固掌握,只有通過(guò)適量地“練”才能鞏固因而在課堂上安排適當(dāng)?shù)木毩?xí),要求學(xué)生即時(shí)上機(jī)體驗(yàn),通過(guò)在計(jì)算機(jī)上的實(shí)踐驗(yàn)證,理解和掌握算法,體現(xiàn)數(shù)學(xué)課程與信息技術(shù)課程的整合
“類比遷移,歸納概括”是關(guān)鍵“算法初步”有效教學(xué)的一個(gè)重要指標(biāo),是學(xué)生的算法學(xué)習(xí)能否從一個(gè)問(wèn)題遷移到另一個(gè)問(wèn)題,從一個(gè)情境遷移到另一個(gè)情境算法中的一個(gè)很重要的思想是類比思想,即把算法問(wèn)題進(jìn)行歸類,從而揭示出問(wèn)題中的共同本質(zhì)在教學(xué)中,教師要注意引導(dǎo)學(xué)生善于認(rèn)識(shí)不同問(wèn)題間的相互關(guān)系,并依據(jù)已有的知識(shí)和經(jīng)驗(yàn)去概括、反映事物的本質(zhì)特征,類比聯(lián)想事物之間共同的要素,加強(qiáng)新舊知識(shí)之間的聯(lián)系認(rèn)識(shí)越深刻,概括水平也就越高,遷移過(guò)程越順利,遷移的效果也就越好解決一類算法問(wèn)題后要及時(shí)歸納概括,從而利于學(xué)生掌握算法的邏輯結(jié)構(gòu)、加深對(duì)算法知識(shí)點(diǎn)的理解,加速算法技能的形成
使用“數(shù)學(xué)與信息技術(shù)相結(jié)合”教學(xué)方式進(jìn)行“算法初步”的學(xué)習(xí),并非是要學(xué)生產(chǎn)生算法就是計(jì)算機(jī)技術(shù)的錯(cuò)覺(jué),而是要讓學(xué)生結(jié)合計(jì)算機(jī)技術(shù),以更直觀的形式學(xué)習(xí)算法,通過(guò)及時(shí)的上機(jī)體驗(yàn),加深對(duì)算法理論知識(shí)的理解、對(duì)算法思想的感受以及對(duì)程序框圖設(shè)計(jì)的掌握使學(xué)生不僅有理性認(rèn)識(shí),而且也有相應(yīng)的感性認(rèn)識(shí),通過(guò)上機(jī)實(shí)踐,學(xué)生能更切實(shí)地感受到算法的奇妙,從而激發(fā)學(xué)生學(xué)習(xí)算法的興趣
3應(yīng)用“數(shù)學(xué)與信息技術(shù)相結(jié)合”的教學(xué)方式進(jìn)行教學(xué)的教學(xué)案例
案例秦九韶算法(選自人教版普通高中課程標(biāo)準(zhǔn)實(shí)驗(yàn)教科書(shū)必修3第一章《算法初步》的13節(jié)《算法案例》)
教學(xué)過(guò)程片斷(實(shí)錄):
(1)問(wèn)題導(dǎo)入,激疑引趣
提出問(wèn)題:設(shè)計(jì)求多項(xiàng)式當(dāng)x=x0的值的算法,并寫(xiě)出程序,統(tǒng)計(jì)所做的計(jì)算的種類及計(jì)算次數(shù)
(意圖使學(xué)生在自己操作的過(guò)程中進(jìn)一步認(rèn)識(shí)問(wèn)題本身及其算法)
學(xué)生提出一般的解決方案,如:當(dāng)x=5時(shí),
教師點(diǎn)評(píng)上述算法一共做了15次乘法運(yùn)算,5次加法運(yùn)算;優(yōu)點(diǎn)是簡(jiǎn)單,易懂,缺點(diǎn)是不通用,不能解決任意多項(xiàng)式的求值問(wèn)題,而且計(jì)算效率不高
問(wèn):有沒(méi)有更高效的算法?
(意圖幫助學(xué)生建立改進(jìn)算法、提高計(jì)算效率的意識(shí))
師:計(jì)算x的冪時(shí),可以利用前面的計(jì)算結(jié)果,以減少計(jì)算量,即先計(jì)算x2再依次算x2x (x2x)x,((x2)x)x的值,這樣計(jì)算上述多項(xiàng)式的值,一共需要多少次乘法,多少次加法?
生:9次乘法運(yùn)算,5次加法
(2)探究交流,分析算法
師:第二次做法與第一種相比,乘法的運(yùn)算次數(shù)減少了,因而可以提高速度,而且對(duì)于計(jì)算機(jī)來(lái)說(shuō),做一次乘法所需的運(yùn)算時(shí)間比做一次加法要長(zhǎng)得多,因此第二種做法可以更快地得到結(jié)果
師:能否探索更好的算法,來(lái)解決任一多項(xiàng)式的求值問(wèn)題?
(意圖進(jìn)一步探索有一般意義的算法)
教師引導(dǎo)學(xué)生把多項(xiàng)式變形為:
師:從內(nèi)到外,把每一個(gè)括號(hào)都看成一個(gè)常數(shù),那么變形后的式子 中有哪一些“一次式”?x的系數(shù)依次都是什么?
師:若將x的值代入變形后的式子中,那么求值的計(jì)算過(guò)程是怎么樣的
(意圖引導(dǎo)學(xué)生發(fā)現(xiàn)規(guī)律,歸納概括)
師:計(jì)算的過(guò)程可以列表表示為(如表1所示):
生:將變形前x的第一個(gè)系數(shù)乘以x的值,加上變形前第二個(gè)系數(shù),得到一個(gè)新的系數(shù);將此系數(shù)再乘以x的值,再加上變形前的第三個(gè)系數(shù),又得到一個(gè)新的系數(shù);繼續(xù)對(duì)新系數(shù)做上面的變換直到與變形前的最后一個(gè)系數(shù)相加,得到一個(gè)新的系數(shù)為止,這個(gè)系數(shù)即為所求的多項(xiàng)式的值
師:指出這種算法就是“秦九韶算法”(同時(shí)介紹秦九韶)
師:用秦九韶算法求多項(xiàng)式與其組成有直接聯(lián)系嗎?用秦九韶算法計(jì)算上述多項(xiàng)式的值,需要多少次加法運(yùn)算?
(意圖引導(dǎo)學(xué)生分析秦九韶算法的特點(diǎn))
教師引導(dǎo)學(xué)生發(fā)現(xiàn)在求值的過(guò)程中,計(jì)算只與多項(xiàng)式的系數(shù)有關(guān),讓學(xué)生統(tǒng)計(jì)所進(jìn)行的乘法和加法運(yùn)算的次數(shù)
生:共做了5次乘法運(yùn)算,5次加法運(yùn)算
(3)講練結(jié)合,上機(jī)驗(yàn)證
師:秦九韶算法適用于一般的多項(xiàng)式f(x)的求值問(wèn)題嗎?
(意圖引出秦九韶算法的通用性的特點(diǎn))
師:怎樣用秦九韶算法求一般的多項(xiàng)式f(x)當(dāng)x為任意實(shí)數(shù)時(shí)的值?
生:先將多項(xiàng)式變形為f(x)然后由內(nèi)向外逐層計(jì)算一次多項(xiàng)式的值
教師引導(dǎo)學(xué)生思考:把n次多項(xiàng)式的求值問(wèn)題轉(zhuǎn)化成求n個(gè)一次多項(xiàng)式的值的問(wèn)題,即求
生:n次乘法運(yùn)算,n次加法運(yùn)算
師:觀察上述秦九韶算法中的n個(gè)一次式,可見(jiàn)vk的計(jì)算要用到vk-1的值若令v0=an,可以得到下面的公式:
這是一個(gè)在秦九韶算法中反復(fù)執(zhí)行的步驟,此可以用循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn)
算法步驟如下:
第一步:輸入多項(xiàng)式次數(shù)n、最高次項(xiàng)的系數(shù)an和x的值
第二步:將v的值初始化為an,將i的值初始化為n-1
第三步:輸入i次項(xiàng)的系數(shù)ai
第五步:判斷i是否大于或等于0,若是,則返回第三步;否則,輸出多項(xiàng)式的值v
師:怎樣用程序框圖表示秦九韶算法?
(意圖引導(dǎo)學(xué)生認(rèn)識(shí)秦九韶算法中的循環(huán)過(guò)程,并用算法的循環(huán)結(jié)構(gòu)來(lái)表示這個(gè)過(guò)程)
程序框圖:(略)
……
例設(shè)計(jì)利用秦九韶算法計(jì)算5次多項(xiàng)式
程序框圖:(略)
練習(xí):利用程序框圖試編寫(xiě)vb程序并在計(jì)算機(jī)上調(diào)試自己的程序
……
(4)類比遷移,歸納概括
師(小結(jié)):通過(guò)對(duì)秦九韶算法的學(xué)習(xí),你對(duì)算法本身有哪些進(jìn)一步的認(rèn)識(shí)
(意圖引導(dǎo)學(xué)生歸納概括,促進(jìn)知識(shí)的正遷移)
生1:算法具有通用性的特點(diǎn),可以解決一類問(wèn)題
生2:解決同一類問(wèn)題,可以有不同的算法,但計(jì)算的效率是不同的,應(yīng)該選擇高效的算法
生3:算法的種類雖多,但三種邏輯結(jié)構(gòu)可以有效地表達(dá)各種算法
……
評(píng)析這是一個(gè)經(jīng)典的算法案例之一,旨在讓學(xué)生在學(xué)習(xí)了算法的初步知識(shí),理解了表示算法的算法步驟、程序框圖和三種不同的程序方式后,結(jié)合典型算法案例,讓學(xué)生經(jīng)歷算法解決的全過(guò)程,體驗(yàn)算法在解決問(wèn)題中的重要作用,進(jìn)一步體會(huì)算法的基本思想,發(fā)展有條理地思考與數(shù)學(xué)表達(dá)能力算法本身就是與具體問(wèn)題結(jié)合在一起的,如果只空講理論,既不能使學(xué)生真正理解算法,也不能針對(duì)具體問(wèn)題設(shè)計(jì)出正確的算法,而從典型的、學(xué)生熟悉的算法模型中挖掘、提煉出來(lái)的思想和方法,更容易被學(xué)生接受由于案例中涉及的數(shù)據(jù)計(jì)算量較大,在計(jì)算機(jī)上對(duì)該算法進(jìn)行校驗(yàn)可以使學(xué)生更直觀地感受算法思想,激發(fā)學(xué)生學(xué)習(xí)算法的興趣加深了對(duì)算法概念實(shí)質(zhì)的理解,增強(qiáng)了對(duì)算法思想的感受,提高了對(duì)程序框圖的設(shè)計(jì)能力
4教學(xué)建議
算法是從問(wèn)題到用計(jì)算機(jī)求解的中間環(huán)節(jié),這個(gè)環(huán)節(jié)需要通過(guò)人的邏輯思維來(lái)完成下圖說(shuō)明了用計(jì)算機(jī)求解算法問(wèn)題中數(shù)學(xué)和信息科學(xué)的關(guān)系
用計(jì)算機(jī)求解算法問(wèn)題中數(shù)學(xué)與信息科學(xué)的關(guān)系
正因?yàn)樗惴ㄌ幵趩?wèn)題和計(jì)算機(jī)求解的中間,所以,可從數(shù)學(xué)和信息科學(xué)兩個(gè)角度來(lái)研究算法但從數(shù)學(xué)和信息科學(xué)研究算法的側(cè)重是不同的,從數(shù)學(xué)方面研究算法側(cè)重于算法設(shè)計(jì)
41正確區(qū)分算法教學(xué)和程序語(yǔ)言教學(xué)的不同設(shè)計(jì)的算法正確與否要通過(guò)編程并且運(yùn)行程序進(jìn)行驗(yàn)證,借助于程序語(yǔ)言可以使算法得以實(shí)現(xiàn);反之要設(shè)計(jì)程序就必須弄清算法原理算法教學(xué)是程序語(yǔ)言教學(xué)的基礎(chǔ),程序語(yǔ)言教學(xué)是算法教學(xué)必要的延續(xù),兩者相輔相成然而,兩者在教學(xué)重點(diǎn)上有所不同,算法的教學(xué)重點(diǎn)在于:體現(xiàn)算法的思想——程序化思想,培養(yǎng)學(xué)生的邏輯思維能力,培養(yǎng)學(xué)生思維的條理性;而程序語(yǔ)言教學(xué)卻是計(jì)算機(jī)語(yǔ)言教學(xué),教學(xué)重點(diǎn)是讓學(xué)生學(xué)會(huì)編程兩者各有特色,相互聯(lián)系,在算法教學(xué)時(shí)可以充分結(jié)合程序語(yǔ)言教學(xué),鼓勵(lì)學(xué)生盡可能把自己的算法在計(jì)算機(jī)上實(shí)現(xiàn),但不可本末倒置,不要把算法內(nèi)容簡(jiǎn)單處理成程序語(yǔ)言的學(xué)習(xí)或程序設(shè)計(jì)
42選取恰當(dāng)?shù)膶?shí)例,激發(fā)學(xué)生學(xué)習(xí)算法的興趣在算法教學(xué)中,要注意循序漸進(jìn),理論性不要太強(qiáng),最好的方式就是結(jié)合實(shí)例進(jìn)行教學(xué)選取例子時(shí)要注意把握以下幾點(diǎn):
選取的例子應(yīng)該來(lái)自學(xué)生的生活實(shí)踐,或是在數(shù)學(xué)課上所學(xué)過(guò)的例如,在介紹while循環(huán)語(yǔ)句時(shí),可以選擇數(shù)學(xué)1中的二分法,便于承前啟后,導(dǎo)入新知識(shí)
選取的例子最好有豐富的背景,有趣味性在中國(guó)的《九章算術(shù)》和《孫子算經(jīng)》等古代數(shù)學(xué)著作中有許多有趣的問(wèn)題,可供選擇如著名的“雞兔同籠”問(wèn)題,該例既有趣味性也有代表性,利用此例引入算法含義,能夠提高學(xué)生的學(xué)習(xí)興趣在介紹輸入輸出語(yǔ)句時(shí),可進(jìn)一步利用此例,問(wèn)能否設(shè)計(jì)一個(gè)二元一次方程組的通用算法來(lái)啟發(fā)學(xué)生思考,從而引出輸入輸出語(yǔ)句的教學(xué)
選取的例子的算理不要太難,以貼近現(xiàn)實(shí)生活為佳,隨著學(xué)生學(xué)習(xí)的深入,可以適當(dāng)提高例子的難度開(kāi)始學(xué)習(xí)算法時(shí),選取的例子太難容易使學(xué)生產(chǎn)生厭學(xué)心理所選例子既要有蘊(yùn)涵豐富的算法思想,又要能夠貼近生活,讓學(xué)生能從中輕松地學(xué)習(xí)算法的“三基”——基本思想,基本結(jié)構(gòu)以及基本語(yǔ)句如在剛開(kāi)始上算法課時(shí),可以選擇 “給出求1×2×3×4×5×6的一個(gè)算法”的例子,該例子理解起來(lái)較簡(jiǎn)單,卻又蘊(yùn)涵著算法的基本思想——程序化解題思想
43利用計(jì)算機(jī)輔助學(xué)生學(xué)習(xí)算法,讓學(xué)生能將自己寫(xiě)出的算法通過(guò)計(jì)算機(jī)得以實(shí)現(xiàn),使學(xué)生能夠看到自己的創(chuàng)作成果,激發(fā)學(xué)生學(xué)習(xí)算法的興趣數(shù)學(xué)教師也要在計(jì)算機(jī)教師的幫助和配合下,深入研究算法相關(guān)內(nèi)容,引領(lǐng)學(xué)生把具體問(wèn)題的程序框圖轉(zhuǎn)化為程序語(yǔ)句,在應(yīng)用環(huán)節(jié)上進(jìn)一步體會(huì)和呈現(xiàn)算法思想和算法的教育價(jià)值。