第一篇:算法與程序設(shè)計(jì)教案
第一課 初識(shí)算法與程序設(shè)計(jì)
一、教學(xué)目標(biāo)
1、知識(shí)與技能
(1)理解算法的概念,培養(yǎng)學(xué)生自我探索信息,高效獲取信息的能力;
(2)能初步利用算法解決簡(jiǎn)單的問題,培養(yǎng)學(xué)生的理論聯(lián)系實(shí)際能力和動(dòng)手操作能力。
2、情感、態(tài)度、價(jià)值觀
學(xué)生在學(xué)習(xí)過程中,通過親身經(jīng)歷體驗(yàn)獲得對(duì)此算法的感性認(rèn)識(shí),培養(yǎng)學(xué)生自我獲取信息、分析評(píng)價(jià)信息、、表達(dá)呈現(xiàn)信息的能力,進(jìn)一步提高其信息素養(yǎng)。
二、教學(xué)重點(diǎn)難點(diǎn)
重點(diǎn):算法概念的理解
難點(diǎn):如何科學(xué)合理的選擇和設(shè)計(jì)算法。
三、教學(xué)策略與手段
以趣味性問題設(shè)置情境,激發(fā)學(xué)生探索解決問題的興趣,與學(xué)生進(jìn)行互動(dòng)探討,通過Flash演示材料,比較直觀地把抽象的問題簡(jiǎn)單化,使學(xué)生的思考逐步深入,從而總結(jié)出算法的概念,學(xué)會(huì)如何設(shè)計(jì)和選擇算法,培養(yǎng)學(xué)生自主探究學(xué)習(xí)的能力。
四、教學(xué)過程(1課時(shí))
(一)我們來共同尋找下面一些生活中比較現(xiàn)實(shí)的問題的解決方法。【問題一】天下真的有“不要錢的午餐”嗎?
某一餐館門口海報(bào)上寫著“不要錢的午餐”,規(guī)則如下:在三個(gè)月內(nèi),來賓必須湊夠五個(gè)人,五人每次來就餐必須按照不同的順序坐,直到把所有可能的順序都坐一遍,以后來吃飯就可永遠(yuǎn)免費(fèi)”。于是有人想,這太容易了,每人每次坐不同的位置,吃五次不就行了?于是他就叫上自己的朋友參加這項(xiàng)活動(dòng),可是,吃了十次之后,還沒有吃上免費(fèi)午餐,這是怎么回事呢?
學(xué)生們感覺非常有意思,很快以小組為單位進(jìn)行熱烈的討論并得出了破解問題的步驟:①第一個(gè)座位5個(gè)人都有坐的機(jī)會(huì)②第二個(gè)座位只有4個(gè)人中的任一個(gè)有坐的機(jī)會(huì)(一個(gè)人不能同時(shí)坐兩個(gè)座位)③第三個(gè)座位只有3個(gè)人中的任一個(gè)有坐的機(jī)會(huì)④第四個(gè)座位只有2個(gè)人中的任一個(gè)有坐的機(jī)會(huì)⑤第五個(gè)座位只有1個(gè)人有坐的機(jī)會(huì)⑥計(jì)算:5×4×3×2×1=120⑦得出結(jié)論:需要吃120次才有可能吃上免費(fèi)午餐。
【問題二】有三個(gè)和尚和三個(gè)妖怪過河,只有一條能裝下兩個(gè)人的船,在河的任何一方或者船上,如果妖怪的人數(shù)大于和尚的人數(shù),那么和尚就會(huì)有被吃掉的危險(xiǎn)。你能不能找出一種安全的渡河方法呢?請(qǐng)寫一寫你的渡河方案。學(xué)生:學(xué)生討論回答。〖展示步驟〗
①兩個(gè)妖怪先過河,一個(gè)妖怪回來; ②再兩個(gè)妖怪過河,一個(gè)妖怪回來; ③兩個(gè)和尚過河,一個(gè)妖怪和一個(gè)和尚回來; ④兩個(gè)和尚過河,一個(gè)妖怪回來; ⑤兩個(gè)妖怪過河,一個(gè)妖怪回來; ⑥兩個(gè)妖怪過河。
【Flash動(dòng)畫展示】通過討論和動(dòng)畫展示,我們可以知道,計(jì)算機(jī)解決問題和人解決問題一樣需要有清晰的解題步驟。算法就是解決問題的程序或步驟。
(二)【課件展示】算法的概念:
1、廣義的算法是指完成某項(xiàng)工作的方法和步驟,在我們?nèi)粘I钪幸步?jīng)常使用算法,只是沒意識(shí)到罷了。如:洗衣機(jī)的使用說明書是操作洗衣機(jī)的算法,菜譜是做菜的算法等等。
2、在數(shù)學(xué)中,現(xiàn)代意義的算法是指可以用計(jì)算機(jī)來解決的某一類問題的程序和步驟,這些程序或步驟必須是明確和有效的,而且能夠在有限步之內(nèi)完成。
【小試身手】按照這樣的理解,我們可以設(shè)計(jì)出很多由具體數(shù)學(xué)問題解決一類數(shù)學(xué)問題的算
法.下面看一個(gè)例子:(要求學(xué)生自己考慮并寫出具體的算法)
雞兔同籠問題。一個(gè)籠子里有雞和兔,現(xiàn)在只知道里面一共有17個(gè)頭,48只腳,雞和兔各有多少只?試設(shè)計(jì)一個(gè)求解的算法。
【設(shè)計(jì)意圖】求解雞兔的問題簡(jiǎn)單直觀,卻包含著深刻的算法思想。應(yīng)用解二元一次方程組的方法來求解雞兔同籠問題。
第一步:設(shè)有小雞x只,小兔y只,則有
第二步:將方程組中的第一個(gè)方程兩邊乘-2加到第二個(gè)方程中去,得到,得到y(tǒng)=7; 第三步:將y=7代入(1)得x=10。
【變一變】在籠中有雞、兔若干,已知有頭a個(gè),有腳b只,求各有多少只雞和兔。
【師生合作】老師帶領(lǐng)學(xué)生共同書寫規(guī)范的算法的具體步驟,最后引出算法使用的范圍:能解決一類問題,并且能重復(fù)使用。
(三)【課件展示】算法的基本特征
①有窮性 ②確定性 ③不唯一性 ④有效性(邏輯性)
1、有窮性:一個(gè)算法應(yīng)該包含有限個(gè)操作步驟,而不能是無限的。
2、確定性:算法的每個(gè)步驟都應(yīng)該是明確無誤的,不能含義模糊,使執(zhí)行者無所適從。
3、有零個(gè)或者多個(gè)輸入,有一個(gè)或者多個(gè)輸出
4、有效性:算法中的每一步都應(yīng)該能有效地執(zhí)行,執(zhí)行算法最后應(yīng)該能得到確定的結(jié)果。
【教學(xué)總結(jié)】
1、本節(jié)課通過一些生活中看似簡(jiǎn)單問題的解決方法和步驟,使學(xué)生比較輕松的接受了生活算法的概念,進(jìn)一步理解了計(jì)算機(jī)算法的概念。
2、課堂教學(xué)的效益取決于學(xué)生對(duì)所學(xué)知識(shí)理解了多少,能否用所學(xué)知識(shí)來解決一些實(shí)際問題。本節(jié)課的設(shè)計(jì)突出講與練的結(jié)合,培養(yǎng)學(xué)生的動(dòng)手能力,并且引出學(xué)生對(duì)下一節(jié)課的內(nèi)容的思考,比較順利的完成了本節(jié)課的教學(xué)任務(wù)。
3、如何優(yōu)化算法,找到算法的形式和用算法解決問題的效益的最佳結(jié)合點(diǎn),還尚需探討。
第二篇:算法與程序設(shè)計(jì)
《算法與程序設(shè)計(jì)》教學(xué)中實(shí)施研究性學(xué)習(xí)探步
作者:趙濮民
摘要:研究性學(xué)習(xí)是教育科研領(lǐng)域中一個(gè)嶄新的課題。信息技術(shù)教學(xué)作為以培養(yǎng)創(chuàng)新精神、研究能力和實(shí)踐能力為目標(biāo)取向的必修課程,它強(qiáng)調(diào)讓學(xué)生通過研究性學(xué)習(xí),提出問題,收集材料,對(duì)研究性課題進(jìn)行探索、分析、研究,最后基于問題解決模式,在實(shí)踐操作中培養(yǎng)學(xué)生科學(xué)的態(tài)度和價(jià)值觀以及創(chuàng)新精神、創(chuàng)新思維、創(chuàng)造能力,并學(xué)會(huì)解決生活中與信息技術(shù)學(xué)習(xí)有關(guān)的實(shí)際問題。職業(yè)學(xué)校的學(xué)生,不僅應(yīng)具有獨(dú)立接受知識(shí)的能力,更應(yīng)具有獨(dú)立探索知識(shí)的能力,由“研究性學(xué)習(xí)”補(bǔ)充原有的“接受式學(xué)習(xí)”,使學(xué)習(xí)方式更趨完善,只有當(dāng)這兩種學(xué)習(xí)方式結(jié)合起來,優(yōu)勢(shì)互補(bǔ),才能使基礎(chǔ)教育適應(yīng)時(shí)代對(duì)人才培養(yǎng)的要求。
關(guān)鍵詞:程序設(shè)計(jì);研究性學(xué)習(xí);求真;求全;求變;求新;優(yōu)勢(shì)互補(bǔ)
《算法與程序設(shè)計(jì)》是職業(yè)學(xué)校信息技術(shù)教學(xué)中的一個(gè)重點(diǎn),也是難點(diǎn)。傳統(tǒng)的程序設(shè)計(jì)教學(xué)以老師講授型為主,由于算法與程序設(shè)計(jì)的內(nèi)容邏輯性強(qiáng),普遍認(rèn)為在程序設(shè)計(jì)教學(xué)中難以實(shí)施研究性學(xué)習(xí)。
研究性學(xué)習(xí)是以“培養(yǎng)學(xué)生具有永不滿足、追求卓越的態(tài)度,培養(yǎng)學(xué)生發(fā)現(xiàn)問題、提出問題、從而解決問題的能力”為基本目標(biāo),以學(xué)生從學(xué)習(xí)中獲得作品設(shè)計(jì)與制作方法的困惑為方向,以在提出問題和解決問題的全過程中學(xué)習(xí)到算法與程序設(shè)計(jì)為學(xué)習(xí)方法的課程。經(jīng)過反復(fù)研究,我們認(rèn)為研究性學(xué)習(xí)可以應(yīng)用于程序設(shè)計(jì)教學(xué)中。實(shí)施研究性學(xué)習(xí)的關(guān)鍵是要確定一個(gè)目標(biāo),要鼓勵(lì)學(xué)生主動(dòng)地發(fā)現(xiàn)問題,并且通過探究或?qū)嵺`活動(dòng)去試圖解決問題。在課題研究的過程中采用分組交流討論、查閱資料、協(xié)作探究、歸納總結(jié)等方式,一步步引領(lǐng)學(xué)生深刻掌握算法與程序設(shè)計(jì)的精髓。
一、通過研究性學(xué)習(xí),重構(gòu)算法知識(shí)體系,要求真 研究性學(xué)習(xí)是學(xué)生在老師的指導(dǎo)下,結(jié)合真實(shí)生活,選定主題,然后搜集相關(guān)材料,對(duì)材料進(jìn)行歸納、加工處理、分析、總結(jié),得到相應(yīng)結(jié)論的學(xué)習(xí)活動(dòng)。在《算法與程序設(shè)計(jì)》教學(xué)中,根據(jù)教學(xué)內(nèi)容,經(jīng)過反復(fù)研究,確定了研究主題《搜索算法的應(yīng)用研究》和《動(dòng)態(tài)規(guī)劃算法的解題應(yīng)用研究》,并根據(jù)學(xué)生的自愿報(bào)名成立了兩個(gè)研究小組。然后各小組根據(jù)自己研究的算法,重新整理相應(yīng)的知識(shí),對(duì)知識(shí)進(jìn)行認(rèn)知、歸納、總結(jié)。如《搜索算法的應(yīng)用研究》小組,對(duì)搜索算法從以下幾方面進(jìn)行整理:
1、搜索算法的算法思想、分類;
2、深度優(yōu)先搜索的算法思想與算法結(jié)構(gòu);
3、廣度優(yōu)先搜索的算法思想與算法結(jié)構(gòu);
4、深度優(yōu)先搜索的優(yōu)先策略;
5、廣度優(yōu)先搜索的優(yōu)化策略;
6、深度優(yōu)先搜索與廣度優(yōu)先搜索的異同。學(xué)生通過對(duì)搜索算法知識(shí)進(jìn)行整理、分類、小結(jié),加深了對(duì)搜索算法的理性理解與感性認(rèn)知。
二、通過研究性學(xué)習(xí),同學(xué)之間取長(zhǎng)補(bǔ)短,要求全
每個(gè)學(xué)生都有所長(zhǎng),也有所短,研究性學(xué)習(xí)一個(gè)重要的特點(diǎn)就是:分工合作,共同討論,共同提高,使參與的學(xué)生全面發(fā)展。我們的“搜索算法的應(yīng)用研究”小組共有五個(gè)成員,根椐學(xué)生的特點(diǎn)、特長(zhǎng),對(duì)他們進(jìn)行分工,每位學(xué)生研究上述其中一個(gè)問題,然后整個(gè)小組一起討論,每位學(xué)生介紹自己的研究情況、研究成果,然后其他同學(xué)進(jìn)行補(bǔ)充,發(fā)表自己的見解,這樣每個(gè)同學(xué)都使自己的研究?jī)?nèi)容得到補(bǔ)充,同時(shí)也學(xué)習(xí)到了其他同學(xué)研究方面的知識(shí),可以取長(zhǎng)補(bǔ)短,共同提高,得到全面發(fā)展。
三、通過研究性學(xué)習(xí),總結(jié)算法的應(yīng)用規(guī)律,要求變
研究性學(xué)習(xí)的目的,是要求學(xué)生搜集與主題有關(guān)的資料,歸納整理相關(guān)資料,根據(jù)相關(guān)材料和知識(shí),對(duì)主題進(jìn)行研究,提出自己的觀點(diǎn)或結(jié)論。我們?cè)诔绦蛟O(shè)計(jì)教學(xué)中進(jìn)行算法專題研究也是這樣,除要求學(xué)生歸納、整理專題算法知識(shí)外,還要總結(jié)出算法的應(yīng)用規(guī)律、應(yīng)用算法解題的步驟和算法的框架,能根據(jù)實(shí)際情況,隨機(jī)應(yīng)變。如在“動(dòng)態(tài)規(guī)劃的應(yīng)用研究”中,學(xué)生總結(jié)出:動(dòng)規(guī)劃是解符合“無后效性原則”的最優(yōu)問題的一種算法思想;用動(dòng)態(tài)規(guī)劃解題的一般步驟是:(1)判斷題目是否為求最優(yōu)問題,是否符合“無后效性原則”;(2)確定如果劃分階段;(3)確定每個(gè)階段有幾種狀態(tài);(4)找出狀態(tài)轉(zhuǎn)移方程和邊界條件;(5)用算法語言實(shí)現(xiàn)算法過程。又如在“搜索算法的應(yīng)用研究”中,研究小組的同學(xué)總結(jié)出:(1)廣度優(yōu)先搜索算法通常應(yīng)用于解最少步數(shù)問題,而深度優(yōu)先搜索算法則通常用來解所有路徑問題;(2)深度優(yōu)先搜索和廣度優(yōu)先搜索都是搜索算法,前者時(shí)間復(fù)雜度較大,而后者則占用的內(nèi)存較大;(3)深度優(yōu)先搜索在實(shí)現(xiàn)時(shí)用遞歸或用堆棧來實(shí)現(xiàn),而廣度優(yōu)先搜索是用隊(duì)列來實(shí)現(xiàn),實(shí)現(xiàn)兩種算法所用的數(shù)據(jù)結(jié)構(gòu)不同;(4)深度優(yōu)先搜索和廣度優(yōu)先搜索都是搜索算法,但兩者的算法結(jié)構(gòu)有較大的不同。學(xué)生通過自己對(duì)算法應(yīng)用規(guī)律的總結(jié),對(duì)算法的應(yīng)用得到升華,進(jìn)一步提高算法的應(yīng)用能力和程序設(shè)計(jì)能力。
四、通過研究性學(xué)習(xí),提高分析、歸納和綜合能力,要求新
對(duì)算法的專題研究,不僅要對(duì)算法理論進(jìn)行總結(jié),算法應(yīng)用的研究也是很重要的一方面,通過算法的解題應(yīng)用,既提高了學(xué)生分析問題的能力,也加深了學(xué)生對(duì)算法的理解,提高了學(xué)生的算法應(yīng)用能力,進(jìn)而得到對(duì)學(xué)生創(chuàng)新能力的培養(yǎng)。另外,我們?cè)谒惴ㄑ芯窟^程中,要求學(xué)生透切理解算法內(nèi)容,用算法語言準(zhǔn)確描述算法,通過這種途徑,進(jìn)一步加深學(xué)生對(duì)算法的理解,同時(shí)也提高了學(xué)生的算法表達(dá)能力和歸納、總結(jié)的能力。
通過對(duì)算法進(jìn)行專題研究,可以進(jìn)一步加深學(xué)生對(duì)算法知識(shí)的理解,也可以提高學(xué)生的算法應(yīng)用能力和程序設(shè)計(jì)能力。實(shí)踐告訴我們:在整個(gè)研究過程中要注意以下幾個(gè)問題:
1、課題不宜太大。研究課題的確定是研究性學(xué)習(xí)實(shí)施過程中重要的一環(huán),課題選擇恰當(dāng)與否,直接關(guān)系到整個(gè)課題研究的成敗。在程序設(shè)計(jì)教學(xué)中進(jìn)行研究性學(xué)習(xí)活動(dòng),選題要遵循下面的原則:(1)課題的范圍不宜太大;(2)有一定的應(yīng)用價(jià)值;(3)結(jié)合學(xué)生的實(shí)際。一個(gè)好的開始是成功的一半,在研究性學(xué)習(xí)活動(dòng)中也是如此。
2、要理論研究與算法應(yīng)用相結(jié)合。對(duì)算法的專題研究,算法應(yīng)用是重點(diǎn)。在算法知識(shí)歸納總結(jié)的基礎(chǔ)上,重點(diǎn)應(yīng)研究算法應(yīng)用的一般規(guī)律、算法結(jié)構(gòu)、應(yīng)用算法解題的一般步驟等。不應(yīng)該只是對(duì)算法理論的空洞論述,否則效果不好、意義也不大。
3、充分發(fā)揮教師的引導(dǎo)作用、學(xué)生的主體作用。在算法研究活動(dòng)中,應(yīng)充分發(fā)揮教師的引導(dǎo)和指導(dǎo)作用,既不能放任自由,也不能包辦代替,要充分發(fā)揮學(xué)生的主體作用。當(dāng)學(xué)生遇到問題和困難時(shí),老師應(yīng)當(dāng)引導(dǎo)和啟發(fā)學(xué)生,讓學(xué)生去探索和研究,而不是直接告訴學(xué)生答案,老師始終是學(xué)生的引導(dǎo)者,學(xué)生是真正的參與者,使學(xué)生通過算法研究,加深對(duì)算法的理解,提高算法應(yīng)用能力和程序設(shè)計(jì)能力。
職業(yè)學(xué)校的學(xué)生,不僅應(yīng)具有獨(dú)立接受知識(shí)的能力,更應(yīng)具有獨(dú)立探索知識(shí)的能力,由“研究性學(xué)習(xí)”補(bǔ)充原有的“接受式學(xué)習(xí)”,使學(xué)習(xí)方式更趨完善,只有當(dāng)這兩種學(xué)習(xí)方式結(jié)合起來,優(yōu)勢(shì)互補(bǔ),才能使基礎(chǔ)教育適應(yīng)時(shí)代對(duì)人才培養(yǎng)的要求。
第三篇:教案算法與程序設(shè)計(jì)思想
算法與程序設(shè)計(jì)思想
【課標(biāo)要求】
(一)利用計(jì)算機(jī)解決問題的基本過程
(1)結(jié)合實(shí)例,經(jīng)歷分析問題、確定算法、編程求解等用計(jì)算機(jī)解決問題的基本過程,認(rèn)識(shí)算法和程序設(shè)計(jì)在其中的地位和作用。
(2)經(jīng)歷用自然語言、流程圖或偽代碼等方法描述算法的過程。
(4)了解程序設(shè)計(jì)語言、編輯程序、編譯程序、連接程序以及程序開發(fā)環(huán)境等基本知識(shí)。
【學(xué)情分析】
高一年級(jí)的學(xué)生已具備了一定的觀察、思考、分析和解決問題能力,也已有了順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等知識(shí)的儲(chǔ)備。因此,對(duì)于如何將解決問題的思路畫成流程圖已有一定的基礎(chǔ),但可能還不很熟練,尤其對(duì)剛學(xué)過的循環(huán)結(jié)構(gòu),教師在課堂上要注意引導(dǎo)。『此處說“已有了順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等知識(shí)的儲(chǔ)備”,應(yīng)該是指在必修部分對(duì)“計(jì)算機(jī)解決實(shí)際問題的基本過程”已有所體驗(yàn)與了解,或是指已學(xué)習(xí)過數(shù)學(xué)中相關(guān)模塊的知識(shí),這是本案例教學(xué)得以實(shí)施的必不可少的前提條件。』
【教學(xué)目標(biāo)】
1.知識(shí)與技能:
建立求一批數(shù)據(jù)中最大值的算法設(shè)計(jì)思想,并將算法的設(shè)計(jì)思想用流程圖表示出來。2.過程與方法:
利用現(xiàn)實(shí)生活中比較身高的活動(dòng),以及對(duì)武術(shù)比賽中“打擂臺(tái)”流程的逐步梳理,讓學(xué)生學(xué)會(huì)從此類生活實(shí)際中提煉出求最大值的思想方法,即算法思想。培養(yǎng)學(xué)生分析問題、解決問題的能力,讓學(xué)生學(xué)會(huì)在面對(duì)問題時(shí)能梳理出解決問題的清晰思路,進(jìn)而設(shè)計(jì)出解決某個(gè)特定問題的有限步驟,從而理解計(jì)算機(jī)是如何解決、處理某種問題的。
『在過程上,通過現(xiàn)實(shí)生活中的實(shí)例來引導(dǎo)學(xué)生總結(jié)“求最大值”的算法思想。過程的實(shí)現(xiàn)關(guān)鍵在于實(shí)例引用是否貼切,是否有利于學(xué)生向抽象結(jié)論的構(gòu)建。本案例的實(shí)例選擇是符合這一要求的。在方法上,注重培養(yǎng)學(xué)生分析、解決問題的一般能力,再次體驗(yàn)與理解應(yīng)用計(jì)算機(jī)解決問題的基本過程,為后面更一步的學(xué)習(xí)打下基礎(chǔ),積累信心。』
3.情感態(tài)度與價(jià)值觀:
讓學(xué)生全身心地投入到教學(xué)活動(dòng)中,積極與同伴合作交流,進(jìn)行探索活動(dòng)。培養(yǎng)學(xué)生良好的思維品質(zhì),發(fā)展他們的創(chuàng)新思維,并養(yǎng)成積極的學(xué)習(xí)態(tài)度和良好的學(xué)習(xí)習(xí)慣。
創(chuàng)設(shè)情境,以激發(fā)學(xué)生的學(xué)習(xí)興趣。努力營(yíng)造一個(gè)可以接納的、支持性的、寬容的課堂學(xué)習(xí)環(huán)境,讓學(xué)生置身于民主和愉悅的課堂氛圍中放飛思維、潛心研究、快樂創(chuàng)造。
『本案例對(duì)“情感、態(tài)度與價(jià)值觀”目標(biāo)的設(shè)計(jì),更多的是試圖建立一個(gè)活躍、民主、快樂的學(xué)習(xí)環(huán)境。良好的學(xué)習(xí)環(huán)境是學(xué)生樂學(xué)好學(xué)、教師提高課堂效率的重要條件。如果真能實(shí)現(xiàn)這樣一個(gè)環(huán)境,營(yíng)造出理想狀態(tài)中的學(xué)習(xí)氛圍,無疑會(huì)使學(xué)生在學(xué)到“知識(shí)與技能”的同時(shí)收獲到更多的東西——合作、分享、成就。而且如果能夠結(jié)合教學(xué)內(nèi)容來描述目標(biāo),則會(huì)使目標(biāo)顯得更具體,更有針對(duì)性。』
【重點(diǎn)難點(diǎn)】
教學(xué)重點(diǎn):建立求一批數(shù)據(jù)中最大值的算法設(shè)計(jì)思想,并將此算法設(shè)計(jì)思想用流程圖表示出來。
教學(xué)難點(diǎn):上述重點(diǎn)問題同樣是本課教學(xué)的難點(diǎn)。另外,如何把人解決問題的思路、步驟用計(jì)算機(jī)語言描述出來也是本課的難點(diǎn)之一。
『建議,此處可添加關(guān)于教學(xué)重、難點(diǎn)的確立依據(jù),以及解決教學(xué)難點(diǎn)的關(guān)鍵方法方面的描述。同一段知識(shí)內(nèi)容的教學(xué)重、難點(diǎn)對(duì)于同類教師基本上是一致的,不同的是對(duì)教學(xué)重、難點(diǎn)的認(rèn)識(shí)與處理方法。應(yīng)該說,對(duì)教學(xué)重、難點(diǎn)認(rèn)識(shí)的越深刻就越有可能找到更好的處理方法。』
【教學(xué)思路】
利用現(xiàn)實(shí)生活中比較一組學(xué)生身高這一事件,引導(dǎo)學(xué)生去發(fā)現(xiàn)求最大值的一種方法。如何設(shè)計(jì)求一批數(shù)據(jù)中最大值的算法?我認(rèn)為讓學(xué)生自己去經(jīng)歷整個(gè)探究過程,要比直接把現(xiàn)成的算法告訴學(xué)生有意義得多。它能迅速、有效地幫助學(xué)生建立程序設(shè)計(jì)思想。在完成這個(gè)任務(wù)的過程中,教師的循循善誘起到了非常關(guān)鍵的作用。找出一批數(shù)據(jù)中的最大者,從表面上來看是一個(gè)很簡(jiǎn)單的問題。在比較數(shù)的過程中,人因?yàn)閯?dòng)用了眼睛,比較大小的思維過程一閃而過,所以能很快求出一批數(shù)據(jù)中的最大值。而計(jì)算機(jī)與人不同,它對(duì)這些數(shù)據(jù)看不見、摸不著,怎么來完成這一任務(wù)呢?其實(shí),計(jì)算機(jī)解決問題的關(guān)鍵,就是要把人解決問題的思維過程用計(jì)算機(jī)語言描述出來,即為大腦思維的每一步“拍照”。這是計(jì)算機(jī)程序設(shè)計(jì)教學(xué)的一個(gè)重點(diǎn),也是一個(gè)難點(diǎn),需要教師在教學(xué)過程中逐步引導(dǎo)和訓(xùn)練學(xué)生,使學(xué)生逐漸學(xué)會(huì)分析問題,尋求解決問題的方法和步驟。本案例運(yùn)用生活中“打擂臺(tái)”的實(shí)例引導(dǎo)學(xué)生分析求最大值的方法,通過對(duì)這一現(xiàn)象的分析,逐步引出求最大值的算法設(shè)計(jì)思想。
『作者在此處點(diǎn)出了解決教學(xué)難點(diǎn)的方法,即采用“逐步引導(dǎo)和訓(xùn)練”的方法。其意圖就是希望學(xué)生經(jīng)歷整個(gè)過程,從而鍛煉、提升探究能力,領(lǐng)悟、理解其中的思想,實(shí)現(xiàn)授人以漁的目的。』
【教學(xué)過程】
1.情境創(chuàng)設(shè)___________如何建立支架的? 師(提問): 今天在第一排就座的有10 多位同學(xué),誰是我們第一排在座各位中的最高者呢? 師(引導(dǎo)): 大家思考,通常這個(gè)任務(wù)我們是怎樣去完成的? 教師根據(jù)學(xué)生對(duì)問題的回答進(jìn)行分析。引導(dǎo)學(xué)生往古時(shí)候比武時(shí)常常采用的“打擂臺(tái)”的方式上想,提示學(xué)生可參考電視上經(jīng)常播放的“挑戰(zhàn)主持人”節(jié)目。師生: 打擂的過程可以描述為:
(1)確定一個(gè)擂主(討論第一個(gè)擂主是如何確定的);
(2)挑戰(zhàn)者上臺(tái);
(3)擂主和挑戰(zhàn)者比較;
(4)挑戰(zhàn)者勝的話,挑戰(zhàn)者做擂主,否則擂主衛(wèi)冕;
(5)重復(fù)執(zhí)行(2)~(4)步驟,直到最后一個(gè)挑戰(zhàn)者。
師: 在打擂的過程中,我們看到(2)~(4)步驟是要重復(fù)做的,所以我們?cè)撛趺崔k呢? 生: 需要循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。師: 這幾個(gè)步驟序列重復(fù)到什么時(shí)候結(jié)束呢?由學(xué)生討論結(jié)束的辦法,很顯然,需要在最后加上一個(gè)能判斷什么時(shí)候結(jié)束的判斷框。
根據(jù)討論的步驟,最后師生共同得出打擂臺(tái)的算法和流程圖(如圖1)。
『作者的引導(dǎo)可以總結(jié)為:比身高(學(xué)生的回答可能多種多樣,也可能偏離預(yù)設(shè)方向)——比武、“打擂臺(tái)”(將學(xué)生發(fā)散出去的思考往預(yù)設(shè)方向上牽引)——“挑戰(zhàn)主持人”節(jié)目(進(jìn)一步將學(xué)生的思考引到其頭腦中已有的認(rèn)識(shí)上,前提是學(xué)生要看過該節(jié)目)——用自然語言的方式整理出比賽的規(guī)則(即算法的自然語言描述)——得到表示算法的流程圖。應(yīng)該說,這樣的引導(dǎo)方式完全可以達(dá)到作者的預(yù)設(shè)目標(biāo)。』 2.求一般情況下的最大值的算法 師(引導(dǎo)): 如果我們面對(duì)的是一堆數(shù)據(jù),現(xiàn)在希望我們求出這一堆數(shù)據(jù)中的最大值該怎么辦?通過教師和學(xué)生的共同分析,把問題進(jìn)一步細(xì)化為:
(1)從第一個(gè)數(shù)據(jù)開始看起;
(2)把第一個(gè)數(shù)據(jù)的值在變量中記下來;
(3)再取一個(gè)數(shù)據(jù);
(4)比較這個(gè)數(shù)據(jù)與變量中記下的數(shù)據(jù)的值;
(5)如果這個(gè)數(shù)據(jù)的值比記下的數(shù)據(jù)的值大,則去掉變量中原來那個(gè)數(shù)據(jù),記下新數(shù)據(jù)的值;
(6)重復(fù)執(zhí)行(2)~(4),繼續(xù)比較,直到最后一個(gè)數(shù)據(jù)。
也就是說,計(jì)算機(jī)的變量始終記著當(dāng)前比較過數(shù)據(jù)中的最大者(我們不妨用X 表示它),當(dāng)取完最后一個(gè)數(shù)據(jù)時(shí),X 中留下的也就是最大值了。求最大值的算法設(shè)計(jì)思想用下圖表示。
『教學(xué)在上一環(huán)節(jié)的基礎(chǔ)上再做進(jìn)一步的深入,即擴(kuò)大數(shù)據(jù)的比較范圍,討論一般的情況。由于學(xué)生已經(jīng)經(jīng)歷了上一環(huán)節(jié)的思考過程,因此,再次思考一般性問題的解決方案就變得容易多了,這又是另一維度的“逐步引導(dǎo)和訓(xùn)練”,即具體到一般的過渡。這是作者對(duì)教學(xué)策略設(shè)計(jì)的準(zhǔn)確實(shí)現(xiàn)。』 注意:
a.再次讓學(xué)生討論變量的意義,弄清賦值語句的意義。b.一些物理量用變量表達(dá)的意義。如X 表示最大值,X 表示輸入的一個(gè)值,且每次循環(huán)時(shí)都用同一個(gè)變量X。
c.為了控制循環(huán)結(jié)束,必須加入一個(gè)控制循環(huán)次數(shù)的計(jì)數(shù)器I,當(dāng)I 達(dá)到一定的次數(shù)后,循環(huán)工作結(jié)束。
『除了對(duì)教學(xué)目標(biāo)宏觀上的關(guān)注與設(shè)計(jì)之外,也注意到了教學(xué)內(nèi)容細(xì)節(jié)上的把握。作者在此處提出的三點(diǎn)注意都是編程語言細(xì)節(jié)上的問題,應(yīng)該說,這“三點(diǎn)注意”是作者多年或是本案例實(shí)踐過后總結(jié)的教學(xué)經(jīng)驗(yàn),當(dāng)然也可能是教師在教學(xué)設(shè)計(jì)時(shí)預(yù)先設(shè)想的教學(xué)問題。這些要“注意的點(diǎn)”正是教學(xué)實(shí)踐或設(shè)計(jì)中的精華所在,也是值得我們借鑒與學(xué)習(xí)的內(nèi)容之一。』
3. 回顧小結(jié)
師生共同總結(jié)算法設(shè)計(jì)的過程,就是將大腦思維的每一步都記錄下來,并且用計(jì)算機(jī)能達(dá)到的功能來實(shí)現(xiàn)人解決問題的思路。
『最后帶領(lǐng)學(xué)生總結(jié)本節(jié)課的中心思想,即回答“算法設(shè)計(jì)的過程是怎樣的?”這一問題。使整節(jié)課有了一個(gè)明確的結(jié)論。』
第四篇:《算法與程序設(shè)計(jì)》選修教案
第一課
初識(shí)算法與程序設(shè)計(jì)
一、教學(xué)目標(biāo)
1、知識(shí)與技能(1)理解算法的概念,培養(yǎng)學(xué)生自我探索信息,高效獲取信息的能力;
(2)能初步利用算法解決簡(jiǎn)單的問題,培養(yǎng)學(xué)生的理論聯(lián)系實(shí)際能力和動(dòng)手操作能力。
2、情感、態(tài)度、價(jià)值觀 學(xué)生在學(xué)習(xí)過程中,通過親身經(jīng)歷體驗(yàn)獲得對(duì)此算法的感性認(rèn)識(shí),培養(yǎng)學(xué)生自我獲取信息、分析評(píng)價(jià)信息、、表達(dá)呈現(xiàn)信息的能力,進(jìn)一步提高其信息素養(yǎng)。
二、教學(xué)重點(diǎn)難點(diǎn) 重點(diǎn):算法概念的理解 難點(diǎn):如何科學(xué)合理的選擇和設(shè)計(jì)算法。
三、教學(xué)策略與手段 以趣味性問題設(shè)置情境,激發(fā)學(xué)生探索解決問題的興趣,與學(xué)生進(jìn)行互動(dòng)探討,通過Flash演示材料,比較直觀地把抽象的問題簡(jiǎn)單化,使學(xué)生的思考逐步深入,從而總結(jié)出算法的概念,學(xué)會(huì)如何設(shè)計(jì)和選擇算法,培養(yǎng)學(xué)生自主探究學(xué)習(xí)的能力。
四、教學(xué)過程(1課時(shí))
(一)我們來共同尋找下面一些生活中比較現(xiàn)實(shí)的問題的解決方法。【問題一】天下真的有“不要錢的午餐”嗎? 某一餐館門口海報(bào)上寫著“不要錢的午餐”,規(guī)則如下:在三個(gè)月內(nèi),來賓必須湊夠五個(gè)人,五人每次來就餐必須按照不同的順序坐,直到把所有可能的順序都坐一遍,以后來吃飯就可永遠(yuǎn)免費(fèi)”。于是有人想,這太容易了,每人每次坐不同的位置,吃五次不就行了?于是他就叫上自己的朋友參加這項(xiàng)活動(dòng),可是,吃了十次之后,還沒有吃上免費(fèi)午餐,這是怎么回事呢? 學(xué)生們感覺非常有意思,很快以小組為單位進(jìn)行熱烈的討論并得出了破解問題的步驟:①第一個(gè)座位5個(gè)人都有坐的機(jī)會(huì)②第二個(gè)座位只有4個(gè)人中的任一個(gè)有坐的機(jī)會(huì)(一個(gè)人不能同時(shí)坐兩個(gè)座位)③第三個(gè)座位只有3個(gè)人中的任一個(gè)有坐的機(jī)會(huì)④第四個(gè)座位只有2個(gè)人中的任一個(gè)有坐的機(jī)會(huì)⑤第五個(gè)座位只有1個(gè)人有坐的機(jī)會(huì)⑥計(jì)算:5×4×3×2×1=120⑦得出結(jié)論:需要吃120次才有可能吃上免費(fèi)午餐。
【問題二】有三個(gè)和尚和三個(gè)妖怪過河,只有一條能裝下兩個(gè)人的船,在河的任何一方或者船上,如果妖怪的人數(shù)大于和尚的人數(shù),那么和尚就會(huì)有被吃掉的危險(xiǎn)。你能不能找出一種安全的渡河方法呢?請(qǐng) 1
寫一寫你的渡河方案。學(xué)生:學(xué)生討論回答。〖展示步驟〗 ①兩個(gè)妖怪先過河,一個(gè)妖怪回來; ②再兩個(gè)妖怪過河,一個(gè)妖怪回來; ③兩個(gè)和尚過河,一個(gè)妖怪和一個(gè)和尚回來; ④兩個(gè)和尚過河,一個(gè)妖怪回來; ⑤兩個(gè)妖怪過河,一個(gè)妖怪回來; ⑥兩個(gè)妖怪過河。【Flash動(dòng)畫展示】通過討論和動(dòng)畫展示,我們可以知道,計(jì)算機(jī)解決問題和人解決問題一樣需要有清晰的解題步驟。算法就是解決問題的程序或步驟。
(二)【課件展示】算法的概念:
1、廣義的算法是指完成某項(xiàng)工作的方法和步驟,在我們?nèi)粘I钪幸步?jīng)常使用算法,只是沒意識(shí)到罷了。如:洗衣機(jī)的使用說明書是操作洗衣機(jī)的算法,菜譜是做菜的算法等等。
2、在數(shù)學(xué)中,現(xiàn)代意義的算法是指可以用計(jì)算機(jī)來解決的某一類問題的程序和步驟,這些程序或步驟必須是明確和有效的,而且能夠在有限步之內(nèi)完成。【小試身手】按照這樣的理解,我們可以設(shè)計(jì)出很多由具體數(shù)學(xué)問題解決一類數(shù)學(xué)問題的算法.下面看一個(gè)例子:(要求學(xué)生自己考慮并寫出具體的算法)雞兔同籠問題。一個(gè)籠子里有雞和兔,現(xiàn)在只知道里面一共有17個(gè)頭,48只腳,雞和兔各有多少只?試設(shè)計(jì)一個(gè)求解的算法。【設(shè)計(jì)意圖】求解雞兔的問題簡(jiǎn)單直觀,卻包含著深刻的算法思想。應(yīng)用解二元一次方程組的方法來求解雞兔同籠問題。第一步:設(shè)有小雞x只,小兔y只,則有 第二步:將方程組中的第一個(gè)方程兩邊乘-2加到第二個(gè)方程中去,得到,得到y(tǒng)=7; 第三步:將y=7代入(1)得x=10。【變一變】在籠中有雞、兔若干,已知有頭a個(gè),有腳b只,求各有多少只雞和兔。【師生合作】老師帶領(lǐng)學(xué)生共同書寫規(guī)范的算法的具體步驟,最后引出算法使用的范圍:能解決一類問題,并且能重復(fù)使用。
(三)【課件展示】算法的基本特征 ①有窮性 ②確定性 ③不唯一性 ④有效性(邏輯性)2
1、有窮性:一個(gè)算法應(yīng)該包含有限個(gè)操作步驟,而不能是無限的。
2、確定性:算法的每個(gè)步驟都應(yīng)該是明確無誤的,不能含義模糊,使執(zhí)行者無所適從。
3、有零個(gè)或者多個(gè)輸入,有一個(gè)或者多個(gè)輸出
4、有效性:算法中的每一步都應(yīng)該能有效地執(zhí)行,執(zhí)行算法最后應(yīng)該能得到確定的結(jié)果。【教學(xué)總結(jié)】
1、本節(jié)課通過一些生活中看似簡(jiǎn)單問題的解決方法和步驟,使學(xué)生比較輕松的接受了生活算法的概念,進(jìn)一步理解了計(jì)算機(jī)算法的概念。
2、課堂教學(xué)的效益取決于學(xué)生對(duì)所學(xué)知識(shí)理解了多少,能否用所學(xué)知識(shí)來解決一些實(shí)際問題。本節(jié)課的設(shè)計(jì)突出講與練的結(jié)合,培養(yǎng)學(xué)生的動(dòng)手能力,并且引出學(xué)生對(duì)下一節(jié)課的內(nèi)容的思考,比較順利的完成了本節(jié)課的教學(xué)任務(wù)。
3、如何優(yōu)化算法,找到算法的形式和用算法解決問題的效益的最佳結(jié)合點(diǎn),還尚需探討。3
第二課 用計(jì)算機(jī)解決問題
一、教學(xué)目標(biāo)(1)讓學(xué)生了解算法、窮舉法、程序設(shè)計(jì)語言、編寫程序和調(diào)試程序等概念。(2)讓學(xué)生知道對(duì)現(xiàn)實(shí)問題的自然語言的描述,特別是類似程序設(shè)計(jì)語言的自然語言描述。(3)讓學(xué)生理解分析問題、設(shè)計(jì)算法、編寫程序、調(diào)試程序這一用計(jì)算機(jī)解決問題的基本步驟,認(rèn)識(shí)其在算法與程序設(shè)計(jì)中的作用。
二、重點(diǎn)難點(diǎn) 重點(diǎn)用計(jì)算解決問題的過程中的分析問題、設(shè)計(jì)算法、和上機(jī)調(diào)試程序等步驟。用計(jì)算機(jī)解決問題的過程中的分析問題、設(shè)計(jì)算法也是本節(jié)的難點(diǎn)。
三、教學(xué)過程(2課時(shí))
(一)引入 教師:“在科技發(fā)達(dá)的今天,我們到處都可以看到計(jì)算機(jī)的蹤影,感受到計(jì)算機(jī)給學(xué)習(xí)、生活帶來的方便。然而,在驚嘆計(jì)算機(jī)的神奇和享受的歡樂的時(shí)候,你是否了解計(jì)算解決問題的基本過程?有沒有思考過其中的奧妙呢?下面我們先看一個(gè)古典的問題:”
學(xué)生觀看的電視劇《漢劉邦》片斷,內(nèi)容大致如下: “韓信是我國(guó)西漢初著名的軍事家,劉邦得天下,軍事上全依靠他。韓信點(diǎn)兵,多多益善,不僅如此,還能經(jīng)常以少勝多,以弱勝?gòu)?qiáng)。在與楚軍決戰(zhàn)時(shí)韓信指揮諸侯聯(lián)軍,在垓下十面埋伏,擊敗楚軍,楚霸王項(xiàng)羽因此自殺。” 片斷結(jié)束時(shí)屏幕出現(xiàn)“韓信點(diǎn)兵”問題:“相傳漢高祖劉邦問大將軍韓信統(tǒng)御兵士多少,韓信答說,每3人一列余1人、5人一列余2人、7人一列余4人、13人一列余6人??。劉邦茫然而不知其數(shù)。你呢?”
(二)問題 教師:“下面我們先助劉邦解決一個(gè)簡(jiǎn)單的問題。” “韓信點(diǎn)兵”問題1:求整除3余
1、整除5余
2、整除7余4的最小自然數(shù)。
(三)探究 把全班分成16個(gè)學(xué)習(xí)小組,每個(gè)小組的同學(xué)一起探究、討論問題。利用已學(xué)過的數(shù)學(xué)知識(shí)找出題目已知什么求什么、明確已知和未知之間的關(guān)系和寫出求解問題的解題步驟。并填寫《計(jì)算機(jī)解決問題的過程》教學(xué)活動(dòng)表中的“探究問題記錄表”。如下:
探究問題記錄表
分析問題(找出已知和未知、列出寫出解題步驟 結(jié)果 已知和未知之間的關(guān)系)學(xué)生討論,教師在這過程中到各學(xué)習(xí)小組中,引導(dǎo)個(gè)別學(xué)習(xí)小組分析問題、寫出解題步驟。教師提問2~3個(gè)同學(xué),從中逐漸引導(dǎo)出類似如下的分析問題和解題步驟,并給出算法的概念。
分析問題(找出已知和未知、列出寫出解題步驟 已知和未知之間的關(guān)系)
1、令X為1。
2、如果X整除3余1,X整除5余2,設(shè)所求的數(shù)為X,則X應(yīng)滿足: X整除7余4,這就是題目要求的數(shù),X整除3余1 則記下這個(gè)X。X整除5余2
3、令X為X+1(為算下一個(gè)作準(zhǔn)備)。X整除7余4
4、如果算出,則結(jié)束;否則跳轉(zhuǎn)2。
5、寫出答案。教師解釋第3步“另X為X+1”并指出它與數(shù)學(xué)中的區(qū)別,并從上面的解題步驟中總結(jié)出窮舉的算法。教師:“剛才有些同學(xué)把題目解出來了,答案是67,韓信作為大將軍,統(tǒng)率士兵當(dāng)然不止67人,下面我們來解決一個(gè)數(shù)據(jù)量稍大的問題。” 展示題目: “韓信點(diǎn)兵”問題2:求整除3余
1、整除5余
2、整除7余
4、整除13余
6、整除17余8的最小自然數(shù)。學(xué)生分析上述問題并寫出算法,不用計(jì)算。學(xué)生有了第1題的經(jīng)驗(yàn),很快會(huì)寫出和第一題類似的算法。如下:
分析問題(找出已知和未知、列出寫出解題步驟 已知和未知之間的關(guān)系)設(shè)所求的數(shù)為X,則X應(yīng)滿足:
1、令X為1。X整除3余1
2、如果X整除3余1,X整除5余2
X整除5余2,X整除7余4 X整除7余4,5
X整除13余6 X整除13余6,X整除17余8 X整除17余8,則記下這個(gè)X。
3、令X為X+1。
4、如果算出,則結(jié)束;否則跳轉(zhuǎn)2。
5、寫出答案。教師:“上面的結(jié)果超過1萬,人工計(jì)算要很長(zhǎng)時(shí)間,在科技發(fā)達(dá)的今天,你想到什么?”(用計(jì)算機(jī)解題)
(四)用計(jì)算機(jī)解決問題 教師:“計(jì)算機(jī)怎么樣解決問題?用計(jì)算機(jī)解決問題,同樣要經(jīng)過分析問題、設(shè)計(jì)算法兩步驟。”在講授過程中展示人工解題中分析問題和設(shè)計(jì)算法這兩個(gè)步驟。用計(jì)算機(jī)解題,是不是輸入上面的算法?上面用自然語言描述的算法,計(jì)算機(jī)不懂,必須翻譯成計(jì)算機(jī)的語言,這就是程序設(shè)計(jì)語言。” 本例用Visual Basic語言編寫的程序請(qǐng)看如下: Private Sub Command1_Click()Dim X As Integer, Y As Integer X = 1: Y = 0 Do If X Mod 3 = 1 Then If X Mod 5 = 2 Then If X Mod 7 = 4 Then If X Mod 13 = 6 Then If X Mod 17 = 8 Then Y = X End If End If End If End If X = X + 1 Loop Until Y > 0 Print “韓信統(tǒng)御士兵數(shù):”;Y End Sub 教師:“程序編好以后,通過鍵盤輸入計(jì)算機(jī),并運(yùn)行程序查看結(jié)果這個(gè)過程叫調(diào)試程序。” 6
(五)觀摩 根據(jù)前面編制的程序,啟動(dòng)Visual Basic程序設(shè)計(jì)環(huán)境,輸入程序代碼,進(jìn)行調(diào)試,最后得到運(yùn)行的結(jié)果。要求同組內(nèi)先完成的同學(xué)幫助還未完成的同學(xué)。幫助的時(shí)候不能代勞,只能動(dòng)口不動(dòng)手。
(六)交流 教師:“前面我們學(xué)習(xí)了用計(jì)算機(jī)解決問題的過程,它和人工解有什么關(guān)系呢?同一學(xué)習(xí)小組的同學(xué)一起探討人工求解問題和用計(jì)算機(jī)求解問題的異同,并把討論結(jié)果記錄在《計(jì)算機(jī)解決問題的過程》教學(xué)活動(dòng)表的“討論記錄”表中。如下: 關(guān)于求解問題的方式討論記錄
求解問題的方式 相同點(diǎn) 不同點(diǎn) 人工求解問題 用計(jì)算機(jī)求解問題 教師提問2~3個(gè)小組的討論結(jié)果,并引導(dǎo)出大致如下的形式結(jié)果: 求解問題的方式 相同點(diǎn) 不同點(diǎn) 對(duì)題目進(jìn)行解答、運(yùn)算速度人工求解問題 慢、不需要計(jì)算機(jī)等 分析問題、設(shè)計(jì)算法、得出結(jié)果、驗(yàn)算結(jié)果等 編寫程序、調(diào)試程序、運(yùn)算用計(jì)算機(jī)求解問題 速度快等 7
第三課 算法與算法的描述
一、教學(xué)目標(biāo)
1、知識(shí)與技能(1)了解算法的定義及其表達(dá)方法;(2)認(rèn)知流程圖的六種基本符號(hào);(3)理解計(jì)算機(jī)解決問題的一般過程。
2、方法與過程(1)理解用不同的表達(dá)方法描述算法的優(yōu)缺點(diǎn);(2)掌握用流程圖描述簡(jiǎn)單的算法。
3、情感態(tài)度和價(jià)值觀 以生活中的實(shí)例引入算法,激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的主動(dòng)探究能力。
二、重點(diǎn)難點(diǎn)
(一)教學(xué)重點(diǎn)
1、算法的定義;
2、算法的三種表達(dá)方法;
3、流程圖的六種基本符號(hào);
4、用流程圖描述簡(jiǎn)單的算法。
(二)教學(xué)難點(diǎn)
5、算法的描述(三種);
6、用流程圖描述算法。
三、教學(xué)過程(2課時(shí))教學(xué)內(nèi)容 預(yù)期目標(biāo) 新課內(nèi)容:
一、對(duì)算法的初步了解 1.一個(gè)簡(jiǎn)單的物理問題:求物體在恒力作用下的加速度。根據(jù)在物理課中學(xué)過的知識(shí),要解決這個(gè)問題有多種方法: 方法一: a)測(cè)量出物體的質(zhì)量m、拉力F和滑動(dòng)摩擦力f b)將測(cè)量所得的數(shù)據(jù)輸入計(jì)算機(jī) c)根據(jù)牛頓第二定律F-f=m*a,計(jì)算出加速度a
d)輸出所得的結(jié)果 方法二: a)測(cè)量出物體從靜止開始移動(dòng)的距離s、時(shí)間t b)將測(cè)量所得的數(shù)據(jù)輸入計(jì)算機(jī) 引入物理學(xué)中的例子,激發(fā) c)利用公式:s=a*t*t/2計(jì)算出加速度a 學(xué)生的學(xué)習(xí)興趣,有助于學(xué) d)輸出所得的結(jié)果 生理解算法的概念 2.算法的定義 這種為解決某一問題而設(shè)計(jì)的確定的有限的步驟稱為算法。
二、算法的描述 要把解決問題的步驟表達(dá)出來,有多種方法可以表達(dá)算法。引導(dǎo)出算法的概念
1.用自然語言表達(dá) 用自然語言表達(dá)算法,就是把算法的各個(gè)步驟,依次用人們熟悉介紹三種算法的表達(dá)方式,的自然語言表示出來。并對(duì)它們進(jìn)行比較,分析優(yōu)優(yōu)點(diǎn):容易理解 缺點(diǎn)。缺點(diǎn):書寫較煩、不確定性、對(duì)復(fù)雜的問題難以表達(dá)準(zhǔn)確、不能被計(jì)算機(jī)識(shí)別和執(zhí)行
給出流程圖的基本符號(hào),2.用圖形符號(hào)表達(dá) 對(duì)其功能和使用情況加以用圖形符號(hào)表達(dá)算法必須要有一組規(guī)定統(tǒng)一、含義確定的專用符說明,以便今后在具體運(yùn)用號(hào)。中的正確使用。常用的“流程圖”所用的基本符號(hào) 圖形符號(hào) 符號(hào)名稱 說明 流線 起始、終表示算法的開起始框:一流出線 止框 始或結(jié)束 終止框:一流入線 輸入、輸框中標(biāo)明輸只有一流入線和一出框 入、輸出的內(nèi)流出線
容 處理框 框中標(biāo)明進(jìn)行只有一流入線和一
什么處理 流出線 判定框 框中標(biāo)明判定一流入線兩流出線 條件并在框外(T和F
標(biāo)明判定后的)但同時(shí)只能一流
兩種結(jié)果的流出線起作用
向 流線 表示從某一框 給出流程圖的作法,通過詳?shù)搅硪豢虻牧骷?xì)的解釋說明使學(xué)生初步向 掌握流程圖的使用和基本 連接圈 表示算法流向一條流線 畫法。出口或入口連 接點(diǎn) 優(yōu)點(diǎn):直觀、形象 缺點(diǎn):不能被計(jì)算機(jī)識(shí)別和執(zhí)行 例6-1-1:“物體在恒力作用下的加速度”的算法用下圖表達(dá)。
開始
M=m F1=F F2=f a=(F1-F2)/M 輸出a
結(jié)束 3.用程序?qū)崿F(xiàn)算法 用計(jì)算機(jī)能理解和執(zhí)行的程序設(shè)計(jì)語言把算法表示出來,然后把了解計(jì)算機(jī)解決問題的一程序輸入到計(jì)算機(jī)并執(zhí)行,計(jì)算機(jī)才能按照預(yù)定的算法去解決問般過程,為今后用編程解決 10
題。實(shí)際問題打下基礎(chǔ)。不同類型的計(jì)算機(jī)能夠識(shí)別的指令和語言不盡相同,即使對(duì)同一 種計(jì)算機(jī)語言,不同類型的計(jì)算機(jī)對(duì)該語言的解釋程序也有差異。因此,用程序表示算法時(shí),必須按照程序設(shè)計(jì)語言適用某類計(jì)算 機(jī)的具體規(guī)定來進(jìn)行。例:用Pascal語言表示“從鍵盤輸入一組數(shù)據(jù)并求該組數(shù)據(jù)的平均值”的程序如下:
Program ex_aver
Var I:integer;x,av:real;
Begin
Av:=0;I:=0;
Do while not eof()Begin
Readln(x);av:=av+x;
I:=I+1;
End
av:=av/I;Writenln(“The average value is :”,av);End
三、用計(jì)算機(jī)解決問題的一般過程 使用計(jì)算機(jī)解決一個(gè)問題,一般包括四個(gè)過程 1.需求分析 “需求分析”是指對(duì)要解決的問題進(jìn)行詳細(xì)的分析,弄清楚問題的要求,包括需要輸入什么數(shù)據(jù),要得到什么結(jié)果,最后應(yīng)輸出什么。“需求分析”就是確定要計(jì)算機(jī)“做什么”。2.設(shè)計(jì)算法 弄清楚要計(jì)算機(jī)“做什么”后,就要設(shè)計(jì)計(jì)算法,明確要計(jì)算機(jī)“怎么做” 11
解決一個(gè)問題,可能有多種算法。例如,數(shù)學(xué)題常常有“一題多解”。這就是說,解決一個(gè)問題的算法可能不止一種。這是,應(yīng)該通過分析、比較、挑選一種最優(yōu)的算法。3.編寫程序 計(jì)算機(jī)只能接受并執(zhí)行計(jì)算機(jī)程序設(shè)計(jì)語言編寫的程序。當(dāng)我們?yōu)榻鉀Q一個(gè)問題確定了算法后,還必須將該算法用計(jì)算機(jī)程序設(shè)計(jì)語言編寫程序。這個(gè)過程成為“編碼”或“編程”。4.上機(jī)調(diào)試與維護(hù) 編寫完成的程序,不一定完全符合實(shí)際問題的要求,還必須在計(jì)算機(jī)上運(yùn)行這個(gè)程序,排除程序中可能出現(xiàn)的錯(cuò)誤,才能得到結(jié)果。這個(gè)過程稱為“上機(jī)調(diào)試”。即使是經(jīng)過調(diào)試的程序,在使用一段時(shí)間后,仍然會(huì)被發(fā)現(xiàn)錯(cuò)誤或不足之處。這就需要對(duì)程序做進(jìn)一步的修改,使之更加完善。這個(gè)過程稱為“維護(hù)”。在實(shí)際解決問題時(shí),上述四個(gè)步驟可能會(huì)根據(jù)不同的問題有所側(cè)重。
第四課
程序與程序設(shè)計(jì)語言
一、教學(xué)目標(biāo)
1、知識(shí)與技能 使學(xué)生知道什么是源代碼,并理解算法、程序設(shè)計(jì)、程序設(shè)計(jì)語言之間的關(guān)系,了解程序設(shè)計(jì)語言的發(fā)展及種類。
2、過程與方法 使學(xué)生初步體驗(yàn)編程樂趣,了解如何編輯程序、編譯程序和連接程序。
3、情感態(tài)度與價(jià)值觀 讓學(xué)生進(jìn)一步領(lǐng)會(huì)算法和程序設(shè)計(jì)在解決問題中的地位,體會(huì)編寫出程序的魅力,從而培養(yǎng)學(xué)生學(xué)習(xí)編程的興趣。
二、重點(diǎn)難點(diǎn)(1)重點(diǎn):了解代碼所包含的算法思想;(2)難點(diǎn):計(jì)算機(jī)是如何編輯程序、編譯程序和連接程序的。
三、教學(xué)過程(2課時(shí))正課講解
(一)嘗試用VB編寫程序
1、么是VB? ——VB是一種基本BASIC語言的可視化程序開發(fā)工具。
2、編寫程序 ⑴從桌面上啟動(dòng)VB,彈出“新建工程”對(duì)話框,從“新建”頁面中選“標(biāo)準(zhǔn)EXE”,然后“打開“按鈕,建立”標(biāo)準(zhǔn)EXE工程。
注:為了避免打開時(shí)總是出現(xiàn)“新建工程”對(duì)話框,在首次啟動(dòng)時(shí),勾選“不再顯示這個(gè)對(duì)話框”。
⑵單擊工具箱“CommandButton”的按鈕,在Form1窗體中拖出一個(gè)“Command1”按鈕。Command1是命令按鈕,它有6個(gè)屬性、2個(gè)事件和4個(gè)方法。屬性
Caption Default 標(biāo)題
決定窗體的默認(rèn)命令按鈕
Style Enabled 控件的外觀
決定對(duì)象是否響應(yīng)用戶生成事件
Visible Picture 決定對(duì)象是否可見
顯示的圖形 13
事件 方法 Click Drag Refresh 單擊 拖動(dòng) 刷新 Move KeyPress SetFocus 移動(dòng) 字符鍵被單設(shè)置焦點(diǎn),將當(dāng)前焦擊 點(diǎn)強(qiáng)制設(shè)置到文本框?qū)ο笊?/p>
⑶選中此按鈕,從屬性窗口中將Caption改為“韓信點(diǎn)兵”。⑷給按鈕添加代碼,在Private Sub Command1_Click()和 End Sub之間添加代碼:
Dim N As Integer ‘聲明N為整型 N=1 ‘賦初始值 Do(N mod 3=2)and(N mod 5=3)and(N mod 7=2)Then ‘滿足條件打印N,不滿足繼續(xù)循環(huán) Print N Exit do End if N=N+1 Loop ⑸從“運(yùn)行”菜單中“單擊”啟動(dòng)命令,運(yùn)行程序。運(yùn)行后,單擊“韓信點(diǎn)兵”按鈕。注:運(yùn)行時(shí),不能修改程序代碼。實(shí)踐題:從“調(diào)試”菜單中點(diǎn)擊“逐語句”命令(F8),然后按F8鍵試著單步運(yùn)行程序,觀察代碼是如何運(yùn)行的,程序執(zhí)行注釋部分嗎?在程序運(yùn)行的過程中,用鼠標(biāo)指向變量N,看看它的值有什么變化,為什么會(huì)這樣變?
(二)算法、程序設(shè)計(jì)與程序設(shè)計(jì)語言之間的關(guān)系 ⑴算法 提出問題:什么是算法?算法有哪些特征? ⑵程序設(shè)計(jì)——尋求解決問題的方法,并將其實(shí)現(xiàn)步驟寫成計(jì)算機(jī)可執(zhí)行的程序的過程。
⑶程序設(shè)計(jì)語言——泛指一切用于書寫計(jì)算機(jī)程序的語言。
算法是程序設(shè)計(jì)的前提,它包含方法和步驟; 程序是實(shí)現(xiàn)算法中的思想的過程; 程序設(shè)計(jì)語言把算法轉(zhuǎn)化為計(jì)算機(jī)認(rèn)識(shí)的語言。14
(三)認(rèn)識(shí)程序設(shè)計(jì)語言
1、發(fā)展過程 機(jī)器語言:由一串“0”和“1”構(gòu)成二進(jìn)制代碼。匯編語言:是一種符號(hào)化(英文助記符)的機(jī)器語言。高級(jí)語言:如Basic、C/C++、Fortran、Pascal、Cobol、Java等。
2、分類(按轉(zhuǎn)換方式不同分類)
編譯型語言
解釋型語言
編寫的源程序需要用編譯程序先翻譯成機(jī)器語言的源程序輸入計(jì)算機(jī)后,運(yùn)行源程序,相應(yīng)的解釋程序目標(biāo)程序,然后再由連接裝配程序進(jìn)行連接裝配,生會(huì)逐條分析源程序中的語句,每解釋一句由計(jì)算機(jī)執(zhí)成可執(zhí)行程序,這樣才能被計(jì)算機(jī)執(zhí)行。行一句。C/C++、VB、Pascal、Cobol Qbasic、Lisp
3、編輯程序、編譯程序和連接程序 ⑴編輯程序 包含內(nèi)容:一是將源程序逐個(gè)字符輸入到計(jì)算機(jī)內(nèi)存,二是修改源程序,三將修改好的源程序保存在磁盤文件中。⑵編譯程序:將已編輯好的源程序(已存儲(chǔ)在磁盤文件中)翻譯成二進(jìn)制的目標(biāo)代碼。二進(jìn)制代碼在UNIX下后綴為“.o”的文件,在DOS下是后綴為“.obj”文件。⑶連接:將各模塊的二進(jìn)制目標(biāo)代碼與系統(tǒng)標(biāo)準(zhǔn)模塊經(jīng)連接處理后,得到具有有絕對(duì)地址的可執(zhí)行文件,它是計(jì)算機(jī)直接執(zhí)行的文件。在UNIX下它以“.out”為后綴,在MS-DOS以下“.exe”為后綴。
執(zhí)行過程: 15
第五課 vb語言及程序開發(fā)環(huán)境
一、教學(xué)目標(biāo)
1、知識(shí)與技能 掌握VB定義的常用的基本數(shù)據(jù)類型,常量與變量的定義方法,運(yùn)算符、函數(shù)和表達(dá)式的描述。熟悉VB程序設(shè)計(jì)語言的開發(fā)環(huán)境,能調(diào)試簡(jiǎn)單的VB程序。
2、方法與過程
本節(jié)涉及到基礎(chǔ)知識(shí)較多,所以要一個(gè)一個(gè)問題解決,從一個(gè)簡(jiǎn)單的求圓的面積的程序入手,從中分析VB程序一般包括的四部分,基本數(shù)據(jù)類型、常量與變量,運(yùn)算符、函數(shù)和表達(dá)式,而且結(jié)合練習(xí)來加強(qiáng)對(duì)這些新知識(shí)的鞏固。通過介紹VB程序的開發(fā)環(huán)境中的菜單、常用工具和常用窗口等,再通過上機(jī)操作運(yùn)行一個(gè)程序,讓學(xué)生更容易上手。
3、情感態(tài)度和價(jià)值觀 這一節(jié)是學(xué)習(xí)VB程序的重要的入門課,授課時(shí)要注意結(jié)合學(xué)生的思路,逐個(gè)問題解決,不可一蹴而就。
二、重點(diǎn)難點(diǎn)
1、教學(xué)重點(diǎn)(1)VB常用的的基本數(shù)據(jù)類型,常量與變量,運(yùn)算符和表達(dá)式(2)VB程序的開發(fā)環(huán)境
2、教學(xué)難點(diǎn) 把本節(jié)的內(nèi)容加以運(yùn)用
三、教學(xué)過程(3課時(shí))導(dǎo)入: 以下是一個(gè)“求半徑為r的圓的面積”的程序,請(qǐng)你注意觀察程序的組成結(jié)構(gòu)及其功能,并思考如下的問題:(1)程序有多少行,每一行的作用是什么?(2)如果按語句的作用區(qū)分,這個(gè)程序包含幾個(gè)部分?
Private sub command1_click()
‘定義名為command1_click()的事件過程 Const pi as single=3.14 ‘說明程序中pi是常量∏ Dim r as single,s as single
‘定義半徑r和面積s為單精度實(shí)型 r=inputbox(“r=”,”請(qǐng)輸入半徑”)
‘輸入r的值
s=pi*r*r ‘把表達(dá)式pi*r*r的值賦給s print “圓的面積s=”;s ‘把s的值輸出到當(dāng)前的窗體上 16
End sub ‘過程結(jié)束 考察上述程序,我們?nèi)菀卓吹剑撼绦蚬灿写a7行,每一行都是VB的一個(gè)語句,VB的程序就是由這樣的一組語句組成。每一個(gè)語句都是按照一定的規(guī)則書寫的。總結(jié)上述分析,我們可以得到VB程序的一般包括如下部分:(1)數(shù)據(jù)類型說明部分(2)數(shù)據(jù)的輸入部分(3)數(shù)據(jù)的處理部分(4)數(shù)據(jù)的輸出部分
一、基本數(shù)據(jù)類型 描述客觀事物的數(shù)、字符以及所有能輸入到計(jì)算機(jī)中,并被計(jì)算機(jī)程序加工處理的集合稱為數(shù)據(jù)。數(shù)據(jù)既是計(jì)算機(jī)程序處理的對(duì)象,也是運(yùn)算產(chǎn)生的結(jié)果。為了更好地處理各種數(shù)據(jù),VB定義了多種數(shù)據(jù)的類型。基本數(shù)據(jù)類型是系統(tǒng)預(yù)先定義的數(shù)據(jù)類型,表2-1中列出了VB定義的常用的基本數(shù)據(jù)類型。例如在上述的程序中,既有單精度實(shí)型數(shù)的數(shù)據(jù)(如3.14等),也有字符類型的數(shù)據(jù),如“輸入半 17
徑”、“圓的面積S=”。
二、常量與變量(1)常量 常量是指在程序運(yùn)行過程中始終保持不變的常量、字符串等。例如在上述的程序中,3.14、“r=”、“輸入半徑”等都是常量。在程序設(shè)計(jì)中,以于一些經(jīng)常使用的常量,可以用常量說明語句來定義。這樣可以提高程序的可讀性和可維護(hù)性。常量說明語句的格式是: Const 常量名 As 類型 = 表達(dá)式 在上述程序中,第2行就是一個(gè)常量說明語句,說明程序中需要使用的常量。(2)變量 在程序處理數(shù)據(jù)時(shí),對(duì)于輸入的數(shù)據(jù)、參加運(yùn)算的數(shù)據(jù)、運(yùn)行結(jié)果等臨時(shí)數(shù)據(jù),通常把它們暫時(shí)存儲(chǔ)在計(jì)算機(jī)的內(nèi)存中。變量就是命名的內(nèi)存單元位置。在VB中,變量名必須是由英文字母開頭,后面則可以由字母、數(shù)字或其它符號(hào)組成;變量的名稱最好與它所表示的內(nèi)容意義相同的英文單詞來確定。(3)變量說明 使用變量前,一般應(yīng)先說明變量名及其類型,以使系統(tǒng)為其分配存儲(chǔ)單元,變量說明語句格式如下:
Dim 變量
As
類型 如Dim r as single,定義半徑r為單精度實(shí)型
三、運(yùn)算符、函數(shù)和表達(dá)式
(1)運(yùn)算符 運(yùn)算符是對(duì)數(shù)據(jù)進(jìn)行加工的過程。描述各種不同運(yùn)算的符號(hào)稱為運(yùn)算符,參與運(yùn)算的數(shù)據(jù)稱為操作數(shù)。在VB中,常用的運(yùn)算符有算術(shù)運(yùn)算符、字符串運(yùn)算符和邏輯運(yùn)算符等。①算術(shù)運(yùn)算符有: +14 Age = Age + 1 Tree = Tree + Age Print “到”;Age;Loop Until Tree >= 100
“歲時(shí)種到”;Tree;“棵樹!” End Sub 2.通過師生共同分析“陳婷植樹”問題的程序,3.學(xué)生對(duì)老師所提問題展開分析問題、35
歸納總結(jié)VB語言的DO循環(huán)語句的格式、功能、設(shè)計(jì)算法、編寫程序、調(diào)試程序等用計(jì)執(zhí)行過程,以及書寫的注意事項(xiàng),歸納總結(jié)VB算機(jī)解決問題的探究活動(dòng)。語言的DO循環(huán)特點(diǎn)。3.老師提出思考題:已知s=1×3×5×…×N,找4.學(xué)生在教師的指導(dǎo)下,閱讀、分析、出一個(gè)最大整數(shù)N,使得S<50000。要求學(xué)生展歸納,完成實(shí)踐任務(wù)。開分析問題、設(shè)計(jì)算法、編寫程序、調(diào)試程序等
5、要求學(xué)生上機(jī)練習(xí)共同探討P58的用計(jì)算機(jī)解決問題的探究活動(dòng)。交流,得出使用DO循環(huán)的技巧和心得。
4、上機(jī)練習(xí):P54實(shí)踐(1)、(2)
5、對(duì)幾種DO循環(huán)的比較分析:歸納總結(jié)出各自不同的特點(diǎn)的把握要素,使同學(xué)們能運(yùn)用自如。設(shè)立一些由人力解決較困難的問題,要求學(xué)生運(yùn)要求學(xué)生能設(shè)計(jì)出算法及編寫出程序。拓展 用所學(xué)編程知識(shí)去解決,比如:判斷一個(gè)大數(shù)是否為素?cái)?shù)等問題。小結(jié) VB語言的DO循環(huán)語句、格式、功能和執(zhí)行過程,以及幾種不同DO 循環(huán)的比較。教師在布置課本的練習(xí):P59(5),指導(dǎo)學(xué)生根據(jù)本節(jié)所學(xué)的知識(shí),分析問題,設(shè)計(jì)算法,練習(xí)編程求解問題。36
第九課 模塊化程序設(shè)計(jì)
一、教學(xué)目標(biāo)(1)理解自頂而下、逐步求精的程序設(shè)計(jì)方法;(2)掌握VB語言的過程與函數(shù)的定義和調(diào)用方法。(3)理解模塊化程序設(shè)計(jì)的基本思想。
二、重點(diǎn)難點(diǎn) 教學(xué)重點(diǎn): 讓學(xué)生學(xué)會(huì)使用VB語言的過程與函數(shù)的定義和調(diào)用方法。教學(xué)難點(diǎn): 理解模塊化程序設(shè)計(jì)的基本思想,并運(yùn)用于程序設(shè)計(jì)中。
三、教學(xué)過程(2課時(shí))教學(xué)環(huán)教師活動(dòng) 學(xué)生活動(dòng) 節(jié) 從歌德巴赫猜想的故事入手,驗(yàn)證歌德巴赫 學(xué)生邊閱讀邊傾聽。猜想,激發(fā)學(xué)生學(xué)習(xí)的興趣和熱情,通過先看P61情意 的程序2-9A觀查此程序有沒有功能重復(fù)的地方,導(dǎo)入 如何才能省略書寫……并且反復(fù)調(diào)用同一功能的程序代碼呢?拉開本節(jié)教學(xué)的序幕。1.通過組織學(xué)生探究“驗(yàn)證歌德巴赫猜想”問1.學(xué)生對(duì)“驗(yàn)證歌德巴赫猜想”題,引導(dǎo)學(xué)生經(jīng)歷分析問題、設(shè)計(jì)算法、編寫程問題展開分析問題、設(shè)計(jì)算法、序、調(diào)試程序等用計(jì)算機(jī)解決問題的過程;歸納編寫程序、調(diào)試程序等用計(jì)算機(jī)總結(jié)自頂而下、逐步求精的程序設(shè)計(jì)方法; 解決問題的探究活動(dòng)。2.通過師生共同分析“驗(yàn)證歌德巴赫猜想”的2.學(xué)生在教師的指導(dǎo)下,閱讀、新課 另一個(gè)程序,歸納總結(jié)VB語言的過程與函數(shù)的分析、歸納,完成實(shí)踐任務(wù)。講解 定義和調(diào)用方法。3.學(xué)生對(duì)“求五邊形的面積”3.通過師生共同分析“求五邊形的面積”程序,問題展開分析問題、設(shè)計(jì)算法、歸納總結(jié)模塊化程序設(shè)計(jì)的基本思想。編寫程序、調(diào)試程序等用計(jì)算機(jī) 解決問題的探究活動(dòng)。
4、要求學(xué)生求三個(gè)數(shù)的平均數(shù)。(用自定義函4.學(xué)生在教師的指導(dǎo)下,閱讀、數(shù)及自定義子過程)分析、歸納,完成實(shí)踐任務(wù)。37
1、求園的面積,已知半徑為1、3、5、7、9、11。(調(diào)用函數(shù)方法)拓展
2、調(diào)用子程序,使第一行打印20個(gè)*,第二行打印10個(gè)*,第三行打印20個(gè)*。引導(dǎo)學(xué)生利用函數(shù)及子程序解決較復(fù)雜問題,體會(huì)利用函數(shù)及子程序的好處。1.自頂而下、逐步求精的程序設(shè)計(jì)方法; 小結(jié) 2.VB語言的過程與函數(shù)的定義和調(diào)用方法; 3.模塊化程序設(shè)計(jì)的基本思想。
指導(dǎo)學(xué)生根據(jù)本節(jié)所學(xué)的知識(shí),完成求任意四邊形的面積問題,要求他們能分練習(xí)析問題,設(shè)計(jì)算法,編程求解問題。38
第十課 遞歸算法的實(shí)現(xiàn)
一、教學(xué)目標(biāo)
1、知識(shí)與技能: 理解什么是遞歸算法,學(xué)生會(huì)用遞歸算法的思想分析問題 能夠應(yīng)用自定義函數(shù)方法實(shí)現(xiàn)遞歸算法的編程
2、過程與方法: 學(xué)生參與討論,通過思考、動(dòng)手操作,體驗(yàn)遞歸算法的方法
3、情感態(tài)度與價(jià)值: 結(jié)合數(shù)學(xué)中的實(shí)例,激發(fā)學(xué)生的數(shù)學(xué)建模的意識(shí),培養(yǎng)學(xué)生多維度的思考問題和解決問題。『教學(xué)目標(biāo)設(shè)計(jì)的合理、準(zhǔn)確。這也是在意料之中的,一般情況下,成功的教學(xué)任務(wù)分析一定會(huì)帶來成功的教學(xué)目標(biāo)設(shè)計(jì)。』
二、重點(diǎn)難點(diǎn) 重點(diǎn):理解什么是遞歸算法,學(xué)生用遞歸算法的思想分析問題; 應(yīng)用自定義函數(shù)方法實(shí)現(xiàn)遞歸算法的編程 難點(diǎn):應(yīng)用自定義函數(shù)方法實(shí)現(xiàn)遞歸算法的編程 『大部分教師在確立教學(xué)重、難點(diǎn)時(shí)不會(huì)給出確立的依據(jù),可能這些依據(jù)早就在教師的腦中明確了,也有可能是一筆糊涂賬,只不過是教參上是這樣寫的就照搬過來而已。如果在寫教學(xué)重、難點(diǎn)的同時(shí)能再給出確立重、難點(diǎn)的依據(jù)會(huì)令教案更具借鑒意義。本案例的作者雖然沒有寫依據(jù),但由于前面成功的教學(xué)任務(wù)分析,也就自然確立了教學(xué)重、難點(diǎn)。這也是很好的。』
三、教學(xué)過程(2課時(shí))進(jìn)程 教師活動(dòng) 學(xué)生活設(shè)計(jì)意圖 動(dòng)
使用情境教學(xué)創(chuàng)設(shè)課堂導(dǎo)入:
法 情境 今天很高興,特此我給大家準(zhǔn)備了一份禮品(精美包 在此活動(dòng)過程裝猴與兔藝術(shù)品),你們想知道里面有什么禮物嗎?
中能讓學(xué)生初學(xué)生:想?? 師生共步從活動(dòng)中體
師:好!我們班有一位同學(xué)知道里面有什么禮物!(在同活動(dòng)驗(yàn)“問題的發(fā)上課之前事先告訴其中的一個(gè)同學(xué))但是他不能就這樣告“找答與收”從而走訴大家,有一個(gè)規(guī)則可以讓我們知道里面裝的是什么?? 案” 進(jìn)了遞歸的思規(guī)則是: 維模式,為進(jìn)1.從第一排的第一個(gè)同學(xué)開始。一步學(xué)習(xí)遞歸2.每位同學(xué)只問他相鄰的同學(xué),每位同學(xué)最多只能被 算法埋下伏筆 問一次,而且一個(gè)同學(xué)不能再問第二人,當(dāng)任何一個(gè)同學(xué) 知道了答案,要求立即告訴曾經(jīng)問過他的那個(gè)同學(xué)(不能 告訴其他同學(xué))以此類推。
3.一直到得出答案為結(jié)束。以游戲規(guī)則開展,我想讓第一位同學(xué)告訴大家,精裝的禮物是什么? 39
啟發(fā)師:前面我們學(xué)習(xí)了自定義函數(shù),知道函數(shù)是為了實(shí)討論活分析問題 主體 現(xiàn)某種功能而編寫的一段相對(duì)獨(dú)立的程序,并且可以多次動(dòng)過確定方案,培養(yǎng)的調(diào)用。程,總學(xué)生思維程序 結(jié)游戲化,為下面新 規(guī)則,學(xué)習(xí)遞歸算法算法描述: 了解活做好移植準(zhǔn)備 function what(student)動(dòng)規(guī)如果我知道答案,那么我就告訴你 律,并否則,我要問下一位同學(xué)再告訴你 將活動(dòng)end function 過程進(jìn) 行算法描述 學(xué)習(xí)展示題: 討論、實(shí)例教學(xué),選新知 比較、擇“小猴吃桃”小猴吃桃: 有一天小猴子摘若干個(gè)桃子,當(dāng)即吃了一半還覺得不
分析、這一題的目的過癮,又多吃了一個(gè)。第二天接著吃剩下桃子中的一半,歸納 是為了簡(jiǎn)化教
仍覺得不過癮又多吃了一個(gè),以后小猴子都是吃尚存桃子材“裴波那契” 一半多一個(gè)。到第10天早上小猴子再去吃桃子的時(shí)候,數(shù)列的多函數(shù)
看到只剩下一個(gè)桃子。問小猴子第一天共摘下了多少個(gè)桃調(diào)用,回避問 子? 題分析的復(fù)雜 1.鼓勵(lì)學(xué)生進(jìn)行討論,共同尋找答案或解決方法 性較大的特
2.師生共同分析題: 點(diǎn),從而使得 以4位同學(xué)排成了行,(設(shè)從行的后面開始的第一位同重點(diǎn)難點(diǎn)得以 學(xué)知道第10的桃子數(shù)(1個(gè)),倒數(shù)第二位同學(xué)知道第9輕松的突破。
天的桃子數(shù)是??)從教師提問排在前面第一位(第7天)的同學(xué),你知道,你今天的桃子數(shù)有多少? 目的是討論出,只有倒數(shù)第一位同學(xué)知道,其他有同 學(xué)都不知道,但是他只要知道他后一位同學(xué)的桃子數(shù)就可 以求出本人所具有的桃子數(shù),(后同學(xué)的桃子數(shù)+1)*2就 是本人的桃子數(shù)。建立數(shù)學(xué)模型:
假設(shè)第n,n<10天的桃子數(shù)為tao(n)那么 推導(dǎo)數(shù) tao=10 n=1 學(xué)建模 tao(n)=(tao(n+1)+1)*2 n<10 我們能不能這樣設(shè)一個(gè)函數(shù): 學(xué)生進(jìn)培養(yǎng)學(xué)生養(yǎng)成算法描述: 行算法良好的編程習(xí)
function你有多少桃子?(第幾天)描述 慣 如果我第10天,那么我就有一個(gè)桃子。否則,我的桃子數(shù)=(前一天的桃子數(shù)+1)*2 end function 40
示圖協(xié)助學(xué)生
分析算算法實(shí)現(xiàn)過程法的實(shí)的始末思維,現(xiàn)過程 學(xué)生編程實(shí)現(xiàn):
Function tao(ByVal days As Integer)As Integer
If days = 10 Then 培養(yǎng)學(xué)生的編 tao = 1 學(xué)生編程和調(diào)試程序 Else 程實(shí)現(xiàn) 能力,讓學(xué)生 tao =(tao(days + 1)+ 1)* 2 獲得成功的體 End If 檢 End Function 41
自主我們?cè)賮砜吹诙}:(學(xué)生閱讀教材P68,讓學(xué)生閱尊重學(xué)生的個(gè)構(gòu)建 讀教材的“裴波那契”,培養(yǎng)學(xué)生的自學(xué)能力、和知識(shí)遷閱讀 體發(fā)展,讓學(xué)移建構(gòu)自我的知識(shí)體系)思考、生進(jìn)行自主探裴波那契(Fibonacci leonardo,約1170-1250)是意大分析、究學(xué)習(xí),使用利著名數(shù)學(xué)家.在他的著作《算盤書》中許多有趣的問題,討論,學(xué)主動(dòng)、積極 最富成功的問題是著名的“兔子繁殖問題”: 如果每對(duì)兔的學(xué)習(xí)新知 子每月繁殖一對(duì)子兔,而子兔在出生后第二個(gè)月就有生殖識(shí),培養(yǎng)他們 能力,試問第一月有一對(duì)小兔子第十二月時(shí)有多少對(duì)兔的自學(xué)能力。子? 1、1、2、3、5、8、13、21?? 培養(yǎng)學(xué)生分析
假設(shè)第n個(gè)月的兔子數(shù)目為f(n),那么 問題、解決問 f(n)=F(n-1)+f(n-2)當(dāng)n≥3,題能力,煅練 f(1)=f(2)=1 學(xué)生“數(shù)學(xué)建 討論得出算法描述 模”建構(gòu)主義 Function有多少對(duì)兔子(第幾月)的學(xué)習(xí)觀認(rèn) 如果是第一月或第二月,那么就有一對(duì)兔子。為:學(xué)習(xí)不是 否則,(本月)兔子數(shù)=(本月-1)月的兔子數(shù)+(本月被動(dòng)接收信-2)月的兔子數(shù) 息,而是主動(dòng)
end Function 地建構(gòu)意義,以自己原有的 Function tu(ByVal month As Integer)As Integer 知識(shí)經(jīng)驗(yàn)為基 If month = 1 Or month = 2 Then 編程實(shí)礎(chǔ)對(duì)外部信息 tu = 1 現(xiàn)。進(jìn)行主動(dòng)地選 Else 擇、加工和處 tu = tu(month2)理,人而獲得 End If 自己的意義過End Function 程。深化閱讀教材的循環(huán)結(jié)構(gòu)實(shí)現(xiàn),比較討論兩種算法的區(qū)別學(xué)生討培養(yǎng)學(xué)生分析知識(shí) 和特點(diǎn) 論 問題、歸納、梳理知識(shí)的能力,通過兩種算法的對(duì)比,讓學(xué)生深入體會(huì)遞歸算法的魅力。加深對(duì)本節(jié)課所學(xué)知識(shí)的理解。42
課堂我們今天所學(xué)習(xí)的算法是“遞歸算法”,我們談?wù)勈裁?小結(jié) 是遞歸算法,遞歸算法有什么特點(diǎn)。師生討論,共同小結(jié): 1.遞歸算法是數(shù)值層層調(diào)用實(shí)現(xiàn)的,函數(shù)先由上向下調(diào)用,當(dāng)達(dá)到最底層后,再將函數(shù)值層層向上返回。(遞達(dá)成共下去,收回來,簡(jiǎn)稱:遞歸)識(shí) 2.必須有個(gè)結(jié)束條件(有個(gè)該收回來的條件)3.可讀性強(qiáng) 4.計(jì)算機(jī)資源耗費(fèi)大,所以效率比較底(常駐內(nèi)存的數(shù)據(jù)比較多)布置1.N!(用遞歸算法編程實(shí)現(xiàn))鞏固和發(fā)展本作業(yè) 2.求1+2+3+4+5??N(用遞歸算法編程實(shí)現(xiàn))節(jié)課的學(xué)習(xí)內(nèi)3.用遞推算法實(shí)現(xiàn)“猴子吃桃”問題求解 容。43
第五篇:算法與程序設(shè)計(jì)思想
《算法與程序設(shè)計(jì)思想》教學(xué)案例1
一、教學(xué)目標(biāo) 1.知識(shí)與技能:
求一批數(shù)據(jù)中最大值的算法設(shè)計(jì)思想,并將算法的設(shè)計(jì)思想用流程圖表示出來。2.過程與方法:
利用現(xiàn)實(shí)生活中比較身高的活動(dòng),以及對(duì)武術(shù)比賽中“打擂臺(tái)”流程的逐步梳理,讓學(xué)生學(xué)會(huì)從此類生活實(shí)際中提煉出求最大值的思想方法,即算法思想。
培養(yǎng)學(xué)生分析問題、解決問題的能力,讓學(xué)生學(xué)會(huì)在面對(duì)問題時(shí)能梳理出解決問題的清晰思路,進(jìn)而設(shè)計(jì)出解決某個(gè)特定問題的有限步驟,從而理解計(jì)算機(jī)是如何解決、處理某種問題的。
3.情感、態(tài)度與價(jià)值觀:
讓學(xué)生全身心地投入到教學(xué)活動(dòng)中,積極與同伴合作交流,進(jìn)行探索活動(dòng)。培養(yǎng)學(xué)生良好的思維品質(zhì),發(fā)展他們的創(chuàng)新思維,并養(yǎng)成積極的學(xué)習(xí)態(tài)度和良好的學(xué)習(xí)習(xí)慣。
創(chuàng)設(shè)情境,以激發(fā)學(xué)生的學(xué)習(xí)興趣。努力營(yíng)造一個(gè)可以接納的、支持性的、寬容的課堂學(xué)習(xí)環(huán)境,讓學(xué)生置身于民主和愉悅的課堂氛圍中放飛思維、潛心研究、快樂創(chuàng)造。
二、教學(xué)重點(diǎn)、難點(diǎn) 教學(xué)重點(diǎn):建立求一批數(shù)據(jù)中最大值的算法設(shè)計(jì)思想,并將此算法設(shè)計(jì)思想用流程圖表示出來。
教學(xué)難點(diǎn):上述重點(diǎn)問題同樣是本課教學(xué)的難點(diǎn)。另外,如何把人解決問題的思路、步驟用計(jì)算機(jī)語言描述出來也是本課的難點(diǎn)之一。
三、教學(xué)對(duì)象分析
高一年級(jí)的學(xué)生。他們已具備了一定的觀察、思考、分析和解決問題能力,也已有了順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等知識(shí)的儲(chǔ)備。因此,對(duì)于如何將解決問題的思路畫成流程圖,學(xué)生已有一定的基礎(chǔ),但可能還不很熟練,尤其對(duì)剛學(xué)過的循環(huán)結(jié)構(gòu),教師在課堂上要注意引導(dǎo)。
四、教學(xué)策略及教法設(shè)計(jì)
利用現(xiàn)實(shí)生活中比較一組學(xué)生身高這一事件,引導(dǎo)學(xué)生去發(fā)現(xiàn)求最大值的一種方法。如何設(shè)計(jì)求一批數(shù)據(jù)中最大值的算法?我認(rèn)為讓學(xué)生自己去經(jīng)歷整個(gè)探究過程,要比直接把現(xiàn)成的算法告訴學(xué)生有意義得多。它能迅速、有效地幫助學(xué)生建立程序設(shè)計(jì)思想。在完成這個(gè)任務(wù)的過程中,教師的循循善誘起到了非常關(guān)鍵的作用。找出一批數(shù)據(jù)中的最大者,從表面上來看是一個(gè)很簡(jiǎn)單的問題。在比較數(shù)的過程中,人因?yàn)閯?dòng)用了眼睛,比較大小的思維過程一閃而過,所以能很快求出一批數(shù)據(jù)中的最大值。而計(jì)算機(jī)與人不同,它對(duì)這些數(shù)據(jù)看不見、摸不著,怎么來完成這一任務(wù)呢?其實(shí),計(jì)算機(jī)解決問題的關(guān)鍵,就是要把人解決問題的思維過程用計(jì)算機(jī)語言描述出來,即為大腦思維的每一步“拍照”。這是計(jì)算機(jī)程序設(shè)計(jì)教學(xué)的一個(gè)重點(diǎn),也是一個(gè)難點(diǎn),需要教師在教學(xué)過程中逐步引導(dǎo)和訓(xùn)練學(xué)生,使學(xué)生逐漸學(xué)會(huì)分析問題,尋求解決問題的方法和步驟。本案例運(yùn)用生活中“打擂臺(tái)”的實(shí)例引導(dǎo)學(xué)生分析求最大值的方法,通過對(duì)這一現(xiàn)象的分析,逐步引出求最大值的算法設(shè)計(jì)思想。1 孫朝霞.從生活中探究和建立程序設(shè)計(jì)思想——《算法與程序設(shè)計(jì)思想》教學(xué)案例.中小學(xué)信息技術(shù)教育,2005(12)
五、教學(xué)過程 1.情境創(chuàng)設(shè) 師(提問): 今天在第一排就座的有10 多位同學(xué),誰是我們第一排在座各位中的最高者呢?
師(引導(dǎo)): 大家思考,通常這個(gè)任務(wù)我們是怎樣去完成的? 教師根據(jù)學(xué)生對(duì)問題的回答進(jìn)行分析。引導(dǎo)學(xué)生往古時(shí)候比武時(shí)常常采用的“打擂臺(tái)”的方式上想,提示學(xué)生可參考電視上經(jīng)常播放的“挑戰(zhàn)主持人”節(jié)目。
師生: 打擂的過程可以描述為:
(1)確定一個(gè)擂主(討論第一個(gè)擂主是如何確定的);(2)挑戰(zhàn)者上臺(tái);
(3)擂主和挑戰(zhàn)者比較;
(4)挑戰(zhàn)者勝的話,挑戰(zhàn)者做擂主,否則擂主衛(wèi)冕;(5)重復(fù)執(zhí)行(2)~(4)步驟,直到最后一個(gè)挑戰(zhàn)者。
師: 在打擂的過程中,我們看到(2)~(4)步驟是要重復(fù)做的,所以我們?cè)撛趺崔k呢?
生: 需要循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。
師: 這幾個(gè)步驟序列重復(fù)到什么時(shí)候結(jié)束呢?由學(xué)生討論結(jié)束的辦法,很顯然,需要在最后加上一個(gè)能判斷什么時(shí)候結(jié)束的判斷框。
根據(jù)討論的步驟,最后師生共同得出打擂臺(tái)的算法和流程圖(如圖1)。
2.求一般情況下的最大值的算法 師(引導(dǎo)): 如果我們面對(duì)的是一堆數(shù)據(jù),現(xiàn)在希望我們求出這一堆數(shù)據(jù)中的最大值該怎么辦?通過教師和學(xué)生的共同分析,把問題進(jìn)一步細(xì)化為:
(1)從第一個(gè)數(shù)據(jù)開始看起;
(2)把第一個(gè)數(shù)據(jù)的值在變量中記下來;(3)再取一個(gè)數(shù)據(jù);
(4)比較這個(gè)數(shù)據(jù)與變量中記下的數(shù)據(jù)的值;
(5)如果這個(gè)數(shù)據(jù)的值比記下的數(shù)據(jù)的值大,則去掉變量中原來那個(gè)數(shù)據(jù),記下新數(shù)據(jù)的值;
(6)重復(fù)執(zhí)行(2)~(4),繼續(xù)比較,直到最后一個(gè)數(shù)據(jù)。也就是說,計(jì)算機(jī)的變量始終記著當(dāng)前比較過數(shù)據(jù)中的最大者(我們不妨用X 表示它),當(dāng)取完最后一個(gè)數(shù)據(jù)時(shí),X 中留下的也就是最大值了。
求最大值的算法設(shè)計(jì)思想用圖2 表示。
注意:
a.再次讓學(xué)生討論變量的意義,弄清賦值語句的意義。
b.一些物理量用變量表達(dá)的意義。如X 表示最大值,X 表示輸入的一個(gè)值,且每次循環(huán)時(shí)都用同一個(gè)變量X。
c.為了控制循環(huán)結(jié)束,必須加入一個(gè)控制循環(huán)次數(shù)的計(jì)數(shù)器I,當(dāng)I 達(dá)到一定的次數(shù)后,循環(huán)工作結(jié)束。
3. 回顧小結(jié)
師生共同總結(jié)算法設(shè)計(jì)的過程,就是將大腦思維的每一步都記錄下來,并且用計(jì)算機(jī)能達(dá)到的功能來實(shí)現(xiàn)人解決問題的思路。