第一篇:貪婪算法思想及其應用
貪婪算法思想及其應用
摘要:貪婪算法也稱作貪心算法,它沒有固定的算法框架,算法設計的關鍵是貪婪策略的選擇,并且所選的貪婪策略要具有無后向性。關鍵詞:貪婪策略,無后向性,最優 正文:
一.貪婪算法的定義:
貪婪算法又叫登山法,它的根本思想是逐步到達山頂,即逐步獲得最優解,是解決最優化問題時的一種簡單但適用范圍有限的策略。
二.貪婪算法思想:
貪婪算法采用逐步構造最優解的方法,即在每個階段,都選擇一個看上去最優的策略(在一定的標準下)。策略一旦選擇就不可再更改,貪婪決策的依據稱為貪婪準則,也就是從問題的某一個初始解出發并逐步逼近給定的目標,以盡可能快的要求得到更好的解。而且它在設計時沒有固定的框架,關鍵在于貪婪策略的選擇。但要注意的是選擇的貪婪策略要具有無后向性,即某階段狀態一旦確定下來后,不受這個狀態以后的決策的影響,也就是說某狀態以后的過程不會影響以前的狀態,只與當前狀態有關。
三.貪婪算法的優缺點:
貪婪算法的優點在于在求解問題的每一步它都是選擇最優解,這樣算法就容易實現也易于理解,同時也提高了效率并節省了時間。然而貪婪算法的缺點也是不容忽視的,由于它采取逐步獲得最優解的方法而不從整體最優上加以考慮,它所做出的僅是在某種意義上的局部最優解。因此貪婪算法不是對所有問題都能得到整體最優解,但對范圍相當廣泛的許多問題它都能得出整體最優解或者是整體最優解的近似解。
四.實例參考:
下面就列舉用貪婪算法成功得出問題最優解的例子:
例:一個小孩拿著一美元去商店買糖果,花了33美分,售貨員需要找回67美分給小孩,而美分的面值有25,10,5,1這幾種。問題是售貨員找個小孩的錢幣的個數應是最少的,但同時要滿足67美分這個條件。
分析:選擇硬幣時所采用的貪婪準則如下:每一次都選擇面值最大的貨幣來湊足要找的零錢總數,但前提是不能超出要找的67美分。
解:我們用貪婪算法來處理這個問題,首先我們肯定會選擇面值為25的貨幣,這樣的貨幣我們需要兩枚,然后我們依據貪婪準則選擇面值為10的貨幣,這樣的貨幣我們需要一枚,接著繼續選擇面值為5的貨幣一枚和面值為1的貨幣兩枚。這樣我們用貪婪算法就得到了解決問題的辦法,而在實際中這也確實是這個問題的最優解。因此在找錢這個問題上,我們采用貪婪算法就能滿足我們找出的錢的個數最少這個條件。
貪婪算法同時也有很多無法得出最優解的例子,比如我們熟知的背包問題:
例:有一個背包,容量是M=150。有7個物品,物品不能分割成任意大小。
要求盡可能讓裝入背包中的物品的總價值最大,但不能超過總容量。
物品:A B C D E F G
重量:35 30 60 50 40 10 25
價值:10 40 30 50 35 40 30
在使用貪婪算法的前提下解決下列問題,能否得到最優結果?
1.每次挑選價值最大的物品裝入背包;
2.每次挑選所占重量最小的物品裝入背包;
3.每次挑選單位重量價值最大的物品裝入背包。
對于例題中的三種貪婪策略,都是無法成立的,即不能得到最優解。解釋如下:
(1)貪婪策略:選取價值最大者。
反例:
背包容量:M=30
物品: A B C
重量:28 12 12
價值:30 20 20
根據策略,首先會選取價值最大的物品A,接下來就不能再進行選取了。然而實際情況是選擇B或者C更好。
(2)貪婪策略:選取重量最小者。
反例:
背包容量:M=30
物品:A B C
重量:30 15 10
價值:60 30 10
根據策略,首先會選取重量最小的物品C,接下來就不能再進行選取了。然而實際情況是選擇A或者B更好
(3)貪婪策略:選取單位重量價值最大者。
反例:
背包容量:M=40
物品:A B C
重量:28 15 10
價值:28 15 10
根據策略,要選擇單位重量價值最大的,然而三種物品的單位重量價值一樣,程序無法依據當前的策略做出判斷,如果選A或者B,則答案都是錯誤的。
五.注意:貪婪算法可以提高效率節省時間,我們在設計算法的時候要注意貪婪策略的選擇。一定要注意所選算法的正確性,即要確保算法的可行性。在可行的條件下要能得出整體最優解或近似的最優解。
六.參考文獻:
《算法設計與分析》(第二版)清華大學出版社 呂國英 主編 任瑞征 錢宇華 參編
第二篇:算法與程序設計思想
《算法與程序設計思想》教學案例1
一、教學目標 1.知識與技能:
求一批數據中最大值的算法設計思想,并將算法的設計思想用流程圖表示出來。2.過程與方法:
利用現實生活中比較身高的活動,以及對武術比賽中“打擂臺”流程的逐步梳理,讓學生學會從此類生活實際中提煉出求最大值的思想方法,即算法思想。
培養學生分析問題、解決問題的能力,讓學生學會在面對問題時能梳理出解決問題的清晰思路,進而設計出解決某個特定問題的有限步驟,從而理解計算機是如何解決、處理某種問題的。
3.情感、態度與價值觀:
讓學生全身心地投入到教學活動中,積極與同伴合作交流,進行探索活動。培養學生良好的思維品質,發展他們的創新思維,并養成積極的學習態度和良好的學習習慣。
創設情境,以激發學生的學習興趣。努力營造一個可以接納的、支持性的、寬容的課堂學習環境,讓學生置身于民主和愉悅的課堂氛圍中放飛思維、潛心研究、快樂創造。
二、教學重點、難點 教學重點:建立求一批數據中最大值的算法設計思想,并將此算法設計思想用流程圖表示出來。
教學難點:上述重點問題同樣是本課教學的難點。另外,如何把人解決問題的思路、步驟用計算機語言描述出來也是本課的難點之一。
三、教學對象分析
高一年級的學生。他們已具備了一定的觀察、思考、分析和解決問題能力,也已有了順序結構、分支結構、循環結構等知識的儲備。因此,對于如何將解決問題的思路畫成流程圖,學生已有一定的基礎,但可能還不很熟練,尤其對剛學過的循環結構,教師在課堂上要注意引導。
四、教學策略及教法設計
利用現實生活中比較一組學生身高這一事件,引導學生去發現求最大值的一種方法。如何設計求一批數據中最大值的算法?我認為讓學生自己去經歷整個探究過程,要比直接把現成的算法告訴學生有意義得多。它能迅速、有效地幫助學生建立程序設計思想。在完成這個任務的過程中,教師的循循善誘起到了非常關鍵的作用。找出一批數據中的最大者,從表面上來看是一個很簡單的問題。在比較數的過程中,人因為動用了眼睛,比較大小的思維過程一閃而過,所以能很快求出一批數據中的最大值。而計算機與人不同,它對這些數據看不見、摸不著,怎么來完成這一任務呢?其實,計算機解決問題的關鍵,就是要把人解決問題的思維過程用計算機語言描述出來,即為大腦思維的每一步“拍照”。這是計算機程序設計教學的一個重點,也是一個難點,需要教師在教學過程中逐步引導和訓練學生,使學生逐漸學會分析問題,尋求解決問題的方法和步驟。本案例運用生活中“打擂臺”的實例引導學生分析求最大值的方法,通過對這一現象的分析,逐步引出求最大值的算法設計思想。1 孫朝霞.從生活中探究和建立程序設計思想——《算法與程序設計思想》教學案例.中小學信息技術教育,2005(12)
五、教學過程 1.情境創設 師(提問): 今天在第一排就座的有10 多位同學,誰是我們第一排在座各位中的最高者呢?
師(引導): 大家思考,通常這個任務我們是怎樣去完成的? 教師根據學生對問題的回答進行分析。引導學生往古時候比武時常常采用的“打擂臺”的方式上想,提示學生可參考電視上經常播放的“挑戰主持人”節目。
師生: 打擂的過程可以描述為:
(1)確定一個擂主(討論第一個擂主是如何確定的);(2)挑戰者上臺;
(3)擂主和挑戰者比較;
(4)挑戰者勝的話,挑戰者做擂主,否則擂主衛冕;(5)重復執行(2)~(4)步驟,直到最后一個挑戰者。
師: 在打擂的過程中,我們看到(2)~(4)步驟是要重復做的,所以我們該怎么辦呢?
生: 需要循環結構來實現。
師: 這幾個步驟序列重復到什么時候結束呢?由學生討論結束的辦法,很顯然,需要在最后加上一個能判斷什么時候結束的判斷框。
根據討論的步驟,最后師生共同得出打擂臺的算法和流程圖(如圖1)。
2.求一般情況下的最大值的算法 師(引導): 如果我們面對的是一堆數據,現在希望我們求出這一堆數據中的最大值該怎么辦?通過教師和學生的共同分析,把問題進一步細化為:
(1)從第一個數據開始看起;
(2)把第一個數據的值在變量中記下來;(3)再取一個數據;
(4)比較這個數據與變量中記下的數據的值;
(5)如果這個數據的值比記下的數據的值大,則去掉變量中原來那個數據,記下新數據的值;
(6)重復執行(2)~(4),繼續比較,直到最后一個數據。也就是說,計算機的變量始終記著當前比較過數據中的最大者(我們不妨用X 表示它),當取完最后一個數據時,X 中留下的也就是最大值了。
求最大值的算法設計思想用圖2 表示。
注意:
a.再次讓學生討論變量的意義,弄清賦值語句的意義。
b.一些物理量用變量表達的意義。如X 表示最大值,X 表示輸入的一個值,且每次循環時都用同一個變量X。
c.為了控制循環結束,必須加入一個控制循環次數的計數器I,當I 達到一定的次數后,循環工作結束。
3. 回顧小結
師生共同總結算法設計的過程,就是將大腦思維的每一步都記錄下來,并且用計算機能達到的功能來實現人解決問題的思路。
第三篇:大數據算法及臨床應用(定稿)
“大數據算法及臨床應用”學術講座通知
主題:Big Data Algorithms and Clinical Applications(大數據算法及臨床應用)
講座人:美國華盛頓大學計算機系副教授 陳一昕博士 時間:2014年10月20日(周一)下午14:30 地點:湖北工業大學科技樓二樓圓形報告廳
歡迎全校對講座主題感興趣的師生參加!
[陳一昕簡介] 陳一昕博士,中國科技大學少年班本科畢業,美國伊利諾大學香檳分校獲計算機科學博士學位,導師為華云生教授。現任美國華盛頓大學計算機系副教授,終身教授,北京協和醫院衛生統計學博導,中國聯通研究院大數據首席科學家。
研究領域為數據挖掘、機器學習、優化算法、規劃調度、人工智能、博弈論、云計算等。在AIJ、JAIR、TKDE、TKDD、TIST、TPDS等國際一流期刊和VLDB、AAAI、KDD、IJCAI、ICML、RTSS等國際頂級會議和上發表論文100余篇。其研究連續獲得美國國家科學基金委、美國能源部、美國國家衛生局、美國能源研究科學計算中心、美國微軟公司、美國斯隆凱特琳癌癥中心、美國巴恩猶太醫院基金、中國科技部973項目的資助。曾獲KDD(2014)、AAAI(2010)、ICTAI(2005)、ICMLC(2004)等國際會議的最佳論文獎,以及ICDM(2013)、RTAS(2012)、KDD(2009)、ITA(2004)等國際會議的最佳論文獎提名。其開創性的研究工作獲得了美國微軟青年教授獎(2007)和美國能源部杰出青年教授獎(2006)。
現擔任美國國家科學基金委,香港研究基金委,奧地利國家科學基金委,瑞士國家科學基金委,卡塔爾國家基金委,中國科技部科技評估中心的評審委員。中國科技大學所承擔的教育部111引智計劃專家組八位專家成員之一,中國計算機學會大數據專家委員會首屆委員之一。數據挖掘和人工智能領域的一流期刊JAIR、TKDE、TIST的編委,以及ICML、KDD、AAAI、IJCAI、ICDM、SDM等一流國際會議的程序委員會委員。[講座摘要] In the era of big data, we need novel algorithms on top of the supporting platform.In this talk, I will first discuss some key aspects of big data algorithms in general.Then, I will talk about our recent medical big data project as a case study.Early detection of clinical deterioration is essential to improving clinical outcome.In this project, we develop new algorithms for clinical early warning by mining massive clinical records in hospital databases.The research focuses on the large population of patients in the general hospital wards, who are not in the intensive care units and suffer from infrequent monitoring.I will discuss the challenges this big data application poses to traditional machine learning and data mining algorithms, our recent progress, and the lessons we learnt.Promising results on real-life clinical trials at the Barnes-Jewish Hospital(the eighth largest hospital in the United States)will be discussed.邀請人 : 計算機學院 陳建峽副教授
第四篇:算法與程序設計教學思想
算法與程序設計教學思想
在高中階段開設信息技術課程的基本目的是進一步提高學生的信息素養,使他們能適應社會發展的需求,為信息社會培養合格的人才。本課程力圖通過信息的獲取、加工、管理、表達與交流等各類信息實踐活動,掌握信息技術,感受信息文化,增強信息意識,內化信息倫理。要達到這一目的,必須為學生建構起一個利于他們提高信息素養的良好學習和實踐環境。
根據教育部制訂的普通高中課程標準編寫的,由浙江教育出版社出版的高中信息技術教科書(實驗),經全國各地多年來的試用,積累起了比較豐富的教學實踐經驗。在浙江教育出版社積極倡導、支持,教科書編寫人員不懈努力和廣大任課教師的熱情參與下,多次開展了卓有成效的教學交流活動。例如,教師用書的編制與修訂,優秀教案選編的出版,開展教學資源競賽等等,都為教科書的使用和課程教學質量的提高作出了有益的貢獻。
總的說來,上述各項活動都比較側重于解決如何教的問題,受益的對象基本局限于教師范圍。但是,我們更主要的任務是如何使廣大同學直接受益,如何為廣大高中同學創造一個便于進行自主學習信息技術課程的輔助學習的平臺,通過這一平臺來掌握高中課程范圍內的信息技術基礎知識和基本技能。使同學們能根據自己的基礎、特長和興趣,學會創造性地利用信息技術解決學習和生活中的實際問題?!陡咧行畔⒓夹g輔助教學平臺》(計算機光盤版)就是為這一目的開發和編制的。為了使信息技術課程的教學能全面貫徹教育部制訂的課程標準精神,使廣大任課老師在教學過程中有所參照,也為了減輕老師們的備課負擔,更主要的是為了激發同學們學習本課程的積極性,能循序漸進地掌握信息技術的基礎知識、基本技能和相關的應用能力。“平臺”的設計是以“教案”或“學案”的形式呈現的。
信息技術輔助教學平臺共分六個模塊,分別是:信息技術基礎、算法與程序設計、多媒體技術應用、網絡技術應用、數據管理技術、研究與探索(機器人活動和信息學活動)。前5個模塊按32課時來安排內容。任課老師可按本校生源、設備、師資條件的實際情況進行適當調整。
根據本“平臺”的設計目標及其所肩負的任務,前5個模塊的基本結構欄目為:課標理解、教材分析、教法實踐、知識貨架、素材下載等項。
課標理解:以課程標準為依據,提出對本單元教學內容在課程中的作用和地位的理解,使教師和學生的信息技術教學活動更符合課程目標。
教材分析:指明本課時的學習目的,基本教學內容,需要掌握的學習重點和要解決的難點。對部分重點或技術難點提供簡明動畫,幫助同學理解。
教法實踐:根據教學內容,提出教學流程或教學方法,進行討論交流、實踐體驗、綜合探究等實踐活動;通過實例演示或練習(含拓展練習),對同學反饋的知識、技能進行評價。知識貨架:是本模塊、本章、本節、本課涉及的知識和概念的匯編,供教師和同學查閱。
素材下載:為教師備課提供相關素材內容;為學生的學習、作業、練習準備必要的素材,以節約學生時間,提高學習效率。其中有些內容是為了拓展教師和學生的視野提供幫助。
《算法與程序設計》是高中信息技術課程的選修模塊。由于算法與程序設計在解決問題過程中所起的關鍵作用,因此,它被各地學校廣泛地選修,這也為本模塊教學積累起了比較豐富的經驗。本模塊所擔負的主要任務是:讓學生體驗算法思想,了解算法和程序設計在解決問題過程中的地位和作用,并能對簡單問題設計算法,初步學會用一種程序設計語言編制程序,實現算法,解決問題。
本“平臺”匯集了豐富的算法與程序設計教學內容和相關素材。它可以用來幫助教師備課,進行課堂教學;也可以幫助學生學習,提高他們的學習興趣,激發他們對未知領域積極探究的欲望和提高分析問題、解決問題的能力。本“平臺”努力為學生提供一個較為優良的學習環境,促進學生主動學習,以充分發揮其主體潛能,為學生個性化學習開辟一個新領地。
《算法與程序設計》既有嚴謹的理論,需要對被解決的問題進行周密的分析,把問題模型化,又要有解決問題的科學的、嚴格的方法。具備算法理念,初步掌握算法的設計與分析方法是一件對學生終身有用的好事。本“平臺”對“課標理解”、“教材分析”等5個基本欄目都有較詳盡的敘述;對部分比較典型和難度較大的內容還配置了相應的Flash動畫幫助師生們進行教和學。
問題求解存在于社會生活的各個領域,在“拓展學習”欄目中“平臺”提供了許多來源于學習、生活、工作的算法設計實例,供學生課內或課后進行自主學習,以進一步形成算法理念,提高自己的算法設計和算法表達的能力。所有的示例程序、練習素材及輔助動畫都可在“素材下載”欄目中找到,供下載,以節省師生的教學與學習的時間,提高效率。
由于“平臺”是在實踐教學經驗基礎上的一種再創作,難免有欠妥和不足之處。編者殷切祈望使用本“平臺”的廣大師生不吝賜教,以期不斷總結經驗,完善內容,改進形式,能更好地為廣大師生服務,為提高教學質量作一點微薄貢獻。
第五篇:教案算法與程序設計思想
算法與程序設計思想
【課標要求】
(一)利用計算機解決問題的基本過程
(1)結合實例,經歷分析問題、確定算法、編程求解等用計算機解決問題的基本過程,認識算法和程序設計在其中的地位和作用。
(2)經歷用自然語言、流程圖或偽代碼等方法描述算法的過程。
(4)了解程序設計語言、編輯程序、編譯程序、連接程序以及程序開發環境等基本知識。
【學情分析】
高一年級的學生已具備了一定的觀察、思考、分析和解決問題能力,也已有了順序結構、分支結構、循環結構等知識的儲備。因此,對于如何將解決問題的思路畫成流程圖已有一定的基礎,但可能還不很熟練,尤其對剛學過的循環結構,教師在課堂上要注意引導?!捍颂幷f“已有了順序結構、分支結構、循環結構等知識的儲備”,應該是指在必修部分對“計算機解決實際問題的基本過程”已有所體驗與了解,或是指已學習過數學中相關模塊的知識,這是本案例教學得以實施的必不可少的前提條件?!?/p>
【教學目標】
1.知識與技能:
建立求一批數據中最大值的算法設計思想,并將算法的設計思想用流程圖表示出來。2.過程與方法:
利用現實生活中比較身高的活動,以及對武術比賽中“打擂臺”流程的逐步梳理,讓學生學會從此類生活實際中提煉出求最大值的思想方法,即算法思想。培養學生分析問題、解決問題的能力,讓學生學會在面對問題時能梳理出解決問題的清晰思路,進而設計出解決某個特定問題的有限步驟,從而理解計算機是如何解決、處理某種問題的。
『在過程上,通過現實生活中的實例來引導學生總結“求最大值”的算法思想。過程的實現關鍵在于實例引用是否貼切,是否有利于學生向抽象結論的構建。本案例的實例選擇是符合這一要求的。在方法上,注重培養學生分析、解決問題的一般能力,再次體驗與理解應用計算機解決問題的基本過程,為后面更一步的學習打下基礎,積累信心?!?/p>
3.情感態度與價值觀:
讓學生全身心地投入到教學活動中,積極與同伴合作交流,進行探索活動。培養學生良好的思維品質,發展他們的創新思維,并養成積極的學習態度和良好的學習習慣。
創設情境,以激發學生的學習興趣。努力營造一個可以接納的、支持性的、寬容的課堂學習環境,讓學生置身于民主和愉悅的課堂氛圍中放飛思維、潛心研究、快樂創造。
『本案例對“情感、態度與價值觀”目標的設計,更多的是試圖建立一個活躍、民主、快樂的學習環境。良好的學習環境是學生樂學好學、教師提高課堂效率的重要條件。如果真能實現這樣一個環境,營造出理想狀態中的學習氛圍,無疑會使學生在學到“知識與技能”的同時收獲到更多的東西——合作、分享、成就。而且如果能夠結合教學內容來描述目標,則會使目標顯得更具體,更有針對性?!?/p>
【重點難點】
教學重點:建立求一批數據中最大值的算法設計思想,并將此算法設計思想用流程圖表示出來。
教學難點:上述重點問題同樣是本課教學的難點。另外,如何把人解決問題的思路、步驟用計算機語言描述出來也是本課的難點之一。
『建議,此處可添加關于教學重、難點的確立依據,以及解決教學難點的關鍵方法方面的描述。同一段知識內容的教學重、難點對于同類教師基本上是一致的,不同的是對教學重、難點的認識與處理方法。應該說,對教學重、難點認識的越深刻就越有可能找到更好的處理方法?!?/p>
【教學思路】
利用現實生活中比較一組學生身高這一事件,引導學生去發現求最大值的一種方法。如何設計求一批數據中最大值的算法?我認為讓學生自己去經歷整個探究過程,要比直接把現成的算法告訴學生有意義得多。它能迅速、有效地幫助學生建立程序設計思想。在完成這個任務的過程中,教師的循循善誘起到了非常關鍵的作用。找出一批數據中的最大者,從表面上來看是一個很簡單的問題。在比較數的過程中,人因為動用了眼睛,比較大小的思維過程一閃而過,所以能很快求出一批數據中的最大值。而計算機與人不同,它對這些數據看不見、摸不著,怎么來完成這一任務呢?其實,計算機解決問題的關鍵,就是要把人解決問題的思維過程用計算機語言描述出來,即為大腦思維的每一步“拍照”。這是計算機程序設計教學的一個重點,也是一個難點,需要教師在教學過程中逐步引導和訓練學生,使學生逐漸學會分析問題,尋求解決問題的方法和步驟。本案例運用生活中“打擂臺”的實例引導學生分析求最大值的方法,通過對這一現象的分析,逐步引出求最大值的算法設計思想。
『作者在此處點出了解決教學難點的方法,即采用“逐步引導和訓練”的方法。其意圖就是希望學生經歷整個過程,從而鍛煉、提升探究能力,領悟、理解其中的思想,實現授人以漁的目的?!?/p>
【教學過程】
1.情境創設___________如何建立支架的? 師(提問): 今天在第一排就座的有10 多位同學,誰是我們第一排在座各位中的最高者呢? 師(引導): 大家思考,通常這個任務我們是怎樣去完成的? 教師根據學生對問題的回答進行分析。引導學生往古時候比武時常常采用的“打擂臺”的方式上想,提示學生可參考電視上經常播放的“挑戰主持人”節目。師生: 打擂的過程可以描述為:
(1)確定一個擂主(討論第一個擂主是如何確定的);
(2)挑戰者上臺;
(3)擂主和挑戰者比較;
(4)挑戰者勝的話,挑戰者做擂主,否則擂主衛冕;
(5)重復執行(2)~(4)步驟,直到最后一個挑戰者。
師: 在打擂的過程中,我們看到(2)~(4)步驟是要重復做的,所以我們該怎么辦呢? 生: 需要循環結構來實現。師: 這幾個步驟序列重復到什么時候結束呢?由學生討論結束的辦法,很顯然,需要在最后加上一個能判斷什么時候結束的判斷框。
根據討論的步驟,最后師生共同得出打擂臺的算法和流程圖(如圖1)。
『作者的引導可以總結為:比身高(學生的回答可能多種多樣,也可能偏離預設方向)——比武、“打擂臺”(將學生發散出去的思考往預設方向上牽引)——“挑戰主持人”節目(進一步將學生的思考引到其頭腦中已有的認識上,前提是學生要看過該節目)——用自然語言的方式整理出比賽的規則(即算法的自然語言描述)——得到表示算法的流程圖。應該說,這樣的引導方式完全可以達到作者的預設目標?!?2.求一般情況下的最大值的算法 師(引導): 如果我們面對的是一堆數據,現在希望我們求出這一堆數據中的最大值該怎么辦?通過教師和學生的共同分析,把問題進一步細化為:
(1)從第一個數據開始看起;
(2)把第一個數據的值在變量中記下來;
(3)再取一個數據;
(4)比較這個數據與變量中記下的數據的值;
(5)如果這個數據的值比記下的數據的值大,則去掉變量中原來那個數據,記下新數據的值;
(6)重復執行(2)~(4),繼續比較,直到最后一個數據。
也就是說,計算機的變量始終記著當前比較過數據中的最大者(我們不妨用X 表示它),當取完最后一個數據時,X 中留下的也就是最大值了。求最大值的算法設計思想用下圖表示。
『教學在上一環節的基礎上再做進一步的深入,即擴大數據的比較范圍,討論一般的情況。由于學生已經經歷了上一環節的思考過程,因此,再次思考一般性問題的解決方案就變得容易多了,這又是另一維度的“逐步引導和訓練”,即具體到一般的過渡。這是作者對教學策略設計的準確實現?!?注意:
a.再次讓學生討論變量的意義,弄清賦值語句的意義。b.一些物理量用變量表達的意義。如X 表示最大值,X 表示輸入的一個值,且每次循環時都用同一個變量X。
c.為了控制循環結束,必須加入一個控制循環次數的計數器I,當I 達到一定的次數后,循環工作結束。
『除了對教學目標宏觀上的關注與設計之外,也注意到了教學內容細節上的把握。作者在此處提出的三點注意都是編程語言細節上的問題,應該說,這“三點注意”是作者多年或是本案例實踐過后總結的教學經驗,當然也可能是教師在教學設計時預先設想的教學問題。這些要“注意的點”正是教學實踐或設計中的精華所在,也是值得我們借鑒與學習的內容之一?!?/p>
3. 回顧小結
師生共同總結算法設計的過程,就是將大腦思維的每一步都記錄下來,并且用計算機能達到的功能來實現人解決問題的思路。
『最后帶領學生總結本節課的中心思想,即回答“算法設計的過程是怎樣的?”這一問題。使整節課有了一個明確的結論?!?/p>