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