信息技術(shù)的基本支撐載體是算法,信息技術(shù)的硬件是固化的算法,應(yīng)用計(jì)算機(jī)解決一類問題的核心是程序設(shè)計(jì),而程序設(shè)計(jì)的關(guān)鍵通常是選擇或構(gòu)造一個(gè)合適的算法,因此稱算法是程序的靈魂. 算法在科學(xué)技術(shù)、社會(huì)發(fā)展中發(fā)揮著越來越大的作用,并且融入了社會(huì)生活的許多方面,算法思想已經(jīng)成為現(xiàn)代人應(yīng)具備的一種數(shù)學(xué)素養(yǎng). 高中算法初步中涉及的算法“就是可以用計(jì)算機(jī)來解決的某一類問題的程序或步驟,這些程序或步驟必須是明確和有效的,而且能夠在有限步之內(nèi)完成.”所以信息技術(shù)與算法初步教學(xué)既有整合的基礎(chǔ)更有整合的必要.
1“整合”能有效檢驗(yàn)算法的正確性與合理性
算法初步中賦值語句、輸入、輸出語句、條件語句、循環(huán)語句的教學(xué),必須結(jié)合實(shí)例進(jìn)行編程來說明各語句的作用,實(shí)踐性、操作性強(qiáng). 如果只是在黑板上編程教學(xué),那無異是 “紙上談兵”,學(xué)生體驗(yàn)不深,而且所編的程序有時(shí)自認(rèn)為是正確的,但往往因?yàn)橐粋€(gè)小的疏忽,而在計(jì)算機(jī)上不能運(yùn)行通過或結(jié)果錯(cuò)誤. 例如我在講解循環(huán)語句時(shí),在課堂練習(xí)中請學(xué)生先做了這樣一道練習(xí)題,設(shè)計(jì)計(jì)算1×3×5×7×…×13的一個(gè)算法程序.對這道題大部分同學(xué)都能比較順利地寫出程序1:
程序1接著筆者提出如下問題,這個(gè)程序執(zhí)行完共循環(huán)了多少次?能否修改程序使循環(huán)次數(shù)減少?學(xué)生A回答一共循環(huán)了7次,若將i=1改為i=3,則循環(huán)次數(shù)減少1次. 我接著追問,若交換s=s*i,i=i+2的先后順序,輸出的結(jié)果s的值是否變化?對于這個(gè)問題,學(xué)生中出現(xiàn)了不同的結(jié)論,經(jīng)討論后學(xué)生B舉手回答,若交換s=s*i,i=i+2的先后順序,輸出的結(jié)果s的值將會(huì)改變,因?yàn)榻粨Q后當(dāng)循環(huán)變量i=11時(shí),循環(huán)一次后i=13,s的值已為1×3×5×7×…×13,由于此時(shí)i=13滿足循環(huán)條件,再循環(huán)一次i=15,s的值已變?yōu)?×3×5×7×…×13×15. 這時(shí)我再在電腦上當(dāng)場執(zhí)行這兩段程序,使學(xué)生信服地看到s=s*i,i=i+2的先后順序不能隨意交換. 在講評完這道題后,我又給出了如下一道變式題讓學(xué)生練習(xí),設(shè)計(jì)求滿足條件1×3×5×7×…>135135的最小整數(shù)的一個(gè)算法程序. 請學(xué)生思考這道題與剛才這道題有何不同?經(jīng)思考后學(xué)生C回答,一是前一道題已知循環(huán)次數(shù),而這道題循環(huán)次數(shù)未知. 如何設(shè)計(jì)算法程序?學(xué)生D舉手回答他設(shè)計(jì)的程序2:
程序2大多數(shù)同學(xué)同意這個(gè)程序設(shè)計(jì),這個(gè)程序究竟是否正確?我們將此程序輸入計(jì)算機(jī)執(zhí)行后得i的值是17,若交換s=s*i,i=i+2的先后順序,再將程序輸入計(jì)算機(jī)執(zhí)行后得i的值為15. 顯然由前一題1×3×5×7×…×13=135135可知,15是使1×3×5×7×…>135135成立的最小整數(shù). 這道題由于數(shù)字較大不易手工檢驗(yàn),所以如果沒有計(jì)算機(jī)即時(shí)執(zhí)行程序檢驗(yàn)較難發(fā)現(xiàn)錯(cuò)誤. 通過這兩道題的練習(xí),引導(dǎo)學(xué)生總結(jié)出用循環(huán)語句編寫程序時(shí),循環(huán)體內(nèi)的最后一條語句一般應(yīng)是改變循環(huán)變量的值.
2“整合”能有效促進(jìn)學(xué)生數(shù)學(xué)機(jī)械化思想的養(yǎng)成
現(xiàn)代數(shù)學(xué)機(jī)械化思想的核心就是算法,即把現(xiàn)實(shí)問題數(shù)學(xué)化,數(shù)學(xué)問題代數(shù)化,然后構(gòu)造算法,通過計(jì)算機(jī)來試探、嘗試和證明,從而發(fā)現(xiàn)、證明規(guī)律. 在算法初步的教學(xué)中,我們應(yīng)通過案例教學(xué)法初步讓學(xué)生學(xué)會(huì)用計(jì)算機(jī)解決問題的基本思想,即首先找到解決問題的算法(可用計(jì)算機(jī)實(shí)現(xiàn)),然后通過編寫程序借助計(jì)算機(jī)的高速運(yùn)算使問題快速獲解. 如設(shè)計(jì)一個(gè)程序,實(shí)現(xiàn):從鍵盤上輸入一個(gè)不小于2的正整數(shù)n,判斷n是否為質(zhì)數(shù),并在屏幕上顯示“是質(zhì)數(shù)”或“不是質(zhì)數(shù)”.根據(jù)質(zhì)數(shù)的定義“除了n=input(“請輸入不小于2的正整數(shù)n的值:”);
程序3能被1和它本身整除之外不能再被其它整數(shù)整除的數(shù)叫質(zhì)數(shù)”,故這個(gè)問題的算法思想是:由鍵盤任意輸入一個(gè)不小于2的正整數(shù)n,設(shè)置循環(huán)變量i的初值為2,循環(huán)條件為n是否不能被i整除,若是循環(huán)變量增加1,繼續(xù)檢驗(yàn),直到n能被i整除為止,結(jié)束循環(huán). 然后判斷n與i是否相等,若相等說明n只能被1和它本身整除是質(zhì)數(shù),若不等則說明n不是質(zhì)數(shù). 程序如程序3:(用Scilab-533語言編寫)
然后上機(jī)執(zhí)行程序,檢驗(yàn)所編程序是否正確. 只有讓學(xué)生經(jīng)歷設(shè)計(jì)算法→編寫程序→上機(jī)調(diào)試這樣的實(shí)際體驗(yàn),才能逐步建立起用算法語句編程解決實(shí)際問題的思維方法和數(shù)學(xué)機(jī)械化思想的養(yǎng)成.
3“整合”能有效提高學(xué)生學(xué)習(xí)算法的積極性
在算法初步的教學(xué)過程中,應(yīng)注重將算法融入到高中數(shù)學(xué)課程的相關(guān)內(nèi)容中,讓學(xué)生體驗(yàn)用算法在解決數(shù)學(xué)實(shí)際問題中的作用和信息技術(shù)與算法整合的優(yōu)越性,提高他們學(xué)習(xí)算法的興趣和積極性. 例如學(xué)生在高中一年級時(shí)學(xué)過用二分法求方程的近似解,當(dāng)初利用筆算或計(jì)算器計(jì)算做這類題都比較繁瑣,現(xiàn)在利用算法語句編成程序在計(jì)算機(jī)上執(zhí)行,則方便快捷. 也可選取一些用常規(guī)方法解決比較困難的數(shù)學(xué)問題,通過編程后在計(jì)算機(jī)上運(yùn)行直接得到結(jié)果,學(xué)生有了在計(jì)算機(jī)實(shí)現(xiàn)算法的體驗(yàn),會(huì)增強(qiáng)對算法的感性認(rèn)識(shí),也會(huì)增強(qiáng)對算法的興趣,真正理解算法的實(shí)際應(yīng)用. 例如我在算法案例教學(xué)中,曾給學(xué)生這樣一個(gè)數(shù)學(xué)問題:“一個(gè)人欲登上第10級樓梯,如果規(guī)定每步只能跨上一級或兩級,則不同的走法共有多少種?”這個(gè)問題的一種解法是用分類計(jì)數(shù)原理,第一類:沒有一步兩級的,則只有一種走法;第二類:恰有一步是走兩級的,則走完10級要走9步,9步中選一步是走兩級的,有C19=9種可能走法;第三類:恰有兩步是一步走兩級的,則走完10級要走8步,8步中選兩步是一步走兩級的,有C28=28種可能走法;依次類推,共有1+C19+C28+C37+C46+C55=89種走法. 但這種解法不能算是一個(gè)好的算法,因?yàn)檫@種算法不便于編程在計(jì)算機(jī)上運(yùn)行. 要使這個(gè)問題能夠通過編寫程序讓計(jì)算機(jī)運(yùn)行解決,前提必須要尋找到一個(gè)好的算法. 用計(jì)算機(jī)解決問題的核心思想是通過循環(huán)語句讓計(jì)算機(jī)反復(fù)運(yùn)行,借助計(jì)算機(jī)的高速運(yùn)算,達(dá)到快速解決問題的目的. 為了要使用循環(huán)語句,通常利用遞推思想建立起一個(gè)遞推關(guān)系式. 本題的具體算法思想如下:假設(shè)走完這10級樓梯有an種走法,這些走法可按第一步來分類,第一類:第一步是一步一級,則余下的n-1級有an-1種走法;第二類:第一步是一步兩級,則余下的n-2級有an-2種走法,所以an=an-1+an-2,又易得a1=1,a2=2. 據(jù)此遞推公式和初始值可編寫程序4.a=1;
程序4此程序輸入計(jì)算機(jī)運(yùn)行后得c=89. 將此程序稍作修改,第一行添加語句“n=input(“請輸入登上樓梯的級數(shù)n=”);”循環(huán)條件改為i<=n,即可求得登上任意指定樓梯級數(shù)的方法數(shù). 通過此例可讓學(xué)生深刻體會(huì)到算法的優(yōu)劣及其在解決問題中的重要性.
綜上所述,我們在教學(xué)“算法初步”這一內(nèi)容時(shí),由于它的實(shí)踐性、操作性強(qiáng),教師應(yīng)注意引導(dǎo)學(xué)生設(shè)計(jì)算法,編制程序,上機(jī)驗(yàn)證,在上機(jī)調(diào)試程序的過程中理解算法語句、發(fā)現(xiàn)問題、解決問題、反思算法的優(yōu)劣. 體驗(yàn)算法建模的一般流程:實(shí)際情境→提出問題→選擇算法結(jié)構(gòu)模型(順序、選擇、循環(huán)等)→流程圖(修正想法、選擇最優(yōu)解法)→選擇對應(yīng)的算法語句→編程實(shí)現(xiàn)想法→上機(jī)檢驗(yàn)并解決問題. 讓學(xué)生體會(huì)到一種成就感和挑戰(zhàn)性,調(diào)動(dòng)他們的學(xué)習(xí)積極性,逐步幫助他們建立起用計(jì)算機(jī)解決問題的算法思維模式.
作者簡介 施永新,男,1963年11月生. 副教授,主要研究數(shù)學(xué)教育與數(shù)學(xué)教育技術(shù). 在省級刊物上發(fā)表文章十多篇.制作的課件《函數(shù) 的圖象》、《球的表面積》、《線性規(guī)劃》等獲全國師范院校初教系統(tǒng)教師自制教育軟件評比一等獎(jiǎng).endprint
信息技術(shù)的基本支撐載體是算法,信息技術(shù)的硬件是固化的算法,應(yīng)用計(jì)算機(jī)解決一類問題的核心是程序設(shè)計(jì),而程序設(shè)計(jì)的關(guān)鍵通常是選擇或構(gòu)造一個(gè)合適的算法,因此稱算法是程序的靈魂. 算法在科學(xué)技術(shù)、社會(huì)發(fā)展中發(fā)揮著越來越大的作用,并且融入了社會(huì)生活的許多方面,算法思想已經(jīng)成為現(xiàn)代人應(yīng)具備的一種數(shù)學(xué)素養(yǎng). 高中算法初步中涉及的算法“就是可以用計(jì)算機(jī)來解決的某一類問題的程序或步驟,這些程序或步驟必須是明確和有效的,而且能夠在有限步之內(nèi)完成.”所以信息技術(shù)與算法初步教學(xué)既有整合的基礎(chǔ)更有整合的必要.
1“整合”能有效檢驗(yàn)算法的正確性與合理性
算法初步中賦值語句、輸入、輸出語句、條件語句、循環(huán)語句的教學(xué),必須結(jié)合實(shí)例進(jìn)行編程來說明各語句的作用,實(shí)踐性、操作性強(qiáng). 如果只是在黑板上編程教學(xué),那無異是 “紙上談兵”,學(xué)生體驗(yàn)不深,而且所編的程序有時(shí)自認(rèn)為是正確的,但往往因?yàn)橐粋€(gè)小的疏忽,而在計(jì)算機(jī)上不能運(yùn)行通過或結(jié)果錯(cuò)誤. 例如我在講解循環(huán)語句時(shí),在課堂練習(xí)中請學(xué)生先做了這樣一道練習(xí)題,設(shè)計(jì)計(jì)算1×3×5×7×…×13的一個(gè)算法程序.對這道題大部分同學(xué)都能比較順利地寫出程序1:
程序1接著筆者提出如下問題,這個(gè)程序執(zhí)行完共循環(huán)了多少次?能否修改程序使循環(huán)次數(shù)減少?學(xué)生A回答一共循環(huán)了7次,若將i=1改為i=3,則循環(huán)次數(shù)減少1次. 我接著追問,若交換s=s*i,i=i+2的先后順序,輸出的結(jié)果s的值是否變化?對于這個(gè)問題,學(xué)生中出現(xiàn)了不同的結(jié)論,經(jīng)討論后學(xué)生B舉手回答,若交換s=s*i,i=i+2的先后順序,輸出的結(jié)果s的值將會(huì)改變,因?yàn)榻粨Q后當(dāng)循環(huán)變量i=11時(shí),循環(huán)一次后i=13,s的值已為1×3×5×7×…×13,由于此時(shí)i=13滿足循環(huán)條件,再循環(huán)一次i=15,s的值已變?yōu)?×3×5×7×…×13×15. 這時(shí)我再在電腦上當(dāng)場執(zhí)行這兩段程序,使學(xué)生信服地看到s=s*i,i=i+2的先后順序不能隨意交換. 在講評完這道題后,我又給出了如下一道變式題讓學(xué)生練習(xí),設(shè)計(jì)求滿足條件1×3×5×7×…>135135的最小整數(shù)的一個(gè)算法程序. 請學(xué)生思考這道題與剛才這道題有何不同?經(jīng)思考后學(xué)生C回答,一是前一道題已知循環(huán)次數(shù),而這道題循環(huán)次數(shù)未知. 如何設(shè)計(jì)算法程序?學(xué)生D舉手回答他設(shè)計(jì)的程序2:
程序2大多數(shù)同學(xué)同意這個(gè)程序設(shè)計(jì),這個(gè)程序究竟是否正確?我們將此程序輸入計(jì)算機(jī)執(zhí)行后得i的值是17,若交換s=s*i,i=i+2的先后順序,再將程序輸入計(jì)算機(jī)執(zhí)行后得i的值為15. 顯然由前一題1×3×5×7×…×13=135135可知,15是使1×3×5×7×…>135135成立的最小整數(shù). 這道題由于數(shù)字較大不易手工檢驗(yàn),所以如果沒有計(jì)算機(jī)即時(shí)執(zhí)行程序檢驗(yàn)較難發(fā)現(xiàn)錯(cuò)誤. 通過這兩道題的練習(xí),引導(dǎo)學(xué)生總結(jié)出用循環(huán)語句編寫程序時(shí),循環(huán)體內(nèi)的最后一條語句一般應(yīng)是改變循環(huán)變量的值.
2“整合”能有效促進(jìn)學(xué)生數(shù)學(xué)機(jī)械化思想的養(yǎng)成
現(xiàn)代數(shù)學(xué)機(jī)械化思想的核心就是算法,即把現(xiàn)實(shí)問題數(shù)學(xué)化,數(shù)學(xué)問題代數(shù)化,然后構(gòu)造算法,通過計(jì)算機(jī)來試探、嘗試和證明,從而發(fā)現(xiàn)、證明規(guī)律. 在算法初步的教學(xué)中,我們應(yīng)通過案例教學(xué)法初步讓學(xué)生學(xué)會(huì)用計(jì)算機(jī)解決問題的基本思想,即首先找到解決問題的算法(可用計(jì)算機(jī)實(shí)現(xiàn)),然后通過編寫程序借助計(jì)算機(jī)的高速運(yùn)算使問題快速獲解. 如設(shè)計(jì)一個(gè)程序,實(shí)現(xiàn):從鍵盤上輸入一個(gè)不小于2的正整數(shù)n,判斷n是否為質(zhì)數(shù),并在屏幕上顯示“是質(zhì)數(shù)”或“不是質(zhì)數(shù)”.根據(jù)質(zhì)數(shù)的定義“除了n=input(“請輸入不小于2的正整數(shù)n的值:”);
程序3能被1和它本身整除之外不能再被其它整數(shù)整除的數(shù)叫質(zhì)數(shù)”,故這個(gè)問題的算法思想是:由鍵盤任意輸入一個(gè)不小于2的正整數(shù)n,設(shè)置循環(huán)變量i的初值為2,循環(huán)條件為n是否不能被i整除,若是循環(huán)變量增加1,繼續(xù)檢驗(yàn),直到n能被i整除為止,結(jié)束循環(huán). 然后判斷n與i是否相等,若相等說明n只能被1和它本身整除是質(zhì)數(shù),若不等則說明n不是質(zhì)數(shù). 程序如程序3:(用Scilab-533語言編寫)
然后上機(jī)執(zhí)行程序,檢驗(yàn)所編程序是否正確. 只有讓學(xué)生經(jīng)歷設(shè)計(jì)算法→編寫程序→上機(jī)調(diào)試這樣的實(shí)際體驗(yàn),才能逐步建立起用算法語句編程解決實(shí)際問題的思維方法和數(shù)學(xué)機(jī)械化思想的養(yǎng)成.
3“整合”能有效提高學(xué)生學(xué)習(xí)算法的積極性
在算法初步的教學(xué)過程中,應(yīng)注重將算法融入到高中數(shù)學(xué)課程的相關(guān)內(nèi)容中,讓學(xué)生體驗(yàn)用算法在解決數(shù)學(xué)實(shí)際問題中的作用和信息技術(shù)與算法整合的優(yōu)越性,提高他們學(xué)習(xí)算法的興趣和積極性. 例如學(xué)生在高中一年級時(shí)學(xué)過用二分法求方程的近似解,當(dāng)初利用筆算或計(jì)算器計(jì)算做這類題都比較繁瑣,現(xiàn)在利用算法語句編成程序在計(jì)算機(jī)上執(zhí)行,則方便快捷. 也可選取一些用常規(guī)方法解決比較困難的數(shù)學(xué)問題,通過編程后在計(jì)算機(jī)上運(yùn)行直接得到結(jié)果,學(xué)生有了在計(jì)算機(jī)實(shí)現(xiàn)算法的體驗(yàn),會(huì)增強(qiáng)對算法的感性認(rèn)識(shí),也會(huì)增強(qiáng)對算法的興趣,真正理解算法的實(shí)際應(yīng)用. 例如我在算法案例教學(xué)中,曾給學(xué)生這樣一個(gè)數(shù)學(xué)問題:“一個(gè)人欲登上第10級樓梯,如果規(guī)定每步只能跨上一級或兩級,則不同的走法共有多少種?”這個(gè)問題的一種解法是用分類計(jì)數(shù)原理,第一類:沒有一步兩級的,則只有一種走法;第二類:恰有一步是走兩級的,則走完10級要走9步,9步中選一步是走兩級的,有C19=9種可能走法;第三類:恰有兩步是一步走兩級的,則走完10級要走8步,8步中選兩步是一步走兩級的,有C28=28種可能走法;依次類推,共有1+C19+C28+C37+C46+C55=89種走法. 但這種解法不能算是一個(gè)好的算法,因?yàn)檫@種算法不便于編程在計(jì)算機(jī)上運(yùn)行. 要使這個(gè)問題能夠通過編寫程序讓計(jì)算機(jī)運(yùn)行解決,前提必須要尋找到一個(gè)好的算法. 用計(jì)算機(jī)解決問題的核心思想是通過循環(huán)語句讓計(jì)算機(jī)反復(fù)運(yùn)行,借助計(jì)算機(jī)的高速運(yùn)算,達(dá)到快速解決問題的目的. 為了要使用循環(huán)語句,通常利用遞推思想建立起一個(gè)遞推關(guān)系式. 本題的具體算法思想如下:假設(shè)走完這10級樓梯有an種走法,這些走法可按第一步來分類,第一類:第一步是一步一級,則余下的n-1級有an-1種走法;第二類:第一步是一步兩級,則余下的n-2級有an-2種走法,所以an=an-1+an-2,又易得a1=1,a2=2. 據(jù)此遞推公式和初始值可編寫程序4.a=1;
程序4此程序輸入計(jì)算機(jī)運(yùn)行后得c=89. 將此程序稍作修改,第一行添加語句“n=input(“請輸入登上樓梯的級數(shù)n=”);”循環(huán)條件改為i<=n,即可求得登上任意指定樓梯級數(shù)的方法數(shù). 通過此例可讓學(xué)生深刻體會(huì)到算法的優(yōu)劣及其在解決問題中的重要性.
綜上所述,我們在教學(xué)“算法初步”這一內(nèi)容時(shí),由于它的實(shí)踐性、操作性強(qiáng),教師應(yīng)注意引導(dǎo)學(xué)生設(shè)計(jì)算法,編制程序,上機(jī)驗(yàn)證,在上機(jī)調(diào)試程序的過程中理解算法語句、發(fā)現(xiàn)問題、解決問題、反思算法的優(yōu)劣. 體驗(yàn)算法建模的一般流程:實(shí)際情境→提出問題→選擇算法結(jié)構(gòu)模型(順序、選擇、循環(huán)等)→流程圖(修正想法、選擇最優(yōu)解法)→選擇對應(yīng)的算法語句→編程實(shí)現(xiàn)想法→上機(jī)檢驗(yàn)并解決問題. 讓學(xué)生體會(huì)到一種成就感和挑戰(zhàn)性,調(diào)動(dòng)他們的學(xué)習(xí)積極性,逐步幫助他們建立起用計(jì)算機(jī)解決問題的算法思維模式.
作者簡介 施永新,男,1963年11月生. 副教授,主要研究數(shù)學(xué)教育與數(shù)學(xué)教育技術(shù). 在省級刊物上發(fā)表文章十多篇.制作的課件《函數(shù) 的圖象》、《球的表面積》、《線性規(guī)劃》等獲全國師范院校初教系統(tǒng)教師自制教育軟件評比一等獎(jiǎng).endprint
信息技術(shù)的基本支撐載體是算法,信息技術(shù)的硬件是固化的算法,應(yīng)用計(jì)算機(jī)解決一類問題的核心是程序設(shè)計(jì),而程序設(shè)計(jì)的關(guān)鍵通常是選擇或構(gòu)造一個(gè)合適的算法,因此稱算法是程序的靈魂. 算法在科學(xué)技術(shù)、社會(huì)發(fā)展中發(fā)揮著越來越大的作用,并且融入了社會(huì)生活的許多方面,算法思想已經(jīng)成為現(xiàn)代人應(yīng)具備的一種數(shù)學(xué)素養(yǎng). 高中算法初步中涉及的算法“就是可以用計(jì)算機(jī)來解決的某一類問題的程序或步驟,這些程序或步驟必須是明確和有效的,而且能夠在有限步之內(nèi)完成.”所以信息技術(shù)與算法初步教學(xué)既有整合的基礎(chǔ)更有整合的必要.
1“整合”能有效檢驗(yàn)算法的正確性與合理性
算法初步中賦值語句、輸入、輸出語句、條件語句、循環(huán)語句的教學(xué),必須結(jié)合實(shí)例進(jìn)行編程來說明各語句的作用,實(shí)踐性、操作性強(qiáng). 如果只是在黑板上編程教學(xué),那無異是 “紙上談兵”,學(xué)生體驗(yàn)不深,而且所編的程序有時(shí)自認(rèn)為是正確的,但往往因?yàn)橐粋€(gè)小的疏忽,而在計(jì)算機(jī)上不能運(yùn)行通過或結(jié)果錯(cuò)誤. 例如我在講解循環(huán)語句時(shí),在課堂練習(xí)中請學(xué)生先做了這樣一道練習(xí)題,設(shè)計(jì)計(jì)算1×3×5×7×…×13的一個(gè)算法程序.對這道題大部分同學(xué)都能比較順利地寫出程序1:
程序1接著筆者提出如下問題,這個(gè)程序執(zhí)行完共循環(huán)了多少次?能否修改程序使循環(huán)次數(shù)減少?學(xué)生A回答一共循環(huán)了7次,若將i=1改為i=3,則循環(huán)次數(shù)減少1次. 我接著追問,若交換s=s*i,i=i+2的先后順序,輸出的結(jié)果s的值是否變化?對于這個(gè)問題,學(xué)生中出現(xiàn)了不同的結(jié)論,經(jīng)討論后學(xué)生B舉手回答,若交換s=s*i,i=i+2的先后順序,輸出的結(jié)果s的值將會(huì)改變,因?yàn)榻粨Q后當(dāng)循環(huán)變量i=11時(shí),循環(huán)一次后i=13,s的值已為1×3×5×7×…×13,由于此時(shí)i=13滿足循環(huán)條件,再循環(huán)一次i=15,s的值已變?yōu)?×3×5×7×…×13×15. 這時(shí)我再在電腦上當(dāng)場執(zhí)行這兩段程序,使學(xué)生信服地看到s=s*i,i=i+2的先后順序不能隨意交換. 在講評完這道題后,我又給出了如下一道變式題讓學(xué)生練習(xí),設(shè)計(jì)求滿足條件1×3×5×7×…>135135的最小整數(shù)的一個(gè)算法程序. 請學(xué)生思考這道題與剛才這道題有何不同?經(jīng)思考后學(xué)生C回答,一是前一道題已知循環(huán)次數(shù),而這道題循環(huán)次數(shù)未知. 如何設(shè)計(jì)算法程序?學(xué)生D舉手回答他設(shè)計(jì)的程序2:
程序2大多數(shù)同學(xué)同意這個(gè)程序設(shè)計(jì),這個(gè)程序究竟是否正確?我們將此程序輸入計(jì)算機(jī)執(zhí)行后得i的值是17,若交換s=s*i,i=i+2的先后順序,再將程序輸入計(jì)算機(jī)執(zhí)行后得i的值為15. 顯然由前一題1×3×5×7×…×13=135135可知,15是使1×3×5×7×…>135135成立的最小整數(shù). 這道題由于數(shù)字較大不易手工檢驗(yàn),所以如果沒有計(jì)算機(jī)即時(shí)執(zhí)行程序檢驗(yàn)較難發(fā)現(xiàn)錯(cuò)誤. 通過這兩道題的練習(xí),引導(dǎo)學(xué)生總結(jié)出用循環(huán)語句編寫程序時(shí),循環(huán)體內(nèi)的最后一條語句一般應(yīng)是改變循環(huán)變量的值.
2“整合”能有效促進(jìn)學(xué)生數(shù)學(xué)機(jī)械化思想的養(yǎng)成
現(xiàn)代數(shù)學(xué)機(jī)械化思想的核心就是算法,即把現(xiàn)實(shí)問題數(shù)學(xué)化,數(shù)學(xué)問題代數(shù)化,然后構(gòu)造算法,通過計(jì)算機(jī)來試探、嘗試和證明,從而發(fā)現(xiàn)、證明規(guī)律. 在算法初步的教學(xué)中,我們應(yīng)通過案例教學(xué)法初步讓學(xué)生學(xué)會(huì)用計(jì)算機(jī)解決問題的基本思想,即首先找到解決問題的算法(可用計(jì)算機(jī)實(shí)現(xiàn)),然后通過編寫程序借助計(jì)算機(jī)的高速運(yùn)算使問題快速獲解. 如設(shè)計(jì)一個(gè)程序,實(shí)現(xiàn):從鍵盤上輸入一個(gè)不小于2的正整數(shù)n,判斷n是否為質(zhì)數(shù),并在屏幕上顯示“是質(zhì)數(shù)”或“不是質(zhì)數(shù)”.根據(jù)質(zhì)數(shù)的定義“除了n=input(“請輸入不小于2的正整數(shù)n的值:”);
程序3能被1和它本身整除之外不能再被其它整數(shù)整除的數(shù)叫質(zhì)數(shù)”,故這個(gè)問題的算法思想是:由鍵盤任意輸入一個(gè)不小于2的正整數(shù)n,設(shè)置循環(huán)變量i的初值為2,循環(huán)條件為n是否不能被i整除,若是循環(huán)變量增加1,繼續(xù)檢驗(yàn),直到n能被i整除為止,結(jié)束循環(huán). 然后判斷n與i是否相等,若相等說明n只能被1和它本身整除是質(zhì)數(shù),若不等則說明n不是質(zhì)數(shù). 程序如程序3:(用Scilab-533語言編寫)
然后上機(jī)執(zhí)行程序,檢驗(yàn)所編程序是否正確. 只有讓學(xué)生經(jīng)歷設(shè)計(jì)算法→編寫程序→上機(jī)調(diào)試這樣的實(shí)際體驗(yàn),才能逐步建立起用算法語句編程解決實(shí)際問題的思維方法和數(shù)學(xué)機(jī)械化思想的養(yǎng)成.
3“整合”能有效提高學(xué)生學(xué)習(xí)算法的積極性
在算法初步的教學(xué)過程中,應(yīng)注重將算法融入到高中數(shù)學(xué)課程的相關(guān)內(nèi)容中,讓學(xué)生體驗(yàn)用算法在解決數(shù)學(xué)實(shí)際問題中的作用和信息技術(shù)與算法整合的優(yōu)越性,提高他們學(xué)習(xí)算法的興趣和積極性. 例如學(xué)生在高中一年級時(shí)學(xué)過用二分法求方程的近似解,當(dāng)初利用筆算或計(jì)算器計(jì)算做這類題都比較繁瑣,現(xiàn)在利用算法語句編成程序在計(jì)算機(jī)上執(zhí)行,則方便快捷. 也可選取一些用常規(guī)方法解決比較困難的數(shù)學(xué)問題,通過編程后在計(jì)算機(jī)上運(yùn)行直接得到結(jié)果,學(xué)生有了在計(jì)算機(jī)實(shí)現(xiàn)算法的體驗(yàn),會(huì)增強(qiáng)對算法的感性認(rèn)識(shí),也會(huì)增強(qiáng)對算法的興趣,真正理解算法的實(shí)際應(yīng)用. 例如我在算法案例教學(xué)中,曾給學(xué)生這樣一個(gè)數(shù)學(xué)問題:“一個(gè)人欲登上第10級樓梯,如果規(guī)定每步只能跨上一級或兩級,則不同的走法共有多少種?”這個(gè)問題的一種解法是用分類計(jì)數(shù)原理,第一類:沒有一步兩級的,則只有一種走法;第二類:恰有一步是走兩級的,則走完10級要走9步,9步中選一步是走兩級的,有C19=9種可能走法;第三類:恰有兩步是一步走兩級的,則走完10級要走8步,8步中選兩步是一步走兩級的,有C28=28種可能走法;依次類推,共有1+C19+C28+C37+C46+C55=89種走法. 但這種解法不能算是一個(gè)好的算法,因?yàn)檫@種算法不便于編程在計(jì)算機(jī)上運(yùn)行. 要使這個(gè)問題能夠通過編寫程序讓計(jì)算機(jī)運(yùn)行解決,前提必須要尋找到一個(gè)好的算法. 用計(jì)算機(jī)解決問題的核心思想是通過循環(huán)語句讓計(jì)算機(jī)反復(fù)運(yùn)行,借助計(jì)算機(jī)的高速運(yùn)算,達(dá)到快速解決問題的目的. 為了要使用循環(huán)語句,通常利用遞推思想建立起一個(gè)遞推關(guān)系式. 本題的具體算法思想如下:假設(shè)走完這10級樓梯有an種走法,這些走法可按第一步來分類,第一類:第一步是一步一級,則余下的n-1級有an-1種走法;第二類:第一步是一步兩級,則余下的n-2級有an-2種走法,所以an=an-1+an-2,又易得a1=1,a2=2. 據(jù)此遞推公式和初始值可編寫程序4.a=1;
程序4此程序輸入計(jì)算機(jī)運(yùn)行后得c=89. 將此程序稍作修改,第一行添加語句“n=input(“請輸入登上樓梯的級數(shù)n=”);”循環(huán)條件改為i<=n,即可求得登上任意指定樓梯級數(shù)的方法數(shù). 通過此例可讓學(xué)生深刻體會(huì)到算法的優(yōu)劣及其在解決問題中的重要性.
綜上所述,我們在教學(xué)“算法初步”這一內(nèi)容時(shí),由于它的實(shí)踐性、操作性強(qiáng),教師應(yīng)注意引導(dǎo)學(xué)生設(shè)計(jì)算法,編制程序,上機(jī)驗(yàn)證,在上機(jī)調(diào)試程序的過程中理解算法語句、發(fā)現(xiàn)問題、解決問題、反思算法的優(yōu)劣. 體驗(yàn)算法建模的一般流程:實(shí)際情境→提出問題→選擇算法結(jié)構(gòu)模型(順序、選擇、循環(huán)等)→流程圖(修正想法、選擇最優(yōu)解法)→選擇對應(yīng)的算法語句→編程實(shí)現(xiàn)想法→上機(jī)檢驗(yàn)并解決問題. 讓學(xué)生體會(huì)到一種成就感和挑戰(zhàn)性,調(diào)動(dòng)他們的學(xué)習(xí)積極性,逐步幫助他們建立起用計(jì)算機(jī)解決問題的算法思維模式.
作者簡介 施永新,男,1963年11月生. 副教授,主要研究數(shù)學(xué)教育與數(shù)學(xué)教育技術(shù). 在省級刊物上發(fā)表文章十多篇.制作的課件《函數(shù) 的圖象》、《球的表面積》、《線性規(guī)劃》等獲全國師范院校初教系統(tǒng)教師自制教育軟件評比一等獎(jiǎng).endprint
中學(xué)數(shù)學(xué)雜志(初中版)2014年1期