對“算法初步”在中學(xué)教學(xué)中的一些思考.doc_第1頁
對“算法初步”在中學(xué)教學(xué)中的一些思考.doc_第2頁
對“算法初步”在中學(xué)教學(xué)中的一些思考.doc_第3頁
對“算法初步”在中學(xué)教學(xué)中的一些思考.doc_第4頁
對“算法初步”在中學(xué)教學(xué)中的一些思考.doc_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

鹽城師范學(xué)院畢業(yè)論文對“算法初步”在中學(xué)教學(xué)中的一些思考摘要:當(dāng)算法作為重要內(nèi)容第一次被列入高中數(shù)學(xué)的必修課程時,曾引起了強烈的反響。如今,算法在中學(xué)的第一輪教學(xué)實驗已經(jīng)結(jié)束了。本文從一個教材編寫者的角度出發(fā),匯集了實驗中的一些經(jīng)驗和教訓(xùn),并將思考和整理的結(jié)果呈現(xiàn)出來,希望引起更多讀者對這一議題的研討。關(guān)鍵詞:算法; 算法的教學(xué); 算法的三種基本邏輯結(jié)構(gòu) “算法初步”一章在中學(xué)的第一輪教學(xué)實驗已經(jīng)結(jié)束了。這一首次出現(xiàn)在中學(xué)數(shù)學(xué)課程中的內(nèi)容,既給一些教師造成了巨大的壓力,成為他們教學(xué)的難點,也激發(fā)了一些教師極大的興趣,為他們發(fā)揮創(chuàng)造力和施展個人特長提供了很好的機會??傮w來說,教師們在教學(xué)的過程中一般都投入了很大的精力,也積累了一些成功或失敗的經(jīng)驗。作為“算法初步”的編寫者之一,筆者一直密切關(guān)注本章的教學(xué)實踐,也非常希望已完成本章教學(xué)或正在為此做準(zhǔn)備的教師,都積極參與到本章的教學(xué)研討中來,使“算法初步”在中學(xué)中的教學(xué)得到進一步的成熟和完善。本文的目的就是試圖從教材編寫者的角度出發(fā),對“算法初步”的教學(xué)做一個總結(jié),特別是介紹教學(xué)中一些好的想法和做法,以起到拋磚引玉的作用。一、引入算法的必要性算法的引入在中學(xué)數(shù)學(xué)教師中曾引起過強烈的反響。其中一些教師持不理解的態(tài)度,如有的教師認為這些內(nèi)容缺乏“數(shù)學(xué)味”,屬于信息技術(shù)課程的內(nèi)容,因此安排在數(shù)學(xué)課程中是不合適的。筆者在實踐中發(fā)現(xiàn),對于大多數(shù)教師來說,算法的教學(xué)確實大大加重了他們的教學(xué)負擔(dān)。但是,算法的引入仍然具有必要性,它理應(yīng)受到“歡迎”,而不是“排斥”。下面,從三個方面對在中學(xué)數(shù)學(xué)的基礎(chǔ)課程中引入算法的必要性做一個闡述,希望能夠解答一些教師的困惑,提高算法的支持度。(一) 算法是計算機科學(xué)的核心就像人類發(fā)明機器是為了拓展人的生產(chǎn)能力、發(fā)明交通工具是為了拓展人的行動能力一樣,計算機的發(fā)明是為了將人的抽象思維能力拓展到自身以外。每一天,我們使用計算機的電子表格、字處理器、網(wǎng)頁瀏覽器等程序塊來完成各種各樣的任務(wù)。表面看來,計算機做的事情非常漂亮,但那只是一種幻覺。計算機可以做的所有事情只是非??焖俚夭僮饔?和0組成的數(shù)字。另一方面,我們?nèi)祟悈s不能用1和0進行思考。算法就是將人類的思維能力形式化為計算機可以執(zhí)行的步驟,使得若干微小的電子元件代替人類進行思考。具體過程是先將解決問題的一系列步驟寫成算法,再翻譯成某種程序設(shè)計語言在計算機上實現(xiàn),就得到了我們每天操作的程序塊。因此,算法是計算機科學(xué)的核心,換句話說,算法是計算機程序的基礎(chǔ)。沒有算法,計算機的存在也就失去了意義。(二) 科學(xué)計算成為第三種科學(xué)研究方法 隨著社會和科學(xué)技術(shù)的發(fā)展與進步,科學(xué)的兩大研究方法理論和實驗越來越多地表現(xiàn)出局限性。許多研究的對象既不可能用理論精確地描述,也不可能通過實驗手段來實現(xiàn),而計算方法與之相比,有其獨到之處??茖W(xué)計算是20世紀(jì)后期才興起的一門學(xué)科,如今已經(jīng)廣泛滲透到生物醫(yī)學(xué)研究、基因工程、太空探測和每日天氣預(yù)報等各個領(lǐng)域。人們利用計算機進行模擬和實驗來理解現(xiàn)象,猜測新的事實,發(fā)現(xiàn)新的理論,使各個領(lǐng)域的研究都獲得突破的可能。例如,醫(yī)生想知道病人大腦或其他器官的一些情況,他無法簡單地將病人解剖來進行觀察,但可以利用計算機來處理超聲波或磁場共振信號,并建立可視圖像;經(jīng)濟學(xué)家想為政府制定經(jīng)濟政策提供輔助信息,若采用在局部區(qū)域內(nèi)制定實驗性的經(jīng)濟政策的方法,可能會給該區(qū)域造成巨大的損失,但通過建立經(jīng)濟行為的算法模型,模擬各種經(jīng)濟現(xiàn)象,則可能得到理想的結(jié)果??茖W(xué)計算對每個專業(yè)和每個研究領(lǐng)域都產(chǎn)生了巨大的沖擊。隨著幾乎所有學(xué)科走向定量化和精確化,科學(xué)知識結(jié)構(gòu)也發(fā)生了巨大的變化,產(chǎn)生了一系列計算性的學(xué)科分支,如計算幾何、算法數(shù)論、計算統(tǒng)計、計算流體力學(xué)、計算量子化學(xué)、計算胚胎學(xué)、計算地質(zhì)學(xué)、計算氣象學(xué)、計算材料科學(xué)、計算天文學(xué)等等。 現(xiàn)在,科學(xué)計算繼實驗、理論之后,已經(jīng)成為第三種科學(xué)研究手段。(三) 計算思維時代的到來在以規(guī)?;笊a(chǎn)為特征的“機械時代”,一般不需要勞動者擁有出眾的才華或者獨特的創(chuàng)意,在這種體制下培養(yǎng)出的人才是“模式化”的、“整齊劃一”的,勞動者只需要掌握自己所從事工作的基礎(chǔ)知識,并按照上級的指令認真做事就可以了。如今,我們的生活方式正在被計算機和網(wǎng)絡(luò)所日益改變著。更加重要的是,計算機不僅在形式上改變著我們的生活方式,而且從思維的深處改變著我們認識世界、改造世界的方式,對我們?nèi)绾嗡伎妓鎸Φ膯栴}和如何解決問題都產(chǎn)生了深刻的影響。21世紀(jì)是創(chuàng)意與構(gòu)思的時代,有意識地培養(yǎng)學(xué)生的算法思想,幫助他們構(gòu)建算法意識,以“算法的視角”看待和解決問題,必將有利于他們未來的發(fā)明與創(chuàng)新。 二、數(shù)學(xué)課程中算法的切入點傳統(tǒng)程序設(shè)計語言的教學(xué)往往存在一個弊端,即讓學(xué)生過早地糾纏于程序的調(diào)試和實現(xiàn),而任何一種程序設(shè)計語言通常都涉及到大量與技術(shù)問題相關(guān)的煩人細節(jié),使得成功編譯和執(zhí)行程序需要花費大量的時間。事實上,每一種程序設(shè)計語言都是為特殊的目標(biāo)而創(chuàng)建的,都是將算法轉(zhuǎn)換為計算機程序的工具,因此它們之間的差別只是一件小事,算法才是關(guān)鍵所在。在數(shù)學(xué)課程中,算法的教學(xué)更應(yīng)該關(guān)注的是算法對問題的抽象過程和算法的構(gòu)建過程。在這個過程中,使學(xué)生著重理解算法的“算理”,同時體會算法的程序性、明確性、有效性和有限性等特點,學(xué)習(xí)設(shè)計和描述算法以解決實際問題和與人交流,發(fā)展有條理的思維和表達能力,提高邏輯判斷能力。因此,在數(shù)學(xué)課程中,應(yīng)該盡力讓學(xué)生在簡單的計算機語言環(huán)境中學(xué)習(xí)算法的基本知識,而把有效設(shè)計、實現(xiàn)、調(diào)試和測試程序的任務(wù)留給信息技術(shù)等其他課程。從這個層面上說,在教學(xué)中應(yīng)該把程序框圖作為描述算法的主要工具。 另一方面,進行算法的教學(xué)又不能完全脫離計算機程序設(shè)計。這是因為,我們要講的算法不是廣義的解決現(xiàn)實中一切問題的算法,而是“用計算機來解決某一類問題的程序或步驟”。這就要求學(xué)生在設(shè)計算法時,調(diào)整以往的解數(shù)學(xué)題的思維方式,設(shè)計出明確、有效、有限、可以轉(zhuǎn)化為計算機程序的算法步驟。同時,還要理解一些在計算機程序設(shè)計中所慣用的做法,主要是設(shè)置變量和賦值。例如,在求前100個正整數(shù)的和的“累加器”中,包含算法步驟“sumsum+n”“nn+1”,它們表示的不是相等,而是賦值過程,但很多學(xué)生在初學(xué)算法時都難以理解。為了解決這個問題,可以在進行三種基本邏輯結(jié)構(gòu)的教學(xué)時,結(jié)合具體例子幫助學(xué)生學(xué)習(xí)如何設(shè)置變量和進行賦值。三、算法教學(xué)的重點(一) 算法教學(xué)的過程通常,人們在用計算機解決問題時,先在頭腦中構(gòu)思一個算法(這類似于教科書中的用自然語言描述算法),接著畫出程序框圖形象直觀地把算法表達出來,然后再根據(jù)程序框圖編寫計算機程序。我們進行算法教學(xué),也是遵循類似的過程進行的。首先,讓學(xué)生在理解算法概念的基礎(chǔ)上,學(xué)習(xí)用自然語言描述算法,然后,教學(xué)生畫程序框圖表示算法,最后,讓學(xué)生將程序框圖轉(zhuǎn)化為計算機程序,在計算機上實現(xiàn)算法。(二) 算法教學(xué)的重點筆者認為在上述算法教學(xué)的過程中,教學(xué)的重點是算法的三種基本邏輯結(jié)構(gòu),即順序結(jié)構(gòu)、條件結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。這是因為,三種基本邏輯結(jié)構(gòu)被認為是一個良好算法的基本單元,換句話說,要設(shè)計出一個結(jié)構(gòu)良好、易讀好懂的算法,就必須以三種基本邏輯結(jié)構(gòu)為基礎(chǔ)來構(gòu)建算法。而且,三種基本邏輯結(jié)構(gòu)中蘊涵了比較深刻的思想。順序結(jié)構(gòu)反映的是“step by step”的思想,即把解決問題的方法步驟化,一步一步地執(zhí)行;條件結(jié)構(gòu)反映的是“先判斷、后執(zhí)行”的思想,計算機區(qū)別于其他機械的能力就來自于算法做判斷和按判斷的結(jié)果行動的能力;循環(huán)結(jié)構(gòu)蘊涵的是“遞推”的思想,由于學(xué)生還沒有學(xué)習(xí)數(shù)列,對這種思想方法還是初次接觸。由三種基本邏輯結(jié)構(gòu)順序構(gòu)成的程序框圖,明確簡練,結(jié)構(gòu)分明,很容易改寫成計算機程序,而程序設(shè)計語言中的賦值語句、條件語句和循環(huán)語句可以看成是三種基本邏輯結(jié)構(gòu)的“機器化”。教學(xué)算法的三種基本邏輯結(jié)構(gòu),結(jié)合程序框圖的教學(xué)進行為宜。具體做法是:首先,結(jié)合程序框圖,幫助學(xué)生理解三種基本邏輯結(jié)構(gòu)的含義;然后,在設(shè)計一個算法的程序框圖的過程中,選擇合適的基本邏輯結(jié)構(gòu)表示算法步驟。下面,對算法的三種基本邏輯結(jié)構(gòu)作一些具體的說明,供教師參考。1. 順序結(jié)構(gòu)顧名思義,順序結(jié)構(gòu)就是按照算法步驟排列的順序,逐條執(zhí)行算法。如圖1所示,虛線框內(nèi)是一個順序結(jié)構(gòu),步驟和步驟n+1是順序執(zhí)行的。順序結(jié)構(gòu)在計算機中表現(xiàn)為,計算機按照語句出現(xiàn)的先后次序執(zhí)行的一串語句。一般來說,學(xué)生對順序結(jié)構(gòu)的理解沒有困難。2. 條件結(jié)構(gòu)條件結(jié)構(gòu)是根據(jù)“條件”在不同情況下的取值選擇不同的處理方法,可以在兩種情況下選擇一種(雙分支),也可以在多種情況下選擇一種(多分支)。教科書一般只采用了“雙分支”的簡單情形。如圖2所示,虛線框內(nèi)是一個條件結(jié)構(gòu)。此結(jié)構(gòu)中包含一個判斷框,根據(jù)條件p是否滿足,選擇執(zhí)行步驟A或步驟B,但不會出現(xiàn)同時執(zhí)行步驟A和步驟B的情形。3. 循環(huán)結(jié)構(gòu)在生活中,我們有時需要重復(fù)做一些事情(如求50個學(xué)生的總成績,需要做50次加法運算,每次加入一個學(xué)生的成績)。從完成這類事情的過程中,可以找出3個關(guān)鍵的地方,即“從什么地方開始”“反復(fù)做什么”“在什么條件下結(jié)束”。計算機的運算速度快,最善于進行重復(fù)性的工作,可以將人們從繁重的重復(fù)運算中解救出來。循環(huán)結(jié)構(gòu)可以讓計算機在某個條件成立的情況下重復(fù)執(zhí)行某個步驟。在構(gòu)造循環(huán)結(jié)構(gòu)時,也必須保證完成下面的事情。(1) 循環(huán)前,初始化變量的值。例如,在“輸出1100”的循環(huán)結(jié)構(gòu)中,要先給輸出的變量i賦初值1。(2) 確定循環(huán)體。循環(huán)體就是在循環(huán)結(jié)構(gòu)中反復(fù)執(zhí)行的操作步驟,例如,上述循環(huán)結(jié)構(gòu)中的循環(huán)體是“輸出變量i”和“i=i+1”。(3) 設(shè)置循環(huán)終止條件。循環(huán)結(jié)構(gòu)不能是永無終止的“死循環(huán)”,一定要在某個條件下終止循環(huán),這就需要條件結(jié)構(gòu)來做出判斷,因此,循環(huán)結(jié)構(gòu)中一定包含條件結(jié)構(gòu)。例如,上述循環(huán)結(jié)構(gòu)中的終止條件是“i=100”。循環(huán)結(jié)構(gòu)有兩類,當(dāng)型循環(huán)和直到型循環(huán)。如圖3所示,當(dāng)型循環(huán)結(jié)構(gòu)表示“當(dāng)條件p1滿足時,反復(fù)執(zhí)行循環(huán)體”;直到型循環(huán)結(jié)構(gòu)表示“反復(fù)執(zhí)行循環(huán)體直到條件p2滿足”。 相對于順序結(jié)構(gòu)和條件結(jié)構(gòu)來說,循環(huán)結(jié)構(gòu)的教學(xué)難度較大。這是因為,盡管學(xué)生以往對循環(huán)操作這種處理問題的方式已有一些經(jīng)驗,但真正接觸循環(huán)結(jié)構(gòu)還是第一次;而且,程序設(shè)計中的循環(huán)結(jié)構(gòu)與學(xué)生熟悉的重復(fù)運算存在一定的區(qū)別。因此,需要幫助學(xué)生理解和構(gòu)造適合于計算機的循環(huán)結(jié)構(gòu)。從圖13的程序框圖中可以看出,三種基本邏輯結(jié)構(gòu)存在共同的特點,即只有一個入口和一個出口,每一個基本邏輯結(jié)構(gòu)的每一部分都有機會被執(zhí)行到,而且結(jié)構(gòu)內(nèi)不存在死循環(huán)。四、典型算法模型的作用實踐證明,在進行算法教學(xué)的過程中,應(yīng)盡可能選取最簡單、最典型的算法模型作為載體。這是因為,一方面進行算法教學(xué)的目標(biāo)是介紹算法的基本思想和初步知識,另一方面,算法本身就是與具體問題結(jié)合在一起的,空講理論只能導(dǎo)致學(xué)生不能真正理解算法和不會設(shè)計具體問題的算法,而從簡單、典型、學(xué)生熟悉的算法模型中挖掘、提煉出來的思想和方法,更容易被學(xué)生接受。下面,我們舉兩個例子說明這個問題。(一) 條件結(jié)構(gòu)與分段函數(shù)分段函數(shù)是學(xué)生已經(jīng)熟悉的內(nèi)容,它的表達式根據(jù)自變量取值范圍的不同而有不同的形式。在進行條件結(jié)構(gòu)的教學(xué)時,可以將條件結(jié)構(gòu)與分段函數(shù)聯(lián)系起來,讓學(xué)生設(shè)計含有條件結(jié)構(gòu)的算法來計算分段函數(shù)的值。例如,要輸出分段函數(shù)的值,就可以用一個最簡單的條件結(jié)構(gòu)來構(gòu)造算法。對于一些應(yīng)用問題,如判斷某一年是否為閏年,求一元二次方程ax2+bx+c=0的實數(shù)根等等,也可以先將問題轉(zhuǎn)化為分段函數(shù),再用條件結(jié)構(gòu)來構(gòu)造算法。(二) 循環(huán)結(jié)構(gòu)與“累加器”如前所述,循環(huán)結(jié)構(gòu)是教學(xué)的難點。筆者認為“累加器”是一個很好的載體,借助于“累加器”,可以使學(xué)生經(jīng)歷把“遞推求和”轉(zhuǎn)化為“循環(huán)求和”的過程,同時經(jīng)歷“初始化變量”“確定循環(huán)體”“設(shè)置循環(huán)終止條件”3個構(gòu)造循環(huán)結(jié)構(gòu)的關(guān)鍵步驟,從而初步理解循環(huán)結(jié)構(gòu)和學(xué)習(xí)構(gòu)造循環(huán)結(jié)構(gòu)的一般方法。可以選擇最簡單的“累加器”問題,例如求1+2+100的值。這個問題的自然求和過程可以表示為:S2S12,S3S23,S4S34,SnSn-1n(n2,3,100),用遞推公式表示為:如圖4所示,若直接利用這個遞推公式構(gòu)造循環(huán)結(jié)構(gòu),可得顯然,循環(huán)體中的步驟SnSn-1n使用了S1,S2,S3,S100共100個變量,計算機執(zhí)行這樣的算法時需要占用較大的內(nèi)存。為了節(jié)省變量,需要從上述遞推求和的步驟SnSn-1n中提取出共同的結(jié)構(gòu),即第n步的結(jié)果第(n1)步的結(jié)果n。若引進一個累加變量sum來表示每一步的計算結(jié)果,則第n步可以表示為賦值過程sumsum+n,其中賦值號“”右邊的變量sum表示前一步累加所得的和,賦值號“”左邊的sum表示該步累加所得的和,n表示該步累加的數(shù)。盡管這種賦值過程是計算機程序設(shè)計中的慣用方法,但對于學(xué)生來說可能既新奇又難以理解,在教學(xué)時需要花費一些筆墨。由sum的初始值為0,n的值由1增長到100,可以初始化循環(huán)變量和設(shè)置循環(huán)終止條件,如圖5所示。五、優(yōu)化或改造算法的意義解決同一個問題,可以有不同的算法;同一個算法稍加改造,可以用于解決不同的問題。對算法的優(yōu)化或改造,是幫助學(xué)生理解算法的通用性、有效性等的良好素材。前面我們說過,結(jié)合程序框圖的教學(xué),教授算法的三種基本邏輯結(jié)構(gòu),有利于學(xué)生對后者的理解和掌握。類似地,對算法的優(yōu)化或改造,在算法的程序框圖上進行,也有利于學(xué)生看清算法的結(jié)構(gòu)和更好地把握“算理”。舉個例子,讓學(xué)生改造求1+2+100的值的“累加器”的程序框圖(圖5),表示 求1+2+m(mZ*)的值的過程; 求3+5+(2m+1) (mZ*)的值的過程; 輸出1,1+2,1+2+3,1+2+3+100的過程; 求2+22+

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論