一、教材處理
本節(jié)課以教育科學(xué)出版社教材《算法與程序設(shè)計(jì)》的第一章《如何用計(jì)算機(jī)解決問題》和第二節(jié)《算法描述與設(shè)計(jì)》作為基本教學(xué)內(nèi)容,用一節(jié)課時(shí)間完成。
本節(jié)課學(xué)生第一次接觸算法,如果只講解算法的概念就要求學(xué)生對(duì)實(shí)際問題進(jìn)行分析、建模、設(shè)計(jì)合理算法,感覺難度較大。因此,我從“人鬼過河”這一智力游戲開始,通過實(shí)例介紹算法的概念,再例舉學(xué)生熟悉的數(shù)學(xué)問題,讓學(xué)生在分析問題中學(xué)會(huì)設(shè)計(jì)算法,并讓他們采用算法描述工具描述相應(yīng)的算法。
二、教學(xué)目標(biāo)
1.理解算法的含義。
2.掌握用自然語(yǔ)言、流程圖描述算法。
3.了解算法的基本特征。
4.通過流程圖形象直觀地了解順序、選擇、循環(huán)三種基本結(jié)構(gòu)。
三、教學(xué)重點(diǎn)與難點(diǎn)
重點(diǎn):讓學(xué)生經(jīng)歷分析問題、設(shè)計(jì)算法,用自然語(yǔ)言、流程圖等方法描述算法的過程。
難點(diǎn):對(duì)算法概念的理解,設(shè)計(jì)出合理的算法。
四、教學(xué)媒體
多媒體課件、VB小程序、網(wǎng)絡(luò)教室
五、教學(xué)過程
教師活動(dòng):介紹游戲規(guī)則,讓學(xué)生在“人鬼過河”這一Flash游戲中思考解決問題的步驟。
學(xué)生活動(dòng):在游戲中親身經(jīng)歷分析問題、解決問題的過程。
?。ㄔO(shè)計(jì)意圖:算法的含義比較抽象,如果一下子拋出算法的定義,學(xué)生無法真正理解,所以引入趣味游戲,讓學(xué)生在游戲中思考。)
?。ㄒ唬┮胄抡n
教師活動(dòng):
①請(qǐng)個(gè)別學(xué)生講解操作這個(gè)游戲的步驟,教師進(jìn)行歸納總結(jié),用自然語(yǔ)言描述出來。
②由解決游戲的步驟引出算法的定義——算法是解決問題的方法和步驟。
?、鬯惴ㄐ枰獙⑺枋龀鰜聿拍転槿怂?。學(xué)生描述“人鬼過河”游戲的各步驟就是算法的一種描述方法——自然語(yǔ)言描述法。教師介紹如何用自然語(yǔ)言描述算法。
學(xué)生活動(dòng):
①理解算法的定義。
?、诔醪襟w會(huì)用自然語(yǔ)言描述算法的過程。
?。ㄔO(shè)計(jì)意圖:①引導(dǎo)學(xué)生總結(jié)游戲步驟,由具體事例引出算法的概念。②學(xué)生體會(huì)用自然語(yǔ)言描述算法的過程。)
(二)學(xué)生實(shí)踐一
1.布置任務(wù)
教師活動(dòng):講述“水仙花數(shù)”問題,讓學(xué)生判斷任一三位數(shù)是否為水仙花數(shù),并引導(dǎo)學(xué)生用自然語(yǔ)言將自己設(shè)計(jì)的算法描述出來。
學(xué)生答案1:取百、十、個(gè)位數(shù)字,求他們的立方和,判斷立方和是否等于原數(shù),如果相等就是水仙花數(shù),否則就不是水仙花數(shù)。
學(xué)生答案2:設(shè)x=abc,若a3+b3+c3=x,則x是水仙數(shù),否則不是水仙花數(shù)。
2.指導(dǎo)實(shí)踐
教師活動(dòng):
?、倏隙▽W(xué)生作答的正確之處,指出學(xué)生答案中的不足。
?、诮處熤v述:在算法的基礎(chǔ)上,用計(jì)算機(jī)語(yǔ)言把算法描述出來(編程),提交給計(jì)算機(jī),計(jì)算機(jī)按程序執(zhí)行。在用自然語(yǔ)言描述算法時(shí),既要考慮到人的描述習(xí)慣,更要兼顧編程的需要。算法描述中的每一步都應(yīng)該是計(jì)算機(jī)能接受的算術(shù)運(yùn)算、邏輯運(yùn)算或能執(zhí)行的動(dòng)作。
就答案1和2而言,這樣的描述對(duì)具備獨(dú)立邏輯分析能力的人來說,解決相關(guān)問題已經(jīng)足夠,但對(duì)于只具有基本算術(shù)運(yùn)算和邏輯運(yùn)算的計(jì)算機(jī)而言,“取出百、十、個(gè)位上數(shù)字”、“設(shè)x=abc”這樣的描述,計(jì)算機(jī)根本無法理解,不會(huì)智能地運(yùn)行,所以應(yīng)該明確告知具體的運(yùn)算對(duì)象和運(yùn)算方法。這也是算法的特征——算法的確定性和可行性,即每一步都要有確切的含義,能夠被計(jì)算機(jī)執(zhí)行。
?、垡龑?dǎo)學(xué)生細(xì)化、完善他們剛才設(shè)計(jì)的算法。
?。ㄔO(shè)計(jì)意圖:①讓學(xué)生了解,設(shè)計(jì)算法并不等同于用數(shù)學(xué)方法解決問題。②算法的每一步都必須是計(jì)算機(jī)所能明白的,能夠被執(zhí)行的,指出算法的特征。③通過實(shí)踐一,學(xué)生對(duì)算法的概念有了比較深刻的理解,初步掌握了用自然語(yǔ)言描述算法的方法。)
3.演示VB程序
教師活動(dòng):演示用VB編寫的應(yīng)用程序,并將程序代碼展示給學(xué)生。
學(xué)生活動(dòng):對(duì)照自然語(yǔ)言描述算法的各步驟,理解程序代碼的意思。
?。ㄔO(shè)計(jì)意圖:使學(xué)生加深印象,理解算法描述與編程之間的關(guān)系。)
?。ㄈ╇A段小結(jié)
教師講述:算法描述應(yīng)按數(shù)字化輸入、存儲(chǔ)、計(jì)算、輸出方式來描述,才符合數(shù)字計(jì)算機(jī)本質(zhì)。這是確保算法編碼化(程序化)的關(guān)鍵。每一步必須明確告訴計(jì)算機(jī)所要處理的具體對(duì)象和準(zhǔn)確的處理過程,也就是說,算法的描述要盡可能精確、詳盡。
?。ㄋ模┯昧鞒虉D描述算法
教師活動(dòng):
①回顧先前的“人鬼游戲”和“水仙花數(shù)”的算法描述,分析用自然語(yǔ)言描述算法的優(yōu)缺點(diǎn),并引出用流程圖描述算法的方法。
?、谝浴八苫〝?shù)”問題為例,詳細(xì)介紹流程圖的基本圖形、功能以及如何用流程圖描述算法。
學(xué)生活動(dòng):掌握用流程圖描述算法的方法。
(設(shè)計(jì)意圖:讓學(xué)生掌握用自然語(yǔ)言、流程圖描述算法的方法。通過實(shí)例,掌握對(duì)順序結(jié)構(gòu)、分支結(jié)構(gòu)的流程圖畫法。)
?。ㄎ澹W(xué)生實(shí)踐二
教師活動(dòng):布置學(xué)生實(shí)踐任務(wù)——用流程圖描述“人鬼過河”游戲的算法。
?。ㄔO(shè)計(jì)意圖:通過實(shí)踐練習(xí),讓學(xué)生掌握順序結(jié)構(gòu)流程圖的畫法,并記住流程圖各圖形的功能。)
?。W(xué)生實(shí)踐三
教師活動(dòng):
①布置學(xué)生實(shí)踐任務(wù)——設(shè)計(jì)實(shí)現(xiàn)兩數(shù)交換的算法,并用自然語(yǔ)言和流程圖描述。
②教師點(diǎn)撥:這個(gè)問題看起來簡(jiǎn)單,但很多學(xué)生卻出現(xiàn)了錯(cuò)誤。教師以實(shí)際生活中兩杯不同溶液進(jìn)行交換為例,提示學(xué)生,引入第三個(gè)變量解決此問題。
?、劢處熖釂枺撼艘M(jìn)第三個(gè)變量外,也可從數(shù)學(xué)的運(yùn)算入手實(shí)現(xiàn)兩數(shù)交換,這應(yīng)該怎樣設(shè)計(jì)算法?
學(xué)生活動(dòng):學(xué)生運(yùn)用剛學(xué)的知識(shí)解決問題。經(jīng)教師點(diǎn)撥,馬上改正錯(cuò)誤。
(設(shè)計(jì)意圖:①學(xué)生通過實(shí)踐掌握用自然語(yǔ)言、流程圖描述算法。②讓學(xué)生在探究中提高:同一問題可以有不同的算法。)
?。ㄆ撸W(xué)生實(shí)踐四
教師活動(dòng):布置學(xué)生實(shí)踐任務(wù)——設(shè)計(jì)求出所有水仙花數(shù)的算法,并用自然語(yǔ)言和流程圖描述。
教師點(diǎn)評(píng):要求出所有水仙數(shù),只需要把所有的三位數(shù)判斷出來就可以。可設(shè)置要判斷的數(shù)為X,X的值從100開始,每判斷完一次X,X的值便增加1,進(jìn)而進(jìn)行下一輪對(duì)X的判斷,直至X的值變化至999為止。
學(xué)生活動(dòng):學(xué)生分析問題,設(shè)計(jì)算法。
?。ㄔO(shè)計(jì)意圖:提高難度,讓學(xué)生對(duì)三種不同程序結(jié)構(gòu)的流程圖都掌握。)
?。ò耍┳灾鳉w納
教師活動(dòng):引導(dǎo)學(xué)生從這幾個(gè)題目的算法歸納總結(jié)出算法的特征。
學(xué)生活動(dòng):在教師的提示、引導(dǎo)下歸納總結(jié)算法特征,得出結(jié)論——至少有一個(gè)輸出、可行性、確定性、有窮性、可以有多個(gè)輸入,也可以有零個(gè)輸入。
?。ㄔO(shè)計(jì)意圖:培養(yǎng)學(xué)生歸納總結(jié)的能力。)
?。ň牛┛偨Y(jié)
教師:計(jì)算機(jī)不管解決什么問題,都得經(jīng)歷編寫程序、執(zhí)行程序、解決問題的過程。編程就是用計(jì)算機(jī)語(yǔ)言實(shí)現(xiàn)算法,可見算法在程序設(shè)計(jì)中的地位。
從前面兩數(shù)交換的例子可以看出,一個(gè)問題的算法并不是唯一的,不同的算法之間也有優(yōu)劣之分,在設(shè)計(jì)算法時(shí)應(yīng)追求最優(yōu)算法。那么如何判斷一個(gè)算法的優(yōu)劣呢?“水仙花數(shù)”問題有沒有最好的算法呢?
(作者單位:福建泉州第五中學(xué))